From be2a6248fbc6ade0c0cd734245138f83f3202266 Mon Sep 17 00:00:00 2001 From: Vasil Dimov Date: Sun, 14 Dec 2025 13:50:23 +0100 Subject: [PATCH 1/3] netif: fix compilation warning in QueryDefaultGatewayImpl() ``` src/common/netif.cpp:137:51: error: comparison of integers of different signs: 'int64_t' (aka 'long') and 'unsigned long' [-Werror,-Wsign-compare] 137 | for (nlmsghdr* hdr = (nlmsghdr*)response; NLMSG_OK(hdr, recv_result); hdr = NLMSG_NEXT(hdr, recv_result)) { | ^~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/netlink/netlink.h:220:31: note: expanded from macro 'NLMSG_OK' 220 | #define NLMSG_OK(_hdr, _len) NL_ITEM_OK(_hdr, _len, NLMSG_HDRLEN, _NLMSG_LEN) | ^ ~~~~ ~~~~~~~~~~~~ /usr/include/netlink/netlink.h:203:10: note: expanded from macro 'NL_ITEM_OK' 203 | ((_len) >= _hlen && _LEN_M(_ptr) >= _hlen && _LEN_M(_ptr) <= (_len)) | ~~~~ ^ ~~~~~ 1 error generated. ``` Happens on FreeBSD 15.0, with the default compiler (Clang 19). On FreeBSD 14, `/usr/include/netlink/netlink.h` contains: ``` #define NLMSG_HDRLEN ((int)sizeof(struct nlmsghdr)) ``` On FreeBSD 15, `/usr/include/netlink/netlink.h` contains: ``` #define NLMSG_HDRLEN (sizeof(struct nlmsghdr)) ``` --- src/common/netif.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/common/netif.cpp b/src/common/netif.cpp index ed891f122c91..3e85bfc581ae 100644 --- a/src/common/netif.cpp +++ b/src/common/netif.cpp @@ -134,7 +134,12 @@ std::optional QueryDefaultGatewayImpl(sa_family_t family) return std::nullopt; } - for (nlmsghdr* hdr = (nlmsghdr*)response; NLMSG_OK(hdr, recv_result); hdr = NLMSG_NEXT(hdr, recv_result)) { +#if defined(__FreeBSD_version) && __FreeBSD_version >= 1500029 + using recv_result_t = size_t; +#else + using recv_result_t = int64_t; +#endif + for (nlmsghdr* hdr = (nlmsghdr*)response; NLMSG_OK(hdr, static_cast(recv_result)); hdr = NLMSG_NEXT(hdr, recv_result)) { if (!(hdr->nlmsg_flags & NLM_F_MULTI)) { done = true; } From a93244c53beaa6c09e466addef082d65dfb5de8d Mon Sep 17 00:00:00 2001 From: Vasil Dimov Date: Tue, 24 Feb 2026 08:54:06 +0100 Subject: [PATCH 2/3] wip --- src/common/netif.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/common/netif.cpp b/src/common/netif.cpp index 3e85bfc581ae..12337e2d41ca 100644 --- a/src/common/netif.cpp +++ b/src/common/netif.cpp @@ -134,8 +134,8 @@ std::optional QueryDefaultGatewayImpl(sa_family_t family) return std::nullopt; } -#if defined(__FreeBSD_version) && __FreeBSD_version >= 1500029 - using recv_result_t = size_t; +#ifdef __FreeBSD__ + using recv_result_t = decltype(NLMSG_HDRLEN); #else using recv_result_t = int64_t; #endif From 9a3651847c84d1bd17e1da605142230b838f066b Mon Sep 17 00:00:00 2001 From: Vasil Dimov Date: Thu, 26 Feb 2026 06:49:05 +0100 Subject: [PATCH 3/3] wip2 --- src/common/netif.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/common/netif.cpp b/src/common/netif.cpp index 12337e2d41ca..d78b1c501dad 100644 --- a/src/common/netif.cpp +++ b/src/common/netif.cpp @@ -134,11 +134,8 @@ std::optional QueryDefaultGatewayImpl(sa_family_t family) return std::nullopt; } -#ifdef __FreeBSD__ - using recv_result_t = decltype(NLMSG_HDRLEN); -#else - using recv_result_t = int64_t; -#endif + using recv_result_t = std::conditional_t, int64_t, decltype(NLMSG_HDRLEN)>; + for (nlmsghdr* hdr = (nlmsghdr*)response; NLMSG_OK(hdr, static_cast(recv_result)); hdr = NLMSG_NEXT(hdr, recv_result)) { if (!(hdr->nlmsg_flags & NLM_F_MULTI)) { done = true;