summaryrefslogtreecommitdiffstats
path: root/mDNSResponder/mDNSPosix
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-09-19 08:56:09 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-09-20 11:23:33 +0200
commit4c086a244624bf36865edcfa4309c333d7d7200d (patch)
treee566ffc50a6b6fdb46702ac57c8e7c4088b60b42 /mDNSResponder/mDNSPosix
parentmDNSResponder: Update to v765.50.9 (diff)
downloadrtems-libbsd-4c086a244624bf36865edcfa4309c333d7d7200d.tar.bz2
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.
Diffstat (limited to 'mDNSResponder/mDNSPosix')
-rw-r--r--mDNSResponder/mDNSPosix/ExampleClientApp.c2
-rw-r--r--mDNSResponder/mDNSPosix/NetMonitor.c32
-rw-r--r--mDNSResponder/mDNSPosix/PosixDaemon.c11
-rw-r--r--mDNSResponder/mDNSPosix/ProxyResponder.c2
-rwxr-xr-xmDNSResponder/mDNSPosix/Responder.c2
-rwxr-xr-xmDNSResponder/mDNSPosix/mDNSPosix.c50
-rwxr-xr-xmDNSResponder/mDNSPosix/mDNSPosix.h2
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);