diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-09-19 08:55:35 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-09-20 11:23:33 +0200 |
commit | a81495004c196cdbf5d1f918eb1510dd325c8283 (patch) | |
tree | 6cad42220e07f43e777e42e2e0abbaf75bcc0527 /mDNSResponder/mDNSMacOSX | |
parent | mDNSResponder: Update to v765.30.11 (diff) | |
download | rtems-libbsd-a81495004c196cdbf5d1f918eb1510dd325c8283.tar.bz2 |
mDNSResponder: Update to v765.50.9
The sources can be obtained via:
https://opensource.apple.com/tarballs/mDNSResponder/mDNSResponder-765.50.9.tar.gz
Update #3522.
Diffstat (limited to 'mDNSResponder/mDNSMacOSX')
-rw-r--r-- | mDNSResponder/mDNSMacOSX/daemon.c | 19 | ||||
-rw-r--r-- | mDNSResponder/mDNSMacOSX/mDNSMacOSX.c | 63 | ||||
-rw-r--r-- | mDNSResponder/mDNSMacOSX/mDNSResponder-entitlements.plist | 10 | ||||
-rw-r--r-- | mDNSResponder/mDNSMacOSX/mDNSResponder.sb | 4 |
4 files changed, 58 insertions, 38 deletions
diff --git a/mDNSResponder/mDNSMacOSX/daemon.c b/mDNSResponder/mDNSMacOSX/daemon.c index f5478b57..f3f00ca7 100644 --- a/mDNSResponder/mDNSMacOSX/daemon.c +++ b/mDNSResponder/mDNSMacOSX/daemon.c @@ -32,6 +32,7 @@ #include <SystemConfiguration/SCDynamicStoreCopyDHCPInfo.h> #include <err.h> #include <sysexits.h> +#include <dlfcn.h> #include "uDNS.h" #include "DNSCommon.h" @@ -1440,6 +1441,18 @@ mDNSlocal void init_logging(void) } #endif +#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR +mDNSlocal mDNSBool initialize_networkserviceproxy(void) +{ + void *NSPImage = dlopen("/System/Library/PrivateFrameworks/NetworkServiceProxy.framework/NetworkServiceProxy", RTLD_LAZY | RTLD_LOCAL); + if (NSPImage == NULL) { + os_log_error(OS_LOG_DEFAULT, "dlopen NetworkServiceProxy.framework failed"); + return mDNSfalse; + } + return mDNStrue; +} +#endif + mDNSexport int main(int argc, char **argv) { int i; @@ -1611,6 +1624,12 @@ mDNSexport int main(int argc, char **argv) mDNSMacOSXNetworkChanged(&mDNSStorage); UpdateDebugState(); +#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR + if (initialize_networkserviceproxy() == mDNSfalse) { + LogMsg("Failed to initialize NetworkServiceProxy"); + } +#endif + #ifdef MDNSRESPONDER_USES_LIB_DISPATCH_AS_PRIMARY_EVENT_LOOP_MECHANISM LogInfo("Daemon Start: Using LibDispatch"); // CFRunLoopRun runs both CFRunLoop sources and dispatch sources diff --git a/mDNSResponder/mDNSMacOSX/mDNSMacOSX.c b/mDNSResponder/mDNSMacOSX/mDNSMacOSX.c index d8697fae..84e9de8c 100644 --- a/mDNSResponder/mDNSMacOSX/mDNSMacOSX.c +++ b/mDNSResponder/mDNSMacOSX/mDNSMacOSX.c @@ -1925,51 +1925,40 @@ mDNSexport mStatus mDNSPlatformSendUDP(const mDNS *const m, const void *const ms sin_to->sin_addr.s_addr = dst->ip.v4.NotAnInteger; s = (src ? src->ss : m->p->permanentsockets).sktv4; - if (info) // Specify outgoing interface + if (!mDNSAddrIsDNSMulticast(dst)) { - if (!mDNSAddrIsDNSMulticast(dst)) - { - #ifdef IP_BOUND_IF - if (info->scope_id == 0) - LogInfo("IP_BOUND_IF socket option not set -- info %p (%s) scope_id is zero", info, ifa_name); - else - setsockopt(s, IPPROTO_IP, IP_BOUND_IF, &info->scope_id, sizeof(info->scope_id)); - #else - { - static int displayed = 0; - if (displayed < 1000) - { - displayed++; - LogInfo("IP_BOUND_IF socket option not defined -- cannot specify interface for unicast packets"); - } - } - #endif - } - else - #ifdef IP_MULTICAST_IFINDEX + #ifdef IP_BOUND_IF + const mDNSu32 ifindex = info ? info->scope_id : IFSCOPE_NONE; + setsockopt(s, IPPROTO_IP, IP_BOUND_IF, &ifindex, sizeof(ifindex)); + #else + static int displayed = 0; + if (displayed < 1000) { - err = setsockopt(s, IPPROTO_IP, IP_MULTICAST_IFINDEX, &info->scope_id, sizeof(info->scope_id)); - // We get an error when we compile on a machine that supports this option and run the binary on - // a different machine that does not support it - if (err < 0) - { - if (errno != ENOPROTOOPT) LogInfo("mDNSPlatformSendUDP: setsockopt: IP_MUTLTICAST_IFINDEX returned %d", errno); - err = setsockopt(s, IPPROTO_IP, IP_MULTICAST_IF, &info->ifa_v4addr, sizeof(info->ifa_v4addr)); - if (err < 0 && !m->NetworkChanged) - LogMsg("setsockopt - IP_MULTICAST_IF error %.4a %d errno %d (%s)", &info->ifa_v4addr, err, errno, strerror(errno)); - } + displayed++; + LogInfo("IP_BOUND_IF socket option not defined -- cannot specify interface for unicast packets"); } - #else + #endif + } + else if (info) + { + #ifdef IP_MULTICAST_IFINDEX + err = setsockopt(s, IPPROTO_IP, IP_MULTICAST_IFINDEX, &info->scope_id, sizeof(info->scope_id)); + // We get an error when we compile on a machine that supports this option and run the binary on + // a different machine that does not support it + if (err < 0) { + if (errno != ENOPROTOOPT) LogInfo("mDNSPlatformSendUDP: setsockopt: IP_MUTLTICAST_IFINDEX returned %d", errno); err = setsockopt(s, IPPROTO_IP, IP_MULTICAST_IF, &info->ifa_v4addr, sizeof(info->ifa_v4addr)); if (err < 0 && !m->NetworkChanged) LogMsg("setsockopt - IP_MULTICAST_IF error %.4a %d errno %d (%s)", &info->ifa_v4addr, err, errno, strerror(errno)); - } - #endif + #else + err = setsockopt(s, IPPROTO_IP, IP_MULTICAST_IF, &info->ifa_v4addr, sizeof(info->ifa_v4addr)); + if (err < 0 && !m->NetworkChanged) + LogMsg("setsockopt - IP_MULTICAST_IF error %.4a %d errno %d (%s)", &info->ifa_v4addr, err, errno, strerror(errno)); + #endif } } - else if (dst->type == mDNSAddrType_IPv6) { struct sockaddr_in6 *sin6_to = (struct sockaddr_in6*)&to; @@ -2273,12 +2262,12 @@ mDNSexport void myKQSocketCallBack(int s1, short filter, void *context) if (ss->proxy) { - m->p->UDPProxyCallback(m, &m->p->UDPProxy, (unsigned char *)&m->imsg, (unsigned char*)&m->imsg + err, &senderAddr, + m->p->UDPProxyCallback(m, &m->p->UDPProxy, &m->imsg.m, (unsigned char*)&m->imsg + err, &senderAddr, senderPort, &destAddr, ss->port, InterfaceID, NULL); } else { - mDNSCoreReceive(m, &m->imsg, (unsigned char*)&m->imsg + err, &senderAddr, senderPort, &destAddr, ss->port, InterfaceID); + mDNSCoreReceive(m, &m->imsg.m, (unsigned char*)&m->imsg + err, &senderAddr, senderPort, &destAddr, ss->port, InterfaceID); } // if we didn't close, we can safely dereference the socketset, and should to diff --git a/mDNSResponder/mDNSMacOSX/mDNSResponder-entitlements.plist b/mDNSResponder/mDNSMacOSX/mDNSResponder-entitlements.plist index ef23e4b6..6d0bd675 100644 --- a/mDNSResponder/mDNSMacOSX/mDNSResponder-entitlements.plist +++ b/mDNSResponder/mDNSMacOSX/mDNSResponder-entitlements.plist @@ -20,6 +20,8 @@ <true/> <key>com.apple.private.necp.match</key> <true/> + <key>com.apple.private.necp.policies</key> + <true/> <key>com.apple.security.network.server</key> <true/> <key>com.apple.security.network.client</key> @@ -32,5 +34,13 @@ <true/> <key>com.apple.BTServer.appleMfgDataScanner</key> <true/> + <key>com.apple.developer.networking.networkextension</key> + <array> + <string>app-proxy-provider-system</string> + </array> + <key>com.apple.private.neagent</key> + <true/> + <key>com.apple.private.nehelper.privileged</key> + <true/> </dict> </plist> diff --git a/mDNSResponder/mDNSMacOSX/mDNSResponder.sb b/mDNSResponder/mDNSMacOSX/mDNSResponder.sb index 30747491..807217ab 100644 --- a/mDNSResponder/mDNSMacOSX/mDNSResponder.sb +++ b/mDNSResponder/mDNSMacOSX/mDNSResponder.sb @@ -72,7 +72,9 @@ (global-name "com.apple.wifi.manager") (global-name "com.apple.blued") (global-name "com.apple.mobilegestalt.xpc") - (global-name "com.apple.snhelper")) + (global-name "com.apple.snhelper") + (global-name "com.apple.nehelper") + (global-name "com.apple.networkserviceproxy")) (allow mach-register (global-name "com.apple.d2d.ipc")) |