netlink: Use nl_pid 0 to play nice with others.
While the netlink field is named nl_pid, and typically
contains a process id, setting it to a pid value directly
prevents other modules from also using a netlink socket.
On the other hand, setting it to 0 allows multiple modules
to use a netlink socket by letting the kernel assign the
nl_pid a value.
This allows the verito tap code to interact nicely with
the router plugin's librtnl after, say, tap-inject has
been enabled.
Change-Id: I9771929f34d15497a5f7b8c5fd78dac28e31383b
Signed-off-by: Jon Loeliger <jdl@netgate.com>
diff --git a/src/vnet/devices/netlink.c b/src/vnet/devices/netlink.c
index 8346b1c..1d44f28 100644
--- a/src/vnet/devices/netlink.c
+++ b/src/vnet/devices/netlink.c
@@ -76,7 +76,7 @@
return clib_error_return_unix (0, "socket(AF_NETLINK)");
ra.nl_family = AF_NETLINK;
- ra.nl_pid = getpid ();
+ ra.nl_pid = 0;
if ((bind (sock, (struct sockaddr *) &ra, sizeof (ra))) == -1)
{