/*++ Copyright (c) 1996-2001 Microsoft Corporation Module Name: dnslibp.h Abstract: Domain Name System (DNS) Library Private DNS Library Routines Author: Jim Gilroy (jamesg) December 7, 1996 Revision History: --*/ #ifndef _DNSLIBP_INCLUDED_ #define _DNSLIBP_INCLUDED_ #include #include #include #ifdef __cplusplus extern "C" { #endif // __cplusplus // headers are screwed up // neither ntdef.h nor winnt.h brings in complete set, so depending // on whether you include nt.h or not you end up with different set #define MINCHAR 0x80 #define MAXCHAR 0x7f #define MINSHORT 0x8000 #define MAXSHORT 0x7fff #define MINLONG 0x80000000 #define MAXLONG 0x7fffffff #define MAXBYTE 0xff #define MAXUCHAR 0xff #define MAXWORD 0xffff #define MAXUSHORT 0xffff #define MAXDWORD 0xffffffff #define MAXULONG 0xffffffff // // Handy bad ptr // #define DNS_BAD_PTR ((PVOID)(-1)) // // "Wire" char set // // Explicitly create wire char set in case the ACE format // wins out. // #define DnsCharSetWire DnsCharSetUtf8 // // Private DNS_RECORD Flag field structure definition and macros // typedef struct _PrivateRecordFlags { DWORD Section : 2; DWORD Delete : 1; DWORD CharSet : 2; DWORD Cached : 1; // or maybe a "Source" field DWORD HostsFile : 1; DWORD Cluster : 1; DWORD Unused : 3; DWORD Matched : 1; DWORD FreeData : 1; DWORD FreeOwner : 1; DWORD Reserved : 18; } PRIV_RR_FLAGS, *PPRIV_RR_FLAGS; #define RRFLAGS( pRecord ) ((PPRIV_RR_FLAGS)&pRecord->Flags.DW) // Defined in dnslib.h too late to pull now //#define FLAG_Section( pRecord ) (RRFLAGS( pRecord )->Section) //#define FLAG_Delete( pRecord ) (RRFLAGS( pRecord )->Delete) //#define FLAG_CharSet( pRecord ) (RRFLAGS( pRecord )->CharSet) //#define FLAG_FreeData( pRecord ) (RRFLAGS( pRecord )->FreeData) //#define FLAG_FreeOwner( pRecord ) (RRFLAGS( pRecord )->FreeOwner) //#define FLAG_Matched( pRecord ) (RRFLAGS( pRecord )->Matched) //#define FLAG_Cached( pRecord ) (RRFLAGS( pRecord )->Cached) #define FLAG_HostsFile( pRecord ) (RRFLAGS( pRecord )->HostsFile) #define FLAG_Cluster( pRecord ) (RRFLAGS( pRecord )->Cluster) //#define SET_FREE_OWNER(pRR) (FLAG_FreeOwner(pRR) = TRUE) //#define SET_FREE_DATA(pRR) (FLAG_FreeData(pRR) = TRUE) //#define SET_RR_MATCHED(pRR) (FLAG_Matched(pRR) = TRUE) #define SET_RR_HOSTS_FILE(pRR) (FLAG_HostsFile(pRR) = TRUE) #define SET_RR_CLUSTER(pRR) (FLAG_Cluster(pRR) = TRUE) //#define CLEAR_FREE_OWNER(pRR) (FLAG_FreeOwner(pRR) = FALSE) //#define CLEAR_FREE_DATA(pRR) (FLAG_FreeData(pRR) = FALSE) //#define CLEAR_RR_MATCHED(pRR) (FLAG_Matched(pRR) = FALSE) #define CLEAR_RR_HOSTS_FILE(pRR) (FLAG_HostsFile(pRR) = FALSE) //#define IS_FREE_OWNER(pRR) (FLAG_FreeOwner(pRR)) //#define IS_FREE_DATA(pRR) (FLAG_FreeData(pRR)) //#define IS_RR_MATCHED(pRR) (FLAG_Matched(pRR)) #define IS_HOSTS_FILE_RR(pRR) (FLAG_HostsFile(pRR)) #define IS_CLUSTER_RR(pRR) (FLAG_Cluster(pRR)) //#define IS_ANSWER_RR(pRR) (FLAG_Section(pRR) == DNSREC_ANSWER) //#define IS_AUTHORITY_RR(pRR) (FLAG_Section(pRR) == DNSREC_AUTHORITY) //#define IS_ADDITIONAL_RR(pRR) (FLAG_Section(pRR) == DNSREC_ADDITIONAL) // // Address family info (addr.c) // typedef struct _AddrFamilyInfo { WORD Family; WORD DnsType; DWORD LengthAddr; DWORD LengthSockaddr; DWORD OffsetToAddrInSockaddr; } FAMILY_INFO, *PFAMILY_INFO; extern FAMILY_INFO AddrFamilyTable[]; #define FamilyInfoIp4 (AddrFamilyTable[0]) #define FamilyInfoIp6 (AddrFamilyTable[1]) #define FamilyInfoAtm (AddrFamilyTable[2]) #define pFamilyInfoIp4 (&AddrFamilyTable[0]) #define pFamilyInfoIp6 (&AddrFamilyTable[1]) #define pFamilyInfoAtm (&AddrFamilyTable[2]) PFAMILY_INFO FamilyInfo_GetForFamily( IN DWORD Family ); #define FamilyInfo_GetForSockaddr(pSA) \ FamilyInfo_GetForFamily( (pSA)->sa_family ) // // IP Union // // DCR: probably should have just used sockaddr here // // Advantages over sockaddr_in6 // - bool test // - addresses pointers start in the same place for both // types // - size // - no munging (sockaddr_in6) needs casting to get back to IP4 // alternatively regular sockaddr is not fixed size // // If keep this type should make it available for all address // operations including local IP, in which case should include // flag field for cluster, weird info. // typedef struct _DnsIpUnion { BOOL IsIp6; union { IP4_ADDRESS Ip4; IP6_ADDRESS Ip6; } Addr; } IP_UNION, *PIP_UNION; #define IPUNION_IS_IP4( p ) (!(p)->IsIp6) #define IPUNION_IS_IP6( p ) ((p)->IsIp6) #define IPUNION_IP4_PTR( p ) (&(p)->Addr.Ip4) #define IPUNION_IP6_PTR( p ) (&(p)->Addr.Ip6) #define IPUNION_GET_IP4( p ) ((p)->Addr.Ip4) #define IPUNION_GET_IP6( p ) ((p)->Addr.Ip6) #define IPUNION_SET_IP4( p, ip4 ) \ { \ PIP_UNION pip = (p); \ pip->IsIp6 = FALSE; \ pip->Addr.Ip4 = (ip4); \ } #define IPUNION_SET_IP6( p, ip6 ) \ { \ PIP_UNION pip = (p); \ pip->IsIp6 = TRUE; \ pip->Addr.Ip6 = (ip6); \ } // // Address manipulation (addr.c) // BOOL Dns_EqualIpUnion( IN PIP_UNION pIp1, IN PIP_UNION pIp2 ); BOOL Dns_SockaddrToIpUnion( OUT PIP_UNION pIpUnion, IN PSOCKADDR pSockaddr ); IP6_ADDRESS Ip6AddressFromSockaddr( IN PSOCKADDR pSockaddr ); VOID InitSockaddrWithIp6Address( OUT PSOCKADDR pSockaddr, IN IP6_ADDRESS Ip6Addr, IN WORD Port ); DNS_STATUS Dns_AddressToSockaddr( OUT PSOCKADDR pSockaddr, IN OUT PDWORD pSockaddrLength, IN BOOL fClearSockaddr, IN PBYTE pAddr, IN DWORD AddrLength, IN DWORD AddrFamily ); DWORD Family_SockaddrLength( IN WORD Family ); DWORD Sockaddr_Length( IN PSOCKADDR pSockaddr ); // // String to address conversion (straddr.c) // // Most of the routines are public. These ones handle // non-NULL terminated strings for DNS server file load. // BOOL Dns_Ip4StringToAddressEx_A( OUT PIP4_ADDRESS pIp4Addr, IN PCSTR pchString, IN DWORD StringLength ); BOOL Dns_Ip6StringToAddressEx_A( OUT PIP6_ADDRESS pIp6Addr, IN PCSTR pchString, IN DWORD StringLength ); // // RPC-able type (record.c) // BOOL Dns_IsRpcRecordType( IN WORD wType ); // // Record copy (rrcopy.c) // PDNS_RECORD WINAPI Dns_RecordCopy_W( IN PDNS_RECORD pRecord ); PDNS_RECORD WINAPI Dns_RecordCopy_A( IN PDNS_RECORD pRecord ); PDNS_RECORD Dns_RecordListCopyEx( IN PDNS_RECORD pRR, IN DWORD ScreenFlag, IN DNS_CHARSET CharSetIn, IN DNS_CHARSET CharSetOut ); // // Record list routines (rrlist.c) // // // Record screening (rrlist.c) // #define SCREEN_OUT_ANSWER (0x00000001) #define SCREEN_OUT_AUTHORITY (0x00000010) #define SCREEN_OUT_ADDITIONAL (0x00000100) #define SCREEN_OUT_NON_RPC (0x00100000) #define SCREEN_OUT_SECTION \ (SCREEN_OUT_ANSWER | SCREEN_OUT_AUTHORITY | SCREEN_OUT_ADDITIONAL) BOOL Dns_ScreenRecord( IN PDNS_RECORD pRR, IN DWORD ScreenFlag ); PDNS_RECORD Dns_RecordListScreen( IN PDNS_RECORD pRR, IN DWORD ScreenFlag ); DWORD Dns_RecordListGetMinimumTtl( IN PDNS_RECORD pRRList ); // // New free // DCR: switch to dnslib.h when world builds clean // #undef Dns_RecordListFree VOID WINAPI Dns_RecordListFree( IN OUT PDNS_RECORD pRRList ); // // String (string.c) // DWORD MultiSz_Length_A( IN PCSTR pmszString ); PSTR MultiSz_NextString_A( IN PCSTR pmszString ); PSTR MultiSz_Copy_A( IN PCSTR pmszString ); // // Name utilities (name.c) // DWORD Dns_MakeCanonicalNameW( OUT PWSTR pBuffer, IN DWORD BufLength, IN PWSTR pwsString, IN DWORD StringLength ); DWORD Dns_MakeCanonicalNameInPlaceW( IN PWCHAR pwString, IN DWORD StringLength ); // // Name checking -- server name checking levels // #define DNS_ALLOW_RFC_NAMES_ONLY (0) #define DNS_ALLOW_NONRFC_NAMES (1) #define DNS_ALLOW_MULTIBYTE_NAMES (2) #define DNS_ALLOW_ALL_NAMES (3) INT Dns_DowncaseNameLabel( OUT PCHAR pchResult, IN PCHAR pchLabel, IN DWORD cchLabel, IN DWORD dwFlags ); PSTR Dns_NameAppend_A( OUT PCHAR pNameBuffer, IN DWORD BufferLength, IN PSTR pszName, IN PSTR pszDomain ); PWSTR Dns_NameAppend_W( OUT PWCHAR pNameBuffer, IN DWORD BufferLength, IN PWSTR pwsName, IN PWSTR pwsDomain ); PSTR Dns_SplitHostFromDomainName_A( IN PSTR pszName ); BOOL _fastcall Dns_IsNameNumeric_A( IN PCSTR pszName ); DWORD Dns_NameCopyWireToUnicode( OUT PWCHAR pBufferUnicode, IN PCSTR pszNameWire ); DWORD Dns_NameCopyUnicodeToWire( OUT PCHAR pBufferWire, IN PCWSTR pwsNameUnicode ); DWORD Dns_NameCopyStandard_W( OUT PWCHAR pBuffer, IN PCWSTR pwsNameUnicode ); DWORD Dns_NameCopyStandard_A( OUT PCHAR pBuffer, IN PCSTR pszName ); // // Sting to address (straddr.c) // // Need for hostent routine which doesn unicode\ANSI. // BOOL Dns_StringToAddressEx( OUT PCHAR pAddrBuf, IN OUT PDWORD pBufLength, IN PCSTR pString, IN OUT PDWORD pAddrFamily, IN BOOL fUnicode, IN BOOL fReverse ); // // Special record creation (rralloc.c) // PDNS_RECORD Dns_CreateFlatRecord( IN PDNS_NAME pOwnerName, IN WORD wType, IN PCHAR pData, IN DWORD DataLength, IN DWORD Ttl, IN DNS_CHARSET NameCharSet, IN DNS_CHARSET RecordCharSet ); PDNS_RECORD Dns_CreatePtrTypeRecord( IN PDNS_NAME pOwnerName, IN BOOL fCopyName, IN PDNS_NAME pTargetName, IN WORD wType, IN DWORD Ttl, IN DNS_CHARSET NameCharSet, IN DNS_CHARSET RecordCharSet ); PDNS_RECORD Dns_CreatePtrRecordEx( IN PIP_UNION pIp, IN PDNS_NAME pszHostName, IN DWORD Ttl, IN DNS_CHARSET NameCharSet, IN DNS_CHARSET RecordCharSet ); PDNS_RECORD Dns_CreatePtrRecordExEx( IN PIP_UNION pIp, IN PSTR pszHostName, IN PSTR pszDomainName, IN DWORD Ttl, IN DNS_CHARSET NameCharSet, IN DNS_CHARSET RecordCharSet ); PDNS_RECORD Dns_CreateARecord( IN PDNS_NAME pOwnerName, IN IP_ADDRESS IpAddress, IN DWORD Ttl, IN DNS_CHARSET NameCharSet, IN DNS_CHARSET RecordCharSet ); PDNS_RECORD Dns_CreateAAAARecord( IN PDNS_NAME pOwnerName, IN IP6_ADDRESS Ip6Address, IN DWORD Ttl, IN DNS_CHARSET NameCharSet, IN DNS_CHARSET RecordCharSet ); PDNS_RECORD Dns_CreateForwardRecord( IN PDNS_NAME pOwnerName, IN PIP_UNION pIp, IN DWORD Ttl, IN DNS_CHARSET NameCharSet, IN DNS_CHARSET RecordCharSet ); PDNS_RECORD Dns_CreateForwardRecordFromSockaddr( IN PDNS_NAME pOwnerName, IN PSOCKADDR pSockaddr, IN DWORD Ttl, IN DNS_CHARSET NameCharSet, IN DNS_CHARSET RecordCharSet ); PDNS_RECORD Dns_CreateRecordForIpString_W( IN PCWSTR pwsName, IN WORD wType, IN DWORD Ttl ); // // Security stuff (security.c) // #define SECURITY_WIN32 #include #define DNS_SPN_SERVICE_CLASS "DNS" #define DNS_SPN_SERVICE_CLASS_W L"DNS" // // Some useful stats // extern DWORD SecContextCreate; extern DWORD SecContextFree; extern DWORD SecContextQueue; extern DWORD SecContextQueueInNego; extern DWORD SecContextDequeue; extern DWORD SecContextTimeout; extern DWORD SecPackAlloc; extern DWORD SecPackFree; // Security packet verifications extern DWORD SecTkeyInvalid; extern DWORD SecTkeyBadTime; extern DWORD SecTsigFormerr; extern DWORD SecTsigEcho; extern DWORD SecTsigBadKey; extern DWORD SecTsigVerifySuccess; extern DWORD SecTsigVerifyOldSig; extern DWORD SecTsigVerifyFailed; // Hacks // Allowing old TSIG off by default, server can turn on. // Big Time skew on by default extern BOOL SecAllowOldTsig; extern DWORD SecTsigVerifyOldSig; extern DWORD SecTsigVerifyOldFailed; extern DWORD SecBigTimeSkew; extern DWORD SecBigTimeSkewBypass; // // Security globals // expose some of these which may be accessed by update library // extern BOOL g_fSecurityPackageInitialized; extern DWORD g_SecurityTokenMaxLength; // // Security context cache // VOID Dns_TimeoutSecurityContextList( IN BOOL fClearList ); // // Security API // BOOL Dns_DnsNameToKerberosTargetName( IN LPSTR pszDnsName, IN LPSTR pszKerberosTargetName ); DNS_STATUS Dns_StartSecurity( IN BOOL fProcessAttach ); DNS_STATUS Dns_StartServerSecurity( VOID ); DNS_STATUS Dns_InitializeSecurityPackage( OUT PDWORD pdwMaxMessage, IN BOOL bDnsSvr ); VOID Dns_TerminateSecurityPackage( VOID ); HANDLE Dns_CreateAPIContext( IN DWORD Flags, IN PVOID Credentials, OPTIONAL IN BOOL fUnicode ); VOID Dns_FreeAPIContext( IN OUT HANDLE hContextHandle ); PVOID Dns_GetApiContextCredentials( IN HANDLE hContextHandle ); DWORD Dns_GetCurrentRid( VOID); BOOL Dns_CreateUserCredentials( IN PCHAR pszUser, IN DWORD dwUserLength, IN PCHAR pszDomain, IN DWORD dwDomainLength, IN PCHAR pszPassword, IN DWORD dwPasswordLength, IN BOOL FromWide, OUT PCHAR * ppCreds ); PSEC_WINNT_AUTH_IDENTITY_W Dns_AllocateAndInitializeCredentialsW( IN PSEC_WINNT_AUTH_IDENTITY_W pAuthIn ); PSEC_WINNT_AUTH_IDENTITY_A Dns_AllocateAndInitializeCredentialsA( IN PSEC_WINNT_AUTH_IDENTITY_A pAuthIn ); VOID Dns_FreeAuthIdentityCredentials( IN PVOID pAuthIn ); DNS_STATUS Dns_SignMessageWithGssTsig( IN HANDLE hContext, IN PDNS_HEADER pMsgHead, IN PCHAR pMsgBufEnd, IN OUT PCHAR * ppCurrent ); #if 1 DNS_STATUS Dns_RefreshSSpiCredentialsHandle( IN BOOL bDnsSvr, IN PCHAR pCreds ); #endif VOID Dns_FreeSecurityContextList( VOID ); // // Client security routines // DNS_STATUS Dns_DoSecureUpdate( IN PDNS_MSG_BUF pMsgSend, OUT PDNS_MSG_BUF pMsgRecv, IN OUT PHANDLE phContext, IN DWORD dwFlag, IN PDNS_NETINFO pNetworkInfo, IN PIP_ARRAY aipServer, IN LPSTR pszNameServer, IN PCHAR pCreds, IN PCHAR pszContext ); // // Server security routines // DNS_STATUS Dns_FindSecurityContextFromAndVerifySignature( IN PHANDLE phContext, IN IP_ADDRESS ipRemote, IN PDNS_HEADER pMsgHead, IN PCHAR pMsgEnd ); DNS_STATUS Dns_ServerNegotiateTkey( IN IP_ADDRESS ipRemote, IN PDNS_HEADER pMsgHead, IN PCHAR pMsgEnd, IN PCHAR pMsgBufEnd, IN BOOL fBreakOnAscFailure, OUT PCHAR * ppCurrent ); DNS_STATUS Dns_SrvImpersonateClient( IN HANDLE hContext ); DNS_STATUS Dns_SrvRevertToSelf( IN HANDLE hContext ); VOID Dns_CleanupSessionAndEnlistContext( IN OUT HANDLE hSession ); DWORD Dns_GetKeyVersion( IN LPSTR pszContext ); // // Security utilities // DNS_STATUS Dns_CreateSecurityDescriptor( OUT PSECURITY_DESCRIPTOR * ppSD, IN DWORD AclCount, IN PSID * SidPtrArray, IN DWORD * AccessMaskArray ); // // Security credentials // // Only defined if WINNT_AUTH_IDENTITY defined #ifdef __RPCDCE_H__ PSEC_WINNT_AUTH_IDENTITY_W Dns_AllocateCredentials( IN PWSTR pwsUserName, IN PWSTR pwsDomain, IN PWSTR pwsPassword ); #endif DNS_STATUS Dns_ImpersonateUser( IN PDNS_CREDENTIALS pCreds ); VOID Dns_FreeCredentials( IN PDNS_CREDENTIALS pCreds ); PDNS_CREDENTIALS Dns_CopyCredentials( IN PDNS_CREDENTIALS pCreds ); // // Debug globals // // Expose here to allow debug file sharing // typedef struct _DnsDebugInfo { DWORD Flag; HANDLE hFile; DWORD FileCurrentSize; DWORD FileWrapCount; DWORD FileWrapSize; DWORD LastThreadId; DWORD LastSecond; BOOL fConsole; CHAR FileName[ MAX_PATH ]; } DNS_DEBUG_INFO, *PDNS_DEBUG_INFO; // WANING: MUST ONLY be called in dnsapi.dll PDNS_DEBUG_INFO Dns_SetDebugGlobals( IN OUT PDNS_DEBUG_INFO pInfo ); // // No DnsApi.dll // // If not using dnsapi.dll, let those names be used without // #ifdef NO_DNSAPI_DLL // // remove DnsApi.dll function definition // // timer #undef InitializeSecondsTimer #undef GetCurrentTimeInSeconds // IP array #undef DnsValidateIpAddressArray #undef DnsCreateIpAddressArrayCopy #undef DnsCreateIpArray #undef DnsSizeofIpArray #undef DnsBuildIpArray #undef DnsCreateIpArrayCopy #undef DnsIsAddressInIpArray #undef DnsAddIpToIpArray #undef DnsClearIpArray #undef DnsCheckAndMakeIpArraySubset #undef DnsDeleteIpFromIpArray #undef DnsRemoveZerosFromIpArray #undef DnsDiffOfIpArrays #undef DnsIntersectionOfIpArrays // general DNS utilities #undef DnsGetDomainName #undef DnsValidateAndCategorizeDnsName #undef DnsStatusString #undef DnsMapRcodeToStatus #undef DnsIsStatusRcode #undef DnsResponseCodeString #undef DnsResponseCodeExplanationString #undef DnsOpcodeString #undef DnsOpcodeCharacter #undef DnsSectionNameString // local machine info #undef Dns_GetIpAddresses // records #undef DnsWinsRecordFlagForString #undef DnsWinsRecordFlagString #undef DnsIsAMailboxType #undef DnsRecordTypeForName #undef DnsRecordStringForType #undef DnsRecordStringForWritableType #undef DnsIsStringCountValidForTextType #undef DnsIpv6StringToAddress #undef DnsIpv6AddressToString // strings #undef DnsCreateStringCopy #undef DnsGetBufferLengthForStringCopy #undef DnsCopyStringEx #undef DnsStringCopyAllocateEx #undef DnsWriteReverseNameStringForIpAddress #undef DnsCreateReverseNameStringForIpAddress #undef DnsValidateDnsName_UTF8 #undef DnsValidateDnsName_W #undef DnsRelationalCompare_UTF8 #undef DnsRelationalCompare_W #undef DnsValidateDnsString_UTF8 #undef DnsValidateDnsString_W #undef DnsCreateStandardDnsNameCopy #undef DnsDowncaseDnsNameLabel #undef DnsUnicodeToUtf8 #undef DnsUtf8ToUnicode #undef DnsValidateUtf8Byte // // redefine DnsApi.dll function as dnslib function // // timer #define InitializeSecondsTimer() Dns_InitializeSecondsTimer() #define GetCurrentTimeInSeconds() Dns_GetCurrentTimeInSeconds() // IP array #define DnsValidateIpAddressArray(a,b,c) Dns_ValidateIpAddressArray(a,b,c) #define DnsCreateIpAddressArrayCopy(a,b) Dns_CreateIpAddressArrayCopy(a,b) #define DnsCreateIpArray(a) Dns_CreateIpArray(a) #define DnsSizeofIpArray(a) Dns_SizeofIpArray(a) #define DnsBuildIpArray(a,b) Dns_BuildIpArray((a),(b)) #define DnsCreateIpArrayCopy(a) Dns_CreateIpArrayCopy(a) #define DnsIsAddressInIpArray(a,b) Dns_IsAddressInIpArray((a),(b)) #define DnsAddIpToIpArray(a,b) Dns_AddIpToIpArray((a),(b)) #define DnsClearIpArray(a) Dns_ClearIpArray(a) #define DnsCheckAndMakeIpArraySubset(a,b) Dns_CheckAndMakeIpArraySubset((a),(b)) #define DnsDeleteIpFromIpArray(a,b) Dns_DeleteIpFromIpArray((a),(b)) #define DnsRemoveZerosFromIpArray(a) Dns_RemoveZerosFromIpArray(a) #define DnsDiffOfIpArrays(a,b,c,d,e) Dns_DiffOfIpArrays((a),(b),(c),(d),(e)) #define DnsIntersectionOfIpArrays(a,b,c) Dns_IntersectionOfIpArrays((a),(b),(c)) // general DNS utilities #define DnsGetDomainName(a) Dns_GetDomainName(a) #define DnsValidateAndCategorizeDnsName(a,b) Dns_ValidateAndCategorizeDnsName(a,b) #define DnsStatusString(a) Dns_StatusString(a) #define DnsMapRcodeToStatus(a) Dns_MapRcodeToStatus(a) #define DnsIsStatusRcode(a) Dns_IsStatusRcode(a) #define DnsResponseCodeString(a) Dns_ResponseCodeString(a) #define DnsResponseCodeExplanationString(a) Dns_ResponseCodeExplanationString(a) #define DnsOpcodeString(a) Dns_OpcodeString(a) #define DnsOpcodeCharacter(a) Dns_OpcodeCharacter(a) #define DnsSectionNameString(a,b) Dns_SectionNameString(a,b) // local machine info #define DnsGetIpAddresses(a,b) Dns_GetIpAddresses(a,b) // records #define DnsWinsRecordFlagForString(a,b) Dns_WinsRecordFlagForString(a,b) #define DnsWinsRecordFlagString(a,b) Dns_WinsRecordFlagString(a,b) #define DnsIsAMailboxType(a) Dns_IsAMailboxType(a) #define DnsRecordTypeForName(a,b) Dns_RecordTypeForName(a,b) #define DnsRecordStringForType(a) Dns_RecordStringForType(a) #define DnsRecordStringForWritableType(a) Dns_RecordStringForWritableType(a) #define DnsIsStringCountValidForTextType(a,b) Dns_IsStringCountValidForTextType(a,b) // strings #define DnsCreateStringCopy(a,b) Dns_CreateStringCopy(a,b) #define DnsGetBufferLengthForStringCopy(a,b,c,d) Dns_GetBufferLengthForStringCopy(a,b,c,d) #define DnsCopyStringEx(a,b,c,d,e) Dns_CopyStringEx(a,b,c,d,e) #define DnsStringCopyAllocateEx(a,b,c,d) Dns_NameCopyAllocateEx(a,b,c,d) #define DnsValidateDnsName_UTF8(a) Dns_ValidateDnsName_UTF8(a) #define DnsValidateDnsName_W(a) Dns_ValidateDnsName_W(a) #define DnsRelationalCompare_UTF8(a,b,c,d) Dns_RelationalCompare_UTF8(a,b,c,d) #define DnsRelationalCompare_W(a,b,c,d) Dns_RelationalCompare_W(a,b,c,d) #define DnsValidateDnsString_UTF8(a) Dns_ValidateDnsString_UTF8(a) #define DnsValidateDnsString_W(a) Dns_ValidateDnsString_W(a) #define DnsCreateStandardDnsNameCopy(a,b,c) Dns_CreateStandardDnsNameCopy(a,b,c) #define DnsDowncaseDnsNameLabel(a,b,c,d) Dns_DowncaseDnsNameLabel(a,b,c,d) #define DnsUnicodeToUtf8(a,b,c,d) Dns_UnicodeToUtf8(a,b,c,d) #define DnsUtf8ToUnicode(a,b,c,d) Dns_Utf8ToUnicode(a,b,c,d) #define DnsValidateUtf8Byte(a,b) Dns_ValidateUtf8Byte(a,b) // address\string mapping // some ones to make official? #define DnsIpv6StringToAddress(a,b,c) Dns_Ip6StringToAddressEx_A(a,b,c) #define DnsIpv6AddressToString(a,b) Dns_Ip6AddressToString_A(a,b) #define DnsWriteReverseNameStringForIpAddress(a,b) Dns_WriteReverseNameForIp4Address(a,b) #define DnsWriteReverseNameStringForIpAddress_W(a,b)Dns_WriteReverseNameForIp4Address_W(a,b) #define DnsCreateReverseNameStringForIpAddress(a) Dns_CreateReverseNameStringForIpAddress(a) #endif // NO_DNSAPI_DLL // // Use old names // Covering old names with new -- done for dnsapi.dll (and associated utils) // This is done only for non-exported routines. // Exported routines must be directly covered. // // IP array #define DnsValidateIpAddressArray(a,b,c) Dns_ValidateIpAddressArray(a,b,c) #define DnsCreateIpAddressArrayCopy(a,b) Dns_CreateIpAddressArrayCopy(a,b) #define DnsCreateIpArray(a) Dns_CreateIpArray(a) #define DnsSizeofIpArray(a) Dns_SizeofIpArray(a) #define DnsBuildIpArray(a,b) Dns_BuildIpArray((a),(b)) #define DnsCreateIpArrayCopy(a) Dns_CreateIpArrayCopy(a) #define DnsIsAddressInIpArray(a,b) Dns_IsAddressInIpArray((a),(b)) #define DnsAddIpToIpArray(a,b) Dns_AddIpToIpArray((a),(b)) #define DnsClearIpArray(a) Dns_ClearIpArray(a) #define DnsCheckAndMakeIpArraySubset(a,b) Dns_CheckAndMakeIpArraySubset((a),(b)) #define DnsDeleteIpFromIpArray(a,b) Dns_DeleteIpFromIpArray((a),(b)) #define DnsRemoveZerosFromIpArray(a) Dns_RemoveZerosFromIpArray(a) #define DnsDiffOfIpArrays(a,b,c,d,e) Dns_DiffOfIpArrays((a),(b),(c),(d),(e)) #define DnsIntersectionOfIpArrays(a,b,c) Dns_IntersectionOfIpArrays((a),(b),(c)) // DNS configuration #define DnsInitNetworkInfo() Dns_InitNetworkInfo() #define DnsGetDnsAdapterInfo(a) Dns_GetDnsAdapterInfo(a) #define DnsGetDnsNetworkInfo(a,b) Dns_GetDnsNetworkInfo(a,b) #define DnsCreateAdapterInfo(a) Dns_CreateAdapterInfo(a) #define DnsCreateSearchList(a,b) Dns_CreateSearchList(a,b) #define DnsCreateNetworkInfo(a) Dns_CreateNetworkInfo(a) #define DnsSizeofAdapterInfo(a) Dns_SizeofAdapterInfo(a) #define DnsCreateAdapterInfoCopy(a) Dns_CreateAdapterInfoCopy(a) #define DnsCreateSearchListCopy(a) Dns_CreateSearchListCopy(a) #define DnsCreateNetworkInfoCopy(a) Dns_CreateNetworkInfoCopy(a) #define DnsAddAdapterInfoToNetworkInfo(a,b) Dns_AddAdapterInfoToNetworkInfo(a,b) #define DnsGetNextSearchName(a,b,c) Dns_GetNextSearchName(a,b,c) #define DnsConvertIpArrayToAdapterInfo(a) Dns_ConvertIpArrayToAdapterInfo(a) #define DnsConvertIpArrayToNetworkInfo(a,b) Dns_ConvertIpArrayToNetworkInfo(a,b) #define DnsConvertNetworkInfoToIpArray(a) Dns_ConvertNetworkInfoToIpArray(a) #define DnsFreeAdapterInfo(a) Dns_FreeAdapterInfo(a) #define DnsFreeSearchList(a) Dns_FreeSearchList(a) #define DnsFreeNetworkInfo(a) Dns_FreeNetworkInfo(a) // same stuff but the infamous "NetAdapter" #define DnsConvertNetworkInfoToIpArray(a) Dns_ConvertNetworkInfoToIpArray(a) #define DnsFreeNetworkInfo(a) Dns_FreeNetworkInfo(a) #define DnsCreateNetworkInfo(a) Dns_CreateNetworkInfo(a) #define DnsCreateNetworkInfoCopy(a) Dns_CreateNetworkInfoCopy(a) #define DnsCreateUpdateNetworkInfo(a,b) Dns_CreateUpdateNetworkInfo((b),NULL,(a),0) // packet #define DnsAllocateMsgBuf(a) Dns_AllocateMsgBuf(a) #define DnsInitializeMsgBuf(a) Dns_InitializeMsgBuf(a) #define DnsWriteDottedNameToPacket(a,b,c,d,e,f) Dns_WriteDottedNameToPacket(a,b,c,d,e,f) #define DnsWriteStringToPacket(a,b,c,d) Dns_WriteStringToPacket(a,b,c,d) #define DnsWriteQuestionToMessage(a,b,c,d) Dns_WriteQuestionToMessage(a,b,c,d) #define DnsWriteRecordStructureToMessage(a,b,c,d,e) Dns_WriteRecordStructureToMessage(a,b,c,d,e) #define DnsWriteRecordStructureToPacket(a,b,c) Dns_WriteRecordStructureToPacket(a,b,c) #define DnsAddRecordsToMessage(a,b,c) Dns_AddRecordsToMessage(a,b,c) #define DnsSkipPacketName(a,b) Dns_SkipPacketName(a,b) #define DnsExtractRecordsFromMessage(a,b,c) Dns_ExtractRecordsFromMessage(a,b,c) #define DnsReadPacketName(a,b,c,d,e,f,g) Dns_ReadPacketName(a,b,c,d,e,f,g) // socket #define DnsCreateSocket(a,b,c) Dns_CreateSocket(a,b,c) #define DnsCloseSocket(a) Dns_CloseSocket(a) #define DnsCloseConnection(a) Dns_CloseConnection(a) #define DnsSetupGlobalAsyncSocket() Dns_SetupGlobalAsyncSocket() // send #define DnsSend(a) Dns_Send(a) #define DnsRecv(b) Dns_Recv(b) #define DnsRecvUdp(b) Dns_RecvUdp(b) #define DnsSendMultipleUdp(a,b) Dns_SendMultipleUdp(a,b) #define DnsSendAndRecvUdp(a,b,c) Dns_SendAndRecvUdp(a,b,c) #define DnsSendAndRecvUdpEx(a,b,c) Dns_SendAndRecvUdpEx(a,b,c) #define DnsOpenTcpConnectionAndSend(a,b,c) Dns_OpenTcpConnectionAndSend(a,b,c) #define DnsRecvTcp(a) Dns_RecvTcp(a) #define DnsSendAndRecvTcp(a,b,c) Dns_SendAndRecvTcp(a,b,c) #define DnsInitializeMsgRemoteSockaddr(a,b) Dns_InitializeMsgRemoteSockaddr(a,b) // // Redefinitions to old naming // // DCR: remove once fixed // shouldn't be in use anywhere but DNS source tree // #if 0 #define DnsStartDebug(a,b,c,d,e) Dns_StartDebug(a,b,c,d,e) #define DnsEndDebug() Dns_EndDebug() #define DnsAssert(a,b,c) Dns_Assert(a,b,c) #define DnsDebugFlush() DnsDbg_Flush() #define DnsDebugCSEnter(a,b,c,d) DnsDbg_CSEnter(a,b,c,d) #define DnsDebugCSLeave(a,b,c,d) DnsDbg_CSLeave(a,b,c,d) #define DnsPrintf DnsDbg_Printf #define DnsDbgPrint DnsDbg_PrintfToDebugger #define DnsDebugLock() DnsDbg_Lock() #define DnsDebugUnlock() DnsDbg_Unlock() #endif #ifdef __cplusplus } #endif // __cplusplus #endif // _DNSLIBP_INCLUDED_