The branch stable/13 has been updated by zlei:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=6771ec1d6a50f9cf82e3951711a98a58a9543fc9

commit 6771ec1d6a50f9cf82e3951711a98a58a9543fc9
Author:     Zhenlei Huang <z...@freebsd.org>
AuthorDate: 2025-03-07 04:14:44 +0000
Commit:     Zhenlei Huang <z...@freebsd.org>
CommitDate: 2025-03-10 10:23:11 +0000

    netlink: Fix getting route scope of interface's IPv4 addresses
    
    sin_addr of a `struct sockaddr_in` is stored in network byte order, but
    IN_LOOPBACK() and IN_LINKLOCAL() want the host order.
    
    Reviewed by:    melifaro, #network
    Fixes:  7e5bf68495cc netlink: add netlink support
    MFC after:      3 days
    Differential Revision:  https://reviews.freebsd.org/D49226
    
    (cherry picked from commit 0e096bb3fcaaf663df372aa4abb986e8d63c6e68)
    (cherry picked from commit 057165012b4d190a8efef83b465d3bbd10a43e28)
---
 sys/netlink/route/iface.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/sys/netlink/route/iface.c b/sys/netlink/route/iface.c
index 4a8c78f27f5a..2a6b2aad532b 100644
--- a/sys/netlink/route/iface.c
+++ b/sys/netlink/route/iface.c
@@ -736,9 +736,9 @@ ifa_get_scope(const struct ifaddr *ifa)
                 {
                         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;
                 }

Reply via email to