[Midnightbsd-cvs] src [6986] trunk/contrib/mDNSResponder: mDNSResponder 561.1.1

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Thu Mar 19 21:18:21 EDT 2015


Revision: 6986
          http://svnweb.midnightbsd.org/src/?rev=6986
Author:   laffer1
Date:     2015-03-19 21:18:21 -0400 (Thu, 19 Mar 2015)
Log Message:
-----------
mDNSResponder 561.1.1

Modified Paths:
--------------
    trunk/contrib/mDNSResponder/Clients/dnsctl.c
    trunk/contrib/mDNSResponder/Makefile
    trunk/contrib/mDNSResponder/mDNSMacOSX/BonjourEvents.c
    trunk/contrib/mDNSResponder/mDNSMacOSX/LaunchDaemonInfo.plist
    trunk/contrib/mDNSResponder/mDNSMacOSX/Private/dns_services.c
    trunk/contrib/mDNSResponder/mDNSMacOSX/helper.c
    trunk/contrib/mDNSResponder/mDNSMacOSX/mDNSMacOSX.c
    trunk/contrib/mDNSResponder/mDNSMacOSX/mDNSResponder.xcodeproj/project.pbxproj
    trunk/contrib/mDNSResponder/mDNSPosix/mDNSPosix.c
    trunk/contrib/mDNSResponder/mDNSShared/dns_sd.h
    trunk/contrib/mDNSResponder/mDNSShared/dnssd_clientstub.c
    trunk/contrib/mDNSResponder/mDNSShared/dnssd_ipc.h
    trunk/contrib/mDNSResponder/mDNSWindows/mDNSWin32.c

Added Paths:
-----------
    trunk/contrib/mDNSResponder/mDNSMacOSX/Private/dns_services_mdns.h
    trunk/contrib/mDNSResponder/mDNSMacOSX/base.xcconfig

Property Changed:
----------------
    trunk/contrib/mDNSResponder/

Index: trunk/contrib/mDNSResponder
===================================================================
--- trunk/contrib/mDNSResponder	2015-03-20 01:14:52 UTC (rev 6985)
+++ trunk/contrib/mDNSResponder	2015-03-20 01:18:21 UTC (rev 6986)

Property changes on: trunk/contrib/mDNSResponder
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +1 ##
+/vendor/apple/mDNSResponder/dist:6478-6985
\ No newline at end of property
Modified: trunk/contrib/mDNSResponder/Clients/dnsctl.c
===================================================================
--- trunk/contrib/mDNSResponder/Clients/dnsctl.c	2015-03-20 01:14:52 UTC (rev 6985)
+++ trunk/contrib/mDNSResponder/Clients/dnsctl.c	2015-03-20 01:18:21 UTC (rev 6986)
@@ -18,7 +18,7 @@
 #include <net/if.h> // if_nametoindex()
 
 #include <dispatch/dispatch.h>
-#include "dns_services.h"
+#include "dns_services_mdns.h"
 
 //*************************************************************************************************************
 // Globals:
@@ -79,6 +79,7 @@
         default                     :  printf("UNKNOWN ERR \n");
                                        DNSXRefDeAlloc(ClientRef);    break;
     }
+    fflush(NULL);
 
 }
 

Modified: trunk/contrib/mDNSResponder/Makefile
===================================================================
--- trunk/contrib/mDNSResponder/Makefile	2015-03-20 01:14:52 UTC (rev 6985)
+++ trunk/contrib/mDNSResponder/Makefile	2015-03-20 01:18:21 UTC (rev 6986)
@@ -16,7 +16,7 @@
 
 include $(MAKEFILEPATH)/pb_makefiles/platform.make
 
-MVERS = "mDNSResponder-541"
+MVERS = "mDNSResponder-561.1.1"
 
 DDNSWRITECONFIG = "$(DSTROOT)/Library/Application Support/Bonjour/ddnswriteconfig"
 VER = 

Modified: trunk/contrib/mDNSResponder/mDNSMacOSX/BonjourEvents.c
===================================================================
--- trunk/contrib/mDNSResponder/mDNSMacOSX/BonjourEvents.c	2015-03-20 01:14:52 UTC (rev 6985)
+++ trunk/contrib/mDNSResponder/mDNSMacOSX/BonjourEvents.c	2015-03-20 01:18:21 UTC (rev 6986)
@@ -747,6 +747,16 @@
     }
 
     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)
     {

Modified: trunk/contrib/mDNSResponder/mDNSMacOSX/LaunchDaemonInfo.plist
===================================================================
(Binary files differ)

Modified: trunk/contrib/mDNSResponder/mDNSMacOSX/Private/dns_services.c
===================================================================
--- trunk/contrib/mDNSResponder/mDNSMacOSX/Private/dns_services.c	2015-03-20 01:14:52 UTC (rev 6985)
+++ trunk/contrib/mDNSResponder/mDNSMacOSX/Private/dns_services.c	2015-03-20 01:18:21 UTC (rev 6986)
@@ -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 <xpc/xpc.h>
 #include <Block.h>
@@ -32,7 +32,7 @@
 
 static bool LogDebugEnabled()
 {
-    return false;
+    return true;
 }
 
 static void LogDebug(const char *prefix, xpc_object_t o)

Copied: trunk/contrib/mDNSResponder/mDNSMacOSX/Private/dns_services_mdns.h (from rev 6985, vendor/apple/mDNSResponder/dist/mDNSMacOSX/Private/dns_services_mdns.h)
===================================================================
--- trunk/contrib/mDNSResponder/mDNSMacOSX/Private/dns_services_mdns.h	                        (rev 0)
+++ trunk/contrib/mDNSResponder/mDNSMacOSX/Private/dns_services_mdns.h	2015-03-20 01:18:21 UTC (rev 6986)
@@ -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 <dispatch/dispatch.h>
+
+// 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 */

Copied: trunk/contrib/mDNSResponder/mDNSMacOSX/base.xcconfig (from rev 6985, vendor/apple/mDNSResponder/dist/mDNSMacOSX/base.xcconfig)
===================================================================
--- trunk/contrib/mDNSResponder/mDNSMacOSX/base.xcconfig	                        (rev 0)
+++ trunk/contrib/mDNSResponder/mDNSMacOSX/base.xcconfig	2015-03-20 01:18:21 UTC (rev 6986)
@@ -0,0 +1,8 @@
+#include "<DEVELOPER_DIR>/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

Modified: trunk/contrib/mDNSResponder/mDNSMacOSX/helper.c
===================================================================
--- trunk/contrib/mDNSResponder/mDNSMacOSX/helper.c	2015-03-20 01:14:52 UTC (rev 6985)
+++ trunk/contrib/mDNSResponder/mDNSMacOSX/helper.c	2015-03-20 01:18:21 UTC (rev 6986)
@@ -85,7 +85,6 @@
 
 uid_t mDNSResponderUID;
 gid_t mDNSResponderGID;
-static const char kTunnelAddressInterface[] = "lo0";
 
 void
 debug_(const char *func, const char *fmt, ...)
@@ -698,12 +697,13 @@
 // therefore I need to add some byte swapping in this API to make this four-character string backwards too."
 // To cope with this we allow *both* "ddns" and "sndd" as valid item types.
 
+
+#ifndef NO_SECURITYFRAMEWORK
+static const char btmmprefix[] = "btmmdns:";
 static const char dnsprefix[] = "dns:";
 static const char ddns[] = "ddns";
 static const char ddnsrev[] = "sndd";
-static const char btmmprefix[] = "btmmdns:";
 
-#ifndef NO_SECURITYFRAMEWORK
 static enum DNSKeyFormat
 getDNSKeyFormat(SecKeychainItemRef item, SecKeychainAttributeList **attributesp)
 {

Modified: trunk/contrib/mDNSResponder/mDNSMacOSX/mDNSMacOSX.c
===================================================================
--- trunk/contrib/mDNSResponder/mDNSMacOSX/mDNSMacOSX.c	2015-03-20 01:14:52 UTC (rev 6985)
+++ trunk/contrib/mDNSResponder/mDNSMacOSX/mDNSMacOSX.c	2015-03-20 01:18:21 UTC (rev 6986)
@@ -248,9 +248,10 @@
 typedef struct D2DRecordListElem
 {
     struct D2DRecordListElem *next;
-    AuthRecord               ar;
     D2DServiceInstance       instanceHandle;
     D2DTransportType         transportType;
+    AuthRecord               ar;    // must be last in the structure to accomodate extra space
+                                    // allocated for large records.
 } D2DRecordListElem;
 
 static D2DRecordListElem *D2DRecords = NULL; // List of records returned with D2DServiceFound events
@@ -1863,7 +1864,8 @@
     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

Modified: trunk/contrib/mDNSResponder/mDNSMacOSX/mDNSResponder.xcodeproj/project.pbxproj
===================================================================
--- trunk/contrib/mDNSResponder/mDNSMacOSX/mDNSResponder.xcodeproj/project.pbxproj	2015-03-20 01:14:52 UTC (rev 6985)
+++ trunk/contrib/mDNSResponder/mDNSMacOSX/mDNSResponder.xcodeproj/project.pbxproj	2015-03-20 01:18:21 UTC (rev 6986)
@@ -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,6 +184,7 @@
 		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 */; };
@@ -192,7 +191,7 @@
 		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 = "<group>"; };
 		2ECC11A50C4FEC3800CB1885 /* helpermsg-types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "helpermsg-types.h"; sourceTree = "<group>"; };
 		2EDC5E720C39EA640092701B /* helper-server.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = "helper-server.h"; sourceTree = "<group>"; };
+		3F347CF5185D57CD00367B40 /* base.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = base.xcconfig; sourceTree = "<group>"; };
 		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 = "<absolute>"; };
 		4A7B9E7C14FDA19F00B84CC1 /* mDNSResponder.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = mDNSResponder.txt; sourceTree = "<group>"; };
@@ -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 = "<absolute>"; };
 		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 = "<group>"; };
 		8418673A15AB8B6900BB7F70 /* com.apple.networking.mDNSResponder */ = {isa = PBXFileReference; lastKnownFileType = text; path = com.apple.networking.mDNSResponder; sourceTree = "<group>"; };
 		8418673C15AB8B8000BB7F70 /* mDNSResponderLogging.mobileconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = mDNSResponderLogging.mobileconfig; sourceTree = "<group>"; };
 		848DA5C6165477E000D2E8B4 /* xpc_services.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = xpc_services.c; path = Private/xpc_services.c; sourceTree = "<group>"; };
 		848DA5C9165477EB00D2E8B4 /* xpc_services.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = xpc_services.h; path = Private/xpc_services.h; sourceTree = "<group>"; };
 		848DA5D516547F7200D2E8B4 /* dns_xpc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dns_xpc.h; path = Private/dns_xpc.h; sourceTree = "<group>"; };
-		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 = "<group>"; };
+		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 = "<group>"; };
+		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 = "<group>"; };
 		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,21 +1757,8 @@
 			);
 			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";
+			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";
 		};
-		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";
-		};
 		2130256B12400DE600AC839F /* ShellScript */ = {
 			isa = PBXShellScriptBuildPhase;
 			buildActionMask = 8;
@@ -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_T!
 EMP_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\nec!
 ho \"#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_T!
 EMP_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\nec!
 ho \"#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",

Modified: trunk/contrib/mDNSResponder/mDNSPosix/mDNSPosix.c
===================================================================
--- trunk/contrib/mDNSResponder/mDNSPosix/mDNSPosix.c	2015-03-20 01:14:52 UTC (rev 6985)
+++ trunk/contrib/mDNSResponder/mDNSPosix/mDNSPosix.c	2015-03-20 01:18:21 UTC (rev 6986)
@@ -1568,7 +1568,7 @@
 {
     (void) m;
     (void) q;
-    return 0;
+    return -1;
 }
 
 mDNSexport void mDNSPlatformSetDelegatePID(UDPSocket *src, const mDNSAddr *dst, DNSQuestion *q)

Modified: trunk/contrib/mDNSResponder/mDNSShared/dns_sd.h
===================================================================
--- trunk/contrib/mDNSResponder/mDNSShared/dns_sd.h	2015-03-20 01:14:52 UTC (rev 6985)
+++ trunk/contrib/mDNSResponder/mDNSShared/dns_sd.h	2015-03-20 01:18:21 UTC (rev 6986)
@@ -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 5410000
+#define _DNS_SD_H 5610101
 
 #ifdef  __cplusplus
 extern "C" {
@@ -291,6 +280,7 @@
      * ...
      * 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 @@
      * 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 @@
 
     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 @@
      * 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 @@
  * 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
+ * On return, the 32-bit unsigned integer contains the API version number
  *
- * 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:
- *
+ * 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 @@
 /* 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 @@
  *
  * 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 @@
  * 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 @@
  *                  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 @@
  * 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,

Modified: trunk/contrib/mDNSResponder/mDNSShared/dnssd_clientstub.c
===================================================================
--- trunk/contrib/mDNSResponder/mDNSShared/dnssd_clientstub.c	2015-03-20 01:14:52 UTC (rev 6985)
+++ trunk/contrib/mDNSResponder/mDNSShared/dnssd_clientstub.c	2015-03-20 01:18:21 UTC (rev 6986)
@@ -37,8 +37,6 @@
 
 #include "dnssd_ipc.h"
 
-static int gDaemonErr = kDNSServiceErr_NoError;
-
 #if defined(_WIN32)
 
     #define _SSIZE_T
@@ -308,6 +306,8 @@
 // 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 @@
         #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 @@
         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 @@
             }
             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 @@
     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 @@
         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 @@
     }
 
     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 @@
 
     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);

Modified: trunk/contrib/mDNSResponder/mDNSShared/dnssd_ipc.h
===================================================================
--- trunk/contrib/mDNSResponder/mDNSShared/dnssd_ipc.h	2015-03-20 01:14:52 UTC (rev 6985)
+++ trunk/contrib/mDNSResponder/mDNSShared/dnssd_ipc.h	2015-03-20 01:18:21 UTC (rev 6986)
@@ -85,6 +85,7 @@
 #   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

Modified: trunk/contrib/mDNSResponder/mDNSWindows/mDNSWin32.c
===================================================================
--- trunk/contrib/mDNSResponder/mDNSWindows/mDNSWin32.c	2015-03-20 01:14:52 UTC (rev 6985)
+++ trunk/contrib/mDNSResponder/mDNSWindows/mDNSWin32.c	2015-03-20 01:18:21 UTC (rev 6986)
@@ -2192,7 +2192,7 @@
     {
     (void) m;
     (void) q;
-    return 0;
+    return -1;
     }
 
 mDNSexport void mDNSPlatformSetDelegatePID(UDPSocket *src, const mDNSAddr *dst, DNSQuestion *q)



More information about the Midnightbsd-cvs mailing list