summaryrefslogtreecommitdiffstats
path: root/mDNSResponder/mDNSMacOSX/DNSProxySupport.c
diff options
context:
space:
mode:
Diffstat (limited to 'mDNSResponder/mDNSMacOSX/DNSProxySupport.c')
-rw-r--r--mDNSResponder/mDNSMacOSX/DNSProxySupport.c37
1 files changed, 20 insertions, 17 deletions
diff --git a/mDNSResponder/mDNSMacOSX/DNSProxySupport.c b/mDNSResponder/mDNSMacOSX/DNSProxySupport.c
index 7666cbc4..8a2e70b9 100644
--- a/mDNSResponder/mDNSMacOSX/DNSProxySupport.c
+++ b/mDNSResponder/mDNSMacOSX/DNSProxySupport.c
@@ -23,6 +23,8 @@
#include <sys/event.h>
#include <netinet/tcp.h>
+mDNSexport mDNS mDNSStorage;
+
#define ValidSocket(s) ((s) >= 0)
// Global to store the 4 DNS Proxy Listeners (UDPv4/6, TCPv4/6)
@@ -92,7 +94,7 @@ mDNSlocal int ProxyTCPRead(ProxyTCPInfo_t *tcpInfo)
return 1;
}
-mDNSlocal void ProxyTCPSocketCallBack(int s1, short filter, void *context)
+mDNSlocal void ProxyTCPSocketCallBack(int s1, short filter, void *context, __unused mDNSBool encounteredEOF)
{
int ret;
struct sockaddr_storage from;
@@ -185,11 +187,11 @@ mDNSlocal void ProxyTCPSocketCallBack(int s1, short filter, void *context)
// We pass sock for the TCPSocket and the "ti" for context as that's what we want to free at the end.
// In the UDP case, there is just a single socket and nothing to free. Hence, the context (last argument)
// would be NULL.
- kq->m->p->TCPProxyCallback(kq->m, sock, ti->reply, (mDNSu8 *)ti->reply + ti->replyLen, &senderAddr, senderPort, &destAddr,
+ kq->m->p->TCPProxyCallback(sock, ti->reply, (mDNSu8 *)ti->reply + ti->replyLen, &senderAddr, senderPort, &destAddr,
UnicastDNSPort, (mDNSInterfaceID)(uintptr_t)intf_id, ti);
}
-mDNSlocal void ProxyTCPAccept(int s1, short filter, void *context)
+mDNSlocal void ProxyTCPAccept(int s1, short filter, void *context, __unused mDNSBool encounteredEOF)
{
int newfd;
struct sockaddr_storage ss;
@@ -271,14 +273,14 @@ mDNSlocal void ProxyTCPAccept(int s1, short filter, void *context)
}
}
-mDNSlocal mStatus SetupUDPProxySocket(mDNS *const m, int skt, KQSocketSet *cp, u_short sa_family, mDNSBool useBackgroundTrafficClass)
+mDNSlocal mStatus SetupUDPProxySocket(int skt, KQSocketSet *cp, u_short sa_family, mDNSBool useBackgroundTrafficClass)
{
int *s = (sa_family == AF_INET) ? &cp->sktv4 : &cp->sktv6;
KQueueEntry *k = (sa_family == AF_INET) ? &cp->kqsv4 : &cp->kqsv6;
const int on = 1;
mStatus err = mStatus_NoError;
- cp->m = m;
+ cp->m = &mDNSStorage;
cp->closeFlag = mDNSNULL;
// set default traffic class
@@ -348,13 +350,13 @@ mDNSlocal mStatus SetupUDPProxySocket(mDNS *const m, int skt, KQSocketSet *cp, u
return(err);
}
-mDNSlocal mStatus SetupTCPProxySocket(mDNS *const m, int skt, KQSocketSet *cp, u_short sa_family, mDNSBool useBackgroundTrafficClass)
+mDNSlocal mStatus SetupTCPProxySocket(int skt, KQSocketSet *cp, u_short sa_family, mDNSBool useBackgroundTrafficClass)
{
int *s = (sa_family == AF_INET) ? &cp->sktv4 : &cp->sktv6;
KQueueEntry *k = (sa_family == AF_INET) ? &cp->kqsv4 : &cp->kqsv6;
mStatus err;
- cp->m = m;
+ cp->m = &mDNSStorage;
// XXX may not be used by the TCP codepath
cp->closeFlag = mDNSNULL;
@@ -438,9 +440,10 @@ mDNSlocal void BindDPSocket(int fd, int sa_family)
}
// Setup DNS Proxy Skts in main kevent loop and set the skt options
-mDNSlocal void SetupDNSProxySkts(mDNS *const m, int fd[4])
+mDNSlocal void SetupDNSProxySkts(int fd[4])
{
- int i;
+ mDNS *const m = &mDNSStorage;
+ int i;
mStatus err;
KQSocketSet *udpSS;
KQSocketSet *tcpSS;
@@ -454,19 +457,19 @@ mDNSlocal void SetupDNSProxySkts(mDNS *const m, int fd[4])
// myKQSocketCallBack checks for proxy and calls the m->p->ProxyCallback instead of mDNSCoreReceive
udpSS->proxy = mDNStrue;
- err = SetupUDPProxySocket(m, fd[0], udpSS, AF_INET, mDNSfalse);
+ err = SetupUDPProxySocket(fd[0], udpSS, AF_INET, mDNSfalse);
if (err)
LogMsg("SetupDNSProxySkts: ERROR!! UDPv4 Socket");
- err = SetupUDPProxySocket(m, fd[1], udpSS, AF_INET6, mDNSfalse);
+ err = SetupUDPProxySocket(fd[1], udpSS, AF_INET6, mDNSfalse);
if (err)
LogMsg("SetupDNSProxySkts: ERROR!! UDPv6 Socket");
- err = SetupTCPProxySocket(m, fd[2], tcpSS, AF_INET, mDNSfalse);
+ err = SetupTCPProxySocket(fd[2], tcpSS, AF_INET, mDNSfalse);
if (err)
LogMsg("SetupDNSProxySkts: ERROR!! TCPv4 Socket");
- err = SetupTCPProxySocket(m, fd[3], tcpSS, AF_INET6, mDNSfalse);
+ err = SetupTCPProxySocket(fd[3], tcpSS, AF_INET6, mDNSfalse);
if (err)
LogMsg("SetupDNSProxySkts: ERROR!! TCPv6 Socket");
@@ -475,7 +478,7 @@ mDNSlocal void SetupDNSProxySkts(mDNS *const m, int fd[4])
}
// Create and bind the DNS Proxy Skts for use
-mDNSexport void mDNSPlatformInitDNSProxySkts(mDNS *const m, ProxyCallback UDPCallback, ProxyCallback TCPCallback)
+mDNSexport void mDNSPlatformInitDNSProxySkts(ProxyCallback UDPCallback, ProxyCallback TCPCallback)
{
int dpskt[4];
@@ -506,10 +509,10 @@ mDNSexport void mDNSPlatformInitDNSProxySkts(mDNS *const m, ProxyCallback UDPCal
LogInfo("mDNSPlatformInitDNSProxySkts: Opened Listener Sockets for DNS Proxy : %d, %d, %d, %d",
dpskt[0], dpskt[1], dpskt[2], dpskt[3]);
- m->p->UDPProxyCallback = UDPCallback;
- m->p->TCPProxyCallback = TCPCallback;
+ mDNSStorage.p->UDPProxyCallback = UDPCallback;
+ mDNSStorage.p->TCPProxyCallback = TCPCallback;
- SetupDNSProxySkts(m, dpskt);
+ SetupDNSProxySkts(dpskt);
}
mDNSexport void mDNSPlatformCloseDNSProxySkts(mDNS *const m)