#ifndef _WINDNS_H
#define _WINDNS_H
-#if __GNUC__ >= 3
-#pragma GCC system_header
-#endif
#ifdef __cplusplus
extern "C" {
#define DNS_UPDATE_FORCE_SECURITY_NEGO 0x800
#define DNS_UPDATE_RESERVED 0xffff0000
+#define DNS_CONFIG_FLAG_ALLOC TRUE
+
#ifndef RC_INVOKE
typedef DWORD IP4_ADDRESS;
typedef DWORD DNS_STATUS;
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;
PDNS_RECORD pLastRR;
} DNS_RRSET, *PDNS_RRSET;
+#define DNS_RRSET_INIT( rrset ) \
+{ \
+ PDNS_RRSET _prrset = &(rrset); \
+ _prrset->pFirstRR = NULL; \
+ _prrset->pLastRR = (PDNS_RECORD) &_prrset->pFirstRR; \
+}
+
+#define DNS_RRSET_ADD( rrset, pnewRR ) \
+{ \
+ PDNS_RRSET _prrset = &(rrset); \
+ PDNS_RECORD _prrnew = (pnewRR); \
+ _prrset->pLastRR->pNext = _prrnew; \
+ _prrset->pLastRR = _prrnew; \
+}
+
+#define DNS_RRSET_TERMINATE( rrset ) \
+{ \
+ PDNS_RRSET _prrset = &(rrset); \
+ _prrset->pLastRR->pNext = NULL; \
+}
+
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*);