summaryrefslogtreecommitdiffstats
path: root/mDNSResponder/mDNSMacOSX
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-09-20 11:12:30 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-09-20 11:23:31 +0200
commit49ebc73e1db87793fe536480739cdd31587d554d (patch)
tree58d6608b8f9dbfa76bd71c4367f5b5042cad4474 /mDNSResponder/mDNSMacOSX
parentmDNSResponder: Update to v567 (diff)
downloadrtems-libbsd-49ebc73e1db87793fe536480739cdd31587d554d.tar.bz2
mDNSResponder: Update to v576.30.4
The sources can be obtained via: https://opensource.apple.com/tarballs/mDNSResponder/mDNSResponder-576.30.4.tar.gz Update #3522.
Diffstat (limited to 'mDNSResponder/mDNSMacOSX')
-rw-r--r--mDNSResponder/mDNSMacOSX/CUPolicy.c28
-rw-r--r--mDNSResponder/mDNSMacOSX/LaunchDaemonInfo.helper.plist2
-rw-r--r--mDNSResponder/mDNSMacOSX/LaunchDaemonInfo.plist4
-rw-r--r--mDNSResponder/mDNSMacOSX/Private/dns_services.c2
-rw-r--r--mDNSResponder/mDNSMacOSX/Private/dns_services.h (renamed from mDNSResponder/mDNSMacOSX/Private/dns_services_mdns.h)0
-rw-r--r--mDNSResponder/mDNSMacOSX/VPNService.c6
-rw-r--r--mDNSResponder/mDNSMacOSX/daemon.c7
-rw-r--r--mDNSResponder/mDNSMacOSX/mDNSMacOSX.c186
-rw-r--r--mDNSResponder/mDNSMacOSX/mDNSResponder-entitlements.plist8
-rw-r--r--mDNSResponder/mDNSMacOSX/mDNSResponder.sb6
-rw-r--r--mDNSResponder/mDNSMacOSX/mDNSResponder.xcodeproj/project.pbxproj169
11 files changed, 253 insertions, 165 deletions
diff --git a/mDNSResponder/mDNSMacOSX/CUPolicy.c b/mDNSResponder/mDNSMacOSX/CUPolicy.c
index 434e65cd..187748e1 100644
--- a/mDNSResponder/mDNSMacOSX/CUPolicy.c
+++ b/mDNSResponder/mDNSMacOSX/CUPolicy.c
@@ -52,18 +52,22 @@ mDNSexport mDNSBool mDNSPlatformAllowPID(mDNS *const m, DNSQuestion *q)
}
else
{
- allowed = (mDNSBool) cellular_usage_policy_is_data_allowed_for_uuid(m->p->handle, q->uuid);
- if (!allowed)
- {
- xpc_object_t uuidx = xpc_uuid_create(q->uuid);
- if (uuidx)
- {
- network_config_cellular_blocked_notify(NULL, uuidx, NULL);
- LogInfo("mDNSPlaformAllowPID: Notified UUID for %##s (%s)", q->qname.c, DNSTypeName(q->qtype));
- xpc_release(uuidx);
- }
- }
- }
+ xpc_object_t uuidx = xpc_uuid_create(q->uuid);
+ if (uuidx)
+ {
+ allowed = (mDNSBool) cellular_usage_policy_is_data_allowed_for_uuid(m->p->handle, uuidx);
+ if (!allowed)
+ {
+ network_config_cellular_blocked_notify(NULL, uuidx, NULL);
+ LogInfo("mDNSPlaformAllowPID: Notified UUID for %##s (%s)", q->qname.c, DNSTypeName(q->qtype));
+ }
+ xpc_release(uuidx);
+ }
+ else
+ {
+ allowed = false;
+ }
+ }
return allowed;
}
else
diff --git a/mDNSResponder/mDNSMacOSX/LaunchDaemonInfo.helper.plist b/mDNSResponder/mDNSMacOSX/LaunchDaemonInfo.helper.plist
index a21868c7..09b61e08 100644
--- a/mDNSResponder/mDNSMacOSX/LaunchDaemonInfo.helper.plist
+++ b/mDNSResponder/mDNSMacOSX/LaunchDaemonInfo.helper.plist
@@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>Label</key>
- <string>com.apple.mDNSResponderHelper</string>
+ <string>com.apple.mDNSResponderHelper.reloaded</string>
<key>OnDemand</key>
<true/>
<key>ProgramArguments</key>
diff --git a/mDNSResponder/mDNSMacOSX/LaunchDaemonInfo.plist b/mDNSResponder/mDNSMacOSX/LaunchDaemonInfo.plist
index c1fe89a3..4226c795 100644
--- a/mDNSResponder/mDNSMacOSX/LaunchDaemonInfo.plist
+++ b/mDNSResponder/mDNSMacOSX/LaunchDaemonInfo.plist
@@ -3,9 +3,7 @@
<plist version="1.0">
<dict>
<key>Label</key>
- <string>com.apple.networking.mDNSResponder</string>
- <key>Disabled</key>
- <true/>
+ <string>com.apple.mDNSResponder.reloaded</string>
<key>OnDemand</key>
<false/>
<key>InitGroups</key>
diff --git a/mDNSResponder/mDNSMacOSX/Private/dns_services.c b/mDNSResponder/mDNSMacOSX/Private/dns_services.c
index a14d686c..1df3b21d 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_mdns.h"
+#include "dns_services.h"
#include "dns_xpc.h"
#include <xpc/xpc.h>
#include <Block.h>
diff --git a/mDNSResponder/mDNSMacOSX/Private/dns_services_mdns.h b/mDNSResponder/mDNSMacOSX/Private/dns_services.h
index 7b74e10d..7b74e10d 100644
--- a/mDNSResponder/mDNSMacOSX/Private/dns_services_mdns.h
+++ b/mDNSResponder/mDNSMacOSX/Private/dns_services.h
diff --git a/mDNSResponder/mDNSMacOSX/VPNService.c b/mDNSResponder/mDNSMacOSX/VPNService.c
index 8c1bf1d0..623ddbf4 100644
--- a/mDNSResponder/mDNSMacOSX/VPNService.c
+++ b/mDNSResponder/mDNSMacOSX/VPNService.c
@@ -23,13 +23,11 @@ mDNSexport mDNSs32 mDNSPlatformGetServiceID(mDNS *const m, DNSQuestion *q)
int sid;
if (q->pid)
- {
sid = VPNAppLayerGetMatchingServiceIdentifier(q->pid, NULL);
- }
else
- {
sid = VPNAppLayerGetMatchingServiceIdentifier(0, q->uuid);
- }
+
LogInfo("mDNSPlatformGetServiceID: returning %d for %##s (%s)", sid, q->qname.c, DNSTypeName(q->qtype));
+
return sid;
}
diff --git a/mDNSResponder/mDNSMacOSX/daemon.c b/mDNSResponder/mDNSMacOSX/daemon.c
index acdb68fb..1b257ea2 100644
--- a/mDNSResponder/mDNSMacOSX/daemon.c
+++ b/mDNSResponder/mDNSMacOSX/daemon.c
@@ -2474,10 +2474,9 @@ mDNSlocal mDNSBool AllowSleepNow(mDNS *const m, mDNSs32 now)
}
m->SleepState = SleepState_Sleeping;
- // We used to clear our interface list to empty state here before going to sleep.
- // The applications that try to connect to an external server during maintenance wakes, saw
- // DNS resolution errors as we don't have any interfaces (most queries use SuppressUnusable
- // flag). Thus, we don't remove our interfaces anymore on sleep.
+ // Clear our interface list to empty state, ready to go to sleep
+ // As a side effect of doing this, we'll also cancel any outstanding SPS Resolve calls that didn't complete
+ mDNSMacOSXNetworkChanged(m);
}
LogSPS("AllowSleepNow: %s(%lX) %s at %ld (%d ticks remaining)",
diff --git a/mDNSResponder/mDNSMacOSX/mDNSMacOSX.c b/mDNSResponder/mDNSMacOSX/mDNSMacOSX.c
index 28d73f63..f904c8b2 100644
--- a/mDNSResponder/mDNSMacOSX/mDNSMacOSX.c
+++ b/mDNSResponder/mDNSMacOSX/mDNSMacOSX.c
@@ -115,7 +115,6 @@ D2DStatus D2DTerminate() __attribute__((weak_import));
#include <IOKit/platform/IOPlatformSupportPrivate.h>
#endif // APPLE_OSX_mDNSResponder && !TARGET_OS_EMBEDDED
-
#define kInterfaceSpecificOption "interface="
#define mDNS_IOREG_KEY "mDNS_KEY"
@@ -1037,7 +1036,13 @@ mDNSexport void external_stop_resolving_service(const domainname *const fqdn, DN
// Typically point-to-point interfaces are modems (including mobile-phone pseudo-modems), and we don't want
// to run up the user's bill sending multicast traffic over a link where there's only a single device at the
// other end, and that device (e.g. a modem bank) is probably not answering Multicast DNS queries anyway.
+
+// We also don't want to use multicast on *any* interface on very constrained devices.
+#if TARGET_OS_NANO
+#define MulticastInterface(i) (mDNSfalse)
+#else
#define MulticastInterface(i) (((i)->ifa_flags & IFF_MULTICAST) && !((i)->ifa_flags & IFF_POINTOPOINT))
+#endif
mDNSexport void NotifyOfElusiveBug(const char *title, const char *msg) // Both strings are UTF-8 text
{
@@ -1692,35 +1697,56 @@ mDNSlocal void setTrafficClass(int socketfd, mDNSBool useBackgroundTrafficClass)
(void) setsockopt(socketfd, SOL_SOCKET, SO_TRAFFIC_CLASS, (void *)&traffic_class, sizeof(traffic_class));
}
-mDNSexport void mDNSPlatformSetDelegatePID(UDPSocket *src, const mDNSAddr *dst, DNSQuestion *q)
+mDNSexport void mDNSPlatformSetuDNSSocktOpt(UDPSocket *src, const mDNSAddr *dst, DNSQuestion *q)
{
if (src)
{
int s;
if (dst->type == mDNSAddrType_IPv4)
- {
s = src->ss.sktv4;
- }
else
- {
s = src->ss.sktv6;
- }
if (q->pid)
{
if (setsockopt(s, SOL_SOCKET, SO_DELEGATED, &q->pid, sizeof(q->pid)) == -1)
- {
- LogInfo("mDNSPlatformSetDelegatePID: Delegate PID failed %s for PID %d", strerror(errno), q->pid);
- }
+ LogInfo("mDNSPlatformSetuDNSSocktOpt: Delegate PID failed %s for PID %d", strerror(errno), q->pid);
}
else
{
if (setsockopt(s, SOL_SOCKET, SO_DELEGATED_UUID, &q->uuid, sizeof(q->uuid)) == -1)
+ LogInfo("mDNSPlatformSetuDNSSocktOpt: Delegate UUID failed %s", strerror(errno));
+ }
+
+#if defined(SO_NOWAKEFROMSLEEP)
+ int nowake = 1;
+ if (setsockopt(s, SOL_SOCKET, SO_NOWAKEFROMSLEEP, &nowake, sizeof(nowake)) == -1)
+ LogInfo("mDNSPlatformSetuDNSSocktOpt: SO_NOWAKEFROMSLEEP failed %s", strerror(errno));
+#endif
+
+ if (q->DenyOnCellInterface || q->DenyOnExpInterface)
+ {
+#if defined(SO_RESTRICT_DENY_CELLULAR)
+ if (q->DenyOnCellInterface)
{
- LogInfo("mDNSPlatformSetDelegatePID: Delegate UUID failed %s", strerror(errno));
+ int restrictions = 0;
+ restrictions = SO_RESTRICT_DENY_CELLULAR;
+ if (setsockopt(s, SOL_SOCKET, SO_RESTRICTIONS, &restrictions, sizeof(restrictions)) == -1)
+ LogInfo("mDNSPlatformSetuDNSSocktOpt: SO_RESTRICT_DENY_CELLULAR failed %s", strerror(errno));
}
- }
+#endif
+#if defined(SO_RESTRICT_DENY_EXPENSIVE)
+ if (q->DenyOnExpInterface)
+ {
+ int restrictions = 0;
+ restrictions = SO_RESTRICT_DENY_EXPENSIVE;
+ if (setsockopt(s, SOL_SOCKET, SO_RESTRICTIONS, &restrictions, sizeof(restrictions)) == -1)
+ LogInfo("mDNSPlatformSetuDNSSocktOpt: SO_RESTRICT_DENY_EXPENSIVE failed %s", strerror(errno));
+ }
+#endif
+ }
+
}
}
@@ -5164,6 +5190,8 @@ mDNSexport void AddNewClientTunnel(mDNS *const m, DNSQuestion *const q)
p->q.ForceMCast = mDNSfalse;
p->q.ReturnIntermed = mDNStrue;
p->q.SuppressUnusable = mDNSfalse;
+ p->q.DenyOnCellInterface = mDNSfalse;
+ p->q.DenyOnExpInterface = mDNSfalse;
p->q.SearchListIndex = 0;
p->q.AppendSearchDomains = 0;
p->q.RetryWithSearchDomains = mDNSfalse;
@@ -5202,6 +5230,8 @@ mDNSlocal mStatus UpdateInterfaceList(mDNS *const m, mDNSs32 utc)
if (InfoSocket < 3 && errno != EAFNOSUPPORT)
LogMsg("UpdateInterfaceList: InfoSocket error %d errno %d (%s)", InfoSocket, errno, strerror(errno));
+ if (m->SleepState == SleepState_Sleeping) ifa = NULL;
+
while (ifa)
{
#if LIST_ALL_INTERFACES
@@ -7910,13 +7940,16 @@ mDNSexport void mDNSMacOSXNetworkChanged(mDNS *const m)
}
// Called with KQueueLock & mDNS lock
+// SetNetworkChanged is allowed to extend (but not reduce) the pause while we wait for configuration changes to settle
mDNSlocal void SetNetworkChanged(mDNS *const m, mDNSs32 delay)
{
if (!m->p->NetworkChanged || m->p->NetworkChanged - NonZeroTime(m->timenow + delay) < 0)
{
m->p->NetworkChanged = NonZeroTime(m->timenow + delay);
- LogInfo("SetNetworkChanged: scheduling in %d msec", delay);
+ LogInfo("SetNetworkChanged: Scheduling in %d msec", delay);
}
+ else
+ LogInfo("SetNetworkChanged: *NOT* reducing delay from %d to %d", m->p->NetworkChanged - m->timenow, delay);
}
// Called with KQueueLock & mDNS lock
@@ -7948,7 +7981,7 @@ mDNSlocal CFStringRef CopyNameFromKey(CFStringRef key)
// Whether a key from a network change notification corresponds to
// an IP service that is explicitly configured for IPv4 Link Local
-mDNSlocal mDNSBool ChangedKeysHaveIPv4LL(CFArrayRef inkeys)
+mDNSlocal int ChangedKeysHaveIPv4LL(CFArrayRef inkeys)
{
SCDynamicStoreRef store = NULL;
CFDictionaryRef dict = NULL;
@@ -7956,7 +7989,7 @@ mDNSlocal mDNSBool ChangedKeysHaveIPv4LL(CFArrayRef inkeys)
const void **keys = NULL, **vals = NULL;
CFStringRef pattern = NULL;
int i, ic, j, jc;
- mDNSBool found = mDNSfalse;
+ int found = 0;
jc = CFArrayGetCount(inkeys);
if (!jc) goto done;
@@ -7993,7 +8026,8 @@ mDNSlocal mDNSBool ChangedKeysHaveIPv4LL(CFArrayRef inkeys)
keys = mDNSPlatformMemAllocate(sizeof (void *) * ic);
CFDictionaryGetKeysAndValues(dict, keys, vals);
- for (j = 0; j < jc && !found; j++)
+ // For each key we were given...
+ for (j = 0; j < jc; j++)
{
CFStringRef key = CFArrayGetValueAtIndex(inkeys, j);
CFStringRef ifname = NULL;
@@ -8010,6 +8044,7 @@ mDNSlocal mDNSBool ChangedKeysHaveIPv4LL(CFArrayRef inkeys)
LogInfo("ChangedKeysHaveIPv4LL: potential ifname %s", buf);
}
+ // Loop over the interfaces to find matching the ifname, and see if that one has kSCValNetIPv4ConfigMethodLinkLocal
for (i = 0; i < ic; i++)
{
CFDictionaryRef ipv4dict;
@@ -8049,7 +8084,7 @@ mDNSlocal mDNSBool ChangedKeysHaveIPv4LL(CFArrayRef inkeys)
LogInfo("ChangedKeysHaveIPv4LL: configmethod %s", buf);
}
- if (CFEqual(configmethod, kSCValNetIPv4ConfigMethodLinkLocal)) { found = mDNStrue; break; }
+ if (CFEqual(configmethod, kSCValNetIPv4ConfigMethodLinkLocal)) { found++; break; }
}
CFRelease(ifname);
@@ -8067,7 +8102,6 @@ done:
mDNSlocal void NetworkChanged(SCDynamicStoreRef store, CFArrayRef changedKeys, void *context)
{
(void)store; // Parameter not used
- mDNSBool changeNow = mDNSfalse;
mDNS *const m = (mDNS *const)context;
KQueueLock(m);
mDNS_Lock(m);
@@ -8078,10 +8112,11 @@ mDNSlocal void NetworkChanged(SCDynamicStoreRef store, CFArrayRef changedKeys, v
CFRange range = { 0, c };
int c1 = (CFArrayContainsValue(changedKeys, range, NetworkChangedKey_Hostnames ) != 0);
int c2 = (CFArrayContainsValue(changedKeys, range, NetworkChangedKey_Computername) != 0);
- int c3 = (CFArrayContainsValue(changedKeys, range, NetworkChangedKey_DynamicDNS ) != 0);
- int c4 = (CFArrayContainsValue(changedKeys, range, NetworkChangedKey_DNS ) != 0);
- if (c && c - c1 - c2 - c3 - c4 == 0)
- delay = mDNSPlatformOneSecond/10; // If these were the only changes, shorten delay
+ int c3 = (CFArrayContainsValue(changedKeys, range, NetworkChangedKey_DNS ) != 0);
+ int c4 = (CFArrayContainsValue(changedKeys, range, NetworkChangedKey_DynamicDNS ) != 0);
+ int c5 = (CFArrayContainsValue(changedKeys, range, NetworkChangedKey_BackToMyMac ) != 0);
+ int c6 = ChangedKeysHaveIPv4LL(changedKeys);
+ int c7 = 0;
// Do immediate network changed processing for "p2p*" interfaces and
// for interfaces with the IFEF_DIRECTLINK flag set.
@@ -8116,8 +8151,8 @@ mDNSlocal void NetworkChanged(SCDynamicStoreRef store, CFArrayRef changedKeys, v
if (CFStringGetCString(CFArrayGetValueAtIndex(labels, 3), buf, sizeof(buf), kCFStringEncodingUTF8)
&& (strstr(buf, "p2p") || (getExtendedFlags(buf) & IFEF_DIRECTLINK)))
{
- LogInfo("NetworkChanged: interface %s, not delaying network change", buf);
- changeNow = mDNStrue;
+ LogInfo("NetworkChanged: interface %s qualifies for reduced change handling delay", buf);
+ c7++;
CFRelease(labels);
break;
}
@@ -8126,8 +8161,22 @@ mDNSlocal void NetworkChanged(SCDynamicStoreRef store, CFArrayRef changedKeys, v
}
}
- mDNSBool btmmChanged = CFArrayContainsValue(changedKeys, range, NetworkChangedKey_BackToMyMac);
- if (btmmChanged) delay = 0;
+ if (c && c - c1 - c2 - c3 - c4 - c5 - c6 - c7 == 0)
+ delay = mDNSPlatformOneSecond/10; // If these were the only changes, shorten delay
+
+ // Immediately force a reconfig (esp. cache flush) if any of the following is true:
+ // 1. DNS Settings changed.
+ // 2 An interface changed that is explicitly IPv4 link local
+ // 3. There are P2P/IFEF_DIRECTLINK/IsCarPlaySSID changes
+ if (c3 || ChangedKeysHaveIPv4LL(changedKeys) || c7)
+ {
+ LogInfo("NetworkChanged: %s : Handling this change immediately",
+ c3 ? "DNS Settings Changed" :
+ c7 ? "P2P/IFEF_DIRECTLINK/IsCarPlaySSID Changed" :
+ "An interface changed that is explicitly IPv4 link local");
+ m->p->NetworkChanged = NonZeroTime(m->timenow);
+ delay = 0; // for the logs below.
+ }
if (mDNS_LoggingEnabled)
{
@@ -8138,32 +8187,31 @@ mDNSlocal void NetworkChanged(SCDynamicStoreRef store, CFArrayRef changedKeys, v
if (!CFStringGetCString(CFArrayGetValueAtIndex(changedKeys, i), buf, sizeof(buf), kCFStringEncodingUTF8)) buf[0] = 0;
LogInfo("*** NetworkChanged SC key: %s", buf);
}
- LogInfo("*** NetworkChanged *** %d change%s %s%s%s%sdelay %d",
+ LogInfo("*** NetworkChanged *** %d change%s %s%s%s%s%s%s%sdelay %d%s",
c, c>1 ? "s" : "",
c1 ? "(Local Hostname) " : "",
c2 ? "(Computer Name) " : "",
- c3 ? "(DynamicDNS) " : "",
- c4 ? "(DNS) " : "",
- changeNow ? 0 : delay);
+ c3 ? "(DNS) " : "",
+ c4 ? "(DynamicDNS) " : "",
+ c5 ? "(BTMM) " : "",
+ c6 ? "(kSCValNetIPv4ConfigMethodLinkLocal) " : "",
+ c7 ? "(P2P/IFEF_DIRECTLINK/IsCarPlaySSID) " : "",
+ delay,
+ (c4 || c5) ? " + SetKeyChainTimer" : "");
}
- if (!changeNow)
- SetNetworkChanged(m, delay);
+ SetNetworkChanged(m, delay);
// Other software might pick up these changes to register or browse in WAB or BTMM domains,
// so in order for secure updates to be made to the server, make sure to read the keychain and
// setup the DomainAuthInfo before handing the network change.
// If we don't, then we will first try to register services in the clear, then later setup the
// DomainAuthInfo, which is incorrect.
- if (c3 || btmmChanged)
+ if (c4 || c5)
SetKeyChainTimer(m, delay);
mDNS_Unlock(m);
- // If DNS settings changed, immediately force a reconfig (esp. cache flush)
- // Similarly, if an interface changed that is explicitly IPv4 link local, immediately force a reconfig
- if (c4 || ChangedKeysHaveIPv4LL(changedKeys) || changeNow) mDNSMacOSXNetworkChanged(m);
-
KQueueUnlock(m, "NetworkChanged");
}
@@ -8781,9 +8829,7 @@ mDNSlocal void PowerChanged(void *refcon, io_service_t service, natural_t messag
// the System Configuration Framework "network changed" event that we expect
// to receive some time shortly after the kIOMessageSystemWillPowerOn message
mDNS_Lock(m);
- if (!m->p->NetworkChanged ||
- m->p->NetworkChanged - NonZeroTime(m->timenow + mDNSPlatformOneSecond * 2) < 0)
- m->p->NetworkChanged = NonZeroTime(m->timenow + mDNSPlatformOneSecond * 2);
+ SetNetworkChanged(m, mDNSPlatformOneSecond * 2);
mDNS_Unlock(m);
break;
@@ -8839,13 +8885,16 @@ mDNSlocal void SnowLeopardPowerChanged(void *refcon, IOPMConnection connection,
m->SleepLimit = 0;
}
LogSPS("SnowLeopardPowerChanged: Waking up, Acking Wakeup, SleepLimit %d SleepState %d", m->SleepLimit, m->SleepState);
- // If the network notifications have already come before we got the wakeup, we ignored them and
- // in case we get no more, we need to trigger one.
- mDNS_Lock(m);
- SetNetworkChanged(m, 2 * mDNSPlatformOneSecond);
- mDNS_Unlock(m);
// CPU Waking. Note: Can get this message repeatedly, as other subsystems power up or down.
- if (m->SleepState != SleepState_Awake) PowerOn(m);
+ if (m->SleepState != SleepState_Awake)
+ {
+ PowerOn(m);
+ // If the network notifications have already come before we got the wakeup, we ignored them and
+ // in case we get no more, we need to trigger one.
+ mDNS_Lock(m);
+ SetNetworkChanged(m, mDNSPlatformOneSecond * 2);
+ mDNS_Unlock(m);
+ }
IOPMConnectionAcknowledgeEvent(connection, token);
}
else
@@ -10415,9 +10464,37 @@ mDNSexport void mDNSPlatformDispatchAsync(mDNS *const m, void *context, AsyncDis
#define OSX_VER_LEN strlen(OSX_VER)
#define VER_NUM_LEN 2 // 2 digits of version number added to base string
+#define MODEL_COLOR "ecolor="
+#define MODEL_COLOR_LEN strlen(MODEL_COLOR)
+#define MODEL_RGB_VALUE_LEN strlen("255,255,255") // 'r,g,b'
+
// Bytes available in TXT record for model name after subtracting space for other
// fixed size strings and their length bytes.
-#define MAX_MODEL_NAME_LEN (256 - (DEVINFO_MODEL_LEN + 1) - (OSX_VER_LEN + VER_NUM_LEN + 1))
+#define MAX_MODEL_NAME_LEN (256 - (DEVINFO_MODEL_LEN + 1) - (OSX_VER_LEN + VER_NUM_LEN + 1) - (MODEL_COLOR_LEN + MODEL_RGB_VALUE_LEN + 1))
+
+mDNSlocal mDNSBool getModelIconColors(char *color)
+{
+ mDNSBool hasColor = mDNSfalse;
+ mDNSPlatformMemZero(color, MODEL_RGB_VALUE_LEN + 1);
+
+#if !TARGET_OS_EMBEDDED && defined(kIOPlatformDeviceEnclosureColorKey)
+ mDNSu8 red = 0;
+ mDNSu8 green = 0;
+ mDNSu8 blue = 0;
+
+ IOReturn rGetDeviceColor = IOPlatformGetDeviceColor(kIOPlatformDeviceEnclosureColorKey,
+ &red, &green, &blue);
+ if (kIOReturnSuccess == rGetDeviceColor)
+ {
+ // IOKit was able to get enclosure color for the current device.
+ hasColor = true;
+ snprintf(color, MODEL_RGB_VALUE_LEN + 1, "%d,%d,%d", red, green, blue);
+ }
+#endif // !TARGET_OS_EMBEDDED && defined(kIOPlatformDeviceEnclosureColorKey)
+
+ return hasColor;
+}
+
// Initialize device-info TXT record contents and return total length of record data.
mDNSexport mDNSu32 initializeDeviceInfoTXT(mDNS *m, mDNSu8 *ptr)
@@ -10444,7 +10521,24 @@ mDNSexport mDNSu32 initializeDeviceInfoTXT(mDNS *m, mDNSu8 *ptr)
snprintf(ver_num, VER_NUM_LEN + 1, "%d", OSXVers);
mDNSPlatformMemCopy(ptr, ver_num, VER_NUM_LEN);
ptr += VER_NUM_LEN;
+
+ char rgb[MODEL_RGB_VALUE_LEN + 1]; // RGB value + null written by snprintf
+ if (getModelIconColors(rgb))
+ {
+ len = strlen(rgb);
+ *ptr = MODEL_COLOR_LEN + len; // length byte
+ ptr++;
+
+ mDNSPlatformMemCopy(ptr, MODEL_COLOR, MODEL_COLOR_LEN);
+ ptr += MODEL_COLOR_LEN;
+
+ mDNSPlatformMemCopy(ptr, rgb, len);
+ ptr += len;
+ }
}
return (ptr - bufferStart);
}
+
+
+
diff --git a/mDNSResponder/mDNSMacOSX/mDNSResponder-entitlements.plist b/mDNSResponder/mDNSMacOSX/mDNSResponder-entitlements.plist
index bb3f05e8..21a343f8 100644
--- a/mDNSResponder/mDNSMacOSX/mDNSResponder-entitlements.plist
+++ b/mDNSResponder/mDNSMacOSX/mDNSResponder-entitlements.plist
@@ -20,5 +20,13 @@
<true/>
<key>com.apple.telephony.cupolicy-monitor-access</key>
<true/>
+ <key>com.apple.private.necp.match</key>
+ <true/>
+ <key>com.apple.security.network.server</key>
+ <true/>
+ <key>com.apple.security.network.client</key>
+ <true/>
+ <key>com.apple.private.network.awdl.restricted</key>
+ <true/>
</dict>
</plist>
diff --git a/mDNSResponder/mDNSMacOSX/mDNSResponder.sb b/mDNSResponder/mDNSMacOSX/mDNSResponder.sb
index eee623c8..f267f324 100644
--- a/mDNSResponder/mDNSMacOSX/mDNSResponder.sb
+++ b/mDNSResponder/mDNSMacOSX/mDNSResponder.sb
@@ -46,6 +46,7 @@
; These are needed for things like getpwnam, hostname changes, & keychain
(allow mach-lookup
(global-name "com.apple.bsd.dirhelper")
+ (global-name "com.apple.CoreServices.coreservicesd")
(global-name "com.apple.distributed_notifications.2")
(global-name "com.apple.ocspd")
(global-name "com.apple.PowerManagement.control")
@@ -135,7 +136,10 @@
(regex #"^/private/var/folders/[^/]+/[^/]+/C/mds(/|$)")
; Required on 10.5 and 10.6
- (regex #"^/private/var/folders/[^/]+/[^/]+/-Caches-/mds(/|$)"))
+ (regex #"^/private/var/folders/[^/]+/[^/]+/-Caches-/mds(/|$)")
+
+ ; Required on 10.10.4
+ (regex #"^/private/var/folders/[^/]+/[^/]+/[0-9]+(/|$)"))
; CRL Cache for SSL/TLS connections
(allow file-read-data (literal "/private/var/db/crls/crlcache.db"))
diff --git a/mDNSResponder/mDNSMacOSX/mDNSResponder.xcodeproj/project.pbxproj b/mDNSResponder/mDNSMacOSX/mDNSResponder.xcodeproj/project.pbxproj
index 7831e19c..39d8a451 100644
--- a/mDNSResponder/mDNSMacOSX/mDNSResponder.xcodeproj/project.pbxproj
+++ b/mDNSResponder/mDNSMacOSX/mDNSResponder.xcodeproj/project.pbxproj
@@ -25,11 +25,16 @@
isa = PBXAggregateTarget;
buildConfigurationList = 03067D730C83A3CB0022BE1F /* Build configuration list for PBXAggregateTarget "Build Some" */;
buildPhases = (
+ FF045B6A0C7E4AA600448140 /* ShellScript */,
);
dependencies = (
217A4C49138EE14C000A5BA8 /* PBXTargetDependency */,
+ 03067D680C83A3830022BE1F /* PBXTargetDependency */,
+ 03067D6A0C83A3890022BE1F /* PBXTargetDependency */,
03067D6C0C83A3920022BE1F /* PBXTargetDependency */,
+ 03067D6E0C83A39C0022BE1F /* PBXTargetDependency */,
84C5B3411665544B00C324A8 /* PBXTargetDependency */,
+ BD7833F01ABA5E3500EC51ED /* PBXTargetDependency */,
);
name = "Build Some";
productName = "Build Some";
@@ -59,19 +64,6 @@
name = SystemLibrariesStatic;
productName = SystemLibrariesStatic;
};
- 3F2EAA9F1A5B85FF007F5A52 /* Build Deprecated */ = {
- isa = PBXAggregateTarget;
- buildConfigurationList = 3F2EAAA11A5B85FF007F5A52 /* Build configuration list for PBXAggregateTarget "Build Deprecated" */;
- buildPhases = (
- );
- dependencies = (
- 3F2EAAA71A5B861D007F5A52 /* PBXTargetDependency */,
- 3F2EAAA51A5B861C007F5A52 /* PBXTargetDependency */,
- 3F2EAAA91A5B861E007F5A52 /* PBXTargetDependency */,
- );
- name = "Build Deprecated";
- productName = "Build Deprecated";
- };
FFA572650AF190F10055A0F1 /* SystemLibrariesDynamic */ = {
isa = PBXAggregateTarget;
buildConfigurationList = FFA5726E0AF191200055A0F1 /* Build configuration list for PBXAggregateTarget "SystemLibrariesDynamic" */;
@@ -92,7 +84,6 @@
);
dependencies = (
FFB7657D0AEED97F00583A2C /* PBXTargetDependency */,
- 3F2EAAA31A5B8608007F5A52 /* PBXTargetDependency */,
2141DCFD123FFB7D0086D23E /* PBXTargetDependency */,
);
name = "Build All";
@@ -210,7 +201,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 */; };
- 84F4C090188F050200D1E1DE /* dns_services_mdns.h in Headers */ = {isa = PBXBuildFile; fileRef = 84F4C08F188F04CF00D1E1DE /* dns_services_mdns.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 84F4C090188F050200D1E1DE /* dns_services.h in Headers */ = {isa = PBXBuildFile; fileRef = 84F4C08F188F04CF00D1E1DE /* dns_services.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, ); }; };
@@ -347,6 +338,20 @@
/* End PBXBuildRule section */
/* Begin PBXContainerItemProxy section */
+ 03067D670C83A3830022BE1F /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = D284BE500ADD80740027CCDF;
+ remoteInfo = mDNSResponder;
+ };
+ 03067D690C83A3890022BE1F /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = D284BE750ADD80800027CCDF;
+ remoteInfo = "mDNSResponder debug";
+ };
03067D6B0C83A3920022BE1F /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
@@ -354,6 +359,13 @@
remoteGlobalIDString = D284BEA50ADD80920027CCDF;
remoteInfo = "dns-sd tool";
};
+ 03067D6D0C83A39C0022BE1F /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 2E0405EF0C31955500F13B59;
+ remoteInfo = mDNSResponderHelper;
+ };
03067D850C849CC30022BE1F /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
@@ -410,34 +422,6 @@
remoteGlobalIDString = 213FB21712028A7A002B3A08;
remoteInfo = BonjourEvents;
};
- 3F2EAAA21A5B8608007F5A52 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 3F2EAA9F1A5B85FF007F5A52;
- remoteInfo = "Build Deprecated";
- };
- 3F2EAAA41A5B861C007F5A52 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = D284BE750ADD80800027CCDF;
- remoteInfo = "mDNSResponder debug";
- };
- 3F2EAAA61A5B861D007F5A52 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = D284BE500ADD80740027CCDF;
- remoteInfo = mDNSResponder;
- };
- 3F2EAAA81A5B861E007F5A52 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 2E0405EF0C31955500F13B59;
- remoteInfo = mDNSResponderHelper;
- };
4AE471690EAFF83800A6C5AD /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
@@ -452,6 +436,13 @@
remoteGlobalIDString = 84C5B3341665529800C324A8;
remoteInfo = dns_services;
};
+ BD7833EF1ABA5E3500EC51ED /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 72FB545E166D5FB00090B2D9;
+ remoteInfo = dnsctl;
+ };
D284BF2B0ADD815A0027CCDF /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
@@ -679,9 +670,9 @@
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_mdns.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libdns_services_mdns.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
+ 84C5B3351665529800C324A8 /* libdns_services.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libdns_services.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>"; };
+ 84F4C08F188F04CF00D1E1DE /* dns_services.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dns_services.h; path = Private/dns_services.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; };
@@ -930,7 +921,7 @@
08FB7795FE84155DC02AAC07 /* mDNS Server Sources */ = {
isa = PBXGroup;
children = (
- 84F4C08F188F04CF00D1E1DE /* dns_services_mdns.h */,
+ 84F4C08F188F04CF00D1E1DE /* dns_services.h */,
216D9ACD1720C9F5008066E1 /* VPNService.c */,
2120ABD416B71614007089B6 /* CUPolicy.c */,
72FB545A166D5F960090B2D9 /* dnsctl.c */,
@@ -1046,7 +1037,7 @@
2141DD1D123FFCDB0086D23E /* libdns_sd.a */,
2141DD24123FFD0F0086D23E /* libdns_sd_debug.a */,
2141DD2A123FFD2C0086D23E /* libdns_sd_profile.a */,
- 84C5B3351665529800C324A8 /* libdns_services_mdns.dylib */,
+ 84C5B3351665529800C324A8 /* libdns_services.dylib */,
72FB545F166D5FB00090B2D9 /* dnsctl */,
);
name = Products;
@@ -1181,7 +1172,7 @@
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
- 84F4C090188F050200D1E1DE /* dns_services_mdns.h in Headers */,
+ 84F4C090188F050200D1E1DE /* dns_services.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1432,7 +1423,7 @@
);
name = dns_services;
productName = dns_services;
- productReference = 84C5B3351665529800C324A8 /* libdns_services_mdns.dylib */;
+ productReference = 84C5B3351665529800C324A8 /* libdns_services.dylib */;
productType = "com.apple.product-type.library.dynamic";
};
D284BE500ADD80740027CCDF /* mDNSResponder */ = {
@@ -1642,11 +1633,6 @@
08FB7793FE84155DC02AAC07 /* Project object */ = {
isa = PBXProject;
attributes = {
- TargetAttributes = {
- 3F2EAA9F1A5B85FF007F5A52 = {
- CreatedOnToolsVersion = 6.3;
- };
- };
};
buildConfigurationList = D284BE2B0ADD78180027CCDF /* Build configuration list for PBXProject "mDNSResponder" */;
compatibilityVersion = "Xcode 3.1";
@@ -1664,7 +1650,6 @@
targets = (
00AD62BB032D7A0C0CCA2C71 /* Build More */,
03067D640C83A3700022BE1F /* Build Some */,
- 3F2EAA9F1A5B85FF007F5A52 /* Build Deprecated */,
FFB7657B0AEED96B00583A2C /* Build All */,
D284BE500ADD80740027CCDF /* mDNSResponder */,
D284BE750ADD80800027CCDF /* mDNSResponder debug */,
@@ -1841,7 +1826,7 @@
);
runOnlyForDeploymentPostprocessing = 1;
shellPath = /bin/bash;
- shellScript = "# Install mDNSResponder.bundle containing language localizations\nmkdir -p ${DSTROOT}${SYSTEM_LIBRARY_DIR}/CoreServices\ncp -R ${SRCROOT}/mDNSResponder-bundle ${DSTROOT}${SYSTEM_LIBRARY_DIR}/CoreServices/mDNSResponder.bundle\n\n# Remove unwanted CVS directories\nfind ${DSTROOT}${SYSTEM_LIBRARY_DIR}/CoreServices/mDNSResponder.bundle -depth -name CVS -exec rm -rf {} \\;\n\n# Expand UTF-8 files to UTF-16 (at one time this appeared to be necessary, but it's not, so we don't do it any more)\n#foreach file (`find ${DSTROOT}${SYSTEM_LIBRARY_DIR}/CoreServices/mDNSResponder.bundle -name Localizable.strings`)\n#iconv -f utf-8 -t utf-16 ${file} > ${file}.new\n#mv -f ${file}.new ${file}\n#end\n\n# Remove French localization (not wanted for Apple B&I builds)\nrm -rf ${DSTROOT}${SYSTEM_LIBRARY_DIR}/CoreServices/mDNSResponder.bundle/Resources/French.lproj\n\n# Copy Sandbox profile\nif [ ! -z \"${IPHONEOS_DEPLOYMENT_TARGET}\" ] ; then\n SANDBOXDST=\"${DSTROOT}/usr/local/share/sandbox/profiles/embedded/builtin\"\nelse\n SANDBOXDST=\"${DSTROOT}/usr/share/sandbox\"\nfi\n(umask 022; mkdir -p -m 0755 \"$SANDBOXDST\")\ncp \"${SRCROOT}/mDNSResponder.sb\" \"${SANDBOXDST}/mDNSResponder.sb\"\n";
+ shellScript = "# Install mDNSResponder.bundle containing language localizations\nmkdir -p ${DSTROOT}${SYSTEM_LIBRARY_DIR}/CoreServices\ncp -R ${SRCROOT}/mDNSResponder-bundle ${DSTROOT}${SYSTEM_LIBRARY_DIR}/CoreServices/mDNSResponder.bundle\n\n# Remove unwanted CVS directories\nfind ${DSTROOT}${SYSTEM_LIBRARY_DIR}/CoreServices/mDNSResponder.bundle -depth -name CVS -exec rm -rf {} \\;\n\n# Expand UTF-8 files to UTF-16 (at one time this appeared to be necessary, but it's not, so we don't do it any more)\n#foreach file (`find ${DSTROOT}${SYSTEM_LIBRARY_DIR}/CoreServices/mDNSResponder.bundle -name Localizable.strings`)\n#iconv -f utf-8 -t utf-16 ${file} > ${file}.new\n#mv -f ${file}.new ${file}\n#end\n\n# Remove French localization (not wanted for Apple B&I builds)\nrm -rf ${DSTROOT}${SYSTEM_LIBRARY_DIR}/CoreServices/mDNSResponder.bundle/Resources/French.lproj\n\n# Copy Sandbox profile\nif [ -z \"${IPHONEOS_DEPLOYMENT_TARGET}\" -a -z \"${TVOS_DEPLOYMENT_TARGET}\" ] ; then\n SANDBOXDST=\"${DSTROOT}/usr/share/sandbox\"\nelse\n SANDBOXDST=\"${DSTROOT}/usr/local/share/sandbox/profiles/embedded/builtin\"\nfi\n(umask 022; mkdir -p -m 0755 \"$SANDBOXDST\")\ncp \"${SRCROOT}/mDNSResponder.sb\" \"${SANDBOXDST}/mDNSResponder.sb\"\n";
};
D284BE760ADD80800027CCDF /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
@@ -1852,6 +1837,19 @@
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/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;
+ buildActionMask = 8;
+ files = (
+ );
+ inputPaths = (
+ );
+ outputPaths = (
+ );
+ 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";
+ };
FF37FAAD0BC581780044A5CF /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 8;
@@ -2105,11 +2103,26 @@
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
+ 03067D680C83A3830022BE1F /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = D284BE500ADD80740027CCDF /* mDNSResponder */;
+ targetProxy = 03067D670C83A3830022BE1F /* PBXContainerItemProxy */;
+ };
+ 03067D6A0C83A3890022BE1F /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = D284BE750ADD80800027CCDF /* mDNSResponder debug */;
+ targetProxy = 03067D690C83A3890022BE1F /* PBXContainerItemProxy */;
+ };
03067D6C0C83A3920022BE1F /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = D284BEA50ADD80920027CCDF /* dns-sd tool */;
targetProxy = 03067D6B0C83A3920022BE1F /* PBXContainerItemProxy */;
};
+ 03067D6E0C83A39C0022BE1F /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 2E0405EF0C31955500F13B59 /* mDNSResponderHelper */;
+ targetProxy = 03067D6D0C83A39C0022BE1F /* PBXContainerItemProxy */;
+ };
03067D860C849CC30022BE1F /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 03067D640C83A3700022BE1F /* Build Some */;
@@ -2150,26 +2163,6 @@
target = 213FB21712028A7A002B3A08 /* BonjourEvents */;
targetProxy = 217A4C48138EE14C000A5BA8 /* PBXContainerItemProxy */;
};
- 3F2EAAA31A5B8608007F5A52 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = 3F2EAA9F1A5B85FF007F5A52 /* Build Deprecated */;
- targetProxy = 3F2EAAA21A5B8608007F5A52 /* PBXContainerItemProxy */;
- };
- 3F2EAAA51A5B861C007F5A52 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = D284BE750ADD80800027CCDF /* mDNSResponder debug */;
- targetProxy = 3F2EAAA41A5B861C007F5A52 /* PBXContainerItemProxy */;
- };
- 3F2EAAA71A5B861D007F5A52 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = D284BE500ADD80740027CCDF /* mDNSResponder */;
- targetProxy = 3F2EAAA61A5B861D007F5A52 /* PBXContainerItemProxy */;
- };
- 3F2EAAA91A5B861E007F5A52 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = 2E0405EF0C31955500F13B59 /* mDNSResponderHelper */;
- targetProxy = 3F2EAAA81A5B861E007F5A52 /* PBXContainerItemProxy */;
- };
4AE4716A0EAFF83800A6C5AD /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 4AE471670EAFF81900A6C5AD /* dns_sd.jar */;
@@ -2180,6 +2173,11 @@
target = 84C5B3341665529800C324A8 /* dns_services */;
targetProxy = 84C5B3401665544B00C324A8 /* PBXContainerItemProxy */;
};
+ BD7833F01ABA5E3500EC51ED /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 72FB545E166D5FB00090B2D9 /* dnsctl */;
+ targetProxy = BD7833EF1ABA5E3500EC51ED /* PBXContainerItemProxy */;
+ };
D284BF2C0ADD815A0027CCDF /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = D284BEBF0ADD80A20027CCDF /* dnsextd */;
@@ -2390,13 +2388,6 @@
};
name = Development;
};
- 3F2EAAA01A5B85FF007F5A52 /* Development */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- PRODUCT_NAME = "$(TARGET_NAME)";
- };
- name = Development;
- };
4AE471680EAFF81900A6C5AD /* Development */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -2438,7 +2429,7 @@
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- INSTALL_PATH = /usr/bin;
+ INSTALL_PATH = /usr/local/bin;
MACOSX_DEPLOYMENT_TARGET = 10.9;
ONLY_ACTIVE_ARCH = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -2475,7 +2466,7 @@
INSTALL_PATH = /usr/lib;
MACOSX_DEPLOYMENT_TARGET = 10.8;
ONLY_ACTIVE_ARCH = NO;
- PRODUCT_NAME = "$(TARGET_NAME)_mdns";
+ PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = macosx;
};
name = Development;
@@ -2976,14 +2967,6 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Development;
};
- 3F2EAAA11A5B85FF007F5A52 /* Build configuration list for PBXAggregateTarget "Build Deprecated" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 3F2EAAA01A5B85FF007F5A52 /* Development */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Development;
- };
4AE471770EAFF84000A6C5AD /* Build configuration list for PBXLegacyTarget "dns_sd.jar" */ = {
isa = XCConfigurationList;
buildConfigurations = (