distinguish the inet and inet6 domain when loading the tcp_diag module
Subsystems (2)
PATCH 1/1 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 <[email protected]>
misc/ss.c +5 -0
@@ -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 <<r->idiag_family))) { + h =NLMSG_NEXT (h, status); +continue ; + } err =tcp_show_sock (h,NULL );if (err <0 )return err;