devlink: introduce cmdline option to switch to a different namespace
Similar to ip tool, add an option to devlink to operate under certain network namespace. Unfortunately, "-n" is already taken, so use "-N" instead. Example: $ devlink -N testns1 dev show Signed-off-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David Ahern <dsahern@kernel.org>
This commit is contained in:
parent
f93134841e
commit
29993df876
|
|
@ -32,6 +32,7 @@
|
||||||
#include "mnlg.h"
|
#include "mnlg.h"
|
||||||
#include "json_writer.h"
|
#include "json_writer.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
|
#include "namespace.h"
|
||||||
|
|
||||||
#define ESWITCH_MODE_LEGACY "legacy"
|
#define ESWITCH_MODE_LEGACY "legacy"
|
||||||
#define ESWITCH_MODE_SWITCHDEV "switchdev"
|
#define ESWITCH_MODE_SWITCHDEV "switchdev"
|
||||||
|
|
@ -7023,7 +7024,7 @@ static int cmd_trap(struct dl *dl)
|
||||||
static void help(void)
|
static void help(void)
|
||||||
{
|
{
|
||||||
pr_err("Usage: devlink [ OPTIONS ] OBJECT { COMMAND | help }\n"
|
pr_err("Usage: devlink [ OPTIONS ] OBJECT { COMMAND | help }\n"
|
||||||
" devlink [ -f[orce] ] -b[atch] filename\n"
|
" devlink [ -f[orce] ] -b[atch] filename -N[etns] netnsname\n"
|
||||||
"where OBJECT := { dev | port | sb | monitor | dpipe | resource | region | health | trap }\n"
|
"where OBJECT := { dev | port | sb | monitor | dpipe | resource | region | health | trap }\n"
|
||||||
" OPTIONS := { -V[ersion] | -n[o-nice-names] | -j[son] | -p[retty] | -v[erbose] -s[tatistics] }\n");
|
" OPTIONS := { -V[ersion] | -n[o-nice-names] | -j[son] | -p[retty] | -v[erbose] -s[tatistics] }\n");
|
||||||
}
|
}
|
||||||
|
|
@ -7173,6 +7174,7 @@ int main(int argc, char **argv)
|
||||||
{ "pretty", no_argument, NULL, 'p' },
|
{ "pretty", no_argument, NULL, 'p' },
|
||||||
{ "verbose", no_argument, NULL, 'v' },
|
{ "verbose", no_argument, NULL, 'v' },
|
||||||
{ "statistics", no_argument, NULL, 's' },
|
{ "statistics", no_argument, NULL, 's' },
|
||||||
|
{ "Netns", required_argument, NULL, 'N' },
|
||||||
{ NULL, 0, NULL, 0 }
|
{ NULL, 0, NULL, 0 }
|
||||||
};
|
};
|
||||||
const char *batch_file = NULL;
|
const char *batch_file = NULL;
|
||||||
|
|
@ -7188,7 +7190,7 @@ int main(int argc, char **argv)
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
while ((opt = getopt_long(argc, argv, "Vfb:njpvs",
|
while ((opt = getopt_long(argc, argv, "Vfb:njpvsN:",
|
||||||
long_options, NULL)) >= 0) {
|
long_options, NULL)) >= 0) {
|
||||||
|
|
||||||
switch (opt) {
|
switch (opt) {
|
||||||
|
|
@ -7217,6 +7219,12 @@ int main(int argc, char **argv)
|
||||||
case 's':
|
case 's':
|
||||||
dl->stats = true;
|
dl->stats = true;
|
||||||
break;
|
break;
|
||||||
|
case 'N':
|
||||||
|
if (netns_switch(optarg)) {
|
||||||
|
ret = EXIT_FAILURE;
|
||||||
|
goto dl_free;
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
pr_err("Unknown option.\n");
|
pr_err("Unknown option.\n");
|
||||||
help();
|
help();
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,10 @@ Turn on verbose output.
|
||||||
.BR "\-s" , " --statistics"
|
.BR "\-s" , " --statistics"
|
||||||
Output statistics.
|
Output statistics.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.BR "\-N", " \-Netns " <NETNSNAME>
|
||||||
|
Switches to the specified network namespace.
|
||||||
|
|
||||||
.SS
|
.SS
|
||||||
.I OBJECT
|
.I OBJECT
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue