diff options
Diffstat (limited to 'mDNSResponder/mDNSPosix')
-rw-r--r-- | mDNSResponder/mDNSPosix/ExampleClientApp.c | 2 | ||||
-rw-r--r-- | mDNSResponder/mDNSPosix/NetMonitor.c | 32 | ||||
-rw-r--r-- | mDNSResponder/mDNSPosix/PosixDaemon.c | 11 | ||||
-rw-r--r-- | mDNSResponder/mDNSPosix/ProxyResponder.c | 2 | ||||
-rwxr-xr-x | mDNSResponder/mDNSPosix/Responder.c | 2 | ||||
-rwxr-xr-x | mDNSResponder/mDNSPosix/mDNSPosix.c | 50 | ||||
-rwxr-xr-x | mDNSResponder/mDNSPosix/mDNSPosix.h | 2 |
7 files changed, 52 insertions, 49 deletions
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; i<max; i++) { - int max = 0; + int max_val = 0; ActivityStat *s, *m = NULL; for (s = stats; s; s=s->next) - 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; i<argc; i++) { - if (i+1 < argc && !strcmp(argv[i], "-i") && atoi(argv[i+1])) + if (i+1 < argc && !strcmp(argv[i], "-i")) { - FilterInterface = atoi(argv[i+1]); - i += 1; - printf("Monitoring interface %d\n", FilterInterface); + FilterInterface = if_nametoindex(argv[i+1]); + if (!FilterInterface) FilterInterface = atoi(argv[i+1]); + if (!FilterInterface) { + fprintf(stderr, "Unknown interface %s\n", argv[i+1]); + goto usage; + } + printf("Monitoring interface %d/%s\n", FilterInterface, argv[i+1]); + i += 1; } else if (!strcmp(argv[i], "-6")) { @@ -1019,8 +1026,9 @@ mDNSexport int main(int argc, char **argv) usage: fprintf(stderr, "\nmDNS traffic monitor\n"); - fprintf(stderr, "Usage: %s [-i index] [host]\n", progname); + fprintf(stderr, "Usage: %s [-i index] [-6] [host]\n", progname); fprintf(stderr, "Optional [-i index] parameter displays only packets from that interface index\n"); + fprintf(stderr, "Optional [-6] parameter displays only ipv6 packets (defaults to only ipv4 packets)\n"); fprintf(stderr, "Optional [host] parameter displays only packets from that host\n"); fprintf(stderr, "\nPer-packet header output:\n"); diff --git a/mDNSResponder/mDNSPosix/PosixDaemon.c b/mDNSResponder/mDNSPosix/PosixDaemon.c index 88b3292c..295e8421 100644 --- a/mDNSResponder/mDNSPosix/PosixDaemon.c +++ b/mDNSResponder/mDNSPosix/PosixDaemon.c @@ -118,11 +118,11 @@ mDNSlocal void ParseCmdLinArgs(int argc, char **argv) } } -mDNSlocal void DumpStateLog(mDNS *const m) +mDNSlocal void DumpStateLog() // Dump a little log of what we've been up to. { - LogMsg("---- BEGIN STATE LOG ----"); - udsserver_info(m); + LogMsg("---- BEGIN STATE LOG ----"); + udsserver_info(); LogMsg("---- END STATE LOG ----"); } @@ -160,7 +160,7 @@ mDNSlocal mStatus MainLoop(mDNS *m) // Loop until we quit. (void) mDNSPosixRunEventLoopOnce(m, &timeout, &signals, &gotData); if (sigismember(&signals, SIGHUP )) Reconfigure(m); - if (sigismember(&signals, SIGUSR1)) DumpStateLog(m); + if (sigismember(&signals, SIGUSR1)) DumpStateLog(); // SIGPIPE happens when we try to write to a dead client; death should be detected soon in request_callback() and cleaned up. if (sigismember(&signals, SIGPIPE)) LogMsg("Received SIGPIPE - ignoring"); if (sigismember(&signals, SIGINT) || sigismember(&signals, SIGTERM)) break; @@ -235,9 +235,8 @@ mStatus udsSupportRemoveFDFromEventLoop(int fd, void *platform_data) // N return err; } -mDNSexport void RecordUpdatedNiceLabel(mDNS *const m, mDNSs32 delay) +mDNSexport void RecordUpdatedNiceLabel(mDNSs32 delay) { - (void)m; (void)delay; // No-op, for now } diff --git a/mDNSResponder/mDNSPosix/ProxyResponder.c b/mDNSResponder/mDNSPosix/ProxyResponder.c index 3982161d..bd0fe582 100644 --- a/mDNSResponder/mDNSPosix/ProxyResponder.c +++ b/mDNSResponder/mDNSPosix/ProxyResponder.c @@ -275,7 +275,7 @@ mDNSexport int main(int argc, char **argv) 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); } diff --git a/mDNSResponder/mDNSPosix/Responder.c b/mDNSResponder/mDNSPosix/Responder.c index 7a77bcdf..3850ea26 100755 --- a/mDNSResponder/mDNSPosix/Responder.c +++ b/mDNSResponder/mDNSPosix/Responder.c @@ -723,7 +723,7 @@ int main(int argc, char **argv) // 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/mDNSPosix.c b/mDNSResponder/mDNSPosix/mDNSPosix.c index 857c5832..fb9718ad 100755 --- a/mDNSResponder/mDNSPosix/mDNSPosix.c +++ b/mDNSResponder/mDNSPosix/mDNSPosix.c @@ -56,6 +56,7 @@ #include "mDNSUNP.h" #include "GenLinkedList.h" +#include "dnsproxy.h" // *************************************************************************** // Structures @@ -320,9 +321,8 @@ mDNSlocal void SocketDataReady(mDNS *const m, PosixNetworkInterface *intf, int s &senderAddr, senderPort, &destAddr, MulticastDNSPort, InterfaceID); } -mDNSexport TCPSocket *mDNSPlatformTCPSocket(mDNS * const m, TCPSocketFlags flags, mDNSIPPort * port, mDNSBool useBackgroundTrafficClass) +mDNSexport TCPSocket *mDNSPlatformTCPSocket(TCPSocketFlags flags, mDNSIPPort * port, mDNSBool useBackgroundTrafficClass) { - (void)m; // Unused (void)flags; // Unused (void)port; // Unused (void)useBackgroundTrafficClass; // Unused @@ -377,9 +377,8 @@ mDNSexport long mDNSPlatformWriteTCP(TCPSocket *sock, const char *msg, unsigned return 0; } -mDNSexport UDPSocket *mDNSPlatformUDPSocket(mDNS * const m, mDNSIPPort port) +mDNSexport UDPSocket *mDNSPlatformUDPSocket(mDNSIPPort port) { - (void)m; // Unused (void)port; // Unused return NULL; } @@ -389,9 +388,8 @@ mDNSexport void mDNSPlatformUDPClose(UDPSocket *sock) (void)sock; // Unused } -mDNSexport void mDNSPlatformUpdateProxyList(mDNS *const m, const mDNSInterfaceID InterfaceID) +mDNSexport void mDNSPlatformUpdateProxyList(const mDNSInterfaceID InterfaceID) { - (void)m; // Unused (void)InterfaceID; // Unused } @@ -402,9 +400,8 @@ mDNSexport void mDNSPlatformSendRawPacket(const void *const msg, const mDNSu8 *c (void)InterfaceID; // Unused } -mDNSexport void mDNSPlatformSetLocalAddressCacheEntry(mDNS *const m, const mDNSAddr *const tpa, const mDNSEthAddr *const tha, mDNSInterfaceID InterfaceID) +mDNSexport void mDNSPlatformSetLocalAddressCacheEntry(const mDNSAddr *const tpa, const mDNSEthAddr *const tha, mDNSInterfaceID InterfaceID) { - (void)m; // Unused (void)tpa; // Unused (void)tha; // Unused (void)InterfaceID; // Unused @@ -419,9 +416,8 @@ mDNSexport void mDNSPlatformTLSTearDownCerts(void) { } -mDNSexport void mDNSPlatformSetAllowSleep(mDNS *const m, mDNSBool allowSleep, const char *reason) +mDNSexport void mDNSPlatformSetAllowSleep(mDNSBool allowSleep, const char *reason) { - (void) m; (void) allowSleep; (void) reason; } @@ -443,10 +439,9 @@ mDNSexport void FreeEtcHosts(mDNS *const m, AuthRecord *const rr, mStatus result #pragma mark ***** DDNS Config Platform Functions #endif -mDNSexport mDNSBool mDNSPlatformSetDNSConfig(mDNS *const m, mDNSBool setservers, mDNSBool setsearch, domainname *const fqdn, DNameListElem **RegDomains, +mDNSexport mDNSBool mDNSPlatformSetDNSConfig(mDNSBool setservers, mDNSBool setsearch, domainname *const fqdn, DNameListElem **RegDomains, DNameListElem **BrowseDomains, mDNSBool ackConfig) { - (void) m; (void) setservers; (void) fqdn; (void) setsearch; @@ -457,9 +452,8 @@ mDNSexport mDNSBool mDNSPlatformSetDNSConfig(mDNS *const m, mDNSBool setservers, return mDNStrue; } -mDNSexport mStatus mDNSPlatformGetPrimaryInterface(mDNS * const m, mDNSAddr * v4, mDNSAddr * v6, mDNSAddr * router) +mDNSexport mStatus mDNSPlatformGetPrimaryInterface(mDNSAddr * v4, mDNSAddr * v6, mDNSAddr * router) { - (void) m; (void) v4; (void) v6; (void) router; @@ -514,7 +508,7 @@ mDNSexport int ParseDNSServers(mDNS *m, const char *filePath) mDNSAddr DNSAddr; DNSAddr.type = mDNSAddrType_IPv4; DNSAddr.ip.v4.NotAnInteger = ina.s_addr; - mDNS_AddDNSServer(m, NULL, mDNSInterface_Any, 0, &DNSAddr, UnicastDNSPort, kScopeNone, 0, mDNSfalse, 0, mDNStrue, mDNStrue, mDNSfalse); + mDNS_AddDNSServer(m, NULL, mDNSInterface_Any, 0, &DNSAddr, UnicastDNSPort, kScopeNone, 0, mDNSfalse, mDNSfalse, 0, mDNStrue, mDNStrue, mDNSfalse); numOfServers++; } } @@ -614,7 +608,7 @@ mDNSlocal void ClearInterfaceList(mDNS *const m) while (m->HostInterfaces) { 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); |