diff --git a/doc/ip-cref.tex b/doc/ip-cref.tex index cc0e07d3..bb4eb783 100644 --- a/doc/ip-cref.tex +++ b/doc/ip-cref.tex @@ -294,6 +294,10 @@ broadcast address will break networking. Do not use it, if you do not understand what this operation really does. \end{NB} +\item \verb|netns PID| + +--- move the device to the network namespace associated with the process PID. + \end{itemize} \vskip 1mm diff --git a/ip/iplink.c b/ip/iplink.c index 95801a6c..c70c84ad 100644 --- a/ip/iplink.c +++ b/ip/iplink.c @@ -49,6 +49,7 @@ void iplink_usage(void) fprintf(stderr, " name NEWNAME |\n"); fprintf(stderr, " address LLADDR | broadcast LLADDR |\n"); fprintf(stderr, " mtu MTU }\n"); + fprintf(stderr, " netns PID }\n"); fprintf(stderr, " ip link show [ DEVICE ]\n"); exit(-1); } @@ -156,6 +157,7 @@ int iplink_parse(int argc, char **argv, struct iplink_req *req, char abuf[32]; int qlen = -1; int mtu = -1; + int netns = -1; ret = argc; @@ -197,6 +199,13 @@ int iplink_parse(int argc, char **argv, struct iplink_req *req, if (get_integer(&mtu, *argv, 0)) invarg("Invalid \"mtu\" value\n", *argv); addattr_l(&req->n, sizeof(*req), IFLA_MTU, &mtu, 4); + } else if (strcmp(*argv, "netns") == 0) { + NEXT_ARG(); + if (netns != -1) + duparg("netns", *argv); + if (get_integer(&netns, *argv, 0)) + invarg("Invalid \"netns\" value\n", *argv); + addattr_l(&req->n, sizeof(*req), IFLA_NET_NS_PID, &netns, 4); } else if (strcmp(*argv, "multicast") == 0) { NEXT_ARG(); req->i.ifi_change |= IFF_MULTICAST; diff --git a/man/man8/ip.8 b/man/man8/ip.8 index da314f39..2097317c 100644 --- a/man/man8/ip.8 +++ b/man/man8/ip.8 @@ -50,7 +50,10 @@ ip \- show / manipulate routing, devices, policy routing and tunnels .IR LLADDR " |" .br .B mtu -.IR MTU " }" +.IR MTU " |" +.br +.B netns +.IR PID " }" .ti -8 .B ip link show @@ -873,6 +876,11 @@ change the link layer broadcast address or the peer address when the interface is .IR "POINTOPOINT" . +.TP +.BI netns " PID" +move the device to the network namespace associated with the process +.IR "PID" . + .PP .B Warning: If multiple parameter changes are requested,