]> git.proxmox.com Git - mirror_iproute2.git/commitdiff
ip: Allow to easy change network namespace
authorVadim Kochan <vadim4j@gmail.com>
Wed, 24 Dec 2014 21:04:09 +0000 (23:04 +0200)
committerStephen Hemminger <shemming@brocade.com>
Sat, 27 Dec 2014 18:22:29 +0000 (10:22 -0800)
Added new '-netns' option to simplify executing following cmd:

    ip netns exec NETNS ip OPTIONS COMMAND OBJECT

    to

    ip -n[etns] NETNS OPTIONS COMMAND OBJECT

e.g.:

    ip -net vnet0 link add br0 type bridge
    ip -n vnet0 link

Signed-off-by: Vadim Kochan <vadim4j@gmail.com>
Signed-off-by: Jiri Pirko <jiri@resnulli.us>
ip/ip.c
man/man8/ip.8

diff --git a/ip/ip.c b/ip/ip.c
index 9b90707a7022911458f97bc8157723480b5cd222..61cc9c3f247fa4a3efc54ca367b035bc602cb070 100644 (file)
--- a/ip/ip.c
+++ b/ip/ip.c
@@ -22,6 +22,7 @@
 #include "SNAPSHOT.h"
 #include "utils.h"
 #include "ip_common.h"
+#include "namespace.h"
 
 int preferred_family = AF_UNSPEC;
 int human_readable = 0;
@@ -54,7 +55,7 @@ static void usage(void)
 "                    -4 | -6 | -I | -D | -B | -0 |\n"
 "                    -l[oops] { maximum-addr-flush-attempts } |\n"
 "                    -o[neline] | -t[imestamp] | -t[short] | -b[atch] [filename] |\n"
-"                    -rc[vbuf] [size]}\n");
+"                    -rc[vbuf] [size] | -n[etns] name }\n");
        exit(-1);
 }
 
@@ -265,6 +266,10 @@ int main(int argc, char **argv)
                        rcvbuf = size;
                } else if (matches(opt, "-help") == 0) {
                        usage();
+               } else if (matches(opt, "-netns") == 0) {
+                       NEXT_ARG();
+                       if (netns_switch(argv[1]))
+                               exit(-1);
                } else {
                        fprintf(stderr, "Option \"%s\" is unknown, try \"ip -help\".\n", opt);
                        exit(-1);
index 2d42e981381b6685bd97b9f92c80901f0c349719..0bae59e739f1092db208dcc386eb248e234186ce 100644 (file)
@@ -31,7 +31,8 @@ ip \- show / manipulate routing, devices, policy routing and tunnels
 \fB\-r\fR[\fIesolve\fR] |
 \fB\-f\fR[\fIamily\fR] {
 .BR inet " | " inet6 " | " ipx " | " dnet " | " link " } | "
-\fB\-o\fR[\fIneline\fR] }
+\fB\-o\fR[\fIneline\fR] |
+\fB\-n\fR[\fIetns\fR] name }
 
 
 .SH OPTIONS
@@ -134,6 +135,26 @@ the output.
 use the system's name resolver to print DNS names instead of
 host addresses.
 
+.TP
+.BR "\-n" , " \-net" , " \-netns " <NETNS>
+switches
+.B ip
+to the specified network namespace
+.IR NETNS .
+Actually it just simplifies executing of:
+
+.B ip netns exec
+.IR NETNS
+.B ip
+.RI "[ " OPTIONS " ] " OBJECT " { " COMMAND " | "
+.BR help " }"
+
+to
+
+.B ip
+.RI "-n[etns] " NETNS " [ " OPTIONS " ] " OBJECT " { " COMMAND " | "
+.BR help " }"
+
 .SH IP - COMMAND SYNTAX
 
 .SS