New function nl_sock_wait(), to improve netlink socket abstraction.
authorBen Pfaff <blp@nicira.com>
Tue, 30 Dec 2008 21:12:48 +0000 (13:12 -0800)
committerBen Pfaff <blp@nicira.com>
Tue, 30 Dec 2008 21:12:48 +0000 (13:12 -0800)
lib/netlink.c
lib/netlink.h
lib/vconn-netlink.c
vswitchd/brcompat.c

index cb4e6c1a15a750e3e9b9e254f7ff2aab5a7da2f5..28c1f1163bb6c0e2a46526a550d579122aa93e93 100644 (file)
@@ -44,6 +44,7 @@
 #include "dynamic-string.h"
 #include "netlink-protocol.h"
 #include "ofpbuf.h"
+#include "poll-loop.h"
 #include "timeval.h"
 #include "util.h"
 
@@ -424,11 +425,12 @@ recv:
     return 0;
 }
 
-/* Returns 'sock''s underlying file descriptor. */
-int
-nl_sock_fd(const struct nl_sock *sock) 
+/* Causes poll_block() to wake up when any of the specified 'events' (which is
+ * a OR'd combination of POLLIN, POLLOUT, etc.) occur on 'sock'. */
+void
+nl_sock_wait(const struct nl_sock *sock, short int events)
 {
-    return sock->fd;
+    poll_fd_wait(sock->fd, events);
 }
 \f
 /* Netlink messages. */
index 8163a3188c0e9c43709709e35ba6f491f4e9e767..d68d7793e4e4c1595c7e647f005c2a65c89f43ed 100644 (file)
@@ -65,7 +65,7 @@ int nl_sock_recv(struct nl_sock *, struct ofpbuf **, bool wait);
 int nl_sock_transact(struct nl_sock *, const struct ofpbuf *request,
                      struct ofpbuf **reply);
 
-int nl_sock_fd(const struct nl_sock *);
+void nl_sock_wait(const struct nl_sock *, short int events);
 \f
 /* Netlink messages. */
 
index 91faa71373165922dccd3b839fcfc89408903fec..f4aa65a841f353779623f88adb60b2aac4e37217 100644 (file)
@@ -141,7 +141,7 @@ netlink_wait(struct vconn *vconn, enum vconn_wait_type wait)
     default:
         NOT_REACHED();
     }
-    poll_fd_wait(nl_sock_fd(netlink->dp.sock), events);
+    nl_sock_wait(netlink->dp.sock, events);
 }
 
 struct vconn_class netlink_vconn_class = {
index b4da4fbf9ebc4393760b40ad15019c46450b1d33..a9a7085404d3f53bc3f3e8e1b20642b3963186ab 100644 (file)
@@ -430,7 +430,7 @@ brc_run(void)
 void
 brc_wait(void)
 {
-    poll_fd_wait(nl_sock_fd(nl_sock), POLLIN);
+    nl_sock_wait(nl_sock, POLLIN);
 }
 
 void