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: Eric Dumazet <edumazet@google.com>
This commit is contained in:
parent
22588a0e65
commit
518af1e0b1
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue