nlmon: added netns support.
#include <linux/rtnetlink.h>
#include "netlink.h"
#include "netlink-socket.h"
+#include "netnsid.h"
#include "openvswitch/ofpbuf.h"
#include "openvswitch/poll-loop.h"
#include "timeval.h"
@@ -41,6 +42,7 @@ main(int argc OVS_UNUSED, char *argv[])
{
uint64_t buf_stub[4096 / 64];
struct nl_sock *sock;
+ int nsid;
struct ofpbuf buf;
int error;
@@ -57,9 +59,10 @@ main(int argc OVS_UNUSED, char *argv[])
ovs_fatal(error, "could not join RTNLGRP_LINK multicast group");
}
+ nl_sock_listen_all_nsid(sock, true);
ofpbuf_use_stub(&buf, buf_stub, sizeof buf_stub);
for (;;) {
- error = nl_sock_recv(sock, &buf, NULL, false);
+ error = nl_sock_recv(sock, &buf, &nsid, false);
if (error == EAGAIN) {
/* Nothing to do. */
} else if (error == ENOBUFS) {
@@ -123,6 +126,11 @@ main(int argc OVS_UNUSED, char *argv[])
}
}
printf("\n");
+ if (netnsid_is_remote(nsid)) {
+ printf("\tnetns id: %d\n", nsid);
+ } else {
+ printf("\tnetns id: local\n");
+ }
if (attrs[IFLA_MASTER]) {
uint32_t idx = nl_attr_get_u32(attrs[IFLA_MASTER]);
char ifname[IFNAMSIZ];
