From df688a5667398f533ef9438ac62ce35c363c1fc6 Mon Sep 17 00:00:00 2001 From: "mickael.hoerdt" Date: Thu, 21 Jan 2021 15:08:59 +0100 Subject: [PATCH 1/2] Apple patch for Nat-PMP --- getgateway.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/getgateway.c b/getgateway.c index d05bc5e..87be7ea 100644 --- a/getgateway.c +++ b/getgateway.c @@ -57,8 +57,8 @@ POSSIBILITY OF SUCH DAMAGE. #ifdef __APPLE__ #undef USE_PROC_NET_ROUTE -#undef USE_SOCKET_ROUTE -#define USE_SYSCTL_NET_ROUTE +#define USE_SOCKET_ROUTE +#undef USE_SYSCTL_NET_ROUTE #endif #if (defined(sun) && defined(__SVR4)) From 8b804603ec667a792219741e41c1ea52e8f6cdd1 Mon Sep 17 00:00:00 2001 From: Mickael Hoerdt Date: Tue, 25 Jan 2022 22:22:09 +0100 Subject: [PATCH 2/2] Adding a comment and doing a proper fib lookup for SOCKET_ROUTE method --- getgateway.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/getgateway.c b/getgateway.c index 87be7ea..8d33706 100644 --- a/getgateway.c +++ b/getgateway.c @@ -106,6 +106,7 @@ POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include #endif #ifdef USE_WIN32_CODE @@ -259,8 +260,14 @@ int getdefaultgateway(in_addr_t *addr) seq = 0; rtm_addrs = RTA_DST | RTA_NETMASK; - memset(&so_dst, 0, sizeof(so_dst)); - memset(&so_mask, 0, sizeof(so_mask)); + /* + * Using a reserved "this" network destination for the lookup of the + * the default route (see RFC 1122 section 3.2.1.3) to resolve the + * default route longest match prefix resolution correctly also VPNs + * such a openvpn which installs a /1 route. + */ + inet_pton(AF_INET, "0.0.0.1", &so_dst); + inet_pton(AF_INET, "255.255.255.255", &so_mask); memset(&rtm, 0, sizeof(struct rt_msghdr)); rtm.rtm_type = RTM_GET;