From 7369b928017ce2716d689f922fa4c7872bd000f6 Mon Sep 17 00:00:00 2001 From: Trihedraf Date: Tue, 9 Sep 2025 15:17:28 -0700 Subject: [PATCH] fix iOS building --- ext/libnatpmp/getgateway.c | 9 +++++++-- osdep/Binder.hpp | 12 +++++++++--- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/ext/libnatpmp/getgateway.c b/ext/libnatpmp/getgateway.c index f743a089..875ba9ca 100644 --- a/ext/libnatpmp/getgateway.c +++ b/ext/libnatpmp/getgateway.c @@ -56,10 +56,15 @@ POSSIBILITY OF SUCH DAMAGE. #include #endif -#ifdef __APPLE__ +#if defined(__APPLE__) #undef USE_PROC_NET_ROUTE #undef USE_SOCKET_ROUTE -#define USE_SYSCTL_NET_ROUTE + #include + #if TARGET_OS_IPHONE + #undef USE_SYSCTL_NET_ROUTE + #else + #define USE_SYSCTL_NET_ROUTE + #endif #endif #if (defined(sun) && defined(__SVR4)) diff --git a/osdep/Binder.hpp b/osdep/Binder.hpp index 82568373..6e4000a4 100644 --- a/osdep/Binder.hpp +++ b/osdep/Binder.hpp @@ -40,9 +40,15 @@ #endif #endif +#if defined(__APPLE__) + #include +#endif + #if (defined(__unix__) || defined(__APPLE__)) && !defined(__LINUX__) #include +#if !TARGET_OS_IPHONE #include +#endif #include #endif @@ -311,7 +317,7 @@ class Binder { if (! gotViaProc) { struct ifaddrs* ifatbl = (struct ifaddrs*)0; struct ifaddrs* ifa; -#if (defined(__unix__) || defined(__APPLE__)) && !defined(__LINUX__) +#if (defined(__unix__) && !defined(__LINUX__)) || (defined(__APPLE__) && !TARGET_OS_IPHONE) // set up an IPv6 socket so we can check the state of interfaces via SIOCGIFAFLAG_IN6 int infoSock = socket(AF_INET6, SOCK_DGRAM, 0); #endif @@ -320,7 +326,7 @@ class Binder { while (ifa) { if ((ifa->ifa_name) && (ifa->ifa_addr)) { InetAddress ip = *(ifa->ifa_addr); -#if (defined(__unix__) || defined(__APPLE__)) && !defined(__LINUX__) +#if (defined(__unix__) && !defined(__LINUX__)) || (defined(__APPLE__) && !TARGET_OS_IPHONE) // Check if the address is an IPv6 Temporary Address, macOS/BSD version if (ifa->ifa_addr->sa_family == AF_INET6) { struct sockaddr_in6* sa6 = (struct sockaddr_in6*)ifa->ifa_addr; @@ -368,7 +374,7 @@ class Binder { else { interfacesEnumerated = false; } -#if (defined(__unix__) || defined(__APPLE__)) && !defined(__LINUX__) +#if (defined(__unix__) && !defined(__LINUX__)) || (defined(__APPLE__) && !TARGET_OS_IPHONE) close(infoSock); #endif }