ip: set the close-on-exec flag for descriptors
Otherwise a program executed by "ip netns exec" has two extra
descriptors.
$ ip netns exec test /bin/bash
$ lsof -p $$
...
bash 817 root 0u CHR 136,0 0t0 3 /dev/pts/0
bash 817 root 1u CHR 136,0 0t0 3 /dev/pts/0
bash 817 root 2u CHR 136,0 0t0 3 /dev/pts/0
bash 817 root 3u sock 0,6 0t0 13386 protocol: NETLINK
bash 817 root 4r REG 0,3 0 4026532155 net
bash 817 root 255u CHR 136,0 0t0 3 /dev/pts/0
Cc: Stephen Hemminger <stephen@networkplumber.org>
Reported-by: Dilip Daya <dilip.daya@hp.com>
Acked-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Andrey Vagin <avagin@openvz.org>
diff --git a/lib/libnetlink.c b/lib/libnetlink.c
index b17e1aa..9e2a795 100644
--- a/lib/libnetlink.c
+++ b/lib/libnetlink.c
@@ -43,7 +43,7 @@
memset(rth, 0, sizeof(*rth));
- rth->fd = socket(AF_NETLINK, SOCK_RAW, protocol);
+ rth->fd = socket(AF_NETLINK, SOCK_RAW | SOCK_CLOEXEC, protocol);
if (rth->fd < 0) {
perror("Cannot open netlink socket");
return -1;