lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-Id: <1348565799-20080-1-git-send-email-ppisar@redhat.com> Date: Tue, 25 Sep 2012 11:36:39 +0200 From: Petr Písař <ppisar@...hat.com> To: <netdev@...r.kernel.org> Cc: Petr Písař <ppisar@...hat.com> Subject: [PATCH] List interfaces without net address by default This fixes regression in iproute2-3.5.1 when `ip addr show' skipped interfaces without network layer address. Wrong output: 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:50:54:00:0f:03 brd ff:ff:ff:ff:ff:ff inet 10.34.25.198/23 brd 10.34.25.255 scope global eth0 inet6 2620:52:0:2219:250:54ff:fe00:f03/64 scope global dynamic valid_lft 2591919sec preferred_lft 604719sec inet6 fe80::250:54ff:fe00:f03/64 scope link valid_lft forever preferred_lft forever Expected output: 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:50:54:00:0f:03 brd ff:ff:ff:ff:ff:ff inet 10.34.25.198/23 brd 10.34.25.255 scope global eth0 inet6 2620:52:0:2219:250:54ff:fe00:f03/64 scope global dynamic valid_lft 2591896sec preferred_lft 604696sec inet6 fe80::250:54ff:fe00:f03/64 scope link valid_lft forever preferred_lft forever 5: veth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000 link/ether 8a:ec:35:34:1f:a8 brd ff:ff:ff:ff:ff:ff 6: veth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000 link/ether 2e:97:ef:77:40:82 brd ff:ff:ff:ff:ff:ff Signed-off-by: Petr Písař <ppisar@...hat.com> --- ip/ipaddress.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/ip/ipaddress.c b/ip/ipaddress.c index 69a63b3..4382ab5 100644 --- a/ip/ipaddress.c +++ b/ip/ipaddress.c @@ -785,6 +785,7 @@ static void ipaddr_filter(struct nlmsg_chain *linfo, struct nlmsg_chain *ainfo) lp = &linfo->head; while ( (l = *lp) != NULL) { int ok = 0; + int missing_net_address = 1; struct ifinfomsg *ifi = NLMSG_DATA(&l->h); struct nlmsg_list *a; @@ -792,8 +793,10 @@ static void ipaddr_filter(struct nlmsg_chain *linfo, struct nlmsg_chain *ainfo) struct nlmsghdr *n = &a->h; struct ifaddrmsg *ifa = NLMSG_DATA(n); - if (ifa->ifa_index != ifi->ifi_index || - (filter.family && filter.family != ifa->ifa_family)) + if (ifa->ifa_index != ifi->ifi_index) + continue; + missing_net_address = 0; + if (filter.family && filter.family != ifa->ifa_family) continue; if ((filter.scope^ifa->ifa_scope)&filter.scopemask) continue; @@ -828,6 +831,9 @@ static void ipaddr_filter(struct nlmsg_chain *linfo, struct nlmsg_chain *ainfo) ok = 1; break; } + if (missing_net_address && + (filter.family == AF_UNSPEC || filter.family == AF_PACKET)) + ok = 1; if (!ok) { *lp = l->next; free(l); -- 1.7.11.4 -- 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