|
|
/*++
Copyright (c) 1997-2001 Microsoft Corporation
Module Name:
export.c
Abstract:
Domain Name System (DNS) API
Covering functions for exported routines that are actually in dnslib.lib.
Author:
Jim Gilroy (jamesg) November, 1997
Environment:
User Mode - Win32
Revision History:
--*/
#include "local.h"
//
// SDK routines
//
//
// Name comparison
//
BOOL WINAPI DnsNameCompare_A( IN LPSTR pName1, IN LPSTR pName2 ) { return Dns_NameCompare_A( pName1, pName2 ); }
BOOL WINAPI DnsNameCompare_UTF8( IN LPSTR pName1, IN LPSTR pName2 ) { return Dns_NameCompare_UTF8( pName1, pName2 ); }
BOOL WINAPI DnsNameCompare_W( IN LPWSTR pName1, IN LPWSTR pName2 ) { return Dns_NameCompare_W( pName1, pName2 ); }
DNS_NAME_COMPARE_STATUS DnsNameCompareEx_A( IN LPCSTR pszLeftName, IN LPCSTR pszRightName, IN DWORD dwReserved ) { return Dns_NameCompareEx( pszLeftName, pszRightName, dwReserved, DnsCharSetAnsi ); }
DNS_NAME_COMPARE_STATUS DnsNameCompareEx_UTF8( IN LPCSTR pszLeftName, IN LPCSTR pszRightName, IN DWORD dwReserved ) { return Dns_NameCompareEx( pszLeftName, pszRightName, dwReserved, DnsCharSetUtf8 ); }
DNS_NAME_COMPARE_STATUS DnsNameCompareEx_W( IN LPCWSTR pszLeftName, IN LPCWSTR pszRightName, IN DWORD dwReserved ) { return Dns_NameCompareEx( (LPSTR) pszLeftName, (LPSTR) pszRightName, dwReserved, DnsCharSetUnicode ); }
//
// Name validation
//
DNS_STATUS DnsValidateName_UTF8( IN LPCSTR pszName, IN DNS_NAME_FORMAT Format ) { return Dns_ValidateName_UTF8( pszName, Format ); }
DNS_STATUS DnsValidateName_W( IN LPCWSTR pszName, IN DNS_NAME_FORMAT Format ) { return Dns_ValidateName_W( pszName, Format ); }
DNS_STATUS DnsValidateName_A( IN LPCSTR pszName, IN DNS_NAME_FORMAT Format ) { return Dns_ValidateName_A( pszName, Format ); }
//
// Record List
//
BOOL DnsRecordCompare( IN PDNS_RECORD pRecord1, IN PDNS_RECORD pRecord2 ) { return Dns_RecordCompare( pRecord1, pRecord2 ); }
BOOL WINAPI DnsRecordSetCompare( IN OUT PDNS_RECORD pRR1, IN OUT PDNS_RECORD pRR2, OUT PDNS_RECORD * ppDiff1, OUT PDNS_RECORD * ppDiff2 ) { return Dns_RecordSetCompare( pRR1, pRR2, ppDiff1, ppDiff2 ); }
PDNS_RECORD WINAPI DnsRecordCopyEx( IN PDNS_RECORD pRecord, IN DNS_CHARSET CharSetIn, IN DNS_CHARSET CharSetOut ) { return Dns_RecordCopyEx( pRecord, CharSetIn, CharSetOut ); }
PDNS_RECORD WINAPI DnsRecordSetCopyEx( IN PDNS_RECORD pRecordSet, IN DNS_CHARSET CharSetIn, IN DNS_CHARSET CharSetOut ) { return Dns_RecordSetCopyEx( pRecordSet, CharSetIn, CharSetOut ); }
VOID WINAPI DnsRecordListFree( IN OUT PDNS_RECORD pRecordList, IN DNS_FREE_TYPE FreeType ) { Dns_RecordListFreeEx( pRecordList, (BOOL)FreeType ); }
PDNS_RECORD WINAPI DnsRecordSetDetach( IN OUT PDNS_RECORD pRR ) { return Dns_RecordSetDetach( pRR ); }
//
// Timer (timer.c)
//
DWORD GetCurrentTimeInSeconds( VOID ) { return Dns_GetCurrentTimeInSeconds(); }
//
// Resource record type utilities (record.c)
//
BOOL _fastcall DnsIsAMailboxType( IN WORD wType ) { return Dns_IsAMailboxType( wType ); }
WORD DnsRecordTypeForName( IN PCHAR pszName, IN INT cchNameLength ) { return Dns_RecordTypeForName( pszName, cchNameLength ); }
PCHAR DnsRecordStringForType( IN WORD wType ) { return Dns_RecordStringForType( wType ); }
PCHAR DnsRecordStringForWritableType( IN WORD wType ) { return Dns_RecordStringForWritableType( wType ); }
BOOL DnsIsStringCountValidForTextType( IN WORD wType, IN WORD StringCount ) { return Dns_IsStringCountValidForTextType( wType, StringCount ); }
//
// DCR_CLEANUP: these probably don't need exporting
//
DWORD DnsWinsRecordFlagForString( IN PCHAR pchName, IN INT cchNameLength ) { return Dns_WinsRecordFlagForString( pchName, cchNameLength ); }
PCHAR DnsWinsRecordFlagString( IN DWORD dwFlag, IN OUT PCHAR pchFlag ) { return Dns_WinsRecordFlagString( dwFlag, pchFlag ); }
//
// DNS utilities (dnsutil.c)
//
// DCR_DELETE: DnsStatusString routines should be able to use win32 API
//
//
// Remove marco definitions so we can compile
// The idea here is we can have the entry points in the Dll
// for any old code, BUT the macros (dnsapi.h) point at new entry points
// for freshly built modules.
//
#ifdef DnsStatusToErrorString_A
#undef DnsStatusToErrorString_A
#endif
LPSTR _fastcall DnsStatusString( IN DNS_STATUS Status ) { return Dns_StatusString( Status ); }
DNS_STATUS _fastcall DnsMapRcodeToStatus( IN BYTE ResponseCode ) { return Dns_MapRcodeToStatus( ResponseCode ); }
BYTE _fastcall DnsIsStatusRcode( IN DNS_STATUS Status ) { return Dns_IsStatusRcode( Status ); }
//
// Name routines (string.c and dnsutil.c)
//
LPSTR _fastcall DnsGetDomainName( IN LPSTR pszName ) { return Dns_GetDomainName( pszName ); }
//
// String routines (string.c)
//
LPSTR DnsCreateStringCopy( IN PCHAR pchString, IN DWORD cchString ) { return Dns_CreateStringCopy( pchString, cchString ); }
DWORD DnsGetBufferLengthForStringCopy( IN PCHAR pchString, IN DWORD cchString, IN BOOL fUnicodeIn, IN BOOL fUnicodeOut ) { return (WORD) Dns_GetBufferLengthForStringCopy( pchString, cchString, fUnicodeIn ? DnsCharSetUnicode : DnsCharSetUtf8, fUnicodeOut ? DnsCharSetUnicode : DnsCharSetUtf8 ); }
//
// Need to
// - get this unexported or
// - real verions or
// - explicit UTF8-unicode converter if thats what's desired
//
PVOID DnsCopyStringEx( OUT PBYTE pBuffer, IN PCHAR pchString, IN DWORD cchString, IN BOOL fUnicodeIn, IN BOOL fUnicodeOut ) { DWORD resultLength;
resultLength = Dns_StringCopy( pBuffer, NULL, pchString, cchString, fUnicodeIn ? DnsCharSetUnicode : DnsCharSetUtf8, fUnicodeOut ? DnsCharSetUnicode : DnsCharSetUtf8 );
return( pBuffer + resultLength ); }
PVOID DnsStringCopyAllocateEx( IN PCHAR pchString, IN DWORD cchString, IN BOOL fUnicodeIn, IN BOOL fUnicodeOut ) { return Dns_StringCopyAllocate( pchString, cchString, fUnicodeIn ? DnsCharSetUnicode : DnsCharSetUtf8, fUnicodeOut ? DnsCharSetUnicode : DnsCharSetUtf8 ); }
//
// The new and improved string copy routines . . .
//
DWORD DnsNameCopy( OUT PBYTE pBuffer, IN OUT PDWORD pdwBufLength, IN PCHAR pchString, IN DWORD cchString, IN DNS_CHARSET CharSetIn, IN DNS_CHARSET CharSetOut ) { return Dns_NameCopy( pBuffer, pdwBufLength, pchString, cchString, CharSetIn, CharSetOut ); }
PVOID DnsNameCopyAllocate( IN PCHAR pchString, IN DWORD cchString, IN DNS_CHARSET CharSetIn, IN DNS_CHARSET CharSetOut ) { return Dns_NameCopyAllocate ( pchString, cchString, CharSetIn, CharSetOut ); }
//
// String\Address mapping
//
// DCR: eliminate these exports
// DCR: fix these to SDK the real deal
//
// DCR: probably shouldn't expose alloc -- easy workaround for caller
//
PCHAR DnsWriteReverseNameStringForIpAddress( OUT PCHAR pBuffer, IN IP4_ADDRESS Ip4Addr ) { return Dns_Ip4AddressToReverseName_A( pBuffer, Ip4Addr ); }
PCHAR DnsCreateReverseNameStringForIpAddress( IN IP4_ADDRESS Ip4Addr ) { return Dns_Ip4AddressToReverseNameAlloc_A( Ip4Addr ); }
//
// DCR_CLEANUP: pull these in favor of winsock IPv6 string routines
//
BOOL DnsIpv6StringToAddress( OUT PIP6_ADDRESS pIp6Addr, IN PCHAR pchString, IN DWORD dwStringLength ) { return Dns_Ip6StringToAddressEx_A( pIp6Addr, pchString, dwStringLength ); }
VOID DnsIpv6AddressToString( OUT PCHAR pchString, IN PIP6_ADDRESS pIp6Addr ) { Dns_Ip6AddressToString_A( pchString, pIp6Addr ); }
DNS_STATUS DnsValidateDnsString_UTF8( IN LPCSTR pszName ) { return Dns_ValidateDnsString_UTF8( pszName ); }
DNS_STATUS DnsValidateDnsString_W( IN LPCWSTR pszName ) { return Dns_ValidateDnsString_W( pszName ); }
//
// Resource record utilities (rr*.c)
//
PDNS_RECORD WINAPI DnsAllocateRecord( IN WORD wBufferLength ) { return Dns_AllocateRecord( wBufferLength ); }
PDNS_RECORD DnsRecordBuild_UTF8( IN OUT PDNS_RRSET pRRSet, IN LPSTR pszOwner, IN WORD wType, IN BOOL fAdd, IN UCHAR Section, IN INT Argc, IN PCHAR * Argv ) { return Dns_RecordBuild_A( pRRSet, pszOwner, wType, fAdd, Section, Argc, Argv ); }
PDNS_RECORD DnsRecordBuild_W( IN OUT PDNS_RRSET pRRSet, IN LPWSTR pszOwner, IN WORD wType, IN BOOL fAdd, IN UCHAR Section, IN INT Argc, IN PWCHAR * Argv ) { return Dns_RecordBuild_W( pRRSet, pszOwner, wType, fAdd, Section, Argc, Argv ); }
//
// Message processing
//
DNS_STATUS WINAPI DnsExtractRecordsFromMessage_W( IN PDNS_MESSAGE_BUFFER pDnsBuffer, IN WORD wMessageLength, OUT PDNS_RECORD * ppRecord ) /*++
Routine Description:
None.
Arguments:
None.
Return Value:
None.
--*/ { return Dns_ExtractRecordsFromBuffer( pDnsBuffer, wMessageLength, TRUE, ppRecord ); }
DNS_STATUS WINAPI DnsExtractRecordsFromMessage_UTF8( IN PDNS_MESSAGE_BUFFER pDnsBuffer, IN WORD wMessageLength, OUT PDNS_RECORD * ppRecord ) /*++
Routine Description:
None.
Arguments:
None.
Return Value:
None.
--*/ { return Dns_ExtractRecordsFromBuffer( pDnsBuffer, wMessageLength, FALSE, ppRecord ); }
//
// Debug sharing
//
PDNS_DEBUG_INFO DnsApiSetDebugGlobals( IN OUT PDNS_DEBUG_INFO pInfo ) { return Dns_SetDebugGlobals( pInfo ); }
//
// Config UI, ipconfig backcompat
//
// DCR_CLEANUP: Backcompat query config stuff -- yank once clean cycle
//
//
// DCR: Questionable exports
//
LPSTR DnsCreateStandardDnsNameCopy( IN PCHAR pchName, IN DWORD cchName, IN DWORD dwFlag ) { return Dns_CreateStandardDnsNameCopy( pchName, cchName, dwFlag ); }
//
// DCR_CLEANUP: who is using this?
//
DWORD DnsDowncaseDnsNameLabel( OUT PCHAR pchResult, IN PCHAR pchLabel, IN DWORD cchLabel, IN DWORD dwFlags ) { return Dns_DowncaseNameLabel( pchResult, pchLabel, cchLabel, dwFlags ); }
//
// DCR_CLEANUP: who is using my direct UTF8 conversions AS API!
//
DWORD _fastcall DnsUnicodeToUtf8( IN PWCHAR pwUnicode, IN DWORD cchUnicode, OUT PCHAR pchResult, IN DWORD cchResult ) { return Dns_UnicodeToUtf8( pwUnicode, cchUnicode, pchResult, cchResult ); }
DWORD _fastcall DnsUtf8ToUnicode( IN PCHAR pchUtf8, IN DWORD cchUtf8, OUT PWCHAR pwResult, IN DWORD cwResult ) { return Dns_Utf8ToUnicode( pchUtf8, cchUtf8, pwResult, cwResult ); }
DNS_STATUS DnsValidateUtf8Byte( IN BYTE chUtf8, IN OUT PDWORD pdwTrailCount ) { return Dns_ValidateUtf8Byte( chUtf8, pdwTrailCount ); }
//
// Old cluster call
//
// DCR: cleanup -- remove once cluster fixed up
//
VOID DnsNotifyResolverClusterIp( IN IP_ADDRESS ClusterIp, IN BOOL fAdd ) /*++
Routine Description:
Notify resolver of cluster IP coming on\offline.
Arguments:
ClusterIp -- cluster IP
fAdd -- TRUE if coming online; FALSE if offline.
Return Value:
None
--*/ { SOCKADDR_IN sockaddrIn;
DNSDBG( TRACE, ( "DnsNotifyResolverClusterIp( %08x, %d )\n", ClusterIp, fAdd ));
sockaddrIn.sin_family = AF_INET; sockaddrIn.sin_addr.s_addr = ClusterIp;
DnsRegisterClusterAddress( 0xd734453d, NULL, // no name
(PSOCKADDR) & sockaddrIn, fAdd ? DNS_CLUSTER_ADD : DNS_CLUSTER_DELETE_IP ); }
//
// backcompat for macros
// - DNS server list
//
// this is called without dnsapi.h include somewhere in IIS
//
#undef DnsGetDnsServerList
DWORD DnsGetDnsServerList( OUT PIP4_ARRAY * ppDnsArray ) { *ppDnsArray = GetDnsServerList( TRUE );
// if no servers read, return
if ( !*ppDnsArray ) { return 0; }
return( (*ppDnsArray)->AddrCount ); }
//
// Config UI, ipconfig backcompat
//
// DCR_CLEANUP: this is called without dnsapi.h include somewhere in DHCP
//
#undef DnsGetPrimaryDomainName_A
#define PrivateQueryConfig( Id ) DnsQueryConfigAllocEx( Id, NULL, FALSE )
PSTR WINAPI DnsGetPrimaryDomainName_A( VOID ) { return PrivateQueryConfig( DnsConfigPrimaryDomainName_A ); }
//
// End export.c
//
|