summaryrefslogtreecommitdiffstats
path: root/mDNSResponder/mDNSMacOSX/daemon.c
diff options
context:
space:
mode:
Diffstat (limited to 'mDNSResponder/mDNSMacOSX/daemon.c')
-rw-r--r--mDNSResponder/mDNSMacOSX/daemon.c19
1 files changed, 19 insertions, 0 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