From 111789e4af32d798f894c8449ba787c7308de127 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 19 Sep 2018 08:43:53 +0200 Subject: mDNSResponder: Update to v561.1.1 The sources can be obtained via: https://opensource.apple.com/tarballs/mDNSResponder/mDNSResponder-561.1.1.tar.gz Update #3522. --- mDNSResponder/Clients/dnsctl.c | 3 +- mDNSResponder/Makefile | 2 +- mDNSResponder/mDNSMacOSX/BonjourEvents.c | 10 ++ mDNSResponder/mDNSMacOSX/LaunchDaemonInfo.plist | 4 +- mDNSResponder/mDNSMacOSX/Private/dns_services.c | 4 +- mDNSResponder/mDNSMacOSX/Private/dns_services.h | 124 --------------------- .../mDNSMacOSX/Private/dns_services_mdns.h | 124 +++++++++++++++++++++ mDNSResponder/mDNSMacOSX/base.xcconfig | 8 ++ mDNSResponder/mDNSMacOSX/mDNSMacOSX.c | 3 +- .../mDNSResponder.xcodeproj/project.pbxproj | 117 +++++++++---------- mDNSResponder/mDNSShared/dns_sd.h | 71 ++++++------ mDNSResponder/mDNSShared/dnssd_clientstub.c | 29 +++-- mDNSResponder/mDNSShared/dnssd_ipc.h | 1 + 13 files changed, 262 insertions(+), 238 deletions(-) delete mode 100644 mDNSResponder/mDNSMacOSX/Private/dns_services.h create mode 100644 mDNSResponder/mDNSMacOSX/Private/dns_services_mdns.h create mode 100644 mDNSResponder/mDNSMacOSX/base.xcconfig diff --git a/mDNSResponder/Clients/dnsctl.c b/mDNSResponder/Clients/dnsctl.c index f040e1fb..b557ac32 100644 --- a/mDNSResponder/Clients/dnsctl.c +++ b/mDNSResponder/Clients/dnsctl.c @@ -18,7 +18,7 @@ #include // if_nametoindex() #include -#include "dns_services.h" +#include "dns_services_mdns.h" //************************************************************************************************************* // Globals: @@ -79,6 +79,7 @@ static void dnsproxy_reply(DNSXConnRef connRef, DNSXErrorType errCode) default : printf("UNKNOWN ERR \n"); DNSXRefDeAlloc(ClientRef); break; } + fflush(NULL); } diff --git a/mDNSResponder/Makefile b/mDNSResponder/Makefile index 606c129c..269ef576 100644 --- a/mDNSResponder/Makefile +++ b/mDNSResponder/Makefile @@ -16,7 +16,7 @@ include $(MAKEFILEPATH)/pb_makefiles/platform.make -MVERS = "mDNSResponder-544" +MVERS = "mDNSResponder-561.1.1" DDNSWRITECONFIG = "$(DSTROOT)/Library/Application Support/Bonjour/ddnswriteconfig" VER = diff --git a/mDNSResponder/mDNSMacOSX/BonjourEvents.c b/mDNSResponder/mDNSMacOSX/BonjourEvents.c index b9308189..f4f3e83c 100644 --- a/mDNSResponder/mDNSMacOSX/BonjourEvents.c +++ b/mDNSResponder/mDNSMacOSX/BonjourEvents.c @@ -747,6 +747,16 @@ void ServiceBrowserCallback (DNSServiceRef sdRef, } CFStringRef cfServiceName = CFStringCreateWithCString(NULL, serviceName, kCFStringEncodingUTF8); + if (cfServiceName == NULL) + { + static int msgCount = 0; + if (msgCount < 1000) + { + asl_log(NULL, NULL, ASL_LEVEL_INFO, "%s:%s Can not create CFString for serviceName %s", sPluginIdentifier, __FUNCTION__, serviceName); + msgCount++; + } + return; + } if (flags & kDNSServiceFlagsAdd) { diff --git a/mDNSResponder/mDNSMacOSX/LaunchDaemonInfo.plist b/mDNSResponder/mDNSMacOSX/LaunchDaemonInfo.plist index ba99d15d..c1fe89a3 100644 --- a/mDNSResponder/mDNSMacOSX/LaunchDaemonInfo.plist +++ b/mDNSResponder/mDNSMacOSX/LaunchDaemonInfo.plist @@ -3,7 +3,9 @@ Label - com.apple.mDNSResponder + com.apple.networking.mDNSResponder + Disabled + OnDemand InitGroups diff --git a/mDNSResponder/mDNSMacOSX/Private/dns_services.c b/mDNSResponder/mDNSMacOSX/Private/dns_services.c index d0e9e6ca..a14d686c 100644 --- a/mDNSResponder/mDNSMacOSX/Private/dns_services.c +++ b/mDNSResponder/mDNSMacOSX/Private/dns_services.c @@ -6,7 +6,7 @@ * Resides in /usr/lib/libdns_services.dylib */ -#include "dns_services.h" +#include "dns_services_mdns.h" #include "dns_xpc.h" #include #include @@ -32,7 +32,7 @@ struct _DNSXConnRef_t static bool LogDebugEnabled() { - return false; + return true; } static void LogDebug(const char *prefix, xpc_object_t o) diff --git a/mDNSResponder/mDNSMacOSX/Private/dns_services.h b/mDNSResponder/mDNSMacOSX/Private/dns_services.h deleted file mode 100644 index 7b74e10d..00000000 --- a/mDNSResponder/mDNSMacOSX/Private/dns_services.h +++ /dev/null @@ -1,124 +0,0 @@ -/* -*- Mode: C; tab-width: 4 -*- - * - * Copyright (c) 2012 Apple Inc. All rights reserved. - * - * - * @header Interface to DNSX SPI - * - * @discussion Describes the functions and data structures - * that make up the DNSX SPI - */ - -#ifndef _DNS_SERVICES_H -#define _DNS_SERVICES_H - -#include - -// DNSXConnRef: Opaque internal data type -typedef struct _DNSXConnRef_t *DNSXConnRef; - -typedef enum -{ - kDNSX_NoError = 0, - kDNSX_UnknownErr = -65537, /* 0xFFFE FFFF */ - kDNSX_NoMem = -65539, - kDNSX_BadParam = -65540, - kDNSX_DaemonNotRunning = -65563, /* Background daemon not running */ - kDNSX_DictError = -65565, /* Dictionary Error */ - kDNSX_Engaged = -65566, /* DNS Proxy is in use by another client */ - kDNSX_Timeout = -65568 -} DNSXErrorType; - -// A max of 5 input interfaces can be processed at one time -#define MaxInputIf 5 -#define IfIndex uint64_t -#define kDNSIfindexAny 0 - -// Enable DNS Proxy with an appropriate parameter defined below -typedef enum -{ - kDNSProxyEnable = 1 - // Other values reserved for future use -} DNSProxyParameters; - -/********************************************************************************************* -* -* Enable DNS Proxy Functionality -* -*********************************************************************************************/ - -/* DNSXEnableProxy : Turns ON the DNS Proxy (Details below) - * - * DNSXEnableProxyReply() parameters: - * - * connRef: The DNSXConnRef initialized by DNSXEnableProxy(). - * - * errCode: Will be kDNSX_NoError on success, otherwise will indicate the - * failure that occurred. Other parameters are undefined if - * errCode is nonzero. - * - */ - -typedef void (*DNSXEnableProxyReply) -( - DNSXConnRef connRef, - DNSXErrorType errCode -); - -/* DNSXEnableProxy - * - * Enables the DNS Proxy functionality which will remain ON until the client terminates explictly (or exits/crashes). - * Client can turn it OFF by passing the returned DNSXConnRef to DNSXRefDeAlloc() - * - * DNSXEnableProxy() Parameters: - * - * connRef: A pointer to DNSXConnRef that is initialized to NULL when called for the first - * time. If the call succeeds it will be initialized to a non-NULL value. - * Client terminates the DNS Proxy by passing this DNSXConnRef to DNSXRefDeAlloc(). - * - * proxyparam: Enable DNS Proxy functionality with parameters that are described in - * DNSProxyParameters above. - * - * inIfindexArr[MaxInputIf]: List of input interfaces from which the DNS queries will be accepted and - * forwarded to the output interface specified below. The daemon processes - * MaxInputIf entries in the list. For eg. if one has less than MaxInputIfs - * values, just initialize the other values to be 0. Note: This field needs to - * be initialized by the client. - * - * outIfindex: Output interface on which the query will be forwarded. - * Passing kDNSIfindexAny causes DNS Queries to be sent on the primary interface. - * - * clientq: Queue the client wants to schedule the callBack on (Note: Must not be NULL) - * - * callBack: CallBack function for the client that indicates success or failure. - * Note: callback may be invoked more than once, For eg. if enabling DNS Proxy - * first succeeds and the daemon possibly crashes sometime later. - * - * return value: Returns kDNSX_NoError when no error otherwise returns an error code indicating - * the error that occurred. Note: A return value of kDNSX_NoError does not mean - * that DNS Proxy was successfully enabled. The callBack may asynchronously - * return an error (such as kDNSX_DaemonNotRunning/ kDNSX_Engaged) - * - */ - -DNSXErrorType DNSXEnableProxy -( - DNSXConnRef *connRef, - DNSProxyParameters proxyparam, - IfIndex inIfindexArr[MaxInputIf], - IfIndex outIfindex, - dispatch_queue_t clientq, - DNSXEnableProxyReply callBack -); - -/* DNSXRefDeAlloc() - * - * Terminate a connection with the daemon and free memory associated with the DNSXConnRef. - * Used to Disable DNS Proxy on that connection. - * - * connRef: A DNSXConnRef initialized by any of the DNSX*() calls. - * - */ -void DNSXRefDeAlloc(DNSXConnRef connRef); - -#endif /* _DNS_SERVICES_H */ diff --git a/mDNSResponder/mDNSMacOSX/Private/dns_services_mdns.h b/mDNSResponder/mDNSMacOSX/Private/dns_services_mdns.h new file mode 100644 index 00000000..7b74e10d --- /dev/null +++ b/mDNSResponder/mDNSMacOSX/Private/dns_services_mdns.h @@ -0,0 +1,124 @@ +/* -*- Mode: C; tab-width: 4 -*- + * + * Copyright (c) 2012 Apple Inc. All rights reserved. + * + * + * @header Interface to DNSX SPI + * + * @discussion Describes the functions and data structures + * that make up the DNSX SPI + */ + +#ifndef _DNS_SERVICES_H +#define _DNS_SERVICES_H + +#include + +// DNSXConnRef: Opaque internal data type +typedef struct _DNSXConnRef_t *DNSXConnRef; + +typedef enum +{ + kDNSX_NoError = 0, + kDNSX_UnknownErr = -65537, /* 0xFFFE FFFF */ + kDNSX_NoMem = -65539, + kDNSX_BadParam = -65540, + kDNSX_DaemonNotRunning = -65563, /* Background daemon not running */ + kDNSX_DictError = -65565, /* Dictionary Error */ + kDNSX_Engaged = -65566, /* DNS Proxy is in use by another client */ + kDNSX_Timeout = -65568 +} DNSXErrorType; + +// A max of 5 input interfaces can be processed at one time +#define MaxInputIf 5 +#define IfIndex uint64_t +#define kDNSIfindexAny 0 + +// Enable DNS Proxy with an appropriate parameter defined below +typedef enum +{ + kDNSProxyEnable = 1 + // Other values reserved for future use +} DNSProxyParameters; + +/********************************************************************************************* +* +* Enable DNS Proxy Functionality +* +*********************************************************************************************/ + +/* DNSXEnableProxy : Turns ON the DNS Proxy (Details below) + * + * DNSXEnableProxyReply() parameters: + * + * connRef: The DNSXConnRef initialized by DNSXEnableProxy(). + * + * errCode: Will be kDNSX_NoError on success, otherwise will indicate the + * failure that occurred. Other parameters are undefined if + * errCode is nonzero. + * + */ + +typedef void (*DNSXEnableProxyReply) +( + DNSXConnRef connRef, + DNSXErrorType errCode +); + +/* DNSXEnableProxy + * + * Enables the DNS Proxy functionality which will remain ON until the client terminates explictly (or exits/crashes). + * Client can turn it OFF by passing the returned DNSXConnRef to DNSXRefDeAlloc() + * + * DNSXEnableProxy() Parameters: + * + * connRef: A pointer to DNSXConnRef that is initialized to NULL when called for the first + * time. If the call succeeds it will be initialized to a non-NULL value. + * Client terminates the DNS Proxy by passing this DNSXConnRef to DNSXRefDeAlloc(). + * + * proxyparam: Enable DNS Proxy functionality with parameters that are described in + * DNSProxyParameters above. + * + * inIfindexArr[MaxInputIf]: List of input interfaces from which the DNS queries will be accepted and + * forwarded to the output interface specified below. The daemon processes + * MaxInputIf entries in the list. For eg. if one has less than MaxInputIfs + * values, just initialize the other values to be 0. Note: This field needs to + * be initialized by the client. + * + * outIfindex: Output interface on which the query will be forwarded. + * Passing kDNSIfindexAny causes DNS Queries to be sent on the primary interface. + * + * clientq: Queue the client wants to schedule the callBack on (Note: Must not be NULL) + * + * callBack: CallBack function for the client that indicates success or failure. + * Note: callback may be invoked more than once, For eg. if enabling DNS Proxy + * first succeeds and the daemon possibly crashes sometime later. + * + * return value: Returns kDNSX_NoError when no error otherwise returns an error code indicating + * the error that occurred. Note: A return value of kDNSX_NoError does not mean + * that DNS Proxy was successfully enabled. The callBack may asynchronously + * return an error (such as kDNSX_DaemonNotRunning/ kDNSX_Engaged) + * + */ + +DNSXErrorType DNSXEnableProxy +( + DNSXConnRef *connRef, + DNSProxyParameters proxyparam, + IfIndex inIfindexArr[MaxInputIf], + IfIndex outIfindex, + dispatch_queue_t clientq, + DNSXEnableProxyReply callBack +); + +/* DNSXRefDeAlloc() + * + * Terminate a connection with the daemon and free memory associated with the DNSXConnRef. + * Used to Disable DNS Proxy on that connection. + * + * connRef: A DNSXConnRef initialized by any of the DNSX*() calls. + * + */ +void DNSXRefDeAlloc(DNSXConnRef connRef); + +#endif /* _DNS_SERVICES_H */ diff --git a/mDNSResponder/mDNSMacOSX/base.xcconfig b/mDNSResponder/mDNSMacOSX/base.xcconfig new file mode 100644 index 00000000..f35ee129 --- /dev/null +++ b/mDNSResponder/mDNSMacOSX/base.xcconfig @@ -0,0 +1,8 @@ +#include "/AppleInternal/XcodeConfig/SimulatorSupport.xcconfig" + +// Set INSTALL_PATH[sdk=macosx*] when SimulatorSupport.xcconfig is unavailable +INSTALL_PATH[sdk=macosx*] = $(INSTALL_PATH_ACTUAL) + +// Use $(INSTALL_PATH_PREFIX) instead of $(SDKROOT) as an unconditional prefix +PUBLIC_HEADERS_FOLDER_PATH = $(INSTALL_PATH_PREFIX)/usr/include +PRIVATE_HEADERS_FOLDER_PATH = $(INSTALL_PATH_PREFIX)/usr/local/include diff --git a/mDNSResponder/mDNSMacOSX/mDNSMacOSX.c b/mDNSResponder/mDNSMacOSX/mDNSMacOSX.c index fda595c9..54d4be7a 100644 --- a/mDNSResponder/mDNSMacOSX/mDNSMacOSX.c +++ b/mDNSResponder/mDNSMacOSX/mDNSMacOSX.c @@ -1864,7 +1864,8 @@ mDNSexport mStatus mDNSPlatformSendUDP(const mDNS *const m, const void *const ms if (err < 0) { static int MessageCount = 0; - // Don't report EHOSTDOWN (i.e. ARP failure), ENETDOWN, or no route to host for unicast destinations + LogInfo("mDNSPlatformSendUDP -> sendto(%d) failed to send packet on InterfaceID %p %5s/%d to %#a:%d skt %d error %d errno %d (%s) %lu", + s, InterfaceID, ifa_name, dst->type, dst, mDNSVal16(dstPort), s, err, errno, strerror(errno), (mDNSu32)(m->timenow)); if (!mDNSAddressIsAllDNSLinkGroup(dst)) if (errno == EHOSTDOWN || errno == ENETDOWN || errno == EHOSTUNREACH || errno == ENETUNREACH) return(mStatus_TransientErr); // Don't report EHOSTUNREACH in the first three minutes after boot diff --git a/mDNSResponder/mDNSMacOSX/mDNSResponder.xcodeproj/project.pbxproj b/mDNSResponder/mDNSMacOSX/mDNSResponder.xcodeproj/project.pbxproj index a5c44ef3..bfe3adc7 100644 --- a/mDNSResponder/mDNSMacOSX/mDNSResponder.xcodeproj/project.pbxproj +++ b/mDNSResponder/mDNSMacOSX/mDNSResponder.xcodeproj/project.pbxproj @@ -34,7 +34,6 @@ 03067D6C0C83A3920022BE1F /* PBXTargetDependency */, 03067D6E0C83A39C0022BE1F /* PBXTargetDependency */, 84C5B3411665544B00C324A8 /* PBXTargetDependency */, - 72FB546A166D5FE40090B2D9 /* PBXTargetDependency */, ); name = "Build Some"; productName = "Build Some"; @@ -68,7 +67,6 @@ isa = PBXAggregateTarget; buildConfigurationList = FFA5726E0AF191200055A0F1 /* Build configuration list for PBXAggregateTarget "SystemLibrariesDynamic" */; buildPhases = ( - 1F7B473C12B82BFD00868AEF /* ShellScript */, ); dependencies = ( FFA572690AF190FF0055A0F1 /* PBXTargetDependency */, @@ -186,13 +184,14 @@ 2EDC5E730C39EA640092701B /* helper-server.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EDC5E720C39EA640092701B /* helper-server.h */; }; 2EDC5E740C39EA640092701B /* helper-server.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EDC5E720C39EA640092701B /* helper-server.h */; }; 2EDC5E750C39EA640092701B /* helper-server.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EDC5E720C39EA640092701B /* helper-server.h */; }; + 3F347CF6185D57CD00367B40 /* base.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 3F347CF5185D57CD00367B40 /* base.xcconfig */; }; 4A7B9E8014FDA25000B84CC1 /* mDNSResponder.plist in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4A7B9E7E14FDA1BB00B84CC1 /* mDNSResponder.plist */; }; 4A7B9E8214FDA26C00B84CC1 /* mDNSResponder.txt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4A7B9E7C14FDA19F00B84CC1 /* mDNSResponder.txt */; }; 4AAE0C9A0C68EA81003882A5 /* mDNSResponderHelper.8 in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4AAE0C7A0C68E97F003882A5 /* mDNSResponderHelper.8 */; }; 4BD2B63A134FE09F002B96D5 /* P2PPacketFilter.c in Sources */ = {isa = PBXBuildFile; fileRef = 4BD2B638134FE09F002B96D5 /* P2PPacketFilter.c */; }; 4BD2B63B134FE09F002B96D5 /* P2PPacketFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BD2B639134FE09F002B96D5 /* P2PPacketFilter.h */; }; 72FB5467166D5FCA0090B2D9 /* dnsctl.c in Sources */ = {isa = PBXBuildFile; fileRef = 72FB545A166D5F960090B2D9 /* dnsctl.c */; }; - 72FB5468166D5FD20090B2D9 /* libdns_services.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 84C5B3351665529800C324A8 /* libdns_services.dylib */; }; + 8415A6571897109000BDBA26 /* libdns_services.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 8415A6561897109000BDBA26 /* libdns_services.dylib */; }; 8418673E15AB8C2D00BB7F70 /* com.apple.networking.mDNSResponder in CopyFiles */ = {isa = PBXBuildFile; fileRef = 8418673A15AB8B6900BB7F70 /* com.apple.networking.mDNSResponder */; }; 848DA5C7165477E000D2E8B4 /* xpc_services.c in Sources */ = {isa = PBXBuildFile; fileRef = 848DA5C6165477E000D2E8B4 /* xpc_services.c */; }; 848DA5C8165477E000D2E8B4 /* xpc_services.c in Sources */ = {isa = PBXBuildFile; fileRef = 848DA5C6165477E000D2E8B4 /* xpc_services.c */; }; @@ -201,7 +200,7 @@ 848DA5D616547F7200D2E8B4 /* dns_xpc.h in Headers */ = {isa = PBXBuildFile; fileRef = 848DA5D516547F7200D2E8B4 /* dns_xpc.h */; }; 848DA5D716547F7200D2E8B4 /* dns_xpc.h in Headers */ = {isa = PBXBuildFile; fileRef = 848DA5D516547F7200D2E8B4 /* dns_xpc.h */; }; 84C5B33C166553F100C324A8 /* dns_services.c in Sources */ = {isa = PBXBuildFile; fileRef = 84C5B339166553AF00C324A8 /* dns_services.c */; }; - 84C5B33D166553F900C324A8 /* dns_services.h in Headers */ = {isa = PBXBuildFile; fileRef = 84C5B338166553A000C324A8 /* dns_services.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 84F4C090188F050200D1E1DE /* dns_services_mdns.h in Headers */ = {isa = PBXBuildFile; fileRef = 84F4C08F188F04CF00D1E1DE /* dns_services_mdns.h */; settings = {ATTRIBUTES = (Private, ); }; }; D284BE530ADD80740027CCDF /* DNSServiceDiscoveryDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 6575FBFF022EAFBA00000109 /* DNSServiceDiscoveryDefines.h */; }; D284BE540ADD80740027CCDF /* dnssd_ipc.h in Headers */ = {isa = PBXBuildFile; fileRef = F5E11B5B04A28126019798ED /* dnssd_ipc.h */; }; D284BE560ADD80740027CCDF /* DNSServiceDiscoveryReply.defs in Sources */ = {isa = PBXBuildFile; fileRef = 6575FC00022EAFBA00000109 /* DNSServiceDiscoveryReply.defs */; settings = {ATTRIBUTES = (Client, ); }; }; @@ -429,13 +428,6 @@ remoteGlobalIDString = 4AE471670EAFF81900A6C5AD; remoteInfo = dns_sd.jar; }; - 72FB5469166D5FE40090B2D9 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 72FB545E166D5FB00090B2D9; - remoteInfo = dnsctl; - }; 84C5B3401665544B00C324A8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; @@ -635,6 +627,7 @@ 2E96A52D0C39C1A50087C4D2 /* helper-stubs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = "helper-stubs.c"; sourceTree = ""; }; 2ECC11A50C4FEC3800CB1885 /* helpermsg-types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "helpermsg-types.h"; sourceTree = ""; }; 2EDC5E720C39EA640092701B /* helper-server.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = "helper-server.h"; sourceTree = ""; }; + 3F347CF5185D57CD00367B40 /* base.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = base.xcconfig; sourceTree = ""; }; 4A2E69DD0F5475A3004A87B0 /* uds_daemon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = uds_daemon.h; path = ../mDNSShared/uds_daemon.h; sourceTree = SOURCE_ROOT; }; 4A3600DF0F34F8CD00453EFB /* DeviceToDeviceManager.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DeviceToDeviceManager.framework; path = /System/Library/PrivateFrameworks/DeviceToDeviceManager.framework; sourceTree = ""; }; 4A7B9E7C14FDA19F00B84CC1 /* mDNSResponder.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = mDNSResponder.txt; sourceTree = ""; }; @@ -663,14 +656,15 @@ 7F461DB5062DBF2900672BF3 /* DNSDigest.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = DNSDigest.c; path = ../mDNSCore/DNSDigest.c; sourceTree = SOURCE_ROOT; }; 7F869685066EE02400D2A2DC /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = /System/Library/Frameworks/Security.framework; sourceTree = ""; }; 7FC8F9D406D14E66007E879D /* LegacyNATTraversal.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = LegacyNATTraversal.c; sourceTree = SOURCE_ROOT; }; + 8415A6561897109000BDBA26 /* libdns_services.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libdns_services.dylib; path = ../../../../../../../usr/lib/libdns_services.dylib; sourceTree = ""; }; 8418673A15AB8B6900BB7F70 /* com.apple.networking.mDNSResponder */ = {isa = PBXFileReference; lastKnownFileType = text; path = com.apple.networking.mDNSResponder; sourceTree = ""; }; 8418673C15AB8B8000BB7F70 /* mDNSResponderLogging.mobileconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = mDNSResponderLogging.mobileconfig; sourceTree = ""; }; 848DA5C6165477E000D2E8B4 /* xpc_services.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = xpc_services.c; path = Private/xpc_services.c; sourceTree = ""; }; 848DA5C9165477EB00D2E8B4 /* xpc_services.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = xpc_services.h; path = Private/xpc_services.h; sourceTree = ""; }; 848DA5D516547F7200D2E8B4 /* dns_xpc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dns_xpc.h; path = Private/dns_xpc.h; sourceTree = ""; }; - 84C5B3351665529800C324A8 /* libdns_services.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libdns_services.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; - 84C5B338166553A000C324A8 /* dns_services.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = dns_services.h; path = Private/dns_services.h; sourceTree = ""; }; + 84C5B3351665529800C324A8 /* libdns_services_mdns.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libdns_services_mdns.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; 84C5B339166553AF00C324A8 /* dns_services.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = dns_services.c; path = Private/dns_services.c; sourceTree = ""; }; + 84F4C08F188F04CF00D1E1DE /* dns_services_mdns.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dns_services_mdns.h; path = Private/dns_services_mdns.h; sourceTree = ""; }; D284BE730ADD80740027CCDF /* mDNSResponder */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = mDNSResponder; sourceTree = BUILT_PRODUCTS_DIR; }; D284BE950ADD80800027CCDF /* mDNSResponder.debug */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = mDNSResponder.debug; sourceTree = BUILT_PRODUCTS_DIR; }; D284BEB00ADD80920027CCDF /* dns-sd */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "dns-sd"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -790,7 +784,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 72FB5468166D5FD20090B2D9 /* libdns_services.dylib in Frameworks */, + 8415A6571897109000BDBA26 /* libdns_services.dylib in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -902,6 +896,8 @@ 08FB7794FE84155DC02AAC07 /* mDNSResponder */ = { isa = PBXGroup; children = ( + 8415A6561897109000BDBA26 /* libdns_services.dylib */, + 3F347CF5185D57CD00367B40 /* base.xcconfig */, 08FB7795FE84155DC02AAC07 /* mDNS Server Sources */, 6575FC1F022EB78C00000109 /* Command-Line Clients */, 213FB20912028902002B3A08 /* Bonjour Events Plugin */, @@ -917,9 +913,9 @@ 08FB7795FE84155DC02AAC07 /* mDNS Server Sources */ = { isa = PBXGroup; children = ( + 84F4C08F188F04CF00D1E1DE /* dns_services_mdns.h */, 216D9ACD1720C9F5008066E1 /* VPNService.c */, 2120ABD416B71614007089B6 /* CUPolicy.c */, - 84C5B338166553A000C324A8 /* dns_services.h */, 72FB545A166D5F960090B2D9 /* dnsctl.c */, 84C5B339166553AF00C324A8 /* dns_services.c */, 848DA5D516547F7200D2E8B4 /* dns_xpc.h */, @@ -1033,7 +1029,7 @@ 2141DD1D123FFCDB0086D23E /* libdns_sd.a */, 2141DD24123FFD0F0086D23E /* libdns_sd_debug.a */, 2141DD2A123FFD2C0086D23E /* libdns_sd_profile.a */, - 84C5B3351665529800C324A8 /* libdns_services.dylib */, + 84C5B3351665529800C324A8 /* libdns_services_mdns.dylib */, 72FB545F166D5FB00090B2D9 /* dnsctl */, ); name = Products; @@ -1168,7 +1164,7 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 84C5B33D166553F900C324A8 /* dns_services.h in Headers */, + 84F4C090188F050200D1E1DE /* dns_services_mdns.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1419,7 +1415,7 @@ ); name = dns_services; productName = dns_services; - productReference = 84C5B3351665529800C324A8 /* libdns_services.dylib */; + productReference = 84C5B3351665529800C324A8 /* libdns_services_mdns.dylib */; productType = "com.apple.product-type.library.dynamic"; }; D284BE500ADD80740027CCDF /* mDNSResponder */ = { @@ -1684,6 +1680,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 3F347CF6185D57CD00367B40 /* base.xcconfig in Resources */, D284BEEF0ADD80B00027CCDF /* remove_idle.tiff in Resources */, D284BEF00ADD80B00027CCDF /* add_pressed.tiff in Resources */, D284BEF10ADD80B00027CCDF /* remove_disabled.tiff in Resources */, @@ -1760,20 +1757,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "if [ -e \"${SDKROOT}/usr/include/vproc.h\" ]\nthen\nrm -f \"${CONFIGURATION_TEMP_DIR}/vproc.h\"\nelse\ntouch \"${CONFIGURATION_TEMP_DIR}/vproc.h\"\nfi\n\nif [ -e \"${SDKROOT}/usr/lib/libipsec.dylib\" ]\nthen\nrm -f \"${CONFIGURATION_TEMP_DIR}/ipsec_options.h\"\ntouch \"${CONFIGURATION_TEMP_DIR}/ipsec_options.h\"\nrm -f \"${CONFIGURATION_TEMP_DIR}/libipsec.a\"\nelse\necho \"#define MDNS_NO_IPSEC 1\" > ${CONFIGURATION_TEMP_DIR}/ipsec_options.h\ntouch \"${CONFIGURATION_TEMP_DIR}/empty.c\"\nfor i in ${ARCHS}\ndo\nccflags=\"-arch $i $ccflags\"\ndone\ncc ${ccflags} \"${CONFIGURATION_TEMP_DIR}/empty.c\" -c -o \"${CONFIGURATION_TEMP_DIR}/libipsec.a\"\nrm -f \"${CONFIGURATION_TEMP_DIR}/empty.c\"\nfi\n"; - }; - 1F7B473C12B82BFD00868AEF /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/bash; - shellScript = "# check if we're building for the simulator and patch the \"id\" of the library (as reported by otool -D) to\n# be just /usr/lib/system/libsystem_sim_dnssd.dylib etc. Also remove the usr directory as it is not needed\n# for simulator\nif [ \"${RC_ProjectName%_Sim}\" != \"${RC_ProjectName}\" ] ; then\n\tif [ -d ${DSTROOT}${SDKROOT}/usr/lib/system ] ; then\n\t\tfor lib in ${DSTROOT}${SDKROOT}/usr/lib/system/*.dylib ; do\n\t\t\tinstall_name_tool -id \"${lib#${DSTROOT}${SDKROOT}}\" \"${lib}\"\n\t\tdone\n\tfi\n\trm -rf $DSTROOT/usr\nfi\n"; + shellScript = "if [ -e \"${SDKROOT}/usr/local/include/vproc.h\" -o -e \"${SDKROOT}/usr/include/vproc.h\" ]\nthen\nrm -f \"${CONFIGURATION_TEMP_DIR}/vproc.h\"\nelse\ntouch \"${CONFIGURATION_TEMP_DIR}/vproc.h\"\nfi\n\nif [ -e \"${SDKROOT}/usr/lib/libipsec.dylib\" ]\nthen\nrm -f \"${CONFIGURATION_TEMP_DIR}/ipsec_options.h\"\ntouch \"${CONFIGURATION_TEMP_DIR}/ipsec_options.h\"\nrm -f \"${CONFIGURATION_TEMP_DIR}/libipsec.a\"\nelse\necho \"#define MDNS_NO_IPSEC 1\" > ${CONFIGURATION_TEMP_DIR}/ipsec_options.h\ntouch \"${CONFIGURATION_TEMP_DIR}/empty.c\"\nfor i in ${ARCHS}\ndo\nccflags=\"-arch $i $ccflags\"\ndone\ncc ${ccflags} \"${CONFIGURATION_TEMP_DIR}/empty.c\" -c -o \"${CONFIGURATION_TEMP_DIR}/libipsec.a\"\nrm -f \"${CONFIGURATION_TEMP_DIR}/empty.c\"\nfi\n"; }; 2130256B12400DE600AC839F /* ShellScript */ = { isa = PBXShellScriptBuildPhase; @@ -1786,7 +1770,7 @@ ); runOnlyForDeploymentPostprocessing = 1; shellPath = /bin/sh; - shellScript = "#if we are building for simulator, change the installation path\nif [ \"${RC_ProjectName%_Sim}\" != \"${RC_ProjectName}\" ] ; then\n\tDSTROOT=${DSTROOT}${SDKROOT}\nfi\nmkdir -p \"$DSTROOT/usr/include\"\nsed 's/\\(^#define _DNS_SD_LIBDISPATCH \\)0$/\\1 1/' \"$SRCROOT/../mDNSShared/dns_sd.h\" > \"$DSTROOT/usr/include/dns_sd.h\""; + shellScript = "DSTROOT=${DSTROOT}${INSTALL_PATH_PREFIX}\n\nmkdir -p \"$DSTROOT/usr/include\"\nsed 's/\\(^#define _DNS_SD_LIBDISPATCH \\)0$/\\1 1/' \"$SRCROOT/../mDNSShared/dns_sd.h\" > \"$DSTROOT/usr/include/dns_sd.h\""; }; 21DE714D115831CB00DD4BD1 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; @@ -1799,7 +1783,7 @@ ); runOnlyForDeploymentPostprocessing = 1; shellPath = /bin/sh; - shellScript = "#if we are building for simulator, change the installation path\nif [ \"${RC_ProjectName%_Sim}\" != \"${RC_ProjectName}\" ] ; then\n\tDSTROOT=${DSTROOT}${SDKROOT}\nfi\nmkdir -p \"$DSTROOT/usr/include\"\nsed 's/\\(^#define _DNS_SD_LIBDISPATCH \\)0$/\\1 1/' \"$SRCROOT/../mDNSShared/dns_sd.h\" > \"$DSTROOT/usr/include/dns_sd.h\""; + shellScript = "DSTROOT=${DSTROOT}${INSTALL_PATH_PREFIX}\nmkdir -p \"$DSTROOT/usr/include\"\nsed 's/\\(^#define _DNS_SD_LIBDISPATCH \\)0$/\\1 1/' \"$SRCROOT/../mDNSShared/dns_sd.h\" > \"$DSTROOT/usr/include/dns_sd.h\""; }; 4A4EE3A413CB8E82005C624B /* Build yacc file into derived source files */ = { isa = PBXShellScriptBuildPhase; @@ -1825,7 +1809,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "if [ -e \"${SDKROOT}/usr/local/include/dnsinfo.h\" ]\nthen\nrm -f \"${CONFIGURATION_TEMP_DIR}/dnsinfo.h\"\nrm -f \"${CONFIGURATION_TEMP_DIR}/libdnsinfo.a\"\nelse\necho \"#define MDNS_NO_DNSINFO 1\" > ${CONFIGURATION_TEMP_DIR}/dnsinfo.h\ntouch \"${CONFIGURATION_TEMP_DIR}/empty.c\"\nfor i in ${ARCHS}\ndo\nccflags=\"-arch $i $ccflags\"\ndone\ncc ${ccflags} \"${CONFIGURATION_TEMP_DIR}/empty.c\" -c -o \"${CONFIGURATION_TEMP_DIR}/libdnsinfo.a\"\nrm -f \"${CONFIGURATION_TEMP_DIR}/empty.c\"\nfi\n\nif [ -e \"${SDKROOT}/usr/include/sandbox.h\" ]\nthen\nrm -f \"${CONFIGURATION_TEMP_DIR}/sandbox.h\"\nelse\necho \"#define MDNS_NO_SANDBOX 1\" > \"${CONFIGURATION_TEMP_DIR}/sandbox.h\"\nfi\n\nif [ -e \"${SDKROOT}/usr/include/vproc.h\" ]\nthen\nrm -f \"${CONFIGURATION_TEMP_DIR}/vproc.h\"\nelse\ntouch \"${CONFIGURATION_TEMP_DIR}/vproc.h\"\nfi\n\nif [ -e \"${SDKROOT}/System/Library/Frameworks/IOKit.framework/PrivateHeaders/pwr_mgt/IOPMLibPrivate.h\" ]\nthen\nrm -rf \"${CONFIGURATION_TEMP_DIR}/IOKit\"\nelse\nmkdir -p \"${CONFIGURATION_TEMP_DIR}/IOKit/pwr_mgt\"\ntouch \"${CONFIGURATION_TEMP_DIR}/IOKit/pwr_mgt/IOPMLibPrivate.h\"\nfi\n\nif [ -e \"${SDKROOT}/System/Library/PrivateFrameworks/DeviceToDeviceManager.framework/Headers/DeviceToDeviceManager.h\" ]\nthen\nrm -rf \"${CONFIGURATION_TEMP_DIR}/DeviceToDeviceManager\"\nelse\nmkdir -p \"${CONFIGURATION_TEMP_DIR}/DeviceToDeviceManager\"\necho \"#define NO_D2D 1\" > \"${CONFIGURATION_TEMP_DIR}/DeviceToDeviceManager/DeviceToDeviceManager.h\"\nfi\n\nif [ -e \"${SDKROOT}/System/Library/PrivateFrameworks/WebFilterDNS.framework/Headers/WebFilterDNS.h\" ]\nthen\nrm -rf \"${CONFIGURATION_TEMP_DIR}/WebFilterDNS\"\nelse\nmkdir -p \"${CONFIGURATION_TEMP_DIR}/WebFilterDNS\"\necho \"#define NO_WCF 1\" > \"${CONFIGURATION_TEMP_DIR}/WebFilterDNS/WebFilterDNS.h\"\nfi\n\nif [ -e \"${SDKROOT}/usr/local/include/AWACS.h\" ]\nthen\nrm -f \"${CONFIGURATION_TEMP_DIR}/AWACS.h\"\nrm -f \"${CONFIGURATION_TEMP_DIR}/libAWACS.a\"\nelse\necho \"#define NO_AWACS 1\" > \"${CONFIGURATION_TEMP_DIR}/AWACS.h\"\ntouch \"${CONFIGURATION_TEMP_DIR}/AWACSempty.c\"\nfor i in ${ARCHS}\ndo\nccflags=\"-arch $i $ccflags\"\ndone\ncc ${ccflags} \"${CONFIGURATION_TEMP_DIR}/AWACSempty.c\" -c -o \"${CONFIGURATION_TEMP_DIR}/libAWACS.a\"\nrm -f \"${CONFIGURATION_TEMP_DIR}/AWACSempty.c\"\nfi\n"; + shellScript = "if [ -e \"${SDKROOT}/usr/local/include/dnsinfo.h\" ]\nthen\nrm -f \"${CONFIGURATION_TEMP_DIR}/dnsinfo.h\"\nrm -f \"${CONFIGURATION_TEMP_DIR}/libdnsinfo.a\"\nelse\necho \"#define MDNS_NO_DNSINFO 1\" > ${CONFIGURATION_TEMP_DIR}/dnsinfo.h\ntouch \"${CONFIGURATION_TEMP_DIR}/empty.c\"\nfor i in ${ARCHS}\ndo\nccflags=\"-arch $i $ccflags\"\ndone\ncc ${ccflags} \"${CONFIGURATION_TEMP_DIR}/empty.c\" -c -o \"${CONFIGURATION_TEMP_DIR}/libdnsinfo.a\"\nrm -f \"${CONFIGURATION_TEMP_DIR}/empty.c\"\nfi\n\nif [ -e \"${SDKROOT}/usr/include/sandbox.h\" ]\nthen\nrm -f \"${CONFIGURATION_TEMP_DIR}/sandbox.h\"\nelse\necho \"#define MDNS_NO_SANDBOX 1\" > \"${CONFIGURATION_TEMP_DIR}/sandbox.h\"\nfi\n\nif [ -e \"${SDKROOT}/usr/local/include/vproc.h\" -o -e \"${SDKROOT}/usr/include/vproc.h\" ]\nthen\nrm -f \"${CONFIGURATION_TEMP_DIR}/vproc.h\"\nelse\ntouch \"${CONFIGURATION_TEMP_DIR}/vproc.h\"\nfi\n\nif [ -e \"${SDKROOT}/System/Library/Frameworks/IOKit.framework/PrivateHeaders/pwr_mgt/IOPMLibPrivate.h\" ]\nthen\nrm -rf \"${CONFIGURATION_TEMP_DIR}/IOKit\"\nelse\nmkdir -p \"${CONFIGURATION_TEMP_DIR}/IOKit/pwr_mgt\"\ntouch \"${CONFIGURATION_TEMP_DIR}/IOKit/pwr_mgt/IOPMLibPrivate.h\"\nfi\n\nif [ -e \"${SDKROOT}/System/Library/PrivateFrameworks/DeviceToDeviceManager.framework/Headers/DeviceToDeviceManager.h\" ]\nthen\nrm -rf \"${CONFIGURATION_TEMP_DIR}/DeviceToDeviceManager\"\nelse\nmkdir -p \"${CONFIGURATION_TEMP_DIR}/DeviceToDeviceManager\"\necho \"#define NO_D2D 1\" > \"${CONFIGURATION_TEMP_DIR}/DeviceToDeviceManager/DeviceToDeviceManager.h\"\nfi\n\nif [ -e \"${SDKROOT}/System/Library/PrivateFrameworks/WebFilterDNS.framework/Headers/WebFilterDNS.h\" ]\nthen\nrm -rf \"${CONFIGURATION_TEMP_DIR}/WebFilterDNS\"\nelse\nmkdir -p \"${CONFIGURATION_TEMP_DIR}/WebFilterDNS\"\necho \"#define NO_WCF 1\" > \"${CONFIGURATION_TEMP_DIR}/WebFilterDNS/WebFilterDNS.h\"\nfi\n\nif [ -e \"${SDKROOT}/usr/local/include/AWACS.h\" ]\nthen\nrm -f \"${CONFIGURATION_TEMP_DIR}/AWACS.h\"\nrm -f \"${CONFIGURATION_TEMP_DIR}/libAWACS.a\"\nelse\necho \"#define NO_AWACS 1\" > \"${CONFIGURATION_TEMP_DIR}/AWACS.h\"\ntouch \"${CONFIGURATION_TEMP_DIR}/AWACSempty.c\"\nfor i in ${ARCHS}\ndo\nccflags=\"-arch $i $ccflags\"\ndone\ncc ${ccflags} \"${CONFIGURATION_TEMP_DIR}/AWACSempty.c\" -c -o \"${CONFIGURATION_TEMP_DIR}/libAWACS.a\"\nrm -f \"${CONFIGURATION_TEMP_DIR}/AWACSempty.c\"\nfi\n"; }; D284BE6C0ADD80740027CCDF /* ShellScript */ = { isa = PBXShellScriptBuildPhase; @@ -1843,7 +1827,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "if [ -e \"${SDKROOT}/usr/local/include/dnsinfo.h\" ]\nthen\nrm -f \"${CONFIGURATION_TEMP_DIR}/dnsinfo.h\"\nrm -f \"${CONFIGURATION_TEMP_DIR}/libdnsinfo.a\"\nelse\necho \"#define MDNS_NO_DNSINFO 1\" > ${CONFIGURATION_TEMP_DIR}/dnsinfo.h\ntouch \"${CONFIGURATION_TEMP_DIR}/empty.c\"\nfor i in ${ARCHS}\ndo\nccflags=\"-arch $i $ccflags\"\ndone\ncc ${ccflags} \"${CONFIGURATION_TEMP_DIR}/empty.c\" -c -o \"${CONFIGURATION_TEMP_DIR}/libdnsinfo.a\"\nrm -f \"${CONFIGURATION_TEMP_DIR}/empty.c\"\nfi\n\nif [ -e \"${SDKROOT}/usr/include/sandbox.h\" ]\nthen\nrm -f \"${CONFIGURATION_TEMP_DIR}/sandbox.h\"\nelse\necho \"#define MDNS_NO_SANDBOX 1\" > \"${CONFIGURATION_TEMP_DIR}/sandbox.h\"\nfi\n\nif [ -e \"${SDKROOT}/usr/include/vproc.h\" ]\nthen\nrm -f \"${CONFIGURATION_TEMP_DIR}/vproc.h\"\nelse\ntouch \"${CONFIGURATION_TEMP_DIR}/vproc.h\"\nfi\n\nif [ -e \"${SDKROOT}/System/Library/Frameworks/IOKit.framework/PrivateHeaders/pwr_mgt/IOPMLibPrivate.h\" ]\nthen\nrm -rf \"${CONFIGURATION_TEMP_DIR}/IOKit\"\nelse\nmkdir -p \"${CONFIGURATION_TEMP_DIR}/IOKit/pwr_mgt\"\ntouch \"${CONFIGURATION_TEMP_DIR}/IOKit/pwr_mgt/IOPMLibPrivate.h\"\nfi\n\nif [ -e \"${SDKROOT}/System/Library/PrivateFrameworks/DeviceToDeviceManager.framework/Headers/DeviceToDeviceManager.h\" ]\nthen\nrm -rf \"${CONFIGURATION_TEMP_DIR}/DeviceToDeviceManager\"\nelse\nmkdir -p \"${CONFIGURATION_TEMP_DIR}/DeviceToDeviceManager\"\necho \"#define NO_D2D 1\" > \"${CONFIGURATION_TEMP_DIR}/DeviceToDeviceManager/DeviceToDeviceManager.h\"\nfi\n\nif [ -e \"${SDKROOT}/System/Library/PrivateFrameworks/WebFilterDNS.framework/Headers/WebFilterDNS.h\" ]\nthen\nrm -rf \"${CONFIGURATION_TEMP_DIR}/WebFilterDNS\"\nelse\nmkdir -p \"${CONFIGURATION_TEMP_DIR}/WebFilterDNS\"\necho \"#define NO_WCF 1\" > \"${CONFIGURATION_TEMP_DIR}/WebFilterDNS/WebFilterDNS.h\"\nfi\n\nif [ -e \"${SDKROOT}/usr/local/include/AWACS.h\" ]\nthen\nrm -f \"${CONFIGURATION_TEMP_DIR}/AWACS.h\"\nrm -f \"${CONFIGURATION_TEMP_DIR}/libAWACS.a\"\nelse\necho \"#define NO_AWACS 1\" > \"${CONFIGURATION_TEMP_DIR}/AWACS.h\"\ntouch \"${CONFIGURATION_TEMP_DIR}/AWACSempty.c\"\nfor i in ${ARCHS}\ndo\nccflags=\"-arch $i $ccflags\"\ndone\ncc ${ccflags} \"${CONFIGURATION_TEMP_DIR}/AWACSempty.c\" -c -o \"${CONFIGURATION_TEMP_DIR}/libAWACS.a\"\nrm -f \"${CONFIGURATION_TEMP_DIR}/AWACSempty.c\"\nfi"; + shellScript = "if [ -e \"${SDKROOT}/usr/local/include/dnsinfo.h\" ]\nthen\nrm -f \"${CONFIGURATION_TEMP_DIR}/dnsinfo.h\"\nrm -f \"${CONFIGURATION_TEMP_DIR}/libdnsinfo.a\"\nelse\necho \"#define MDNS_NO_DNSINFO 1\" > ${CONFIGURATION_TEMP_DIR}/dnsinfo.h\ntouch \"${CONFIGURATION_TEMP_DIR}/empty.c\"\nfor i in ${ARCHS}\ndo\nccflags=\"-arch $i $ccflags\"\ndone\ncc ${ccflags} \"${CONFIGURATION_TEMP_DIR}/empty.c\" -c -o \"${CONFIGURATION_TEMP_DIR}/libdnsinfo.a\"\nrm -f \"${CONFIGURATION_TEMP_DIR}/empty.c\"\nfi\n\nif [ -e \"${SDKROOT}/usr/include/sandbox.h\" ]\nthen\nrm -f \"${CONFIGURATION_TEMP_DIR}/sandbox.h\"\nelse\necho \"#define MDNS_NO_SANDBOX 1\" > \"${CONFIGURATION_TEMP_DIR}/sandbox.h\"\nfi\n\nif [ -e \"${SDKROOT}/usr/local/include/vproc.h\" -o -e \"${SDKROOT}/usr/include/vproc.h\" ]\nthen\nrm -f \"${CONFIGURATION_TEMP_DIR}/vproc.h\"\nelse\ntouch \"${CONFIGURATION_TEMP_DIR}/vproc.h\"\nfi\n\nif [ -e \"${SDKROOT}/System/Library/Frameworks/IOKit.framework/PrivateHeaders/pwr_mgt/IOPMLibPrivate.h\" ]\nthen\nrm -rf \"${CONFIGURATION_TEMP_DIR}/IOKit\"\nelse\nmkdir -p \"${CONFIGURATION_TEMP_DIR}/IOKit/pwr_mgt\"\ntouch \"${CONFIGURATION_TEMP_DIR}/IOKit/pwr_mgt/IOPMLibPrivate.h\"\nfi\n\nif [ -e \"${SDKROOT}/System/Library/PrivateFrameworks/DeviceToDeviceManager.framework/Headers/DeviceToDeviceManager.h\" ]\nthen\nrm -rf \"${CONFIGURATION_TEMP_DIR}/DeviceToDeviceManager\"\nelse\nmkdir -p \"${CONFIGURATION_TEMP_DIR}/DeviceToDeviceManager\"\necho \"#define NO_D2D 1\" > \"${CONFIGURATION_TEMP_DIR}/DeviceToDeviceManager/DeviceToDeviceManager.h\"\nfi\n\nif [ -e \"${SDKROOT}/System/Library/PrivateFrameworks/WebFilterDNS.framework/Headers/WebFilterDNS.h\" ]\nthen\nrm -rf \"${CONFIGURATION_TEMP_DIR}/WebFilterDNS\"\nelse\nmkdir -p \"${CONFIGURATION_TEMP_DIR}/WebFilterDNS\"\necho \"#define NO_WCF 1\" > \"${CONFIGURATION_TEMP_DIR}/WebFilterDNS/WebFilterDNS.h\"\nfi\n\nif [ -e \"${SDKROOT}/usr/local/include/AWACS.h\" ]\nthen\nrm -f \"${CONFIGURATION_TEMP_DIR}/AWACS.h\"\nrm -f \"${CONFIGURATION_TEMP_DIR}/libAWACS.a\"\nelse\necho \"#define NO_AWACS 1\" > \"${CONFIGURATION_TEMP_DIR}/AWACS.h\"\ntouch \"${CONFIGURATION_TEMP_DIR}/AWACSempty.c\"\nfor i in ${ARCHS}\ndo\nccflags=\"-arch $i $ccflags\"\ndone\ncc ${ccflags} \"${CONFIGURATION_TEMP_DIR}/AWACSempty.c\" -c -o \"${CONFIGURATION_TEMP_DIR}/libAWACS.a\"\nrm -f \"${CONFIGURATION_TEMP_DIR}/AWACSempty.c\"\nfi"; }; FF045B6A0C7E4AA600448140 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; @@ -1856,7 +1840,7 @@ ); runOnlyForDeploymentPostprocessing = 1; shellPath = /bin/sh; - shellScript = "# Install plists to tell launchd how to start mDNSResponder and mDNSResponderHelper\nmkdir -p ${DSTROOT}${SYSTEM_LIBRARY_DIR}/LaunchDaemons\n\nif [ \"${MACOSX_DEPLOYMENT_TARGET}\" == \"10.4\" ] ; then\ncp ${SRCROOT}/LaunchDaemonInfo-Tiger.plist ${DSTROOT}${SYSTEM_LIBRARY_DIR}/LaunchDaemons/com.apple.mDNSResponder.plist\ncp ${SRCROOT}/LaunchDaemonInfo-Tiger.helper.plist ${DSTROOT}${SYSTEM_LIBRARY_DIR}/LaunchDaemons/com.apple.mDNSResponderHelper.plist\nelse\ncp ${SRCROOT}/LaunchDaemonInfo.plist ${DSTROOT}${SYSTEM_LIBRARY_DIR}/LaunchDaemons/com.apple.mDNSResponder.plist\ncp ${SRCROOT}/LaunchDaemonInfo.helper.plist ${DSTROOT}${SYSTEM_LIBRARY_DIR}/LaunchDaemons/com.apple.mDNSResponderHelper.plist\nfi\n\nif [ ! -z \"${IPHONEOS_DEPLOYMENT_TARGET}\" ] ; then\nplutil -convert binary1 ${DSTROOT}${SYSTEM_LIBRARY_DIR}/LaunchDaemons/com.apple.mDNSResponder.plist\nplutil -convert binary1 ${DSTROOT}${SYSTEM_LIBRARY_DIR}/LaunchDaemons/com.apple.mDNSResponderHelper.plist\nfi\n"; + shellScript = "# Install plists to tell launchd how to start mDNSResponder and mDNSResponderHelper\nmkdir -p ${DSTROOT}${SYSTEM_LIBRARY_DIR}/LaunchDaemons\n\nif [ ! -z \"${IPHONEOS_DEPLOYMENT_TARGET}\" ] ; then\nplutil -convert binary1 ${DSTROOT}${SYSTEM_LIBRARY_DIR}/LaunchDaemons/com.apple.mDNSResponder.plist\nplutil -convert binary1 ${DSTROOT}${SYSTEM_LIBRARY_DIR}/LaunchDaemons/com.apple.mDNSResponderHelper.plist\nfi\n"; }; FF37FAAD0BC581780044A5CF /* ShellScript */ = { isa = PBXShellScriptBuildPhase; @@ -2176,11 +2160,6 @@ target = 4AE471670EAFF81900A6C5AD /* dns_sd.jar */; targetProxy = 4AE471690EAFF83800A6C5AD /* PBXContainerItemProxy */; }; - 72FB546A166D5FE40090B2D9 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 72FB545E166D5FB00090B2D9 /* dnsctl */; - targetProxy = 72FB5469166D5FE40090B2D9 /* PBXContainerItemProxy */; - }; 84C5B3411665544B00C324A8 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 84C5B3341665529800C324A8 /* dns_services */; @@ -2271,7 +2250,7 @@ GCC_DYNAMIC_NO_PIC = NO; GCC_MODEL_TUNING = G5; INFOPLIST_FILE = "BonjourEvents-Info.plist"; - INSTALL_PATH = /System/Library/UserEventPlugins/; + INSTALL_PATH_ACTUAL = /System/Library/UserEventPlugins/; PREBINDING = NO; PRODUCT_NAME = BonjourEvents; PROVISIONING_PROFILE = ""; @@ -2314,9 +2293,10 @@ HEADER_SEARCH_PATHS = "$(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders/"; INSTALLHDRS_COPY_PHASE = YES; INSTALLHDRS_SCRIPT_PHASE = YES; - INSTALL_PATH = /usr/local/lib/system; + INSTALL_PATH_ACTUAL = /usr/local/lib/system; PREBINDING = NO; PRODUCT_NAME = dns_sd; + "SKIP_INSTALL[sdk=iphonesimulator*]" = YES; }; name = Development; }; @@ -2333,9 +2313,10 @@ "__DARWIN_NON_CANCELABLE=1", ); HEADER_SEARCH_PATHS = "$(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders/"; - INSTALL_PATH = /usr/local/lib/system; + INSTALL_PATH_ACTUAL = /usr/local/lib/system; PREBINDING = NO; PRODUCT_NAME = dns_sd_debug; + "SKIP_INSTALL[sdk=iphonesimulator*]" = YES; }; name = Development; }; @@ -2352,9 +2333,10 @@ "__DARWIN_NON_CANCELABLE=1", ); HEADER_SEARCH_PATHS = "$(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders/"; - INSTALL_PATH = /usr/local/lib/system; + INSTALL_PATH_ACTUAL = /usr/local/lib/system; PREBINDING = NO; PRODUCT_NAME = dns_sd_profile; + "SKIP_INSTALL[sdk=iphonesimulator*]" = YES; }; name = Development; }; @@ -2367,12 +2349,16 @@ CONFIGURATION_TEMP_DIR = "$(PROJECT_TEMP_DIR)"; COPY_PHASE_STRIP = NO; GCC_DYNAMIC_NO_PIC = NO; + GCC_TREAT_WARNINGS_AS_ERRORS = NO; GCC_WARN_CHECK_SWITCH_STATEMENTS = NO; HEADER_SEARCH_PATHS = ( "${CONFIGURATION_TEMP_DIR}", "$(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders", + "$(SDKROOT)/usr/local/include", ); - INSTALL_PATH = /usr/sbin; + INSTALL_PATH = ""; + "INSTALL_PATH[sdk=macosx*]" = ""; + INSTALL_PATH_ACTUAL = /usr/sbin; LD_MAP_FILE_PATH = "$(TARGET_TEMP_DIR)/$(PRODUCT_NAME)-LinkMap-$(CURRENT_VARIANT)-$(CURRENT_ARCH).txt"; LIBRARY_SEARCH_PATHS = "\"${CONFIGURATION_TEMP_DIR}\""; MACOSX_DEPLOYMENT_TARGET = 10.5; @@ -2381,7 +2367,6 @@ "$(inherited)", "-lipsec", ); - "OTHER_LDFLAGS[sdk=iphoneos*] [arch=*]" = "-lipsec -Wl,-pie"; "OTHER_LDFLAGS[sdk=macosx*][arch=*]" = ( "-lipsec", "-Wl,-pie", @@ -2428,11 +2413,12 @@ ); GCC_STRICT_ALIASING = YES; GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_TREAT_WARNINGS_AS_ERRORS = NO; GCC_WARN_64_TO_32_BIT_CONVERSION = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_VARIABLE = YES; - INSTALL_PATH = /usr/bin; + INSTALL_PATH_ACTUAL = /usr/bin; MACOSX_DEPLOYMENT_TARGET = 10.9; ONLY_ACTIVE_ARCH = NO; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -2461,14 +2447,15 @@ "$(inherited)", ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_TREAT_WARNINGS_AS_ERRORS = NO; GCC_WARN_64_TO_32_BIT_CONVERSION = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_VARIABLE = YES; - INSTALL_PATH = /usr/lib; + INSTALL_PATH_ACTUAL = /usr/lib; MACOSX_DEPLOYMENT_TARGET = 10.8; ONLY_ACTIVE_ARCH = NO; - PRODUCT_NAME = "$(TARGET_NAME)"; + PRODUCT_NAME = "$(TARGET_NAME)_mdns"; SDKROOT = macosx; }; name = Development; @@ -2490,6 +2477,7 @@ }; D284BE2C0ADD78180027CCDF /* Development */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 3F347CF5185D57CD00367B40 /* base.xcconfig */; buildSettings = { CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)"; DEAD_CODE_STRIPPING = YES; @@ -2537,6 +2525,7 @@ ); GCC_DYNAMIC_NO_PIC = NO; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_TREAT_WARNINGS_AS_ERRORS = NO; HEADER_SEARCH_PATHS = ( "$(SDKROOT)/$(SYSTEM_LIBRARY_DIR)/Frameworks/Security.framework/PrivateHeaders", ../mDNSShared, @@ -2544,8 +2533,11 @@ "${APPLE_INTERNAL_DEVELOPER_DIR}/Headers", "${CONFIGURATION_TEMP_DIR}", "$(SDKROOT)/usr/include/libxml2", + "$(SDKROOT)/usr/local/include/", ); - INSTALL_PATH = /usr/sbin; + INSTALL_PATH = ""; + "INSTALL_PATH[sdk=macosx*]" = ""; + INSTALL_PATH_ACTUAL = /usr/sbin; LIBRARY_SEARCH_PATHS = "\"${CONFIGURATION_TEMP_DIR}\""; MACOSX_DEPLOYMENT_TARGET = 10.5; ORDER_FILE = "${SRCROOT}/mDNSResponder.order"; @@ -2601,6 +2593,7 @@ "${APPLE_INTERNAL_DEVELOPER_DIR}/Headers", "${CONFIGURATION_TEMP_DIR}", "$(SDKROOT)/usr/include/libxml2", + "$(SDKROOT)/usr/local/include", ); LIBRARY_SEARCH_PATHS = "\"${CONFIGURATION_TEMP_DIR}\""; MACOSX_DEPLOYMENT_TARGET = 10.5; @@ -2649,7 +2642,7 @@ ../mDNSShared, "${SYSTEM_LIBRARY_DIR}/Frameworks/System.framework/PrivateHeaders", ); - INSTALL_PATH = /usr/bin; + INSTALL_PATH_ACTUAL = /usr/bin; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; @@ -2676,7 +2669,7 @@ "${SYSTEM_LIBRARY_DIR}/Frameworks/JavaVM.framework/Versions/1.3.1/Headers", "${PROJECT_DERIVED_FILE_DIR}", ); - INSTALL_PATH = /usr/lib/java; + INSTALL_PATH_ACTUAL = /usr/lib/java; LIBRARY_STYLE = DYNAMIC; MACH_O_TYPE = mh_dylib; OTHER_CFLAGS = ""; @@ -2702,7 +2695,7 @@ "${CONFIGURATION_TEMP_DIR}", /System/Library/Frameworks/System.Framework/PrivateHeaders, ); - INSTALL_PATH = /usr/sbin; + INSTALL_PATH_ACTUAL = /usr/sbin; LIBRARY_SEARCH_PATHS = "\"${CONFIGURATION_TEMP_DIR}\""; MACOSX_DEPLOYMENT_TARGET = 10.5; OTHER_CFLAGS = ( @@ -2724,7 +2717,7 @@ CONFIGURATION_TEMP_DIR = "${BUILD_DIR}/mDNSResponder.build"; GCC_DYNAMIC_NO_PIC = NO; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - INSTALL_PATH = "/Library/Application Support/Bonjour"; + INSTALL_PATH_ACTUAL = "/Library/Application Support/Bonjour"; MACOSX_DEPLOYMENT_TARGET = 10.5; OTHER_CFLAGS = ""; OTHER_LDFLAGS = ""; @@ -2748,7 +2741,7 @@ GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_SYMBOLS_PRIVATE_EXTERN = NO; INFOPLIST_FILE = "PreferencePane/Info-PreferencePane.plist"; - INSTALL_PATH = /AppleInternal/Library/PreferencePanes; + INSTALL_PATH_ACTUAL = /AppleInternal/Library/PreferencePanes; MACOSX_DEPLOYMENT_TARGET = 10.5; OTHER_CFLAGS = ""; OTHER_LDFLAGS = "-twolevel_namespace"; @@ -2774,8 +2767,7 @@ "__DARWIN_NON_CANCELABLE=1", ); HEADER_SEARCH_PATHS = "$(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders/"; - INSTALL_PATH = /usr/lib/system; - "INSTALL_PATH[sdk=iphonesimulator*]" = "$(SDKROOT)/usr/lib/system"; + INSTALL_PATH_ACTUAL = /usr/lib/system; LINK_WITH_STANDARD_LIBRARIES = NO; OTHER_LDFLAGS = ( "-Wl,-umbrella,System", @@ -2823,8 +2815,7 @@ ); GENERATE_PROFILING_CODE = YES; HEADER_SEARCH_PATHS = "$(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders/"; - INSTALL_PATH = /usr/lib/system; - "INSTALL_PATH[sdk=iphonesimulator*]" = "$(SDKROOT)/usr/lib/system"; + INSTALL_PATH_ACTUAL = /usr/lib/system; LINK_WITH_STANDARD_LIBRARIES = NO; OTHER_LDFLAGS = ( "-Wl,-umbrella,System", @@ -2892,11 +2883,11 @@ "$(inherited)", "__DARWIN_NON_CANCELABLE=1", ); + GCC_TREAT_WARNINGS_AS_ERRORS = NO; HEADER_SEARCH_PATHS = "$(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders/"; INSTALLHDRS_COPY_PHASE = YES; INSTALLHDRS_SCRIPT_PHASE = YES; - INSTALL_PATH = /usr/lib/system; - "INSTALL_PATH[sdk=iphonesimulator*]" = "$(SDKROOT)/usr/lib/system"; + INSTALL_PATH_ACTUAL = /usr/lib/system; LINK_WITH_STANDARD_LIBRARIES = NO; OTHER_LDFLAGS = ( "-Wl,-umbrella,System", diff --git a/mDNSResponder/mDNSShared/dns_sd.h b/mDNSResponder/mDNSShared/dns_sd.h index 99373de6..32945b7b 100644 --- a/mDNSResponder/mDNSShared/dns_sd.h +++ b/mDNSResponder/mDNSShared/dns_sd.h @@ -54,19 +54,8 @@ * for the local network. */ - -/* _DNS_SD_H contains the mDNSResponder version number for this header file, formatted as follows: - * Major part of the build number * 10000 + - * minor part of the build number * 100 - * For example, Mac OS X 10.4.9 has mDNSResponder-108.4, which would be represented as - * version 1080400. This allows C code to do simple greater-than and less-than comparisons: - * e.g. an application that requires the DNSServiceGetProperty() call (new in mDNSResponder-126) can check: - * - * #if _DNS_SD_H+0 >= 1260000 - * ... some C code that calls DNSServiceGetProperty() ... - * #endif - * - * The version defined in this header file symbol allows for compile-time +/* _DNS_SD_H contains the API version number for this header file + * The API version defined in this header file symbol allows for compile-time * checking, so that C code building with earlier versions of the header file * can avoid compile errors trying to use functions that aren't even defined * in those earlier versions. Similar checks may also be performed at run-time: @@ -77,7 +66,7 @@ */ #ifndef _DNS_SD_H -#define _DNS_SD_H 5440000 +#define _DNS_SD_H 5610101 #ifdef __cplusplus extern "C" { @@ -291,6 +280,7 @@ enum * ... * DNSServiceRefDeallocate(BrowseRef); // Terminate the browse operation * DNSServiceRefDeallocate(MainRef); // Terminate the shared connection + * Also see Point 4.(Don't Double-Deallocate if the MainRef has been Deallocated) in Notes below: * * Notes: * @@ -328,7 +318,7 @@ enum * DNSServiceRef's created by other calls like DNSServiceBrowse() or DNSServiceResolve() * cannot be shared by copying them and using kDNSServiceFlagsShareConnection. * - * 4. Don't Double-Deallocate + * 4. Don't Double-Deallocate if the MainRef has been Deallocated * Calling DNSServiceRefDeallocate(ref) for a particular operation's DNSServiceRef terminates * just that operation. Calling DNSServiceRefDeallocate(ref) for the main shared DNSServiceRef * (the parent DNSServiceRef, originally created by DNSServiceCreateConnection(&ref)) @@ -380,8 +370,7 @@ enum kDNSServiceFlagsBackgroundTrafficClass = 0x80000, /* - * This flag is meaningful in DNSServiceBrowse, DNSServiceGetAddrInfo, DNSServiceQueryRecord, - * and DNSServiceResolve. When set, it uses the background traffic + * This flag is meaningful for Unicast DNS queries. When set, it uses the background traffic * class for packets that service the request. */ @@ -495,6 +484,25 @@ enum * is only set in the callbacks and kDNSServiceFlagsThresholdOne is only set on * input to a DNSServiceBrowse call. */ + kDNSServiceFlagsDenyCellular = 0x8000000, + /* + * This flag is meaningful only for Unicast DNS queries. When set, the kernel will restrict + * DNS resolutions on the cellular interface for that request. + */ + + kDNSServiceFlagsServiceIndex = 0x10000000, + /* + * This flag is meaningful only for DNSServiceGetAddrInfo() for Unicast DNS queries. + * When set, DNSServiceGetAddrInfo() will interpret the "interfaceIndex" argument of the call + * as the "serviceIndex". + */ + + kDNSServiceFlagsDenyExpensive = 0x20000000 + /* + * This flag is meaningful only for Unicast DNS queries. When set, the kernel will restrict + * DNS resolutions on interfaces defined as expensive for that request. + */ + }; #define kDNSServiceOutputFlags (kDNSServiceFlagsValidate | kDNSServiceFlagsValidateOptional | kDNSServiceFlagsMoreComing | kDNSServiceFlagsAdd | kDNSServiceFlagsDefault) @@ -804,22 +812,18 @@ DNSServiceErrorType DNSSD_API DNSServiceGetProperty * When requesting kDNSServiceProperty_DaemonVersion, the result pointer must point * to a 32-bit unsigned integer, and the size parameter must be set to sizeof(uint32_t). * - * On return, the 32-bit unsigned integer contains the version number, formatted as follows: - * Major part of the build number * 10000 + - * minor part of the build number * 100 - * - * For example, Mac OS X 10.4.9 has mDNSResponder-108.4, which would be represented as - * version 1080400. This allows applications to do simple greater-than and less-than comparisons: - * e.g. an application that requires at least mDNSResponder-108.4 can check: + * On return, the 32-bit unsigned integer contains the API version number * + * For example, Mac OS X 10.4.9 has API version 1080400. + * This allows applications to do simple greater-than and less-than comparisons: + * e.g. an application that requires at least API version 1080400 can check: * if (version >= 1080400) ... * * Example usage: - * * uint32_t version; * uint32_t size = sizeof(version); * DNSServiceErrorType err = DNSServiceGetProperty(kDNSServiceProperty_DaemonVersion, &version, &size); - * if (!err) printf("Bonjour version is %d.%d\n", version / 10000, version / 100 % 100); + * if (!err) printf("DNS_SD API version is %d.%d\n", version / 10000, version / 100 % 100); */ #define kDNSServiceProperty_DaemonVersion "DaemonVersion" @@ -831,10 +835,10 @@ DNSServiceErrorType DNSSD_API DNSServiceGetProperty /* DNSServiceGetPID() Parameters: * * srcport: Source port (in network byte order) of the UDP socket that was created by - * mDNSResponder to send the DNS query on the wire. + * the daemon to send the DNS query on the wire. * * pid: Process ID of the application that started the name resolution which triggered - * mDNSResponder to send the query on the wire. The value can be -1 if the srcport + * the daemon to send the query on the wire. The value can be -1 if the srcport * cannot be mapped. * * return value: Returns kDNSServiceErr_NoError on success, or kDNSServiceErr_ServiceNotRunning @@ -857,7 +861,7 @@ DNSServiceErrorType DNSSD_API DNSServiceGetPID * * Access underlying Unix domain socket for an initialized DNSServiceRef. * The DNS Service Discovery implementation uses this socket to communicate between the client and - * the mDNSResponder daemon. The application MUST NOT directly read from or write to this socket. + * the daemon. The application MUST NOT directly read from or write to this socket. * Access to the socket is provided so that it can be used as a kqueue event source, a CFRunLoop * event source, in a select() loop, etc. When the underlying event management subsystem (kqueue/ * select/CFRunLoop etc.) indicates to the client that data is available for reading on the @@ -867,6 +871,8 @@ DNSServiceErrorType DNSSD_API DNSServiceGetPID * a client can choose to fork a thread and have it loop calling "DNSServiceProcessResult(ref);" * If DNSServiceProcessResult() is called when no data is available for reading on the socket, it * will block until data does become available, and then process the data and return to the caller. + * The application is reponsible for checking the return value of DNSServiceProcessResult() to determine + * if the socket is valid and if it should continue to process data on the socket. * When data arrives on the socket, the client is responsible for calling DNSServiceProcessResult(ref) * in a timely fashion -- if the client allows a large backlog of data to build up the daemon * may terminate the connection. @@ -1749,10 +1755,7 @@ typedef void (DNSSD_API *DNSServiceGetAddrInfoReply) * begins and will last indefinitely until the client terminates the query * by passing this DNSServiceRef to DNSServiceRefDeallocate(). * - * flags: kDNSServiceFlagsForceMulticast or kDNSServiceFlagsLongLivedQuery. - * Pass kDNSServiceFlagsLongLivedQuery to create a "long-lived" unicast - * query to a unicast DNS server that implements the protocol. This flag - * has no effect on link-local multicast queries. + * flags: kDNSServiceFlagsForceMulticast * * interfaceIndex: The interface on which to issue the query. Passing 0 causes the query to be * sent on all active interfaces via Multicast or the primary interface via Unicast. @@ -2551,7 +2554,7 @@ DNSServiceErrorType DNSSD_API TXTRecordGetItemAtIndex * If there is any error during the processing of events, the application callback will * be called with an error code. For shared connections, each subordinate DNSServiceRef * will get its own error callback. Currently these error callbacks only happen - * if the mDNSResponder daemon is manually terminated or crashes, and the error + * if the daemon is manually terminated or crashes, and the error * code in this case is kDNSServiceErr_ServiceNotRunning. The application must call * DNSServiceRefDeallocate to free the DNSServiceRef when it gets such an error code. * These error callbacks are rare and should not normally happen on customer machines, diff --git a/mDNSResponder/mDNSShared/dnssd_clientstub.c b/mDNSResponder/mDNSShared/dnssd_clientstub.c index d21658fa..e8b46d86 100644 --- a/mDNSResponder/mDNSShared/dnssd_clientstub.c +++ b/mDNSResponder/mDNSShared/dnssd_clientstub.c @@ -37,8 +37,6 @@ #include "dnssd_ipc.h" -static int gDaemonErr = kDNSServiceErr_NoError; - #if defined(_WIN32) #define _SSIZE_T @@ -308,6 +306,8 @@ static int more_bytes(dnssd_sock_t sd) // the next operation on this socket(recv/accept) is blocked since we depend on TCP to communicate with the system service. static int set_waitlimit(dnssd_sock_t sock, int timeout) { + int gDaemonErr = kDNSServiceErr_NoError; + // To prevent stack corruption since select does not work with timeout if fds > FD_SETSIZE(1024) if (!gDaemonErr && sock < FD_SETSIZE) { @@ -526,6 +526,11 @@ static DNSServiceErrorType ConnectToServer(DNSServiceRef *ref, DNSServiceFlags f #ifdef SO_NOSIGPIPE const unsigned long optval = 1; #endif + #ifndef USE_TCP_LOOPBACK + char* uds_serverpath = getenv(MDNS_UDS_SERVERPATH_ENVVAR); + if (uds_serverpath == NULL) + uds_serverpath = MDNS_UDS_SERVERPATH; + #endif *ref = NULL; sdr->sockfd = socket(AF_DNSSD, SOCK_STREAM, 0); sdr->validator = sdr->sockfd ^ ValidatorBits; @@ -546,7 +551,7 @@ static DNSServiceErrorType ConnectToServer(DNSServiceRef *ref, DNSServiceFlags f saddr.sin_port = htons(MDNS_TCP_SERVERPORT); #else saddr.sun_family = AF_LOCAL; - strcpy(saddr.sun_path, MDNS_UDS_SERVERPATH); + strcpy(saddr.sun_path, uds_serverpath); #if !defined(__ppc__) && defined(SO_DEFUNCTOK) { int defunct = 1; @@ -573,8 +578,8 @@ static DNSServiceErrorType ConnectToServer(DNSServiceRef *ref, DNSServiceFlags f } else { - syslog(LOG_WARNING, "dnssd_clientstub ConnectToServer: connect() failed Socket:%d Err:%d Errno:%d %s", - sdr->sockfd, err, dnssd_errno, dnssd_strerror(dnssd_errno)); + syslog(LOG_WARNING, "dnssd_clientstub ConnectToServer: connect() failed path:%s Socket:%d Err:%d Errno:%d %s", + uds_serverpath, sdr->sockfd, err, dnssd_errno, dnssd_strerror(dnssd_errno)); dnssd_close(sdr->sockfd); FreeDNSServiceOp(sdr); return kDNSServiceErr_ServiceNotRunning; @@ -1224,11 +1229,11 @@ fail: syslog(LOG_WARNING, "dnssd_clientstub handle_resolve_response: error reading result from daemon"); } -#if APPLE_OSX_mDNSResponder +#if TARGET_OS_EMBEDDED static int32_t libSystemVersion = 0; -// Return true if the application linked against a version of libsystem where P2P +// Return true if the iOS application linked against a version of libsystem where P2P // interfaces were included by default when using kDNSServiceInterfaceIndexAny. // Using 160.0.0 == 0xa00000 as the version threshold. static int includeP2PWithIndexAny() @@ -1242,15 +1247,15 @@ static int includeP2PWithIndexAny() return 0; } -#else // APPLE_OSX_mDNSResponder +#else // TARGET_OS_EMBEDDED -// always return false for non Apple platforms +// always return false for non iOS platforms static int includeP2PWithIndexAny() { return 0; } -#endif // APPLE_OSX_mDNSResponder +#endif // TARGET_OS_EMBEDDED DNSServiceErrorType DNSSD_API DNSServiceResolve ( @@ -1772,7 +1777,8 @@ DNSServiceErrorType DNSSD_API DNSServiceCreateDelegateConnection(DNSServiceRef * } if (pid && setsockopt((*sdRef)->sockfd, SOL_SOCKET, SO_DELEGATED, &pid, sizeof(pid)) == -1) - { + { + syslog(LOG_WARNING, "dnssdclientstub: Could not setsockopt() for PID[%d], no entitlements or process(pid) invalid errno:%d (%s)", pid, errno, strerror(errno)); // Free the hdr in case we return before calling deliver_request() if (hdr) free(hdr); @@ -1783,6 +1789,7 @@ DNSServiceErrorType DNSSD_API DNSServiceCreateDelegateConnection(DNSServiceRef * if (!pid && setsockopt((*sdRef)->sockfd, SOL_SOCKET, SO_DELEGATED_UUID, uuid, sizeof(uuid_t)) == -1) { + syslog(LOG_WARNING, "dnssdclientstub: Could not setsockopt() for UUID, no entitlements or process(uuid) invalid errno:%d (%s) ", errno, strerror(errno)); // Free the hdr in case we return before calling deliver_request() if (hdr) free(hdr); diff --git a/mDNSResponder/mDNSShared/dnssd_ipc.h b/mDNSResponder/mDNSShared/dnssd_ipc.h index 360d703f..609fa640 100644 --- a/mDNSResponder/mDNSShared/dnssd_ipc.h +++ b/mDNSResponder/mDNSShared/dnssd_ipc.h @@ -85,6 +85,7 @@ extern char *win32_strerror(int inErrorCode); # ifndef MDNS_UDS_SERVERPATH # define MDNS_UDS_SERVERPATH "/var/run/mDNSResponder" # endif +# define MDNS_UDS_SERVERPATH_ENVVAR "DNSSD_UDS_PATH" # define LISTENQ 100 // longest legal control path length # define MAX_CTLPATH 256 -- cgit v1.2.3