mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
258 lines
4.7 KiB
258 lines
4.7 KiB
/*++
|
|
|
|
Copyright (c) 1997 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
dnsrpcp.h
|
|
|
|
Abstract:
|
|
|
|
Domain Name System (DNS)
|
|
|
|
DNS Record RPC defs
|
|
|
|
Author:
|
|
|
|
Glenn Curtis (glennc) January 11, 1997
|
|
Jim Gilroy (jamesg) April 3, 1997
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
|
|
#ifndef _DNSRPCP_INCLUDED_
|
|
#define _DNSRPCP_INCLUDED_
|
|
|
|
|
|
#include <dns.h>
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif // _cplusplus
|
|
|
|
|
|
#ifdef MIDL_PASS
|
|
|
|
//
|
|
// Record data for specific types
|
|
//
|
|
// These types don't require MIDL specific definitions and are taken
|
|
// directly from dnsapi.h. The copying is ugly, but trying to get a
|
|
// MIDL safe version of dnsapi.h, leaves it much uglier.
|
|
//
|
|
|
|
typedef struct
|
|
{
|
|
IP_ADDRESS ipAddress;
|
|
}
|
|
DNS_A_DATA, *PDNS_A_DATA;
|
|
|
|
typedef struct
|
|
{
|
|
DNS_NAME nameHost;
|
|
}
|
|
DNS_PTR_DATA, *PDNS_PTR_DATA;
|
|
|
|
typedef struct
|
|
{
|
|
DNS_NAME namePrimaryServer;
|
|
DNS_NAME nameAdministrator;
|
|
DWORD dwSerialNo;
|
|
DWORD dwRefresh;
|
|
DWORD dwRetry;
|
|
DWORD dwExpire;
|
|
DWORD dwDefaultTtl;
|
|
}
|
|
DNS_SOA_DATA, *PDNS_SOA_DATA;
|
|
|
|
typedef struct
|
|
{
|
|
DNS_NAME nameMailbox;
|
|
DNS_NAME nameErrorsMailbox;
|
|
}
|
|
DNS_MINFO_DATA, *PDNS_MINFO_DATA;
|
|
|
|
typedef struct
|
|
{
|
|
DNS_NAME nameExchange;
|
|
WORD wPreference;
|
|
WORD Pad; // keep ptrs DWORD aligned
|
|
}
|
|
DNS_MX_DATA, *PDNS_MX_DATA;
|
|
|
|
typedef struct
|
|
{
|
|
DWORD dwStringCount;
|
|
DNS_TEXT pStringArray[1];
|
|
}
|
|
DNS_TXT_DATA, *PDNS_TXT_DATA;
|
|
|
|
typedef struct
|
|
{
|
|
DWORD dwByteCount;
|
|
BYTE bData[];
|
|
}
|
|
DNS_NULL_DATA, *PDNS_NULL_DATA;
|
|
|
|
typedef struct
|
|
{
|
|
IP_ADDRESS ipAddress;
|
|
UCHAR chProtocol;
|
|
BYTE bBitMask[1];
|
|
}
|
|
DNS_WKS_DATA, *PDNS_WKS_DATA;
|
|
|
|
typedef struct
|
|
{
|
|
IPV6_ADDRESS ipv6Address;
|
|
}
|
|
DNS_AAAA_DATA, *PDNS_AAAA_DATA;
|
|
|
|
typedef struct
|
|
{
|
|
DNS_NAME nameTarget;
|
|
WORD wPriority;
|
|
WORD wWeight;
|
|
WORD wPort;
|
|
WORD Pad; // keep ptrs DWORD aligned
|
|
}
|
|
DNS_SRV_DATA, *PDNS_SRV_DATA;
|
|
|
|
typedef struct
|
|
{
|
|
DWORD dwMappingFlag;
|
|
DWORD dwLookupTimeout;
|
|
DWORD dwCacheTimeout;
|
|
DWORD cWinsServerCount;
|
|
IP_ADDRESS aipWinsServers[];
|
|
}
|
|
DNS_WINS_DATA, *PDNS_WINS_DATA;
|
|
|
|
typedef struct
|
|
{
|
|
DWORD dwMappingFlag;
|
|
DWORD dwLookupTimeout;
|
|
DWORD dwCacheTimeout;
|
|
DNS_NAME nameResultDomain;
|
|
}
|
|
DNS_WINSR_DATA, *PDNS_WINSR_DATA;
|
|
|
|
|
|
//
|
|
// RPC record data types that requires explicit MIDL pass definition
|
|
// different than non-MIDL definition in dnsapi.h
|
|
//
|
|
|
|
typedef struct
|
|
{
|
|
DWORD dwByteCount;
|
|
[size_is(dwByteCount)] BYTE bData[];
|
|
}
|
|
DNS_NULL_DATA_RPC, *PDNS_NULL_DATA_RPC;
|
|
|
|
typedef struct
|
|
{
|
|
DWORD dwStringCount;
|
|
[size_is(dwStringCount*sizeof(PCHAR))] DNS_TEXT pStringArray[];
|
|
}
|
|
DNS_TXT_DATA_RPC, *PDNS_TXT_DATA_RPC;
|
|
|
|
typedef struct
|
|
{
|
|
DWORD dwMappingFlag;
|
|
DWORD dwLookupTimeout;
|
|
DWORD dwCacheTimeout;
|
|
DWORD cWinsServerCount;
|
|
[size_is(cWinsServerCount*sizeof(IP_ADDRESS))] IP_ADDRESS aipWinsServers[];
|
|
}
|
|
DNS_WINS_DATA_RPC, *PDNS_WINS_DATA_RPC;
|
|
|
|
|
|
//
|
|
// Union of record types using RPC types as required
|
|
//
|
|
|
|
typedef [switch_type(WORD)] union _DNS_RECORD_DATA_UNION
|
|
{
|
|
[case(DNS_TYPE_A)] DNS_A_DATA A;
|
|
|
|
[case(DNS_TYPE_SOA)] DNS_SOA_DATA SOA;
|
|
|
|
[case(DNS_TYPE_PTR,
|
|
DNS_TYPE_NS,
|
|
DNS_TYPE_CNAME,
|
|
DNS_TYPE_MB,
|
|
DNS_TYPE_MD,
|
|
DNS_TYPE_MF,
|
|
DNS_TYPE_MG,
|
|
DNS_TYPE_MR)] DNS_PTR_DATA PTR;
|
|
|
|
[case(DNS_TYPE_MINFO,
|
|
DNS_TYPE_RP)] DNS_MINFO_DATA MINFO;
|
|
|
|
[case(DNS_TYPE_MX,
|
|
DNS_TYPE_AFSDB,
|
|
DNS_TYPE_RT)] DNS_MX_DATA MX;
|
|
|
|
[case(DNS_TYPE_HINFO,
|
|
DNS_TYPE_ISDN,
|
|
DNS_TYPE_TEXT,
|
|
DNS_TYPE_X25)] DNS_TXT_DATA_RPC TXT;
|
|
|
|
[case(DNS_TYPE_NULL)] DNS_NULL_DATA_RPC Null;
|
|
|
|
[case(DNS_TYPE_WKS)] DNS_WKS_DATA WKS;
|
|
|
|
[case(DNS_TYPE_AAAA)] DNS_AAAA_DATA AAAA;
|
|
|
|
[case(DNS_TYPE_SRV)] DNS_SRV_DATA SRV;
|
|
|
|
[case(DNS_TYPE_WINS)] DNS_WINS_DATA_RPC WINS;
|
|
[case(DNS_TYPE_NBSTAT)] DNS_WINSR_DATA WINSR;
|
|
}
|
|
DNS_RECORD_DATA_UNION;
|
|
|
|
|
|
//
|
|
// Record structure for RPC
|
|
//
|
|
|
|
typedef struct _DnsRecordRpc
|
|
{
|
|
struct _DnsRecordRpc * pNext;
|
|
DNS_NAME nameOwner;
|
|
DWORD Flags;
|
|
DWORD dwTtl;
|
|
WORD wDataLength;
|
|
WORD wType;
|
|
[switch_is(wType)] DNS_RECORD_DATA_UNION Data;
|
|
}
|
|
DNS_RECORD_RPC, * PDNS_RECORD_RPC;
|
|
|
|
#else
|
|
|
|
//
|
|
// not MIDL_PASS
|
|
//
|
|
// for non-MIDL use, RPC record must identical field for field
|
|
// with public defintion of DNS_RECORD
|
|
//
|
|
|
|
#include <dnsapi.h>
|
|
|
|
typedef DNS_RECORD DNS_RECORD_RPC, *PDNS_RECORD_RPC;
|
|
|
|
#endif // non-MIDL
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif // __cplusplus
|
|
|
|
#endif // _DNSRPCP_INCLUDED_
|
|
|
|
|