mirror of
https://git.kernel.org/pub/scm/network/iproute2/iproute2.git
synced 2024-11-17 06:53:26 +08:00
iproute2: 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@redhat.com>
This commit is contained in:
parent
ec72fd7380
commit
7f747fd937
@ -884,6 +884,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;
|
||||
|
||||
@ -891,8 +892,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;
|
||||
@ -927,6 +930,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);
|
||||
|
Loading…
Reference in New Issue
Block a user