From: Li Yewang Date: Tue, 9 Sep 2008 01:13:42 +0000 (+0800) Subject: distinguish the inet and inet6 domain when loading the tcp_diag module X-Git-Tag: v2.6.27~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a37b01c1f00bfbde57f424eec4e7fcfcabb7acfc;p=thirdparty%2Fiproute2.git distinguish the inet and inet6 domain when loading the tcp_diag module When load the tcp_diag module, and use "ss -f inet" command to show the socket information of inet domain. But this command also shows the information of inet6 domain, but not only inet domain. and "ss -f inet6", "ss -4", "ss -6" have the same problem. Signed-off-by: Li Yewang Signed-off-by: Stephen Hemminger --- diff --git a/misc/ss.c b/misc/ss.c index e06946b49..651fe3b52 100644 --- a/misc/ss.c +++ b/misc/ss.c @@ -1503,6 +1503,7 @@ static int tcp_show_netlink(struct filter *f, FILE *dump_fp, int socktype) h = (struct nlmsghdr*)buf; while (NLMSG_OK(h, status)) { int err; + struct inet_diag_msg *r = NLMSG_DATA(h); if (/*h->nlmsg_pid != rth->local.nl_pid ||*/ h->nlmsg_seq != 123456) @@ -1521,6 +1522,10 @@ static int tcp_show_netlink(struct filter *f, FILE *dump_fp, int socktype) return 0; } if (!dump_fp) { + if (!(f->families & (1<idiag_family))) { + h = NLMSG_NEXT(h, status); + continue; + } err = tcp_show_sock(h, NULL); if (err < 0) return err;