1 #include "DNSCommon.h" // Defines general DNS utility routines
2 #include "unittest_common.h"
3 #include "mDNSMacOSX.h"
5 // To match *either* a v4 or v6 instance of this interface
6 mDNSlocal mDNSInterfaceID
SearchForInterfaceByAddr(mDNSAddr
* addr
)
8 NetworkInterfaceInfoOSX
*i
;
9 for (i
= mDNSStorage
.p
->InterfaceList
; i
; i
= i
->next
)
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])
21 return i
->ifinfo
.InterfaceID
;
26 mDNSexport
void SetInterfaces_ut(mDNSInterfaceID
* pri_id
, mDNSAddr
*pri_v4
, mDNSAddr
* pri_v6
, mDNSAddr
* pri_router
)
28 mDNSs32 utc
= mDNSPlatformUTC();
30 MarkAllInterfacesInactive(utc
);
31 UpdateInterfaceList(utc
);
32 ClearInactiveInterfaces(utc
);
33 SetupActiveInterfaces(utc
);
35 // set primary interface info
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
);
45 mDNSPlatformGetPrimaryInterface(pri_v4
, pri_v6
, pri_router
);
46 addr
= (pri_v4
->type
== mDNSAddrType_IPv4
) ? pri_v4
: pri_v6
;
47 *pri_id
= SearchForInterfaceByAddr(addr
);
49 CFRelease(NetworkChangedKey_IPv4
);
50 CFRelease(NetworkChangedKey_IPv6
);
51 CFRelease(NetworkChangedKey_Hostnames
);
52 CFRelease(NetworkChangedKey_Computername
);
53 CFRelease(NetworkChangedKey_DNS
);
54 CFRelease(NetworkChangedKey_StateInterfacePrefix
);
58 mDNSexport mDNSBool
mDNSMacOSXCreateEtcHostsEntry_ut(const domainname
*domain
, const struct sockaddr
*sa
, const domainname
*cname
, char *ifname
, AuthHash
*auth
)
60 return mDNSMacOSXCreateEtcHostsEntry(domain
, sa
, cname
, ifname
, auth
);
63 mDNSexport
void UpdateEtcHosts_ut(void *context
)
65 mDNS_Lock(&mDNSStorage
);
66 UpdateEtcHosts(&mDNSStorage
, context
);
67 mDNS_Unlock(&mDNSStorage
);
70 mDNSexport
void mDNSDomainLabelFromCFString_ut(CFStringRef cfs
, domainlabel
*const namelabel
)
72 mDNSDomainLabelFromCFString(cfs
, namelabel
);
75 mDNSexport mDNSu32
IndexForInterfaceByName_ut(const char *ifname
)
77 NetworkInterfaceInfoOSX
* i
= SearchForInterfaceByName(ifname
, AF_UNSPEC
);
78 return (i
? i
->scope_id
: 0);