summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/netlink-socket.c8
-rw-r--r--lib/netlink-socket.h2
2 files changed, 10 insertions, 0 deletions
diff --git a/lib/netlink-socket.c b/lib/netlink-socket.c
index 8e81da9c5..9e3dd9771 100644
--- a/lib/netlink-socket.c
+++ b/lib/netlink-socket.c
@@ -28,6 +28,7 @@
#include "netlink-protocol.h"
#include "ofpbuf.h"
#include "poll-loop.h"
+#include "socket-util.h"
#include "stress.h"
#include "vlog.h"
@@ -446,6 +447,13 @@ recv:
return 0;
}
+/* Drain all the messages currently in 'sock''s receive queue. */
+int
+nl_sock_drain(struct nl_sock *sock)
+{
+ return drain_rcvbuf(sock->fd);
+}
+
/* Starts a Netlink "dump" operation, by sending 'request' to the kernel via
* 'sock', and initializes 'dump' to reflect the state of the operation.
*
diff --git a/lib/netlink-socket.h b/lib/netlink-socket.h
index ad06d8118..6ed488050 100644
--- a/lib/netlink-socket.h
+++ b/lib/netlink-socket.h
@@ -58,6 +58,8 @@ 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_drain(struct nl_sock *);
+
void nl_sock_wait(const struct nl_sock *, short int events);
/* Table dumping. */