Home | History | Annotate | Line # | Download | only in unittests
      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         MDNS_DISPOSE_CF_OBJECT(NetworkChangedKey_IPv4);
     50         MDNS_DISPOSE_CF_OBJECT(NetworkChangedKey_IPv6);
     51         MDNS_DISPOSE_CF_OBJECT(NetworkChangedKey_Hostnames);
     52         MDNS_DISPOSE_CF_OBJECT(NetworkChangedKey_Computername);
     53         MDNS_DISPOSE_CF_OBJECT(NetworkChangedKey_DNS);
     54         MDNS_DISPOSE_CF_OBJECT(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 }
     80