[libvirt] [PATCH 4/8] Add APIs for virNetSocket for sending/receiving file descriptors
Eric Blake
eblake at redhat.com
Mon Oct 24 21:31:13 UTC 2011
On 10/21/2011 06:55 AM, Daniel P. Berrange wrote:
> From: "Daniel P. Berrange"<berrange at redhat.com>
>
> Add APIs to the virNetSocket object, to allow file descriptors
> to be send/received over UNIX domain socket connections
s/send/sent/
>
> * src/rpc/virnetsocket.c, src/rpc/virnetsocket.h,
> src/libvirt_private.syms: Add APIs for FD send/recv
> ---
> examples/systemtap/rpc-monitor.stp | 10 ++++++
> src/libvirt_private.syms | 4 ++
> src/probes.d | 2 +
> src/rpc/virnetsocket.c | 62 ++++++++++++++++++++++++++++++++++++
> src/rpc/virnetsocket.h | 5 +++
> 5 files changed, 83 insertions(+), 0 deletions(-)
>
> diff --git a/examples/systemtap/rpc-monitor.stp b/examples/systemtap/rpc-monitor.stp
> index f246571..b76564f 100755
> --- a/examples/systemtap/rpc-monitor.stp
> +++ b/examples/systemtap/rpc-monitor.stp
> @@ -155,3 +155,13 @@ probe libvirt.rpc.server_client_free {
> delete serverSocks[pid(), client];
> }
> }
> +
> +
> +probe libvirt.rpc.socket_send_fd {
> + print_ts(sprintf("= %-16p send fd=%d", sock, fd));
> +}
> +
> +
> +probe libvirt.rpc.socket_recv_fd {
> + print_ts(sprintf("= %-16p recv fd=%d", sock, fd));
> +}
> \ No newline at end of file
We should fix that, and supply a trailing newline.
> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> index dedbd16..0648e49 100644
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -1244,6 +1244,10 @@ virNetSocketDupFD;
> virNetSocketFree;
> virNetSocketGetFD;
> virNetSocketListen;
> +virNetSocketIsLocal;
Did we really forget to export this one earlier?
> +virNetSocketHasPassFD;
> +virNetSocketSendFD;
> +virNetSocketRecvFD;
Sorting?
> +int virNetSocketRecvFD(virNetSocketPtr sock)
> +{
> + int ret = -1;
> + if (!virNetSocketHasPassFD(sock)) {
> + virNetError(VIR_ERR_INTERNAL_ERROR,
> + _("Sending file descriptors is not supported on this socket"));
s/Sending/Receiving/
> + return -1;
> + }
> + virMutexLock(&sock->lock);
> +
> + if ((ret = recvfd(sock->fd, 0))< 0) {
Should we s/0/O_CLOEXEC/ for flags, so the received socket has the
cloexec bit already set?
ACK with nits fixed.
--
Eric Blake eblake at redhat.com +1-801-349-2682
Libvirt virtualization library http://libvirt.org
More information about the libvir-list
mailing list