On 03/18/2011 12:54 PM, Daniel P. Berrange wrote:
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
---
.x-sc_avoid_write | 1 +
cfg.mk | 1 +
configure.ac | 2 +-
po/POTFILES.in | 1 +
src/Makefile.am | 3 +-
src/rpc/virnetsocket.c | 835 ++++++++++++++++++++++++++++++++++++++++++++++++
src/rpc/virnetsocket.h | 107 ++++++
7 files changed, 948 insertions(+), 2 deletions(-)
create mode 100644 src/rpc/virnetsocket.c
create mode 100644 src/rpc/virnetsocket.h
diff --git a/.x-sc_avoid_write b/.x-sc_avoid_write
index f6fc1b2..303c940 100644
--- a/.x-sc_avoid_write
+++ b/.x-sc_avoid_write
@@ -1,6 +1,7 @@
^src/libvirt\.c$
^src/fdstream\.c$
^src/qemu/qemu_monitor\.c$
+^src/rpc/virnetsocket\.c$
I'd rather not change this file, but instead apply my (unreviewed) patch
first, and then you merely edit cfg.mk to add this to the list of exempt
files:
https://www.redhat.com/archives/libvir-list/2011-March/msg00770.html
But if your patch goes in first, I can adapt.
+
+ oldmask = umask(~mask);
+
+ if (bind(fd, &addr.data.sa, addr.len) < 0) {
+ virReportSystemError(errno,
+ _("Failed to bind socket to '%s'"),
+ path);
+ goto error;
+ }
+ umask(oldmask);
Is it worth a comment why umask() is safe here? You already mentioned
on list that it is because this setup function is only called during
single-threaded startup code.
+
+int virNetSocketNewListenTCP(const char *nodename,
+ const char *service,
+ virNetSocketPtr **addrs,
+ size_t *naddrs);
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3)
ATTRIBUTE_NONNULL(4)
Many other functions in this header can likewise have various parameters
marked up.
ACK with those nits addressed.
--
Eric Blake eblake(a)redhat.com +1-801-349-2682
Libvirt virtualization library
http://libvirt.org