Commit 95ce04bc authored by Vadim Kochan's avatar Vadim Kochan Committed by Stephen Hemminger

ss: Show stats from specified network namespace

Added new '-N NSNAME, --net=NSNAME' option to show socket stats
from the specified network namespace name.
Signed-off-by: default avatarVadim Kochan <vadim4j@gmail.com>
parent ebd58d19
...@@ -84,6 +84,9 @@ context of the creating process, however the context shown will reflect ...@@ -84,6 +84,9 @@ context of the creating process, however the context shown will reflect
any policy role, type and/or range transition rules applied, any policy role, type and/or range transition rules applied,
and is therefore a useful reference. and is therefore a useful reference.
.TP .TP
.B \-N NSNAME, \-\-net=NSNAME
Switch to the specified network namespace name.
.TP
.B \-b, \-\-bpf .B \-b, \-\-bpf
Show socket BPF filters (only administrators are allowed to get these information). Show socket BPF filters (only administrators are allowed to get these information).
.TP .TP
......
...@@ -10,6 +10,10 @@ ifeq ($(HAVE_SELINUX),y) ...@@ -10,6 +10,10 @@ ifeq ($(HAVE_SELINUX),y)
CFLAGS += $(shell pkg-config --cflags libselinux) -DHAVE_SELINUX CFLAGS += $(shell pkg-config --cflags libselinux) -DHAVE_SELINUX
endif endif
ifeq ($(IP_CONFIG_SETNS),y)
CFLAGS += -DHAVE_SETNS
endif
all: $(TARGETS) all: $(TARGETS)
ss: $(SSOBJ) ss: $(SSOBJ)
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
#include "rt_names.h" #include "rt_names.h"
#include "ll_map.h" #include "ll_map.h"
#include "libnetlink.h" #include "libnetlink.h"
#include "namespace.h"
#include "SNAPSHOT.h" #include "SNAPSHOT.h"
#include <linux/tcp.h> #include <linux/tcp.h>
...@@ -3246,6 +3247,7 @@ static void _usage(FILE *dest) ...@@ -3246,6 +3247,7 @@ static void _usage(FILE *dest)
" -b, --bpf show bpf filter socket information\n" " -b, --bpf show bpf filter socket information\n"
" -Z, --context display process SELinux security contexts\n" " -Z, --context display process SELinux security contexts\n"
" -z, --contexts display process and socket SELinux security contexts\n" " -z, --contexts display process and socket SELinux security contexts\n"
" -N, --net switch to the specified network namespace name\n"
"\n" "\n"
" -4, --ipv4 display only IP version 4 sockets\n" " -4, --ipv4 display only IP version 4 sockets\n"
" -6, --ipv6 display only IP version 6 sockets\n" " -6, --ipv6 display only IP version 6 sockets\n"
...@@ -3345,6 +3347,7 @@ static const struct option long_opts[] = { ...@@ -3345,6 +3347,7 @@ static const struct option long_opts[] = {
{ "help", 0, 0, 'h' }, { "help", 0, 0, 'h' },
{ "context", 0, 0, 'Z' }, { "context", 0, 0, 'Z' },
{ "contexts", 0, 0, 'z' }, { "contexts", 0, 0, 'z' },
{ "net", 1, 0, 'N' },
{ 0 } { 0 }
}; };
...@@ -3360,7 +3363,7 @@ int main(int argc, char *argv[]) ...@@ -3360,7 +3363,7 @@ int main(int argc, char *argv[])
struct filter dbs_filter = {}; struct filter dbs_filter = {};
int state_filter = 0; int state_filter = 0;
while ((ch = getopt_long(argc, argv, "dhaletuwxnro460spbf:miA:D:F:vVzZ", while ((ch = getopt_long(argc, argv, "dhaletuwxnro460spbf:miA:D:F:vVzZN:",
long_opts, NULL)) != EOF) { long_opts, NULL)) != EOF) {
switch(ch) { switch(ch) {
case 'n': case 'n':
...@@ -3532,6 +3535,10 @@ int main(int argc, char *argv[]) ...@@ -3532,6 +3535,10 @@ int main(int argc, char *argv[])
show_proc_ctx++; show_proc_ctx++;
user_ent_hash_build(); user_ent_hash_build();
break; break;
case 'N':
if (netns_switch(optarg))
exit(1);
break;
case 'h': case 'h':
case '?': case '?':
help(); help();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment