summaryrefslogtreecommitdiffstats
path: root/mDNSResponder/mDNSMacOSX
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-09-19 08:55:35 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-09-20 11:23:33 +0200
commita81495004c196cdbf5d1f918eb1510dd325c8283 (patch)
tree6cad42220e07f43e777e42e2e0abbaf75bcc0527 /mDNSResponder/mDNSMacOSX
parentmDNSResponder: Update to v765.30.11 (diff)
downloadrtems-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.c19
-rw-r--r--mDNSResponder/mDNSMacOSX/mDNSMacOSX.c63
-rw-r--r--mDNSResponder/mDNSMacOSX/mDNSResponder-entitlements.plist10
-rw-r--r--mDNSResponder/mDNSMacOSX/mDNSResponder.sb4
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"))