From: vadimk Date: Fri, 7 Nov 2014 16:25:30 +0000 (+0200) Subject: ip netns: Identify netns for the current process X-Git-Tag: v3.18.0~36 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0948adc01a3cee312e2bf81cfffe316f0b5f950b;p=thirdparty%2Fiproute2.git ip netns: Identify netns for the current process As 'ip' util will share the same netns from the caller process then we can just look at /proc/self/.. to show the netns of the current process by: ip netns id Signed-off-by: Vadim Kochan --- diff --git a/ip/ipnetns.c b/ip/ipnetns.c index 90a496f7a..1c8aa0290 100644 --- a/ip/ipnetns.c +++ b/ip/ipnetns.c @@ -59,7 +59,7 @@ static int usage(void) fprintf(stderr, "Usage: ip netns list\n"); fprintf(stderr, " ip netns add NAME\n"); fprintf(stderr, " ip netns delete NAME\n"); - fprintf(stderr, " ip netns identify PID\n"); + fprintf(stderr, " ip netns identify [PID]\n"); fprintf(stderr, " ip netns pids NAME\n"); fprintf(stderr, " ip netns exec NAME cmd ...\n"); fprintf(stderr, " ip netns monitor\n"); @@ -299,19 +299,17 @@ static int netns_identify(int argc, char **argv) struct dirent *entry; if (argc < 1) { - fprintf(stderr, "No pid specified\n"); - return -1; - } - if (argc > 1) { + pidstr = "self"; + } else if (argc > 1) { fprintf(stderr, "extra arguments specified\n"); return -1; - } - pidstr = argv[0]; - - if (!is_pid(pidstr)) { - fprintf(stderr, "Specified string '%s' is not a pid\n", - pidstr); - return -1; + } else { + pidstr = argv[0]; + if (!is_pid(pidstr)) { + fprintf(stderr, "Specified string '%s' is not a pid\n", + pidstr); + return -1; + } } snprintf(net_path, sizeof(net_path), "/proc/%s/ns/net", pidstr); diff --git a/man/man8/ip-netns.8 b/man/man8/ip-netns.8 index 6aa6e934f..74343ed6b 100644 --- a/man/man8/ip-netns.8 +++ b/man/man8/ip-netns.8 @@ -21,7 +21,7 @@ ip-netns \- process network namespace management .ti -8 .BR "ip netns identify" -.I PID +.RI "[ " PID " ]" .ti -8 .BR "ip netns pids" @@ -85,10 +85,11 @@ persists until it has no more users. ip netns delete may fail if the mount point is in use in another mount namespace. .TP -.B ip netns identify PID - Report network namespaces names for process +.B ip netns identify [PID] - Report network namespaces names for process .sp This command walks through /var/run/netns and finds all the network -namespace names for network namespace of the specified process. +namespace names for network namespace of the specified process, if PID is +not specified then the current process will be used. .TP .B ip netns pids NAME - Report processes in the named network namespace