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 "SNAPSHOT.h"
#include "utils.h" #include "utils.h"
#include "ip_common.h" #include "ip_common.h"
#include "namespace.h"
int preferred_family = AF_UNSPEC; int preferred_family = AF_UNSPEC;
int human_readable = 0; int human_readable = 0;
@ -54,7 +55,7 @@ static void usage(void)
" -4 | -6 | -I | -D | -B | -0 |\n" " -4 | -6 | -I | -D | -B | -0 |\n"
" -l[oops] { maximum-addr-flush-attempts } |\n" " -l[oops] { maximum-addr-flush-attempts } |\n"
" -o[neline] | -t[imestamp] | -t[short] | -b[atch] [filename] |\n" " -o[neline] | -t[imestamp] | -t[short] | -b[atch] [filename] |\n"
" -rc[vbuf] [size]}\n"); " -rc[vbuf] [size] | -n[etns] name }\n");
exit(-1); exit(-1);
} }
@ -265,6 +266,10 @@ int main(int argc, char **argv)
rcvbuf = size; rcvbuf = size;
} else if (matches(opt, "-help") == 0) { } else if (matches(opt, "-help") == 0) {
usage(); usage();
} else if (matches(opt, "-netns") == 0) {
NEXT_ARG();
if (netns_switch(argv[1]))
exit(-1);
} else { } else {
fprintf(stderr, "Option \"%s\" is unknown, try \"ip -help\".\n", opt); fprintf(stderr, "Option \"%s\" is unknown, try \"ip -help\".\n", opt);
exit(-1); exit(-1);

View File

@ -31,7 +31,8 @@ ip \- show / manipulate routing, devices, policy routing and tunnels
\fB\-r\fR[\fIesolve\fR] | \fB\-r\fR[\fIesolve\fR] |
\fB\-f\fR[\fIamily\fR] { \fB\-f\fR[\fIamily\fR] {
.BR inet " | " inet6 " | " ipx " | " dnet " | " link " } | " .BR inet " | " inet6 " | " ipx " | " dnet " | " link " } | "
\fB\-o\fR[\fIneline\fR] } \fB\-o\fR[\fIneline\fR] |
\fB\-n\fR[\fIetns\fR] name }
.SH OPTIONS .SH OPTIONS
@ -134,6 +135,26 @@ the output.
use the system's name resolver to print DNS names instead of use the system's name resolver to print DNS names instead of
host addresses. 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 .SH IP - COMMAND SYNTAX
.SS .SS