From: Eric Dumazet <eduma...@google.com> 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 <eduma...@google.com> --- misc/ss.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/misc/ss.c b/misc/ss.c index 347e3a1..4ef8fea 100644 --- a/misc/ss.c +++ b/misc/ss.c @@ -2209,6 +2209,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))) @@ -2221,7 +2223,7 @@ again: } goto Exit; } - if (family == PF_INET) { + if (family == PF_INET && preferred_family != PF_INET) { family = PF_INET6; goto again; } -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html