home *** CD-ROM | disk | FTP | other *** search
- #ifndef _WINDNS_H
- #define _WINDNS_H
- #if __GNUC__ >= 3
- #pragma GCC system_header
- #endif
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- #define DNS_QUERY_STANDARD 0x0
- #define DNS_QUERY_ACCEPT_TRUNCATED_RESPONSE 0x1
- #define DNS_QUERY_USE_TCP_ONLY 0x2
- #define DNS_QUERY_NO_RECURSION 0x4
- #define DNS_QUERY_BYPASS_CACHE 0x8
- #define DNS_QUERY_NO_WIRE_QUERY 0x10
- #define DNS_QUERY_NO_LOCAL_NAME 0x20
- #define DNS_QUERY_NO_HOSTS_FILE 0x40
- #define DNS_QUERY_NO_NETBT 0x80
- #define DNS_QUERY_TREAT_AS_FQDN 0x1000
- #define DNS_QUERY_WIRE_ONLY 0x100
- #define DNS_QUERY_RETURN_MESSAGE 0x200
- #define DNS_QUERY_DONT_RESET_TTL_VALUES 0x100000
- #define DNS_QUERY_RESERVED 0xff000000
-
- #define DNS_UPDATE_SECURITY_USE_DEFAULT 0x0
- #define DNS_UPDATE_SECURITY_OFF 0x10
- #define DNS_UPDATE_SECURITY_ON 0x20
- #define DNS_UPDATE_SECURITY_ONLY 0x100
- #define DNS_UPDATE_CACHE_SECURITY_CONTEXT 0x200
- #define DNS_UPDATE_TEST_USE_LOCAL_SYS_ACCT 0x400
- #define DNS_UPDATE_FORCE_SECURITY_NEGO 0x800
- #define DNS_UPDATE_RESERVED 0xffff0000
-
- #ifndef RC_INVOKE
- typedef DWORD IP4_ADDRESS;
- typedef DWORD DNS_STATUS;
- enum {
- DNS_TYPE_A=1,
- DNS_TYPE_NS,
- DNS_TYPE_MD,
- DNS_TYPE_MF,
- DNS_TYPE_CNAME,
- DNS_TYPE_SOA,
- DNS_TYPE_MB,
- DNS_TYPE_MG,
- DNS_TYPE_MR,
- DNS_TYPE_NULL,
- DNS_TYPE_WKS,
- DNS_TYPE_PTR,
- DNS_TYPE_HINFO,
- DNS_TYPE_MINFO,
- DNS_TYPE_MX,
- DNS_TYPE_TEXT
- };
- typedef enum _DNS_CHARSET
- {
- DnsCharSetUnknown,
- DnsCharSetUnicode,
- DnsCharSetUtf8,
- DnsCharSetAnsi
- } DNS_CHARSET;
- typedef enum
- {
- DnsConfigPrimaryDomainName_W,
- DnsConfigPrimaryDomainName_A,
- DnsConfigPrimaryDomainName_UTF8,
- DnsConfigAdapterDomainName_W,
- DnsConfigAdapterDomainName_A,
- DnsConfigAdapterDomainName_UTF8,
- DnsConfigDnsServerList,
- DnsConfigSearchList,
- DnsConfigAdapterInfo,
- DnsConfigPrimaryHostNameRegistrationEnabled,
- DnsConfigAdapterHostNameRegistrationEnabled,
- DnsConfigAddressRegistrationMaxCount,
- DnsConfigHostName_W,
- DnsConfigHostName_A,
- DnsConfigHostName_UTF8,
- DnsConfigFullHostName_W,
- DnsConfigFullHostName_A,
- DnsConfigFullHostName_UTF8
- } DNS_CONFIG_TYPE;
- typedef enum
- {
- DnsFreeFlat = 0,
- DnsFreeRecordList,
- DnsFreeParsedMessageFields
- } DNS_FREE_TYPE;
- typedef enum _DNS_NAME_FORMAT
- {
- DnsNameDomain,
- DnsNameDomainLabel,
- DnsNameHostnameFull,
- DnsNameHostnameLabel,
- DnsNameWildcard,
- DnsNameSrvRecord
- } DNS_NAME_FORMAT;
- typedef enum
- {
- DnsSectionQuestion,
- DnsSectionAnswer,
- DnsSectionAuthority,
- DnsSectionAdditional
- } DNS_SECTION;
- typedef struct _IP4_ARRAY {
- DWORD AddrCount;
- IP4_ADDRESS AddrArray[1];
- } IP4_ARRAY, *PIP4_ARRAY;
- typedef struct {
- DWORD IP6Dword[4];
- } IP6_ADDRESS, *PIP6_ADDRESS, DNS_IP6_ADDRESS, *PDNS_IP6_ADDRESS;
- typedef struct _DNS_HEADER {
- WORD Xid;
- BYTE RecursionDesired;
- BYTE Truncation;
- BYTE Authoritative;
- BYTE Opcode;
- BYTE IsResponse;
- BYTE ResponseCode;
- BYTE Reserved;
- BYTE RecursionAvailable;
- WORD QuestionCount;
- WORD AnswerCount;
- WORD NameServerCount;
- WORD AdditionalCount;
- } DNS_HEADER, *PDNS_HEADER;
- typedef struct _DNS_MESSAGE_BUFFER {
- DNS_HEADER MessageHead;
- CHAR MessageBody[1];
- } DNS_MESSAGE_BUFFER, *PDNS_MESSAGE_BUFFER;
- typedef struct _DnsRecordFlags {
- DWORD Section :2;
- DWORD Delete :1;
- DWORD CharSet :2;
- DWORD Unused :3;
- DWORD Reserved :24;
- } DNS_RECORD_FLAGS;
- #define DNSREC_QUESTION 0
- #define DNSREC_ANSWER 1
- #define DNSREC_AUTHORITY 2
- #define DNSREC_ADDITIONAL 3
- typedef struct {
- IP4_ADDRESS IpAddress;
- } DNS_A_DATA, *PDNS_A_DATA;
- typedef struct {
- DNS_IP6_ADDRESS Ip6Address;
- } DNS_AAAA_DATA, *PDNS_AAAA_DATA;
- #define DNS_ATMA_MAX_ADDR_LENGTH 20
- typedef struct {
- BYTE AddressType;
- BYTE Address[DNS_ATMA_MAX_ADDR_LENGTH];
- } DNS_ATMA_DATA, *PDNS_ATMA_DATA;
- typedef struct {
- WORD wFlags;
- BYTE chProtocol;
- BYTE chAlgorithm;
- BYTE Key[1];
- } DNS_KEY_DATA, *PDNS_KEY_DATA;
- typedef struct {
- WORD wVersion;
- WORD wSize;
- WORD wHorPrec;
- WORD wVerPrec;
- DWORD dwLatitude;
- DWORD dwLongitude;
- DWORD dwAltitude;
- } DNS_LOC_DATA, *PDNS_LOC_DATA;
- typedef struct {
- LPTSTR pNameMailbox;
- LPTSTR pNameErrorsMailbox;
- } DNS_MINFO_DATA, *PDNS_MINFO_DATA;
- typedef struct {
- LPTSTR pNameExchange;
- WORD wPreference;
- WORD Pad;
- } DNS_MX_DATA, *PDNS_MX_DATA;
- typedef struct {
- DWORD dwByteCount;
- BYTE Data[1];
- } DNS_NULL_DATA, *PDNS_NULL_DATA;
- typedef struct {
- LPTSTR pNameNext;
- WORD wNumTypes;
- WORD wTypes[1];
- } DNS_NXT_DATA, *PDNS_NXT_DATA;
- typedef struct {
- LPTSTR pNameHost;
- } DNS_PTR_DATA, *PDNS_PTR_DATA;
- typedef struct {
- LPTSTR pNameSigner;
- WORD wTypeCovered;
- BYTE chAlgorithm;
- BYTE chLabelCount;
- DWORD dwOriginalTtl;
- DWORD dwExpiration;
- DWORD dwTimeSigned;
- WORD wKeyTag;
- WORD Pad;
- BYTE Signature[1];
- } DNS_SIG_DATA, *PDNS_SIG_DATA;
- typedef struct {
- LPTSTR pNamePrimaryServer;
- LPTSTR pNameAdministrator;
- DWORD dwSerialNo;
- DWORD dwRefresh;
- DWORD dwRetry;
- DWORD dwExpire;
- DWORD dwDefaultTtl;
- } DNS_SOA_DATA, *PDNS_SOA_DATA;
- typedef struct {
- LPTSTR pNameTarget;
- WORD wPriority;
- WORD wWeight;
- WORD wPort;
- WORD Pad;
- } DNS_SRV_DATA, *PDNS_SRV_DATA;
- typedef struct {
- DWORD dwStringCount;
- LPTSTR pStringArray[1];
- } DNS_TXT_DATA, *PDNS_TXT_DATA;
- typedef struct {
- LPTSTR pNameAlgorithm;
- PBYTE pAlgorithmPacket;
- PBYTE pKey;
- PBYTE pOtherData;
- DWORD dwCreateTime;
- DWORD dwExpireTime;
- WORD wMode;
- WORD wError;
- WORD wKeyLength;
- WORD wOtherLength;
- UCHAR cAlgNameLength;
- BOOL bPacketPointers;
- } DNS_TKEY_DATA, *PDNS_TKEY_DATA;
- typedef struct {
- LPTSTR pNameAlgorithm;
- PBYTE pAlgorithmPacket;
- PBYTE pSignature;
- PBYTE pOtherData;
- LONGLONG i64CreateTime;
- WORD wFudgeTime;
- WORD wOriginalXid;
- WORD wError;
- WORD wSigLength;
- WORD wOtherLength;
- UCHAR cAlgNameLength;
- BOOL bPacketPointers;
- } DNS_TSIG_DATA, *PDNS_TSIG_DATA;
- typedef struct {
- DWORD dwMappingFlag;
- DWORD dwLookupTimeout;
- DWORD dwCacheTimeout;
- DWORD cWinsServerCount;
- IP4_ADDRESS WinsServers[1];
- } DNS_WINS_DATA, *PDNS_WINS_DATA;
- typedef struct {
- DWORD dwMappingFlag;
- DWORD dwLookupTimeout;
- DWORD dwCacheTimeout;
- LPTSTR pNameResultDomain;
- } DNS_WINSR_DATA, *PDNS_WINSR_DATA;
- typedef struct _DNS_WIRE_QUESTION {
- WORD QuestionType;
- WORD QuestionClass;
- } DNS_WIRE_QUESTION, *PDNS_WIRE_QUESTION;
- typedef struct _DNS_WIRE_RECORD {
- WORD RecordType;
- WORD RecordClass;
- DWORD TimeToLive;
- WORD DataLength;
- } DNS_WIRE_RECORD, *PDNS_WIRE_RECORD;
- typedef struct {
- IP4_ADDRESS IpAddress;
- UCHAR chProtocol;
- BYTE BitMask[1];
- } DNS_WKS_DATA, *PDNS_WKS_DATA;
- typedef struct _DnsRecord {
- struct _DnsRecord* pNext;
- LPTSTR pName;
- WORD wType;
- WORD wDataLength;
- union {
- DWORD DW;
- DNS_RECORD_FLAGS S;
- } Flags;
- DWORD dwTtl;
- DWORD dwReserved;
- union {
- DNS_A_DATA A;
- DNS_SOA_DATA SOA, Soa;
- DNS_PTR_DATA PTR, Ptr, NS, Ns, CNAME, Cname, MB, Mb,
- MD, Md, MF, Mf, MG, Mg, MR, Mr;
- DNS_MINFO_DATA MINFO, Minfo, RP, Rp;
- DNS_MX_DATA MX, Mx, AFSDB, Afsdb, RT, Rt;
- DNS_TXT_DATA HINFO, Hinfo, ISDN, Isdn, TXT, Txt, X25;
- DNS_NULL_DATA Null;
- DNS_WKS_DATA WKS, Wks;
- DNS_AAAA_DATA AAAA;
- DNS_KEY_DATA KEY, Key;
- DNS_SIG_DATA SIG, Sig;
- DNS_ATMA_DATA ATMA, Atma;
- DNS_NXT_DATA NXT, Nxt;
- DNS_SRV_DATA SRV, Srv;
- DNS_TKEY_DATA TKEY, Tkey;
- DNS_TSIG_DATA TSIG, Tsig;
- DNS_WINS_DATA WINS, Wins;
- DNS_WINSR_DATA WINSR, WinsR, NBSTAT, Nbstat;
- } Data;
- } DNS_RECORD, *PDNS_RECORD;
- typedef struct _DnsRRSet {
- PDNS_RECORD pFirstRR;
- PDNS_RECORD pLastRR;
- } DNS_RRSET, *PDNS_RRSET;
-
- DNS_STATUS WINAPI DnsAcquireContextHandle_A(DWORD,PVOID,HANDLE*);
- DNS_STATUS WINAPI DnsAcquireContextHandle_W(DWORD,PVOID,HANDLE*);
- DNS_STATUS WINAPI DnsExtractRecordsFromMessage_W(PDNS_MESSAGE_BUFFER,WORD,PDNS_RECORD*);
- DNS_STATUS WINAPI DnsExtractRecordsFromMessage_UTF8(PDNS_MESSAGE_BUFFER,WORD,PDNS_RECORD*);
- DNS_STATUS WINAPI DnsModifyRecordsInSet_A(PDNS_RECORD,PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
- DNS_STATUS WINAPI DnsModifyRecordsInSet_W(PDNS_RECORD,PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
- DNS_STATUS WINAPI DnsModifyRecordsInSet_UTF8(PDNS_RECORD,PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
- BOOL WINAPI DnsNameCompare_A(LPSTR,LPSTR);
- BOOL WINAPI DnsNameCompare_W(LPWSTR,LPWSTR);
- DNS_STATUS WINAPI DnsQuery_A(PCSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORD*,PVOID*);
- DNS_STATUS WINAPI DnsQuery_W(PCWSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORD*,PVOID*);
- DNS_STATUS WINAPI DnsQuery_UTF8(PCSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORD*,PVOID*);
- DNS_STATUS WINAPI DnsQueryConfig(DNS_CONFIG_TYPE,DWORD,PWSTR,PVOID,PVOID,PDWORD);
- BOOL WINAPI DnsRecordCompare(PDNS_RECORD,PDNS_RECORD);
- PDNS_RECORD WINAPI DnsRecordCopyEx(PDNS_RECORD,DNS_CHARSET,DNS_CHARSET);
- void WINAPI DnsRecordListFree(PDNS_RECORD,DNS_FREE_TYPE);
- BOOL WINAPI DnsRecordSetCompare(PDNS_RECORD,PDNS_RECORD,PDNS_RECORD*,PDNS_RECORD*);
- PDNS_RECORD WINAPI DnsRecordSetCopyEx(PDNS_RECORD,DNS_CHARSET,DNS_CHARSET);
- PDNS_RECORD WINAPI DnsRecordSetDetach(PDNS_RECORD);
- void WINAPI DnsReleaseContextHandle(HANDLE);
- DNS_STATUS WINAPI DnsReplaceRecordSetA(PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
- DNS_STATUS WINAPI DnsReplaceRecordSetW(PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
- DNS_STATUS WINAPI DnsReplaceRecordSetUTF8(PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
- DNS_STATUS WINAPI DnsValidateName_A(LPCSTR,DNS_NAME_FORMAT);
- DNS_STATUS WINAPI DnsValidateName_W(LPCWSTR, DNS_NAME_FORMAT);
- DNS_STATUS WINAPI DnsValidateName_UTF8(LPCSTR,DNS_NAME_FORMAT);
- BOOL WINAPI DnsWriteQuestionToBuffer_W(PDNS_MESSAGE_BUFFER,LPDWORD,LPWSTR,WORD,WORD,BOOL);
- BOOL WINAPI DnsWriteQuestionToBuffer_UTF8(PDNS_MESSAGE_BUFFER,LPDWORD,LPSTR,WORD,WORD,BOOL);
-
- #ifdef UNICODE
- #define DnsAcquireContextHandle DnsAcquireContextHandle_W
- #define DnsModifyRecordsInSet DnsModifyRecordsInSet_W
- #define DnsNameCompare DnsNameCompare_W
- #define DnsQuery DnsQuery_W
- #define DnsReplaceRecordSet DnsReplaceRecordSetW
- #define DnsValidateName DnsValidateName_W
- #else
- #define DnsAcquireContextHandle DnsAcquireContextHandle_A
- #define DnsModifyRecordsInSet DnsModifyRecordsInSet_A
- #define DnsNameCompare DnsNameCompare_A
- #define DnsQuery DnsQuery_A
- #define DnsReplaceRecordSet DnsReplaceRecordSetA
- #define DnsValidateName DnsValidateName_A
- #endif
-
- #endif /* RC_INVOKED */
-
- #ifdef __cplusplus
- }
- #endif
-
- #endif /* _WINDNS_H */
-