ip: Allow to easy change network namespace

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>
This commit is contained in:
Vadim Kochan 2014-12-24 23:04:09 +02:00 committed by Stephen Hemminger
parent eb67e4498a
commit 52700d40a2
2 changed files with 28 additions and 2 deletions

View File

@ -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);

View 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