1. 14 10月, 2011 2 次提交
  2. 11 10月, 2011 2 次提交
    • D
      Rewrite all the DTrace/SystemTAP probing · ddf3bd32
      Daniel P. Berrange 提交于
      The libvirtd daemon had a few crude system tap probes. Some of
      these were broken during the RPC rewrite. The new modular RPC
      code is structured in a way that allows much more effective
      tracing. Instead of trying to hook up the original probes,
      define a new set of probes for the RPC and event code.
      
      The master probes file is now src/probes.d.  This contains
      probes for virNetServerClientPtr, virNetClientPtr, virSocketPtr
      virNetTLSContextPtr and virNetTLSSessionPtr modules. Also add
      probes for the poll event loop.
      
      The src/dtrace2systemtap.pl script can convert the probes.d
      file into a libvirt_probes.stp file to make use from systemtap
      much simpler.
      
      The src/rpc/gensystemtap.pl script can generate a set of
      systemtap functions for translating RPC enum values into
      printable strings. This works for all RPC header enums (program,
      type, status, procedure) and also the authentication enum
      
      The PROBE macro will automatically generate a VIR_DEBUG
      statement, so any place with a PROBE can remove any existing
      manual DEBUG statements.
      
      * daemon/libvirtd.stp, daemon/probes.d: Remove obsolete probing
      * daemon/libvirtd.h: Remove probe macros
      * daemon/Makefile.am: Remove all probe buildings/install
      * daemon/remote.c: Update authentication probes
      * src/dtrace2systemtap.pl, src/rpc/gensystemtap.pl: Scripts
        to generate STP files
      * src/internal.h: Add probe macros
      * src/probes.d: Master list of probes
      * src/rpc/virnetclient.c, src/rpc/virnetserverclient.c,
        src/rpc/virnetsocket.c, src/rpc/virnettlscontext.c,
        src/util/event_poll.c: Insert probe points, removing any
        DEBUG statements that duplicate the info
      ddf3bd32
    • D
      Add virSocketRef API to facilitate dynamic probing · 6aebc194
      Daniel P. Berrange 提交于
      Instead of directly manipulating sock->refs, add a virSocketRef
      API
      
      * src/rpc/virnetsocket.c, src/rpc/virnetsocket.h: Add virSocketRef
      6aebc194
  3. 09 9月, 2011 1 次提交
  4. 18 8月, 2011 1 次提交
  5. 15 8月, 2011 3 次提交
  6. 04 8月, 2011 1 次提交
  7. 30 7月, 2011 1 次提交
    • E
      build: fix include path for cygwin · c5b6537b
      Eric Blake 提交于
      Without this, cygwin failed to compile:
      
      In file included from ../src/rpc/virnetmessage.h:24,
                       from ../src/rpc/virnetclient.h:27,
                       from remote/remote_driver.c:31:
      ../src/rpc/virnetprotocol.h:9:21: error: rpc/rpc.h: No such file or directory
      
      With that fixed, compilation warned:
      
      rpc/virnetsocket.c: In function 'virNetSocketNewListenUNIX':
      rpc/virnetsocket.c:347: warning: format '%d' expects type 'int', but argument 8 has type 'gid_t' [-Wformat]
      rpc/virnetsocket.c: In function 'virNetSocketGetLocalIdentity':
      rpc/virnetsocket.c:743: warning: pointer targets in passing argument 5 of 'getsockopt' differ in signedness
      
      * src/Makefile.am (libvirt_driver_remote_la_CFLAGS)
      (libvirt_net_rpc_client_la_CFLAGS)
      (libvirt_net_rpc_server_la_CFLAGS): Include XDR_CFLAGS, for rpc
      headers on cygwin.
      * src/rpc/virnetsocket.c (virNetSocketNewListenUNIX)
      (virNetSocketGetLocalIdentity): Avoid compiler warnings.
      c5b6537b
  8. 26 7月, 2011 1 次提交
    • D
      Report error if unable to bind to any socket · a4458597
      Daniel P. Berrange 提交于
      When setting up a server socket, we must skip EADDRINUSE errors
      from bind, since the IPv6 socket bind may have already bound to
      the IPv4 socket too. If we don't manage to bind to any sockets
      at all though, we should then report the EADDRINUSE error as
      normal.
      
      This fixes the case where libvirtd would not exit if some other
      program was listening on its TCP/TLS ports.
      
      * src/rpc/virnetsocket.c: Report EADDRINUSE
      a4458597
  9. 22 7月, 2011 2 次提交
    • O
      remote/ssh: optional "keyfile" parameter. · 6b01c83a
      Oskari Saarenmaa 提交于
      New optional parameter "keyfile" for ssh transport allows the user to select
      the private key to be used to authenticate to the remote host.
      6b01c83a
    • E
      build: rename files.h to virfile.h · 8e22e089
      Eric Blake 提交于
      In preparation for a future patch adding new virFile APIs.
      
      * src/util/files.h, src/util/files.c: Move...
      * src/util/virfile.h, src/util/virfile.c: ...here, and rename
      functions to virFile prefix.  Macro names are intentionally
      left alone.
      * *.c: All '#include "files.h"' uses changed.
      * src/Makefile.am (UTIL_SOURCES): Reflect rename.
      * cfg.mk (exclude_file_name_regexp--sc_prohibit_close): Likewise.
      * src/libvirt_private.syms: Likewise.
      * docs/hacking.html.in: Likewise.
      * HACKING: Regenerate.
      8e22e089
  10. 21 7月, 2011 1 次提交
  11. 19 7月, 2011 2 次提交
    • D
      Use a virFreeCallback on virNetSocket to ensure safe release · 7ea2ef4c
      Daniel P. Berrange 提交于
      When unregistering an I/O callback from a virNetSocket object,
      there is still a chance that an event may come in on the callback.
      In this case it is possible that the virNetSocket might have been
      freed already. Make use of a virFreeCallback when registering
      the I/O callbacks and hold a reference for the entire time the
      callback is set.
      
      * src/rpc/virnetsocket.c: Register a free function for the
        file handle watch
      * src/rpc/virnetsocket.h, src/rpc/virnetserverservice.c,
        src/rpc/virnetserverclient.c, src/rpc/virnetclient.c: Add
        a free function for the socket I/O watches
      7ea2ef4c
    • D
      Add mutex locking and reference counting to virNetSocket · 6198f3a1
      Daniel P. Berrange 提交于
      Remove the need for a virNetSocket object to be protected by
      locks from the object using it, by introducing its own native
      locking and reference counting
      
      * src/rpc/virnetsocket.c: Add locking & reference counting
      6198f3a1
  12. 15 7月, 2011 1 次提交
    • E
      virnetsocket: use new API for uniform child cleanup · a59a99f2
      Eric Blake 提交于
      Rather than trying to clean up the ssh child ourselves, and risk
      subtle differences from the socket creation error path, we can
      just use the new APIs.
      
      * src/rpc/virnetsocket.c (virNetSocketFree): Use new function.
      a59a99f2
  13. 12 7月, 2011 1 次提交
    • O
      remote/ssh: support for no_verify. · 9a0e6a8f
      Oskari Saarenmaa 提交于
      Set StrictHostKeyChecking=no to auto-accept new ssh host keys if the
      no_verify extra parameter was specified.  This won't disable host key
      checking for already known hosts.  Includes a test and documentation.
      9a0e6a8f
  14. 11 7月, 2011 1 次提交
  15. 01 7月, 2011 2 次提交
    • E
      rpc: avoid freeing uninitialized variable · 0a8a79af
      Eric Blake 提交于
      Detected by Coverity.  Both are instances of bad things happening
      if pipe2 fails; the virNetClientNew failure could free garbage,
      and virNetSocketNewConnectCommand could close random fds.
      
      Note: POSIX doesn't guarantee the contents of fd[0] and fd[1]
      after pipe failure: http://austingroupbugs.net/view.php?id=467
      We may need to introduce a virPipe2 wrapper that guarantees
      that on pipe failure, the fds are explicitly set to -1, rather
      than our current state of assuming the fds are unchanged from
      their value prior to the failed pipe call.
      
      * src/rpc/virnetclient.c (virNetClientNew): Initialize variable.
      * src/rpc/virnetsocket.c (virNetSocketNewConnectCommand):
      Likewise.
      0a8a79af
    • D
      Add missing include of signal.h in virnetsocket.c · f1c2c0e2
      Daniel P. Berrange 提交于
      virNetSocketFree uses kill(SIGTERM) so we must include
      signal.h for the definitions
      
      * src/rpc/virnetsocket.c: Include signal.h
      f1c2c0e2
  16. 29 6月, 2011 1 次提交
    • D
      Lower logging level when failing to register socket watch · d550277c
      Daniel P. Berrange 提交于
      The RPC client treats failure to register a socket watch
      as non-fatal, since we do not mandate that a libvirt client
      application provide an event loop implementation. It is
      thus inappropriate to a log a message at VIR_LOG_WARN
      
      * src/rpc/virnetsocket.c: Lower logging level
      d550277c
  17. 24 6月, 2011 3 次提交
    • D
      Introduce generic RPC module for advertising via MDNS · e23ec81d
      Daniel P. Berrange 提交于
      Allow RPC servers to advertise themselves using MDNS,
      via Avahi
      
      * src/rpc/virnetserver.c, src/rpc/virnetserver.h: Allow
        registration of MDNS services via avahi
      * src/rpc/virnetserverservice.c, src/rpc/virnetserverservice.h: Add
        API to fetch the listen port number
      * src/rpc/virnetsocket.c, src/rpc/virnetsocket.h: Add API to
        fetch the local port number
      * src/rpc/virnetservermdns.c, src/rpc/virnetservermdns.h: Represent
        an MDNS advertisement
      e23ec81d
    • D
      Integrate TLS/SASL directly into the socket APIs · f5fa167e
      Daniel P. Berrange 提交于
      This extends the basic virNetSocket APIs to allow them to have
      a handle to the TLS/SASL session objects, once established.
      This ensures that any data reads/writes are automagically
      passed through the TLS/SASL encryption layers if required.
      
      * src/rpc/virnetsocket.c, src/rpc/virnetsocket.h: Wire up
        SASL/TLS encryption
      f5fa167e
    • D
      Introduce a generic object for using network sockets · 58b5b14e
      Daniel P. Berrange 提交于
      Introduces a simple wrapper around the raw POSIX sockets APIs
      and name resolution APIs. Allows for easy creation of client
      and server sockets with correct usage of name resolution APIs
      for protocol agnostic socket setup.
      
      It can listen for UNIX and TCP stream sockets.
      
      It can connect to UNIX, TCP streams directly, or indirectly
      to UNIX sockets via an SSH tunnel or external command
      
      * src/Makefile.am: Add to libvirt-net-rpc.la
      * src/rpc/virnetsocket.c, src/rpc/virnetsocket.h: Generic
        sockets APIs
      * tests/Makefile.am: Add socket test
      * tests/virnetsockettest.c: New test case
      * tests/testutils.c: Avoid overriding LIBVIRT_DEBUG settings
      * tests/ssh.c: Dumb helper program for SSH tunnelling tests
      58b5b14e