On 10/21/2011 06:55 AM, Daniel P. Berrange wrote:
From: "Daniel P. Berrange"<berrange(a)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(a)redhat.com +1-801-349-2682
Libvirt virtualization library
http://libvirt.org