From: Vadim Kochan Date: Wed, 24 Dec 2014 21:04:10 +0000 (+0200) Subject: bridge: Allow to easy change network namespace X-Git-Tag: v3.19.0~35 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=527910c8015dc5f6d4c81cbc1266bcf1220e05ab;p=thirdparty%2Fiproute2.git bridge: Allow to easy change network namespace Added new '-netns' option to simplify executing following cmd: ip netns exec NETNS bridge OPTIONS COMMAND OBJECT to bridge -n[etns] NETNS OPTIONS COMMAND OBJECT e.g.: bridge -net vnet0 fdb Signed-off-by: Vadim Kochan Signed-off-by: Jiri Pirko --- diff --git a/bridge/Makefile b/bridge/Makefile index 1fb8320d8..980075302 100644 --- a/bridge/Makefile +++ b/bridge/Makefile @@ -2,6 +2,10 @@ BROBJ = bridge.o fdb.o monitor.o link.o mdb.o vlan.o include ../Config +ifeq ($(IP_CONFIG_SETNS),y) + CFLAGS += -DHAVE_SETNS +endif + all: bridge bridge: $(BROBJ) $(LIBNETLINK) diff --git a/bridge/bridge.c b/bridge/bridge.c index ee08f90af..5fcc552b1 100644 --- a/bridge/bridge.c +++ b/bridge/bridge.c @@ -13,6 +13,7 @@ #include "SNAPSHOT.h" #include "utils.h" #include "br_common.h" +#include "namespace.h" struct rtnl_handle rth = { .fd = -1 }; int preferred_family = AF_UNSPEC; @@ -31,7 +32,7 @@ static void usage(void) "Usage: bridge [ OPTIONS ] OBJECT { COMMAND | help }\n" "where OBJECT := { link | fdb | mdb | vlan | monitor }\n" " OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] |\n" -" -o[neline] | -t[imestamp] \n"); +" -o[neline] | -t[imestamp] | -n[etns] name }\n"); exit(-1); } @@ -112,6 +113,10 @@ main(int argc, char **argv) preferred_family = AF_INET; } else if (strcmp(opt, "-6") == 0) { preferred_family = AF_INET6; + } else if (matches(opt, "-netns") == 0) { + NEXT_ARG(); + if (netns_switch(argv[1])) + exit(-1); } else { fprintf(stderr, "Option \"%s\" is unknown, try \"bridge help\".\n", opt); exit(-1); diff --git a/man/man8/bridge.8 b/man/man8/bridge.8 index af31d410c..cb3fb46e7 100644 --- a/man/man8/bridge.8 +++ b/man/man8/bridge.8 @@ -19,7 +19,8 @@ bridge \- show / manipulate bridge addresses and devices .ti -8 .IR OPTIONS " := { " \fB\-V\fR[\fIersion\fR] | -\fB\-s\fR[\fItatistics\fR] } +\fB\-s\fR[\fItatistics\fR] | +\fB\-n\fR[\fIetns\fR] name } .ti -8 .BR "bridge link set" @@ -112,6 +113,26 @@ output more information. If this option is given multiple times, the amount of information increases. As a rule, the information is statistics or some time values. +.TP +.BR "\-n" , " \-net" , " \-netns " +switches +.B bridge +to the specified network namespace +.IR NETNS . +Actually it just simplifies executing of: + +.B ip netns exec +.IR NETNS +.B bridge +.RI "[ " OPTIONS " ] " OBJECT " { " COMMAND " | " +.BR help " }" + +to + +.B bridge +.RI "-n[etns] " NETNS " [ " OPTIONS " ] " OBJECT " { " COMMAND " | " +.BR help " }" + .SH BRIDGE - COMMAND SYNTAX