From 4c086a244624bf36865edcfa4309c333d7d7200d Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 19 Sep 2018 08:56:09 +0200 Subject: mDNSResponder: Update to v878.1.1 The sources can be obtained via: https://opensource.apple.com/tarballs/mDNSResponder/mDNSResponder-878.1.1.tar.gz Update #3522. --- mDNSResponder/mDNSPosix/ExampleClientApp.c | 2 +- mDNSResponder/mDNSPosix/NetMonitor.c | 32 ++++++++++++------- mDNSResponder/mDNSPosix/PosixDaemon.c | 11 +++---- mDNSResponder/mDNSPosix/ProxyResponder.c | 2 +- mDNSResponder/mDNSPosix/Responder.c | 2 +- mDNSResponder/mDNSPosix/mDNSPosix.c | 50 ++++++++++++++---------------- mDNSResponder/mDNSPosix/mDNSPosix.h | 2 +- 7 files changed, 52 insertions(+), 49 deletions(-) (limited to 'mDNSResponder/mDNSPosix') diff --git a/mDNSResponder/mDNSPosix/ExampleClientApp.c b/mDNSResponder/mDNSPosix/ExampleClientApp.c index f23248b8..be340912 100644 --- a/mDNSResponder/mDNSPosix/ExampleClientApp.c +++ b/mDNSResponder/mDNSPosix/ExampleClientApp.c @@ -61,7 +61,7 @@ mDNSexport void ExampleClientEventLoop(mDNS *const m) // 2. Set up the timeout. // This example client has no other work it needs to be doing, // so we set an effectively infinite timeout - timeout.tv_sec = 0x3FFFFFFF; + timeout.tv_sec = FutureTime; timeout.tv_usec = 0; // 3. Give the mDNSPosix layer a chance to add its information to the fd_set and timeout diff --git a/mDNSResponder/mDNSPosix/NetMonitor.c b/mDNSResponder/mDNSPosix/NetMonitor.c index a3823c54..418aadda 100644 --- a/mDNSResponder/mDNSPosix/NetMonitor.c +++ b/mDNSResponder/mDNSPosix/NetMonitor.c @@ -22,7 +22,7 @@ // We want to use much of the functionality provided by "mDNS.c", // except we'll steal the packets that would be sent to normal mDNSCoreReceive() routine #define mDNSCoreReceive __NOT__mDNSCoreReceive__NOT__ -#include "mDNS.c" +#include "../mDNSCore/mDNS.c" #undef mDNSCoreReceive //************************************************************************************************************* @@ -129,6 +129,8 @@ static ActivityStat *stats; #define OPBanner "Total Ops Probe Goodbye BrowseQ BrowseA ResolveQ ResolveA" +mDNSexport void mDNSCoreReceive(mDNS *const m, DNSMessage *const msg, const mDNSu8 *const end, const mDNSAddr *const srcaddr, const mDNSIPPort srcport, const mDNSAddr *dstaddr, const mDNSIPPort dstport, const mDNSInterfaceID InterfaceID); + //************************************************************************************************************* // Utilities @@ -312,7 +314,7 @@ mDNSlocal void SendUnicastQuery(mDNS *const m, HostEntry *entry, domainname *nam InterfaceID = mDNSInterface_Any; // Send query from our unicast reply socket } - mDNSSendDNSMessage(&mDNSStorage, &query, qptr, InterfaceID, mDNSNULL, target, MulticastDNSPort, mDNSNULL, mDNSNULL, mDNSfalse); + mDNSSendDNSMessage(m, &query, qptr, InterfaceID, mDNSNULL, target, MulticastDNSPort, mDNSNULL, mDNSNULL, mDNSfalse); } mDNSlocal void AnalyseHost(mDNS *const m, HostEntry *entry, const mDNSInterfaceID InterfaceID) @@ -372,7 +374,7 @@ mDNSlocal void ShowSortedHostList(HostList *list, int max) //************************************************************************************************************* // Receive and process packets -mDNSexport mDNSBool ExtractServiceType(const domainname *const fqdn, domainname *const srvtype) +mDNSlocal mDNSBool ExtractServiceType(const domainname *const fqdn, domainname *const srvtype) { int i, len; const mDNSu8 *src = fqdn->c; @@ -436,11 +438,11 @@ mDNSlocal void printstats(int max) if (!stats) return; for (i=0; inext) - if (!s->printed && max < s->totalops) - { m = s; max = s->totalops; } + if (!s->printed && max_val < s->totalops) + { m = s; max_val = s->totalops; } if (!m) return; m->printed = mDNStrue; if (i==0) mprintf("%-25s%s\n", "Service Type", OPBanner); @@ -890,7 +892,7 @@ mDNSlocal mStatus mDNSNetMonitor(void) do { - struct timeval timeout = { 0x3FFFFFFF, 0 }; // wait until SIGINT or SIGTERM + struct timeval timeout = { FutureTime, 0 }; // wait until SIGINT or SIGTERM mDNSBool gotSomething; mDNSPosixRunEventLoopOnce(&mDNSStorage, &timeout, &signals, &gotSomething); } @@ -973,11 +975,16 @@ mDNSexport int main(int argc, char **argv) for (i=1; iHostInterfaces) { PosixNetworkInterface *intf = (PosixNetworkInterface*)(m->HostInterfaces); - mDNS_DeregisterInterface(m, &intf->coreIntf, mDNSfalse); + mDNS_DeregisterInterface(m, &intf->coreIntf, NormalActivation); if (gMDNSPlatformPosixVerboseLevel > 0) fprintf(stderr, "Deregistered interface %s\n", intf->intfName); FreePosixNetworkInterface(intf); } @@ -944,7 +938,7 @@ mDNSlocal int SetupOneInterface(mDNS *const m, struct sockaddr *intfAddr, struct // The interface is all ready to go, let's register it with the mDNS core. if (err == 0) - err = mDNS_RegisterInterface(m, &intf->coreIntf, mDNSfalse); + err = mDNS_RegisterInterface(m, &intf->coreIntf, NormalActivation); // Clean up. if (err == 0) @@ -1531,16 +1525,14 @@ mDNSexport mDNSu8 *DNSProxySetAttributes(DNSQuestion *q, DNSMessageHeader *h, DN return ptr; } -mDNSexport void DNSProxyInit(mDNS *const m, mDNSu32 IpIfArr[], mDNSu32 OpIf) +mDNSexport void DNSProxyInit(mDNSu32 IpIfArr[], mDNSu32 OpIf) { - (void) m; (void) IpIfArr; (void) OpIf; } -mDNSexport void DNSProxyTerminate(mDNS *const m) +mDNSexport void DNSProxyTerminate(void) { - (void) m; } // mDNS core calls this routine to clear blocks of memory. @@ -1553,12 +1545,19 @@ mDNSexport void mDNSPlatformMemZero(void *dst, mDNSu32 len) mDNSexport void * mDNSPlatformMemAllocate(mDNSu32 len) { return(calloc(1, len)); } mDNSexport void mDNSPlatformMemFree (void *mem) { free(mem); } +#if _PLATFORM_HAS_STRONG_PRNG_ +mDNSexport mDNSu32 mDNSPlatformRandomNumber(void) +{ + return(arc4random()); +} +#else mDNSexport mDNSu32 mDNSPlatformRandomSeed(void) { struct timeval tv; gettimeofday(&tv, NULL); return(tv.tv_usec); } +#endif mDNSexport mDNSs32 mDNSPlatformOneSecond = 1024; @@ -1588,9 +1587,8 @@ mDNSexport mDNSs32 mDNSPlatformUTC(void) return time(NULL); } -mDNSexport void mDNSPlatformSendWakeupPacket(mDNS *const m, mDNSInterfaceID InterfaceID, char *EthAddr, char *IPAddr, int iteration) +mDNSexport void mDNSPlatformSendWakeupPacket(mDNSInterfaceID InterfaceID, char *EthAddr, char *IPAddr, int iteration) { - (void) m; (void) InterfaceID; (void) EthAddr; (void) IPAddr; @@ -1631,9 +1629,8 @@ mDNSexport void mDNSPlatformSendKeepalive(mDNSAddr *sadd, mDNSAddr *dadd, mDNSIP (void) win; // Unused } -mDNSexport mStatus mDNSPlatformRetrieveTCPInfo(mDNS *const m, mDNSAddr *laddr, mDNSIPPort *lport, mDNSAddr *raddr, mDNSIPPort *rport, mDNSTCPInfo *mti) +mDNSexport mStatus mDNSPlatformRetrieveTCPInfo(mDNSAddr *laddr, mDNSIPPort *lport, mDNSAddr *raddr, mDNSIPPort *rport, mDNSTCPInfo *mti) { - (void) m; // Unused (void) laddr; // Unused (void) raddr; // Unused (void) lport; // Unused @@ -1643,10 +1640,9 @@ mDNSexport mStatus mDNSPlatformRetrieveTCPInfo(mDNS *const m, mDNSAddr *laddr, m return mStatus_NoError; } -mDNSexport mStatus mDNSPlatformGetRemoteMacAddr(mDNS *const m, mDNSAddr *raddr) +mDNSexport mStatus mDNSPlatformGetRemoteMacAddr(mDNSAddr *raddr) { (void) raddr; // Unused - (void) m; // Unused return mStatus_NoError; } diff --git a/mDNSResponder/mDNSPosix/mDNSPosix.h b/mDNSResponder/mDNSPosix/mDNSPosix.h index 9e16bb89..acff9c33 100755 --- a/mDNSResponder/mDNSPosix/mDNSPosix.h +++ b/mDNSResponder/mDNSPosix/mDNSPosix.h @@ -71,7 +71,7 @@ extern mStatus mDNSPlatformPosixRefreshInterfaceList(mDNS *const m); // Call mDNSPosixGetFDSet before calling select(), to update the parameters // as may be necessary to meet the needs of the mDNSCore code. // The timeout pointer MUST NOT be NULL. -// Set timeout->tv_sec to 0x3FFFFFFF if you want to have effectively no timeout +// Set timeout->tv_sec to FutureTime if you want to have effectively no timeout // After calling mDNSPosixGetFDSet(), call select(nfds, &readfds, NULL, NULL, &timeout); as usual // After select() returns, call mDNSPosixProcessFDSet() to let mDNSCore do its work extern void mDNSPosixGetFDSet(mDNS *m, int *nfds, fd_set *readfds, struct timeval *timeout); -- cgit v1.2.3