[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <1432903069.7456.87.camel@edumazet-glaptop2.roam.corp.google.com>
Date: Fri, 29 May 2015 05:37:49 -0700
From: Eric Dumazet <eric.dumazet@...il.com>
To: Stephen Hemminger <stephen@...workplumber.org>
Cc: netdev <netdev@...r.kernel.org>
Subject: [PATCH iproute2] ss: do not bindly dump two families
From: Eric Dumazet <edumazet@...gle.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 <edumazet@...gle.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 majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists