WindowsXP-SP1/ds/dns/dnslib/record.h
2020-09-30 16:53:49 +02:00

295 lines
5.9 KiB
C

/*++
Copyright(c) 1996-2000 Microsoft Corporation
Module Name:
record.h
Abstract:
Domain Name System (DNS) Library
Resource record definitions.
Author:
Jim Gilroy (jamesg) December 1996
Revision History:
--*/
#ifndef _DNS_RECORD_INCLUDED_
#define _DNS_RECORD_INCLUDED_
//
// Temp header while changing definition of DNS_RECORD structure
//
#undef DNS_PTR_DATA
#undef PDNS_PTR_DATA
#undef DNS_SOA_DATA
#undef PDNS_SOA_DATA
#undef DNS_MINFO_DATA
#undef PDNS_MINFO_DATA
#undef DNS_MX_DATA
#undef PDNS_MX_DATA
#undef DNS_TXT_DATA
#undef PDNS_TXT_DATA
#undef DNS_SIG_DATA
#undef PDNS_SIG_DATA
#undef DNS_KEY_DATA
#undef PDNS_KEY_DATA
#undef DNS_NXT_DATA
#undef PDNS_NXT_DATA
#undef DNS_SRV_DATA
#undef PDNS_SRV_DATA
#undef DNS_TSIG_DATA
#undef PDNS_TSIG_DATA
#undef DNS_TKEY_DATA
#undef PDNS_TKEY_DATA
#undef DNS_WINSR_DATA
#undef PDNS_WINSR_DATA
// the big one
#undef DNS_RECORD
#undef PDNS_RECORD
// the subs
#undef DNS_TEXT
#undef DNS_NAME
//
// Define PDNS_NAME and PDNS_TEXT to make explicit
//
#ifdef UNICODE
typedef LPWSTR PDNS_NAME;
#else
typedef LPSTR PDNS_NAME;
#endif
#ifdef UNICODE
typedef LPWSTR PDNS_TEXT;
#else
typedef LPSTR PDNS_TEXT;
#endif
//
// Data types
//
typedef struct
{
PDNS_NAME pszHost;
}
DNS_PTR_DATA, *PDNS_PTR_DATA;
typedef struct
{
PDNS_NAME pszPrimaryServer;
PDNS_NAME pszAdministrator;
DWORD dwSerialNo;
DWORD dwRefresh;
DWORD dwRetry;
DWORD dwExpire;
DWORD dwDefaultTtl;
}
DNS_SOA_DATA, *PDNS_SOA_DATA;
typedef struct
{
PDNS_NAME pszMailbox;
PDNS_NAME pszErrorsMailbox;
}
DNS_MINFO_DATA, *PDNS_MINFO_DATA;
typedef struct
{
PDNS_NAME pszExchange;
WORD wPreference;
WORD Pad; // keep ptrs DWORD aligned
}
DNS_MX_DATA, *PDNS_MX_DATA;
typedef struct
{
DWORD dwStringCount;
PDNS_TEXT pStringArray[1];
}
DNS_TXT_DATA, *PDNS_TXT_DATA;
typedef struct
{
PDNS_NAME pszSigner;
WORD wTypeCovered;
BYTE chAlgorithm;
BYTE chLabelCount;
DWORD dwOriginalTtl;
DWORD dwSigExpiration;
DWORD dwSigInception;
WORD wKeyTag;
WORD Pad; // keep byte field aligned
BYTE Signature[1];
}
DNS_SIG_DATA, *PDNS_SIG_DATA;
typedef struct
{
WORD wFlags;
BYTE chProtocol;
BYTE chAlgorithm;
BYTE Key[1];
}
DNS_KEY_DATA, *PDNS_KEY_DATA;
typedef struct
{
PDNS_NAME pszNext;
BYTE bTypeBitMap[1];
}
DNS_NXT_DATA, *PDNS_NXT_DATA;
typedef struct
{
PDNS_NAME pszTarget;
WORD wPriority;
WORD wWeight;
WORD wPort;
WORD Pad; // keep ptrs DWORD aligned
}
DNS_SRV_DATA, *PDNS_SRV_DATA;
typedef struct
{
PDNS_NAME pszAlgorithm;
PBYTE pAlgorithmPacket;
PBYTE pKey;
PBYTE pOtherData;
DWORD dwCreateTime;
DWORD dwExpireTime;
WORD wMode;
WORD wError;
WORD wKeyLength;
WORD wOtherLength;
UCHAR cAlgNameLength;
BOOLEAN fPacketPointers;
}
DNS_TKEY_DATA, *PDNS_TKEY_DATA;
typedef struct
{
PDNS_NAME pszAlgorithm;
PBYTE pAlgorithmPacket;
PBYTE pSignature;
PBYTE pOtherData;
LONGLONG i64CreateTime;
WORD wFudgeTime;
WORD wError;
WORD wSigLength;
WORD wOtherLength;
UCHAR cAlgNameLength;
BOOLEAN fPacketPointers;
}
DNS_TSIG_DATA, *PDNS_TSIG_DATA;
//
// MS only types -- only hit the wire in MS-MS zone transfer
//
typedef struct
{
DWORD dwMappingFlag;
DWORD dwLookupTimeout;
DWORD dwCacheTimeout;
PDNS_NAME pszResultDomain;
}
DNS_WINSR_DATA, *PDNS_WINSR_DATA;
//
// Record \ RR set structure
//
// Note: The dwReserved flag serves to insure that the substructures
// start on 64-bit boundaries. Since adding the LONGLONG to
// TSIG structure the compiler wants to start them there anyway
// (to 64-align). This insures that no matter what data fields
// are present we are properly 64-aligned.
//
// Do NOT pack this structure, as the substructures to be 64-aligned
// for Win64.
//
typedef struct _DnsRecord
{
struct _DnsRecord * pNext;
PDNS_NAME pszOwner;
WORD wType;
WORD wDataLength;
union
{
DWORD W; // flags as dword
DNSREC_FLAGS S; // flags as structure
} 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_SRV_DATA SRV, Srv;
DNS_TKEY_DATA TKEY, Tkey;
DNS_TSIG_DATA TSIG, Tsig;
DNS_ATMA_DATA ATMA, Atma;
DNS_WINS_DATA WINS, Wins;
DNS_WINSR_DATA WINSR, WinsR, NBSTAT, Nbstat;
} Data;
}
DNS_RECORD, *PDNS_RECORD;
#endif // _DNS_RECORD_INCLUDED_