Commit 518af1e0 authored by Eric Dumazet's avatar Eric Dumazet Committed by Stephen Hemminger

ss: do not bindly dump two families

ss currently dumps IPv4 sockets, then IPv6 sockets from the kernel,
even if -4 or -6 option was given. Filtering in user space then has to
drop all sockets of wrong family. Such a waste of time...

Before :

$ time ss -tn -4 | wc -l
251659

real	0m1.241s
user	0m0.423s
sys	0m0.806s

After:

$ time ss -tn -4 | wc -l
251672

real	0m0.779s
user	0m0.412s
sys	0m0.386s
Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
parent 22588a0e
......@@ -2199,6 +2199,8 @@ static int inet_show_netlink(struct filter *f, FILE *dump_fp, int protocol)
return -1;
rth.dump = MAGIC_SEQ;
rth.dump_fp = dump_fp;
if (preferred_family == PF_INET6)
family = PF_INET6;
again:
if ((err = sockdiag_send(family, rth.fd, protocol, f)))
......@@ -2211,7 +2213,7 @@ again:
}
goto Exit;
}
if (family == PF_INET) {
if (family == PF_INET && preferred_family != PF_INET) {
family = PF_INET6;
goto again;
}
......
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