* [PATCH iproute2 v2] ip: Simplify executing ip cmd within network ns
@ 2014-12-11 13:38 Vadim Kochan
2014-12-11 14:21 ` Jiri Pirko
0 siblings, 1 reply; 3+ messages in thread
From: Vadim Kochan @ 2014-12-11 13:38 UTC (permalink / raw)
To: netdev; +Cc: Vadim Kochan
From: Vadim Kochan <vadim4j@gmail.com>
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>
---
Changes v1 -> v2
use -n[etns] option name: suggested by Nicolas Dichtel
changed man ip.8 page
ip/ip.c | 6 ++++++
ip/ip_common.h | 1 +
ip/ipnetns.c | 2 +-
man/man8/ip.8 | 24 +++++++++++++++++++++++-
4 files changed, 31 insertions(+), 2 deletions(-)
diff --git a/ip/ip.c b/ip/ip.c
index 5f759d5..f3c2cdb 100644
--- a/ip/ip.c
+++ b/ip/ip.c
@@ -262,6 +262,12 @@ int main(int argc, char **argv)
rcvbuf = size;
} else if (matches(opt, "-help") == 0) {
usage();
+ } else if (matches(opt, "-netns") == 0) {
+ argc--;
+ argv++;
+ argv[0] = argv[1];
+ argv[1] = basename;
+ return netns_exec(argc, argv);
} else {
fprintf(stderr, "Option \"%s\" is unknown, try \"ip -help\".\n", opt);
exit(-1);
diff --git a/ip/ip_common.h b/ip/ip_common.h
index 75bfb82..d4f7e1f 100644
--- a/ip/ip_common.h
+++ b/ip/ip_common.h
@@ -88,6 +88,7 @@ struct link_util
struct link_util *get_link_kind(const char *kind);
struct link_util *get_link_slave_kind(const char *slave_kind);
int get_netns_fd(const char *name);
+int netns_exec(int argc, char **argv);
#ifndef INFINITY_LIFE_TIME
#define INFINITY_LIFE_TIME 0xFFFFFFFFU
diff --git a/ip/ipnetns.c b/ip/ipnetns.c
index 1c8aa02..367841c 100644
--- a/ip/ipnetns.c
+++ b/ip/ipnetns.c
@@ -129,7 +129,7 @@ static void bind_etc(const char *name)
closedir(dir);
}
-static int netns_exec(int argc, char **argv)
+int netns_exec(int argc, char **argv)
{
/* Setup the proper environment for apps that are not netns
* aware, and execute a program in that environment.
diff --git a/man/man8/ip.8 b/man/man8/ip.8
index 2d42e98..389c808 100644
--- a/man/man8/ip.8
+++ b/man/man8/ip.8
@@ -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] }
.SH OPTIONS
@@ -134,6 +135,27 @@ the output.
use the system's name resolver to print DNS names instead of
host addresses.
+.TP
+.BR "\-n" , " \-net" , " \-netns " <NETNS>
+executes the following
+.RI "[ " OPTIONS " ] " OBJECT " { " COMMAND " | "
+.BR help " }"
+in 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
--
2.1.3
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH iproute2 v2] ip: Simplify executing ip cmd within network ns
2014-12-11 13:38 [PATCH iproute2 v2] ip: Simplify executing ip cmd within network ns Vadim Kochan
@ 2014-12-11 14:21 ` Jiri Pirko
2014-12-11 14:34 ` vadim4j
0 siblings, 1 reply; 3+ messages in thread
From: Jiri Pirko @ 2014-12-11 14:21 UTC (permalink / raw)
To: Vadim Kochan; +Cc: netdev
Thu, Dec 11, 2014 at 02:38:23PM CET, vadim4j@gmail.com wrote:
>From: Vadim Kochan <vadim4j@gmail.com>
>
>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>
>---
>Changes v1 -> v2
> use -n[etns] option name: suggested by Nicolas Dichtel
> changed man ip.8 page
>
> ip/ip.c | 6 ++++++
> ip/ip_common.h | 1 +
> ip/ipnetns.c | 2 +-
> man/man8/ip.8 | 24 +++++++++++++++++++++++-
> 4 files changed, 31 insertions(+), 2 deletions(-)
>
>diff --git a/ip/ip.c b/ip/ip.c
>index 5f759d5..f3c2cdb 100644
>--- a/ip/ip.c
>+++ b/ip/ip.c
>@@ -262,6 +262,12 @@ int main(int argc, char **argv)
> rcvbuf = size;
> } else if (matches(opt, "-help") == 0) {
> usage();
>+ } else if (matches(opt, "-netns") == 0) {
>+ argc--;
>+ argv++;
>+ argv[0] = argv[1];
>+ argv[1] = basename;
>+ return netns_exec(argc, argv);
Can't the same functionality be done in the same ip process, meaning
without execvp ip again? It would seem clearer to me.
How about other tools (tc,bridge,..) ? It would be nice to have the same
option there as well.
> } else {
> fprintf(stderr, "Option \"%s\" is unknown, try \"ip -help\".\n", opt);
> exit(-1);
>diff --git a/ip/ip_common.h b/ip/ip_common.h
>index 75bfb82..d4f7e1f 100644
>--- a/ip/ip_common.h
>+++ b/ip/ip_common.h
>@@ -88,6 +88,7 @@ struct link_util
> struct link_util *get_link_kind(const char *kind);
> struct link_util *get_link_slave_kind(const char *slave_kind);
> int get_netns_fd(const char *name);
>+int netns_exec(int argc, char **argv);
>
> #ifndef INFINITY_LIFE_TIME
> #define INFINITY_LIFE_TIME 0xFFFFFFFFU
>diff --git a/ip/ipnetns.c b/ip/ipnetns.c
>index 1c8aa02..367841c 100644
>--- a/ip/ipnetns.c
>+++ b/ip/ipnetns.c
>@@ -129,7 +129,7 @@ static void bind_etc(const char *name)
> closedir(dir);
> }
>
>-static int netns_exec(int argc, char **argv)
>+int netns_exec(int argc, char **argv)
> {
> /* Setup the proper environment for apps that are not netns
> * aware, and execute a program in that environment.
>diff --git a/man/man8/ip.8 b/man/man8/ip.8
>index 2d42e98..389c808 100644
>--- a/man/man8/ip.8
>+++ b/man/man8/ip.8
>@@ -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] }
>
>
> .SH OPTIONS
>@@ -134,6 +135,27 @@ the output.
> use the system's name resolver to print DNS names instead of
> host addresses.
>
>+.TP
>+.BR "\-n" , " \-net" , " \-netns " <NETNS>
>+executes the following
>+.RI "[ " OPTIONS " ] " OBJECT " { " COMMAND " | "
>+.BR help " }"
>+in 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
>--
>2.1.3
>
>--
>To unsubscribe from this list: send the line "unsubscribe netdev" in
>the body of a message to majordomo@vger.kernel.org
>More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH iproute2 v2] ip: Simplify executing ip cmd within network ns
2014-12-11 14:21 ` Jiri Pirko
@ 2014-12-11 14:34 ` vadim4j
0 siblings, 0 replies; 3+ messages in thread
From: vadim4j @ 2014-12-11 14:34 UTC (permalink / raw)
To: Jiri Pirko; +Cc: Vadim Kochan, netdev
On Thu, Dec 11, 2014 at 03:21:31PM +0100, Jiri Pirko wrote:
> Thu, Dec 11, 2014 at 02:38:23PM CET, vadim4j@gmail.com wrote:
> >From: Vadim Kochan <vadim4j@gmail.com>
> >
> >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>
> >---
> >Changes v1 -> v2
> > use -n[etns] option name: suggested by Nicolas Dichtel
> > changed man ip.8 page
> >
> > ip/ip.c | 6 ++++++
> > ip/ip_common.h | 1 +
> > ip/ipnetns.c | 2 +-
> > man/man8/ip.8 | 24 +++++++++++++++++++++++-
> > 4 files changed, 31 insertions(+), 2 deletions(-)
> >
> >diff --git a/ip/ip.c b/ip/ip.c
> >index 5f759d5..f3c2cdb 100644
> >--- a/ip/ip.c
> >+++ b/ip/ip.c
> >@@ -262,6 +262,12 @@ int main(int argc, char **argv)
> > rcvbuf = size;
> > } else if (matches(opt, "-help") == 0) {
> > usage();
> >+ } else if (matches(opt, "-netns") == 0) {
> >+ argc--;
> >+ argv++;
> >+ argv[0] = argv[1];
> >+ argv[1] = basename;
> >+ return netns_exec(argc, argv);
>
Hi,
>
> Can't the same functionality be done in the same ip process, meaning
> without execvp ip again? It would seem clearer to me.
>
Hm, yes, I will look on this ...
> How about other tools (tc,bridge,..) ? It would be nice to have the same
> option there as well.
>
Sure, good idea, I will try.
Thanks,
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2014-12-11 14:44 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-12-11 13:38 [PATCH iproute2 v2] ip: Simplify executing ip cmd within network ns Vadim Kochan
2014-12-11 14:21 ` Jiri Pirko
2014-12-11 14:34 ` vadim4j
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).