]> git.saurik.com Git - apple/mdnsresponder.git/blob - unittests/mdns_macosx_ut.c
mDNSResponder-1096.60.2.tar.gz
[apple/mdnsresponder.git] / unittests / mdns_macosx_ut.c
1 #include "DNSCommon.h" // Defines general DNS utility routines
2 #include "unittest_common.h"
3 #include "mDNSMacOSX.h"
4
5 // To match *either* a v4 or v6 instance of this interface
6 mDNSlocal mDNSInterfaceID SearchForInterfaceByAddr(mDNSAddr* addr)
7 {
8 NetworkInterfaceInfoOSX *i;
9 for (i = mDNSStorage.p->InterfaceList; i; i = i->next)
10 if (i->Exists)
11 {
12 if ((i->ifinfo.ip.type == mDNSAddrType_IPv4) &&
13 i->ifinfo.ip.ip.v4.NotAnInteger == addr->ip.v4.NotAnInteger)
14 return i->ifinfo.InterfaceID;
15 else if ((i->ifinfo.ip.type == mDNSAddrType_IPv6) &&
16 (i->ifinfo.ip.ip.v6.l[0] == addr->ip.v6.l[0] &&
17 i->ifinfo.ip.ip.v6.l[1] == addr->ip.v6.l[1] &&
18 i->ifinfo.ip.ip.v6.l[2] == addr->ip.v6.l[2] &&
19 i->ifinfo.ip.ip.v6.l[3] == addr->ip.v6.l[3])
20 )
21 return i->ifinfo.InterfaceID;
22 }
23 return(NULL);
24 }
25
26 mDNSexport void SetInterfaces_ut(mDNSInterfaceID* pri_id, mDNSAddr *pri_v4, mDNSAddr* pri_v6, mDNSAddr* pri_router)
27 {
28 mDNSs32 utc = mDNSPlatformUTC();
29
30 MarkAllInterfacesInactive(utc);
31 UpdateInterfaceList(utc);
32 ClearInactiveInterfaces(utc);
33 SetupActiveInterfaces(utc);
34
35 // set primary interface info
36 {
37 mDNSAddr* addr;
38 NetworkChangedKey_IPv4 = SCDynamicStoreKeyCreateNetworkGlobalEntity(NULL, kSCDynamicStoreDomainState, kSCEntNetIPv4);
39 NetworkChangedKey_IPv6 = SCDynamicStoreKeyCreateNetworkGlobalEntity(NULL, kSCDynamicStoreDomainState, kSCEntNetIPv6);
40 NetworkChangedKey_Hostnames = SCDynamicStoreKeyCreateHostNames(NULL);
41 NetworkChangedKey_Computername = SCDynamicStoreKeyCreateComputerName(NULL);
42 NetworkChangedKey_DNS = SCDynamicStoreKeyCreateNetworkGlobalEntity(NULL, kSCDynamicStoreDomainState, kSCEntNetDNS);
43 NetworkChangedKey_StateInterfacePrefix = SCDynamicStoreKeyCreateNetworkInterfaceEntity(NULL, kSCDynamicStoreDomainState, CFSTR(""), NULL);
44
45 mDNSPlatformGetPrimaryInterface(pri_v4, pri_v6, pri_router);
46 addr = (pri_v4->type == mDNSAddrType_IPv4) ? pri_v4 : pri_v6;
47 *pri_id = SearchForInterfaceByAddr(addr);
48
49 CFRelease(NetworkChangedKey_IPv4);
50 CFRelease(NetworkChangedKey_IPv6);
51 CFRelease(NetworkChangedKey_Hostnames);
52 CFRelease(NetworkChangedKey_Computername);
53 CFRelease(NetworkChangedKey_DNS);
54 CFRelease(NetworkChangedKey_StateInterfacePrefix);
55 }
56 }
57
58 mDNSexport mDNSBool mDNSMacOSXCreateEtcHostsEntry_ut(const domainname *domain, const struct sockaddr *sa, const domainname *cname, char *ifname, AuthHash *auth)
59 {
60 return mDNSMacOSXCreateEtcHostsEntry(domain, sa, cname, ifname, auth);
61 }
62
63 mDNSexport void UpdateEtcHosts_ut(void *context)
64 {
65 mDNS_Lock(&mDNSStorage);
66 UpdateEtcHosts(&mDNSStorage, context);
67 mDNS_Unlock(&mDNSStorage);
68 }
69
70 mDNSexport void mDNSDomainLabelFromCFString_ut(CFStringRef cfs, domainlabel *const namelabel)
71 {
72 mDNSDomainLabelFromCFString(cfs, namelabel);
73 }
74
75 mDNSexport mDNSu32 IndexForInterfaceByName_ut(const char *ifname)
76 {
77 NetworkInterfaceInfoOSX * i = SearchForInterfaceByName(ifname, AF_UNSPEC);
78 return (i ? i->scope_id : 0);
79 }