Page MenuHomeFreeBSD

D49226.id151833.diff
No OneTemporary

D49226.id151833.diff

diff --git a/sys/netlink/route/iface.c b/sys/netlink/route/iface.c
--- a/sys/netlink/route/iface.c
+++ b/sys/netlink/route/iface.c
@@ -818,9 +818,9 @@
{
struct in_addr addr;
addr = ((const struct sockaddr_in *)sa)->sin_addr;
- if (IN_LOOPBACK(addr.s_addr))
+ if (IN_LOOPBACK(ntohl(addr.s_addr)))
addr_scope = RT_SCOPE_HOST;
- else if (IN_LINKLOCAL(addr.s_addr))
+ else if (IN_LINKLOCAL(ntohl(addr.s_addr)))
addr_scope = RT_SCOPE_LINK;
break;
}
diff --git a/tests/sys/netlink/test_rtnl_ifaddr.py b/tests/sys/netlink/test_rtnl_ifaddr.py
--- a/tests/sys/netlink/test_rtnl_ifaddr.py
+++ b/tests/sys/netlink/test_rtnl_ifaddr.py
@@ -33,7 +33,10 @@
def setup_method(self, method):
method_name = method.__name__
if "4" in method_name:
- self.IPV4_PREFIXES = ["192.0.2.1/24"]
+ if "nofilter" in method_name:
+ self.IPV4_PREFIXES = ["192.0.2.1/24", "169.254.169.254/16"]
+ else:
+ self.IPV4_PREFIXES = ["192.0.2.1/24"]
if "6" in method_name:
self.IPV6_PREFIXES = ["2001:db8::1/64"]
super().setup_method(method)
@@ -49,14 +52,21 @@
for rx_msg in self.read_msg_list(msg.nl_hdr.nlmsg_seq, NlRtMsgType.RTM_NEWADDR):
ifname = socket.if_indextoname(rx_msg.base_hdr.ifa_index)
family = rx_msg.base_hdr.ifa_family
- ret.append((ifname, family, rx_msg))
+ scope = rx_msg.base_hdr.ifa_scope
+ ret.append((ifname, family, scope))
ifname = "lo0"
- assert len([r for r in ret if r[0] == ifname]) > 0
+ assert len([r for r in ret if r[0] == ifname and r[1] == socket.AF_INET and r[2] == RtScope.RT_SCOPE_HOST.value]) == 1
+ assert len([r for r in ret if r[0] == ifname and r[1] == socket.AF_INET6 and r[2] == RtScope.RT_SCOPE_HOST.value]) == 1
+ assert len([r for r in ret if r[0] == ifname and r[1] == socket.AF_INET6 and r[2] == RtScope.RT_SCOPE_LINK.value]) == 1
+ assert len([r for r in ret if r[0] == ifname]) == 3
ifname = self.vnet.iface_alias_map["if1"].name
- assert len([r for r in ret if r[0] == ifname and r[1] == socket.AF_INET]) == 1
- assert len([r for r in ret if r[0] == ifname and r[1] == socket.AF_INET6]) == 2
+ assert len([r for r in ret if r[0] == ifname and r[1] == socket.AF_INET and r[2] == RtScope.RT_SCOPE_LINK.value]) == 1
+ assert len([r for r in ret if r[0] == ifname and r[1] == socket.AF_INET and r[2] == RtScope.RT_SCOPE_UNIVERSE.value]) == 1
+ assert len([r for r in ret if r[0] == ifname and r[1] == socket.AF_INET6 and r[2] == RtScope.RT_SCOPE_LINK.value]) == 1
+ assert len([r for r in ret if r[0] == ifname and r[1] == socket.AF_INET6 and r[2] == RtScope.RT_SCOPE_UNIVERSE.value]) == 1
+ assert len([r for r in ret if r[0] == ifname]) == 4
def test_46_filter_iface(self):
"""Tests that listing outputs both IPv4/IPv6 for the specific interface"""

File Metadata

Mime Type
text/plain
Expires
Thu, Mar 20, 11:53 AM (18 h, 56 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
17230103
Default Alt Text
D49226.id151833.diff (3 KB)

Event Timeline