From: Yu Watanabe Date: Sun, 23 May 2021 14:21:30 +0000 (+0900) Subject: network: set ifindex when dump addresses on an interface X-Git-Tag: v249-rc1~157^2~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c31298be7a1cf06d6ca1031e47d7dac5444b3c1f;p=thirdparty%2Fsystemd.git network: set ifindex when dump addresses on an interface --- diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index 22f1049b7de..ff445baa1f3 100644 --- a/src/network/networkd-address.c +++ b/src/network/networkd-address.c @@ -755,7 +755,7 @@ static int link_enumerate_ipv6_tentative_addresses(Link *link) { assert(link->manager); assert(link->manager->rtnl); - r = sd_rtnl_message_new_addr(link->manager->rtnl, &req, RTM_GETADDR, 0, AF_INET6); + r = sd_rtnl_message_new_addr(link->manager->rtnl, &req, RTM_GETADDR, link->ifindex, AF_INET6); if (r < 0) return r; @@ -771,16 +771,18 @@ static int link_enumerate_ipv6_tentative_addresses(Link *link) { unsigned char flags; int ifindex; + /* NETLINK_GET_STRICT_CHK socket option is supported since kernel 4.20. To support + * older kernels, we need to check ifindex here. */ r = sd_rtnl_message_addr_get_ifindex(addr, &ifindex); if (r < 0) { - log_link_warning_errno(link, r, "rtnl: invalid ifindex, ignoring: %m"); + log_link_warning_errno(link, r, "rtnl: received address message without valid ifindex, ignoring: %m"); continue; } else if (link->ifindex != ifindex) continue; r = sd_rtnl_message_addr_get_flags(addr, &flags); if (r < 0) { - log_link_warning_errno(link, r, "rtnl: received address message with invalid flags, ignoring: %m"); + log_link_warning_errno(link, r, "rtnl: received address message without valid flags, ignoring: %m"); continue; } else if (!(flags & IFA_F_TENTATIVE)) continue;