The branch main has been updated by zlei:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=0e096bb3fcaaf663df372aa4abb986e8d63c6e68

commit 0e096bb3fcaaf663df372aa4abb986e8d63c6e68
Author:     Zhenlei Huang <z...@freebsd.org>
AuthorDate: 2025-03-07 04:14:44 +0000
Commit:     Zhenlei Huang <z...@freebsd.org>
CommitDate: 2025-03-07 04:14:44 +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
---
 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 93465e55e6aa..8b871576d0b2 100644
--- a/sys/netlink/route/iface.c
+++ b/sys/netlink/route/iface.c
@@ -818,9 +818,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