diff --git a/bridge/Makefile b/bridge/Makefile index 1fb8320d..98007530 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 ee08f90a..5fcc552b 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 af31d410..cb3fb46e 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