From a37b01c1f00bfbde57f424eec4e7fcfcabb7acfc Mon Sep 17 00:00:00 2001 From: Li Yewang Date: Tue, 9 Sep 2008 09:13:42 +0800 Subject: [PATCH] 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 --- misc/ss.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/misc/ss.c b/misc/ss.c index e06946b4..651fe3b5 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;