mirror of
https://git.proxmox.com/git/mirror_iproute2
synced 2025-10-19 17:15:16 +00:00
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: Vadim Kochan <vadim4j@gmail.com>
This commit is contained in:
parent
ebd58d19f0
commit
95ce04bc86
@ -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)
|
|||||||
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 @@
|
|||||||
#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)
|
|||||||
" -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[] = {
|
|||||||
{ "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[])
|
|||||||
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[])
|
|||||||
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();
|
||||||
|
Loading…
Reference in New Issue
Block a user