mirror of
https://github.com/samba-team/samba.git
synced 2024-12-23 17:34:34 +03:00
d1c47d0c83
Following MS-DNSP. Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz> Reviewed-by: Jeremy Allison <jra@samba.org> Autobuild-User(master): Jeremy Allison <jra@samba.org> Autobuild-Date(master): Tue Mar 30 00:20:53 UTC 2021 on sn-devel-184
1530 lines
42 KiB
Plaintext
1530 lines
42 KiB
Plaintext
#include "idl_types.h"
|
|
/*
|
|
dnsserver interface definition
|
|
for a protocol description see [MS-DNSP].pdf
|
|
*/
|
|
|
|
import "misc.idl", "dnsp.idl";
|
|
|
|
[ uuid("50abc2a4-574d-40b3-9d66-ee4fd5fba076"),
|
|
version(5.0),
|
|
pointer_default(unique),
|
|
endpoint("ncacn_ip_tcp:", "ncacn_np:[\\pipe\\dnsserver]"),
|
|
helper("../librpc/ndr/ndr_dnsserver.h"),
|
|
helpstring("DNS Management Server")
|
|
] interface dnsserver
|
|
{
|
|
|
|
#define wchar_t uint16
|
|
#define BOOLEAN boolean8
|
|
#define BOOL boolean32
|
|
#define BYTE uint8
|
|
#define UCHAR uint8
|
|
#define CHAR char
|
|
#define PBYTE BYTE*
|
|
#define DWORD uint32
|
|
#define PDWORD uint32 *
|
|
|
|
/* */
|
|
/* DNS RPC data types */
|
|
/* */
|
|
|
|
typedef [v1_enum] enum {
|
|
DNS_RPC_USE_TCPIP = 0x00000001,
|
|
DNS_RPC_USE_NAMED_PIPE = 0x00000002,
|
|
DNS_RPC_USE_LPC = 0x00000004,
|
|
DNS_RPC_USE_ALL_PROTOCOLS = 0xFFFFFFFF
|
|
}
|
|
DNS_RPC_PROTOCOLS;
|
|
|
|
typedef [v1_enum] enum {
|
|
DNS_CLIENT_VERSION_W2K = 0x00000000,
|
|
DNS_CLIENT_VERSION_DOTNET = 0x00060000,
|
|
DNS_CLIENT_VERSION_LONGHORN = 0x00070000
|
|
}
|
|
DNS_RPC_CLIENT_VERSION;
|
|
|
|
/* Return buffer */
|
|
typedef struct {
|
|
DWORD dwLength;
|
|
[size_is(dwLength)] BYTE Buffer[];
|
|
} DNS_RPC_BUFFER;
|
|
|
|
/* String Array */
|
|
typedef struct {
|
|
[range(0,10000)] DWORD dwCount;
|
|
[size_is(dwCount),string,charset(UTF8)] char * pszStrings[];
|
|
} DNS_RPC_UTF8_STRING_LIST;
|
|
|
|
/* Name and parameter value */
|
|
typedef struct {
|
|
DWORD dwParam;
|
|
[string, charset(UTF8)] char * pszNodeName;
|
|
}
|
|
DNS_RPC_NAME_AND_PARAM;
|
|
|
|
|
|
/* */
|
|
/* DNS Resource Record data types */
|
|
/* */
|
|
|
|
/* DNS_RECORD_TYPE is defined in dnsp.idl as dns_record_type */
|
|
/* DNS_RPC_NODE_FLAGS is defined in dnsp.idl as dns_rpc_node_flags */
|
|
|
|
typedef [public,gensize] struct {
|
|
[value(strlen(str))] uint8 len;
|
|
[charset(UNIX)] uint8 str[len];
|
|
}
|
|
DNS_RPC_NAME;
|
|
|
|
typedef struct {
|
|
uint16 wLength;
|
|
uint16 wRecordCount;
|
|
uint32 dwFlags;
|
|
uint32 dwChildCount;
|
|
DNS_RPC_NAME dnsNodeName;
|
|
}
|
|
DNS_RPC_NODE;
|
|
|
|
typedef struct {
|
|
uint32 dwSerialNo;
|
|
uint32 dwRefresh;
|
|
uint32 dwRetry;
|
|
uint32 dwExpire;
|
|
uint32 dwMinimumTtl;
|
|
DNS_RPC_NAME NamePrimaryServer;
|
|
DNS_RPC_NAME ZoneAdministratorEmail;
|
|
}
|
|
DNS_RPC_RECORD_SOA;
|
|
|
|
typedef struct {
|
|
uint16 wPreference;
|
|
DNS_RPC_NAME nameExchange;
|
|
}
|
|
DNS_RPC_RECORD_NAME_PREFERENCE;
|
|
|
|
typedef [nopull,nopush] struct {
|
|
uint8 count;
|
|
DNS_RPC_NAME str[count];
|
|
}
|
|
DNS_RPC_RECORD_STRING;
|
|
|
|
typedef struct {
|
|
uint16 wPriority;
|
|
uint16 wWeight;
|
|
uint16 wPort;
|
|
DNS_RPC_NAME nameTarget;
|
|
}
|
|
DNS_RPC_RECORD_SRV;
|
|
|
|
typedef [nodiscriminant,gensize,flag(NDR_NOALIGN)] union {
|
|
[case(DNS_TYPE_TOMBSTONE)] NTTIME EntombedTime;
|
|
[case(DNS_TYPE_A)] [flag(NDR_BIG_ENDIAN)] ipv4address ipv4;
|
|
[case(DNS_TYPE_NS)] DNS_RPC_NAME name;
|
|
[case(DNS_TYPE_MD)] DNS_RPC_NAME name;
|
|
[case(DNS_TYPE_MF)] DNS_RPC_NAME name;
|
|
[case(DNS_TYPE_CNAME)] DNS_RPC_NAME name;
|
|
[case(DNS_TYPE_SOA)] DNS_RPC_RECORD_SOA soa;
|
|
[case(DNS_TYPE_MB)] DNS_RPC_NAME name;
|
|
[case(DNS_TYPE_MG)] DNS_RPC_NAME name;
|
|
[case(DNS_TYPE_MR)] DNS_RPC_NAME name;
|
|
[case(DNS_TYPE_PTR)] DNS_RPC_NAME ptr;
|
|
[case(DNS_TYPE_HINFO)] DNS_RPC_NAME hinfo;
|
|
[case(DNS_TYPE_MX)] DNS_RPC_RECORD_NAME_PREFERENCE mx;
|
|
[case(DNS_TYPE_TXT)] DNS_RPC_RECORD_STRING txt;
|
|
[case(DNS_TYPE_AAAA)] ipv6address ipv6;
|
|
[case(DNS_TYPE_SRV)] DNS_RPC_RECORD_SRV srv;
|
|
[case(DNS_TYPE_DNAME)] DNS_RPC_NAME name;
|
|
}
|
|
DNS_RPC_RECORD_DATA;
|
|
|
|
typedef [public] struct {
|
|
[value(ndr_size_DNS_RPC_RECORD_DATA(&data,wType,0))] uint16 wDataLength;
|
|
dns_record_type wType;
|
|
DWORD dwFlags;
|
|
DWORD dwSerial;
|
|
DWORD dwTtlSeconds;
|
|
DWORD dwTimeStamp;
|
|
DWORD dwReserved;
|
|
[subcontext(0),subcontext_size(wDataLength),switch_is(wType)] DNS_RPC_RECORD_DATA data;
|
|
}
|
|
DNS_RPC_RECORD;
|
|
|
|
typedef struct {
|
|
[value(ndr_size_DNS_RPC_RECORD_DATA(&rec.data,rec.wType,0))] uint3264 wContextLength;
|
|
DNS_RPC_RECORD rec;
|
|
}
|
|
DNS_RPC_RECORD_BUF;
|
|
|
|
|
|
/* */
|
|
/* DNS Address Information data types */
|
|
/* */
|
|
|
|
typedef [v1_enum] enum {
|
|
DNS_IPVAL_DNS_SERVERS = 0x00,
|
|
DNS_IPVAL_DNS_ROOTHINTS = 0x01,
|
|
DNS_IPVAL_DNS_FORWARDERS = 0x02,
|
|
DNS_IPVAL_DNS_ZONE_MASTERS = 0x03,
|
|
DNS_IPVAL_DNS_DELEGATIONS = 0x04
|
|
}
|
|
DNS_IPVAL_CONTEXT;
|
|
|
|
typedef [v1_enum] enum {
|
|
ERROR_SUCCESS = 0x00,
|
|
DNS_IPVAL_INVALID_ADDR = 0x01,
|
|
DNS_IPVAL_UNREACHABLE = 0x02,
|
|
DNS_IPVAL_NO_RESPONSE = 0x03,
|
|
DNS_IPVAL_NOT_AUTH_FOR_ZONE = 0x04,
|
|
DNS_IPVAL_UNKNOWN_ERROR = 0xFF,
|
|
DNS_IPVAL_NO_TCP = 0x80000000
|
|
}
|
|
DNS_IP_VALIDATE_RETURN_FLAGS;
|
|
|
|
typedef struct {
|
|
DWORD AddrCount;
|
|
[size_is( AddrCount )] DWORD AddrArray[];
|
|
} IP4_ARRAY;
|
|
#define PIP4_ARRAY IP4_ARRAY*
|
|
|
|
typedef struct {
|
|
CHAR MaxSa[32];
|
|
DWORD DnsAddrUserDword[8];
|
|
} DNS_ADDR;
|
|
|
|
typedef struct {
|
|
DWORD MaxCount;
|
|
DWORD AddrCount;
|
|
DWORD Tag;
|
|
WORD Family;
|
|
WORD WordReserved;
|
|
DWORD Flags;
|
|
DWORD MatchFlag;
|
|
DWORD Reserved1;
|
|
DWORD Reserved2;
|
|
[size_is( AddrCount )] DNS_ADDR AddrArray[];
|
|
} DNS_ADDR_ARRAY;
|
|
#define PDNS_ADDR_ARRAY DNS_ADDR_ARRAY*
|
|
|
|
typedef struct {
|
|
DWORD dwRpcStructureVersion;
|
|
DWORD dwReserved0;
|
|
DWORD dwContext;
|
|
DWORD dwReserved1;
|
|
[string, charset(UTF8)] char * pszContextName;
|
|
PDNS_ADDR_ARRAY aipValidateAddrs;
|
|
}
|
|
DNS_RPC_IP_VALIDATE;
|
|
|
|
|
|
/* */
|
|
/* DNS Server data types */
|
|
/* */
|
|
|
|
typedef [enum8bit] enum {
|
|
DNS_BOOT_METHOD_UNINITIALIZED = 0x00,
|
|
DNS_BOOT_METHOD_FILE = 0x01,
|
|
DNS_BOOT_METHOD_REGISTRY = 0x02,
|
|
DNS_BOOT_METHOD_DIRECTORY = 0x03
|
|
}
|
|
DNS_BOOT_METHOD;
|
|
|
|
typedef [v1_enum] enum {
|
|
DNS_ALLOW_RFC_NAMES_ONLY = 0x00,
|
|
DNS_ALLOW_NONRFC_NAMES = 0x01,
|
|
DNS_ALLOW_MULTIBYTE_NAMES = 0x02,
|
|
DNS_ALLOW_ALL_NAMES = 0x03
|
|
}
|
|
DNS_NAME_CHECK_FLAG;
|
|
|
|
typedef struct {
|
|
/* version */
|
|
/* basic configuration flags */
|
|
|
|
DWORD dwVersion;
|
|
DNS_BOOT_METHOD fBootMethod;
|
|
BOOLEAN fAdminConfigured;
|
|
BOOLEAN fAllowUpdate;
|
|
BOOLEAN fDsAvailable;
|
|
|
|
/* pointer section */
|
|
|
|
[string, charset(UTF8)] char * pszServerName;
|
|
|
|
/* DS container */
|
|
|
|
[string, charset(UTF16)] wchar_t * pszDsContainer;
|
|
|
|
/* IP interfaces */
|
|
|
|
PIP4_ARRAY aipServerAddrs;
|
|
PIP4_ARRAY aipListenAddrs;
|
|
|
|
/* forwarders */
|
|
|
|
PIP4_ARRAY aipForwarders;
|
|
|
|
/* future extensions */
|
|
|
|
PDWORD pExtension1;
|
|
PDWORD pExtension2;
|
|
PDWORD pExtension3;
|
|
PDWORD pExtension4;
|
|
PDWORD pExtension5;
|
|
|
|
/* DWORD section */
|
|
|
|
/* logging */
|
|
|
|
DWORD dwLogLevel;
|
|
DWORD dwDebugLevel;
|
|
|
|
/* configuration DWORDs */
|
|
|
|
DWORD dwForwardTimeout;
|
|
DWORD dwRpcProtocol;
|
|
DNS_NAME_CHECK_FLAG dwNameCheckFlag;
|
|
DWORD cAddressAnswerLimit;
|
|
DWORD dwRecursionRetry;
|
|
DWORD dwRecursionTimeout;
|
|
DWORD dwMaxCacheTtl;
|
|
DWORD dwDsPollingInterval;
|
|
|
|
/* aging / scavenging */
|
|
|
|
DWORD dwScavengingInterval;
|
|
DWORD dwDefaultRefreshInterval;
|
|
DWORD dwDefaultNoRefreshInterval;
|
|
|
|
DWORD dwReserveArray[10];
|
|
|
|
/* BYTE section */
|
|
|
|
/* configuration flags */
|
|
|
|
BOOLEAN fAutoReverseZones;
|
|
BOOLEAN fAutoCacheUpdate;
|
|
|
|
/* recursion control */
|
|
|
|
BOOLEAN fRecurseAfterForwarding;
|
|
BOOLEAN fForwardDelegations;
|
|
BOOLEAN fNoRecursion;
|
|
BOOLEAN fSecureResponses;
|
|
|
|
/* lookup control */
|
|
|
|
BOOLEAN fRoundRobin;
|
|
BOOLEAN fLocalNetPriority;
|
|
|
|
/* BIND compatibility and mimicking */
|
|
|
|
BOOLEAN fBindSecondaries;
|
|
BOOLEAN fWriteAuthorityNs;
|
|
|
|
/* Bells and whistles */
|
|
|
|
BOOLEAN fStrictFileParsing;
|
|
BOOLEAN fLooseWildcarding;
|
|
|
|
/* aging / scavenging */
|
|
|
|
BOOLEAN fDefaultAgingState;
|
|
BOOLEAN fReserveArray[15];
|
|
}
|
|
DNS_RPC_SERVER_INFO_W2K;
|
|
|
|
typedef struct {
|
|
[string, charset(UTF8)] uint8 *extension;
|
|
} DNS_EXTENSION;
|
|
|
|
typedef [public] struct {
|
|
DWORD dwRpcStructureVersion;
|
|
DWORD dwReserved0;
|
|
|
|
/* basic configuration flags */
|
|
|
|
DWORD dwVersion;
|
|
DNS_BOOT_METHOD fBootMethod;
|
|
BOOLEAN fAdminConfigured;
|
|
BOOLEAN fAllowUpdate;
|
|
BOOLEAN fDsAvailable;
|
|
|
|
/* pointer section */
|
|
|
|
[string, charset(UTF8)] char * pszServerName;
|
|
|
|
/* DS container */
|
|
|
|
[string, charset(UTF16)] wchar_t * pszDsContainer;
|
|
|
|
/* IP interfaces */
|
|
|
|
PIP4_ARRAY aipServerAddrs;
|
|
PIP4_ARRAY aipListenAddrs;
|
|
|
|
/* forwarders */
|
|
|
|
PIP4_ARRAY aipForwarders;
|
|
|
|
/* logging */
|
|
|
|
PIP4_ARRAY aipLogFilter;
|
|
[string, charset(UTF16)] wchar_t * pwszLogFilePath;
|
|
|
|
/* Server domain/forest */
|
|
|
|
[string, charset(UTF8)] char * pszDomainName; /* UTF-8 FQDN */
|
|
[string, charset(UTF8)] char * pszForestName; /* UTF-8 FQDN */
|
|
|
|
/* Built-in directory partitions */
|
|
|
|
[string, charset(UTF8)] char * pszDomainDirectoryPartition; /* UTF-8 FQDN */
|
|
[string, charset(UTF8)] char * pszForestDirectoryPartition; /* UTF-8 FQDN */
|
|
|
|
/* future extensions */
|
|
DNS_EXTENSION pExtensions[6];
|
|
|
|
/* DWORD section */
|
|
|
|
/* logging */
|
|
|
|
DWORD dwLogLevel;
|
|
DWORD dwDebugLevel;
|
|
|
|
/* configuration DWORDs */
|
|
|
|
DWORD dwForwardTimeout;
|
|
DWORD dwRpcProtocol;
|
|
DNS_NAME_CHECK_FLAG dwNameCheckFlag;
|
|
DWORD cAddressAnswerLimit;
|
|
DWORD dwRecursionRetry;
|
|
DWORD dwRecursionTimeout;
|
|
DWORD dwMaxCacheTtl;
|
|
DWORD dwDsPollingInterval;
|
|
DWORD dwLocalNetPriorityNetMask;
|
|
|
|
/* aging and scavenging */
|
|
|
|
DWORD dwScavengingInterval;
|
|
DWORD dwDefaultRefreshInterval;
|
|
DWORD dwDefaultNoRefreshInterval;
|
|
DWORD dwLastScavengeTime;
|
|
|
|
/* more logging */
|
|
|
|
DWORD dwEventLogLevel;
|
|
DWORD dwLogFileMaxSize;
|
|
|
|
/* Active Directory information */
|
|
|
|
DWORD dwDsForestVersion;
|
|
DWORD dwDsDomainVersion;
|
|
DWORD dwDsDsaVersion;
|
|
|
|
DWORD dwReserveArray[ 4 ];
|
|
|
|
/* BYTE section */
|
|
|
|
/* configuration flags */
|
|
|
|
BOOLEAN fAutoReverseZones;
|
|
BOOLEAN fAutoCacheUpdate;
|
|
|
|
/* recursion control */
|
|
|
|
BOOLEAN fRecurseAfterForwarding;
|
|
BOOLEAN fForwardDelegations;
|
|
BOOLEAN fNoRecursion;
|
|
BOOLEAN fSecureResponses;
|
|
|
|
/* lookup control */
|
|
|
|
BOOLEAN fRoundRobin;
|
|
BOOLEAN fLocalNetPriority;
|
|
|
|
/* BIND compatibility and mimicking */
|
|
|
|
BOOLEAN fBindSecondaries;
|
|
BOOLEAN fWriteAuthorityNs;
|
|
|
|
/* Bells and whistles */
|
|
|
|
BOOLEAN fStrictFileParsing;
|
|
BOOLEAN fLooseWildcarding;
|
|
|
|
/* aging \ scavenging */
|
|
|
|
BOOLEAN fDefaultAgingState;
|
|
|
|
BOOLEAN fReserveArray[ 15 ];
|
|
}
|
|
DNS_RPC_SERVER_INFO_DOTNET;
|
|
|
|
typedef [public] struct {
|
|
DWORD dwRpcStructureVersion;
|
|
DWORD dwReserved0;
|
|
|
|
/* basic configuration flags */
|
|
|
|
DWORD dwVersion;
|
|
DNS_BOOT_METHOD fBootMethod;
|
|
BOOLEAN fAdminConfigured;
|
|
BOOLEAN fAllowUpdate;
|
|
BOOLEAN fDsAvailable;
|
|
|
|
/* pointer section */
|
|
|
|
[string, charset(UTF8)] char * pszServerName;
|
|
|
|
/* DS container */
|
|
|
|
[string, charset(UTF16)] wchar_t * pszDsContainer;
|
|
|
|
/* IP interfaces */
|
|
|
|
PDNS_ADDR_ARRAY aipServerAddrs;
|
|
PDNS_ADDR_ARRAY aipListenAddrs;
|
|
|
|
/* forwarders */
|
|
|
|
PDNS_ADDR_ARRAY aipForwarders;
|
|
|
|
/* logging */
|
|
|
|
PDNS_ADDR_ARRAY aipLogFilter;
|
|
[string, charset(UTF16)] wchar_t * pwszLogFilePath;
|
|
|
|
/* Server domain/forest */
|
|
|
|
[string, charset(UTF8)] char * pszDomainName; /* UTF-8 FQDN */
|
|
[string, charset(UTF8)] char * pszForestName; /* UTF-8 FQDN */
|
|
|
|
/* Built-in directory partitions */
|
|
|
|
[string, charset(UTF8)] char * pszDomainDirectoryPartition; /* UTF-8 FQDN */
|
|
[string, charset(UTF8)] char * pszForestDirectoryPartition; /* UTF-8 FQDN */
|
|
|
|
/* future extensions */
|
|
DNS_EXTENSION pExtensions[6];
|
|
|
|
/* DWORD section */
|
|
|
|
/* logging */
|
|
|
|
DWORD dwLogLevel;
|
|
DWORD dwDebugLevel;
|
|
|
|
/* configuration DWORDs */
|
|
|
|
DWORD dwForwardTimeout;
|
|
DWORD dwRpcProtocol;
|
|
DNS_NAME_CHECK_FLAG dwNameCheckFlag;
|
|
DWORD cAddressAnswerLimit;
|
|
DWORD dwRecursionRetry;
|
|
DWORD dwRecursionTimeout;
|
|
DWORD dwMaxCacheTtl;
|
|
DWORD dwDsPollingInterval;
|
|
DWORD dwLocalNetPriorityNetMask;
|
|
|
|
/* aging and scavenging */
|
|
|
|
DWORD dwScavengingInterval;
|
|
DWORD dwDefaultRefreshInterval;
|
|
DWORD dwDefaultNoRefreshInterval;
|
|
DWORD dwLastScavengeTime;
|
|
|
|
/* more logging */
|
|
|
|
DWORD dwEventLogLevel;
|
|
DWORD dwLogFileMaxSize;
|
|
|
|
/* Active Directory information */
|
|
|
|
DWORD dwDsForestVersion;
|
|
DWORD dwDsDomainVersion;
|
|
DWORD dwDsDsaVersion;
|
|
BOOLEAN fReadOnlyDC;
|
|
|
|
DWORD dwReserveArray[ 3 ];
|
|
|
|
/* BYTE section */
|
|
|
|
/* configuration flags */
|
|
|
|
BOOLEAN fAutoReverseZones;
|
|
BOOLEAN fAutoCacheUpdate;
|
|
|
|
/* recursion control */
|
|
|
|
BOOLEAN fRecurseAfterForwarding;
|
|
BOOLEAN fForwardDelegations;
|
|
BOOLEAN fNoRecursion;
|
|
BOOLEAN fSecureResponses;
|
|
|
|
/* lookup control */
|
|
|
|
BOOLEAN fRoundRobin;
|
|
BOOLEAN fLocalNetPriority;
|
|
|
|
/* BIND compatibility and mimicking */
|
|
|
|
BOOLEAN fBindSecondaries;
|
|
BOOLEAN fWriteAuthorityNs;
|
|
|
|
/* Bells and whistles */
|
|
|
|
BOOLEAN fStrictFileParsing;
|
|
BOOLEAN fLooseWildcarding;
|
|
|
|
/* aging \ scavenging */
|
|
|
|
BOOLEAN fDefaultAgingState;
|
|
|
|
BOOLEAN fReserveArray[ 15 ];
|
|
}
|
|
DNS_RPC_SERVER_INFO_LONGHORN;
|
|
#define DNS_RPC_SERVER_INFO DNS_RPC_SERVER_INFO_LONGHORN
|
|
|
|
|
|
/* */
|
|
/* DNS Application directory partition data types */
|
|
/* */
|
|
|
|
typedef [bitmap32bit] bitmap {
|
|
DNS_DP_AUTOCREATED = 0x00000001,
|
|
DNS_DP_LEGACY = 0x00000002,
|
|
DNS_DP_DOMAIN_DEFAULT = 0x00000004,
|
|
DNS_DP_FOREST_DEFAULT = 0x00000008,
|
|
DNS_DP_ENLISTED = 0x00000010,
|
|
DNS_DP_DELETED = 0x00000020
|
|
}
|
|
DNS_RPC_DP_FLAGS;
|
|
|
|
typedef struct {
|
|
[string, charset(UTF16)] wchar_t * pszReplicaDn;
|
|
}
|
|
DNS_RPC_DP_REPLICA;
|
|
#define PDNS_RPC_DP_REPLICA DNS_RPC_DP_REPLICA*
|
|
|
|
typedef [v1_enum] enum {
|
|
DNS_DP_OKAY = 0x00,
|
|
DNS_DP_STATE_REPL_INCOMING = 0x01,
|
|
DNS_DP_STATE_REPL_OUTGOING = 0x02,
|
|
DNS_DP_STATE_UNKNOWN = 0x03
|
|
} DNS_DP_STATE;
|
|
|
|
typedef struct {
|
|
DWORD dwRpcStructureVersion;
|
|
DWORD dwReserved0;
|
|
|
|
[string, charset(UTF8)] char * pszDpFqdn;
|
|
[string, charset(UTF16)] wchar_t * pszDpDn;
|
|
[string, charset(UTF16)] wchar_t * pszCrDn;
|
|
DWORD dwFlags;
|
|
DWORD dwZoneCount;
|
|
DNS_DP_STATE dwState;
|
|
|
|
DWORD dwReserved[ 3 ];
|
|
DNS_EXTENSION pwszReserved[ 3 ];
|
|
[range(0,10000)] DWORD dwReplicaCount;
|
|
[size_is(dwReplicaCount)] PDNS_RPC_DP_REPLICA ReplicaArray[];
|
|
}
|
|
DNS_RPC_DP_INFO;
|
|
|
|
typedef struct {
|
|
DWORD dwRpcStructureVersion;
|
|
DWORD dwReserved0;
|
|
|
|
[string, charset(UTF8)] char * pszDpFqdn;
|
|
DWORD dwFlags;
|
|
DWORD dwZoneCount;
|
|
}
|
|
DNS_RPC_DP_ENUM;
|
|
#define PDNS_RPC_DP_ENUM DNS_RPC_DP_ENUM*
|
|
|
|
typedef struct {
|
|
DWORD dwRpcStructureVersion;
|
|
DWORD dwReserved0;
|
|
[range(0,5000)] DWORD dwDpCount;
|
|
[size_is(dwDpCount)] PDNS_RPC_DP_ENUM DpArray[];
|
|
}
|
|
DNS_RPC_DP_LIST;
|
|
|
|
typedef struct {
|
|
DWORD dwRpcStructureVersion;
|
|
DWORD dwReserved0;
|
|
[string, charset(UTF8)] char * pszDpFqdn; /* UTF8 */
|
|
DWORD dwOperation;
|
|
}
|
|
DNS_RPC_ENLIST_DP;
|
|
|
|
typedef struct {
|
|
DWORD dwRpcStructureVersion;
|
|
DWORD dwReserved0;
|
|
[string, charset(UTF8)] char * pszDestPartition;
|
|
}
|
|
DNS_RPC_ZONE_CHANGE_DP;
|
|
|
|
|
|
/* */
|
|
/* DNS Zone data types */
|
|
/* */
|
|
|
|
/* DNS_ZONE_TYPE defined in dnsp as dns_zone_type */
|
|
|
|
typedef [v1_enum] enum {
|
|
DNS_ZONE_SECSECURE_NO_SECURITY = 0x00,
|
|
DNS_ZONE_SECSECURE_NS_ONLY = 0x01,
|
|
DNS_ZONE_SECSECURE_LIST_ONLY = 0x02,
|
|
DNS_ZONE_SECSECURE_NO_XFER = 0x03
|
|
}
|
|
DNS_ZONE_SECONDARY_SECURITY;
|
|
|
|
typedef [v1_enum] enum {
|
|
DNS_ZONE_NOTIFY_OFF = 0x00,
|
|
DNS_ZONE_NOTIFY_ALL_SECONDARIES = 0x01,
|
|
DNS_ZONE_NOTIFY_LIST_ONLY = 0x02
|
|
}
|
|
DNS_ZONE_NOTIFY_LEVEL;
|
|
|
|
typedef [v1_enum] enum {
|
|
DNS_ZONE_REQUEST_PRIMARY = 0x00000001,
|
|
DNS_ZONE_REQUEST_SECONDARY = 0x00000002,
|
|
DNS_ZONE_REQUEST_CACHE = 0x00000004,
|
|
DNS_ZONE_REQUEST_AUTO = 0x00000008,
|
|
DNS_ZONE_REQUEST_FORWARD = 0x00000010,
|
|
DNS_ZONE_REQUEST_REVERSE = 0x00000020,
|
|
DNS_ZONE_REQUEST_FORWARDER = 0x00000040,
|
|
DNS_ZONE_REQUEST_STUB = 0x00000080,
|
|
DNS_ZONE_REQUEST_DS = 0x00000100,
|
|
DNS_ZONE_REQUEST_NON_DS = 0x00000200,
|
|
DNS_ZONE_REQUEST_DOMAIN_DP = 0x00000400,
|
|
DNS_ZONE_REQUEST_FOREST_DP = 0x00000800,
|
|
DNS_ZONE_REQUEST_CUSTOM_DP = 0x00001000,
|
|
DNS_ZONE_REQUEST_LEGACY_DP = 0x00002000
|
|
}
|
|
DNS_ZONE_REQUEST_FILTERS;
|
|
|
|
typedef [bitmap32bit] bitmap {
|
|
DNS_RPC_ZONE_PAUSED = 0x0001,
|
|
DNS_RPC_ZONE_SHUTDOWN = 0x0002,
|
|
DNS_RPC_ZONE_REVERSE = 0x0004,
|
|
DNS_RPC_ZONE_AUTOCREATED = 0x0008,
|
|
DNS_RPC_ZONE_DSINTEGRATED = 0x0010,
|
|
DNS_RPC_ZONE_AGING = 0x0020,
|
|
DNS_RPC_ZONE_UPDATE_UNSECURE = 0x0040,
|
|
DNS_RPC_ZONE_UPDATE_SECURE = 0x0080,
|
|
DNS_RPC_ZONE_READONLY = 0x0100
|
|
} DNS_RPC_ZONE_FLAGS;
|
|
|
|
typedef struct {
|
|
[string, charset(UTF16)] uint16 * pszZoneName;
|
|
DNS_RPC_ZONE_FLAGS Flags;
|
|
UCHAR ZoneType;
|
|
UCHAR Version;
|
|
}
|
|
DNS_RPC_ZONE_W2K;
|
|
#define PDNS_RPC_ZONE_W2K DNS_RPC_ZONE_W2K*
|
|
|
|
typedef struct {
|
|
DWORD dwRpcStructureVersion;
|
|
DWORD dwReserved0;
|
|
[string, charset(UTF16)] wchar_t * pszZoneName;
|
|
DNS_RPC_ZONE_FLAGS Flags;
|
|
UCHAR ZoneType;
|
|
UCHAR Version;
|
|
DNS_RPC_DP_FLAGS dwDpFlags;
|
|
[string, charset(UTF8)] char * pszDpFqdn;
|
|
}
|
|
DNS_RPC_ZONE_DOTNET;
|
|
#define DNS_RPC_ZONE DNS_RPC_ZONE_DOTNET
|
|
#define PDNS_RPC_ZONE_DOTNET DNS_RPC_ZONE_DOTNET*
|
|
|
|
/* Zone enumeration */
|
|
typedef struct {
|
|
[range(0,500000)] DWORD dwZoneCount;
|
|
[size_is(dwZoneCount)] PDNS_RPC_ZONE_W2K ZoneArray[];
|
|
}
|
|
DNS_RPC_ZONE_LIST_W2K;
|
|
|
|
typedef struct {
|
|
DWORD dwRpcStructureVersion;
|
|
DWORD dwReserved0;
|
|
[range(0,500000)] DWORD dwZoneCount;
|
|
[size_is(dwZoneCount)] PDNS_RPC_ZONE_DOTNET ZoneArray[];
|
|
}
|
|
DNS_RPC_ZONE_LIST_DOTNET;
|
|
#define DNS_RPC_ZONE_LIST DNS_RPC_ZONE_LIST_DOTNET
|
|
|
|
/* Zone information */
|
|
typedef struct {
|
|
[string, charset(UTF8)] char * pszZoneName;
|
|
DWORD dwZoneType;
|
|
BOOL fReverse;
|
|
dns_zone_update fAllowUpdate;
|
|
DWORD fPaused;
|
|
DWORD fShutdown;
|
|
DWORD fAutoCreated;
|
|
|
|
/* Database info */
|
|
DWORD fUseDatabase;
|
|
[string, charset(UTF8)] char * pszDataFile;
|
|
|
|
/* Masters */
|
|
PIP4_ARRAY aipMasters;
|
|
|
|
/* Secondaries */
|
|
DNS_ZONE_SECONDARY_SECURITY fSecureSecondaries;
|
|
DNS_ZONE_NOTIFY_LEVEL fNotifyLevel;
|
|
PIP4_ARRAY aipSecondaries;
|
|
PIP4_ARRAY aipNotify;
|
|
|
|
/* WINS or NetBIOS lookup */
|
|
BOOL fUseWins;
|
|
BOOL fUseNbstat;
|
|
|
|
/* Aging */
|
|
BOOL fAging;
|
|
DWORD dwNoRefreshInterval;
|
|
DWORD dwRefreshInterval;
|
|
DWORD dwAvailForScavengeTime;
|
|
PIP4_ARRAY aipScavengeServers;
|
|
|
|
/* save some space, just in case */
|
|
/* avoid versioning issues if possible */
|
|
DWORD pvReserved1;
|
|
DWORD pvReserved2;
|
|
DWORD pvReserved3;
|
|
DWORD pvReserved4;
|
|
}
|
|
DNS_RPC_ZONE_INFO_W2K;
|
|
|
|
typedef struct {
|
|
DWORD dwRpcStructureVersion;
|
|
DWORD dwReserved0;
|
|
|
|
[string, charset(UTF8)] char * pszZoneName;
|
|
DWORD dwZoneType;
|
|
BOOL fReverse;
|
|
dns_zone_update fAllowUpdate;
|
|
DWORD fPaused;
|
|
DWORD fShutdown;
|
|
DWORD fAutoCreated;
|
|
|
|
/* Database info */
|
|
DWORD fUseDatabase;
|
|
[string, charset(UTF8)] char * pszDataFile;
|
|
|
|
/* Masters */
|
|
PIP4_ARRAY aipMasters;
|
|
|
|
/* Secondaries */
|
|
DNS_ZONE_SECONDARY_SECURITY fSecureSecondaries;
|
|
DNS_ZONE_NOTIFY_LEVEL fNotifyLevel;
|
|
PIP4_ARRAY aipSecondaries;
|
|
PIP4_ARRAY aipNotify;
|
|
|
|
/* WINS or NetBIOS lookup */
|
|
BOOL fUseWins;
|
|
BOOL fUseNbstat;
|
|
|
|
/* Aging */
|
|
BOOL fAging;
|
|
DWORD dwNoRefreshInterval;
|
|
DWORD dwRefreshInterval;
|
|
DWORD dwAvailForScavengeTime;
|
|
PIP4_ARRAY aipScavengeServers;
|
|
|
|
/* Forwarder zones */
|
|
DWORD dwForwarderTimeout;
|
|
DWORD fForwarderSlave;
|
|
|
|
/* Stub zones */
|
|
PIP4_ARRAY aipLocalMasters;
|
|
|
|
/* Directory partition */
|
|
DWORD dwDpFlags;
|
|
[string, charset(UTF8)] char * pszDpFqdn;
|
|
[string, charset(UTF16)] wchar_t * pwszZoneDn;
|
|
|
|
/* Xfr time information */
|
|
DWORD dwLastSuccessfulSoaCheck;
|
|
DWORD dwLastSuccessfulXfr;
|
|
|
|
/* save some space, just in case */
|
|
DWORD dwReserved1;
|
|
DWORD dwReserved2;
|
|
DWORD dwReserved3;
|
|
DWORD dwReserved4;
|
|
DWORD dwReserved5;
|
|
[string, charset(UTF8)] char * pReserved1;
|
|
[string, charset(UTF8)] char * pReserved2;
|
|
[string, charset(UTF8)] char * pReserved3;
|
|
[string, charset(UTF8)] char * pReserved4;
|
|
}
|
|
DNS_RPC_ZONE_INFO_DOTNET;
|
|
|
|
typedef struct {
|
|
DWORD dwRpcStructureVersion;
|
|
DWORD dwReserved0;
|
|
|
|
[string, charset(UTF8)] char * pszZoneName;
|
|
DWORD dwZoneType;
|
|
BOOL fReverse;
|
|
dns_zone_update fAllowUpdate;
|
|
DWORD fPaused;
|
|
DWORD fShutdown;
|
|
DWORD fAutoCreated;
|
|
|
|
/* Database info */
|
|
DWORD fUseDatabase;
|
|
[string, charset(UTF8)] char * pszDataFile;
|
|
|
|
/* Masters */
|
|
PDNS_ADDR_ARRAY aipMasters;
|
|
|
|
/* Secondaries */
|
|
DNS_ZONE_SECONDARY_SECURITY fSecureSecondaries;
|
|
DNS_ZONE_NOTIFY_LEVEL fNotifyLevel;
|
|
PDNS_ADDR_ARRAY aipSecondaries;
|
|
PDNS_ADDR_ARRAY aipNotify;
|
|
|
|
/* WINS or NetBIOS lookup */
|
|
BOOL fUseWins;
|
|
BOOL fUseNbstat;
|
|
|
|
/* Aging */
|
|
BOOL fAging;
|
|
DWORD dwNoRefreshInterval;
|
|
DWORD dwRefreshInterval;
|
|
DWORD dwAvailForScavengeTime;
|
|
PDNS_ADDR_ARRAY aipScavengeServers;
|
|
|
|
/* Forwarder zones */
|
|
DWORD dwForwarderTimeout;
|
|
DWORD fForwarderSlave;
|
|
|
|
/* Stub zones */
|
|
PDNS_ADDR_ARRAY aipLocalMasters;
|
|
|
|
/* Directory partition */
|
|
DWORD dwDpFlags;
|
|
[string, charset(UTF8)] char * pszDpFqdn;
|
|
[string, charset(UTF16)] wchar_t * pwszZoneDn;
|
|
/* Xfr time information */
|
|
DWORD dwLastSuccessfulSoaCheck;
|
|
DWORD dwLastSuccessfulXfr;
|
|
|
|
DWORD fQueuedForBackgroundLoad;
|
|
DWORD fBackgroundLoadInProgress;
|
|
BOOL fReadOnlyZone;
|
|
|
|
/* Additional zone transfer information */
|
|
DWORD dwLastXfrAttempt;
|
|
DWORD dwLastXfrResult;
|
|
}
|
|
DNS_RPC_ZONE_INFO_LONGHORN;
|
|
#define DNS_RPC_ZONE_INFO DNS_RPC_ZONE_INFO_LONGHORN
|
|
|
|
/* Zone property data */
|
|
typedef struct {
|
|
DNS_ZONE_SECONDARY_SECURITY fSecureSecondaries;
|
|
DNS_ZONE_NOTIFY_LEVEL fNotifyLevel;
|
|
PIP4_ARRAY aipSecondaries;
|
|
PIP4_ARRAY aipNotify;
|
|
}
|
|
DNS_RPC_ZONE_SECONDARIES_W2K;
|
|
|
|
typedef struct {
|
|
DWORD dwRpcStructureVersion;
|
|
DWORD dwReserved0;
|
|
|
|
DNS_ZONE_SECONDARY_SECURITY fSecureSecondaries;
|
|
DNS_ZONE_NOTIFY_LEVEL fNotifyLevel;
|
|
PIP4_ARRAY aipSecondaries;
|
|
PIP4_ARRAY aipNotify;
|
|
}
|
|
DNS_RPC_ZONE_SECONDARIES_DOTNET;
|
|
|
|
typedef struct {
|
|
DWORD dwRpcStructureVersion;
|
|
DWORD dwReserved0;
|
|
|
|
DNS_ZONE_SECONDARY_SECURITY fSecureSecondaries;
|
|
DNS_ZONE_NOTIFY_LEVEL fNotifyLevel;
|
|
PDNS_ADDR_ARRAY aipSecondaries;
|
|
PDNS_ADDR_ARRAY aipNotify;
|
|
}
|
|
DNS_RPC_ZONE_SECONDARIES_LONGHORN;
|
|
#define DNS_RPC_ZONE_SECONDARIES DNS_RPC_ZONE_SECONDARIES_LONGHORN
|
|
|
|
/* Zone database */
|
|
typedef struct {
|
|
DWORD fDsIntegrated;
|
|
[string, charset(UTF8)] char * pszFileName;
|
|
}
|
|
DNS_RPC_ZONE_DATABASE_W2K;
|
|
|
|
typedef struct {
|
|
DWORD dwRpcStructureVersion;
|
|
DWORD dwReserved0;
|
|
|
|
DWORD fDsIntegrated;
|
|
[string, charset(UTF8)] char * pszFileName;
|
|
}
|
|
DNS_RPC_ZONE_DATABASE_DOTNET;
|
|
#define DNS_RPC_ZONE_DATABASE DNS_RPC_ZONE_DATABASE_DOTNET
|
|
|
|
/* Zone create data */
|
|
typedef struct {
|
|
[string, charset(UTF8)] char * pszZoneName;
|
|
DWORD dwZoneType;
|
|
dns_zone_update fAllowUpdate;
|
|
BOOL fAging;
|
|
DWORD dwFlags;
|
|
|
|
/* Database info */
|
|
|
|
[string, charset(UTF8)] char * pszDataFile;
|
|
DWORD fDsIntegrated;
|
|
DWORD fLoadExisting;
|
|
|
|
/* Admin name (if auto-create SOA) */
|
|
|
|
[string, charset(UTF8)] char * pszAdmin;
|
|
|
|
/* Masters (if secondary) */
|
|
|
|
PIP4_ARRAY aipMasters;
|
|
|
|
/* Secondaries */
|
|
|
|
PIP4_ARRAY aipSecondaries;
|
|
DNS_ZONE_SECONDARY_SECURITY fSecureSecondaries;
|
|
DNS_ZONE_NOTIFY_LEVEL fNotifyLevel;
|
|
|
|
/* Reserve some space to avoid versioning issues */
|
|
|
|
[string, charset(UTF8)] char * pvReserved1;
|
|
[string, charset(UTF8)] char * pvReserved2;
|
|
[string, charset(UTF8)] char * pvReserved3;
|
|
[string, charset(UTF8)] char * pvReserved4;
|
|
[string, charset(UTF8)] char * pvReserved5;
|
|
[string, charset(UTF8)] char * pvReserved6;
|
|
[string, charset(UTF8)] char * pvReserved7;
|
|
[string, charset(UTF8)] char * pvReserved8;
|
|
DWORD dwReserved1;
|
|
DWORD dwReserved2;
|
|
DWORD dwReserved3;
|
|
DWORD dwReserved4;
|
|
DWORD dwReserved5;
|
|
DWORD dwReserved6;
|
|
DWORD dwReserved7;
|
|
DWORD dwReserved8;
|
|
}
|
|
DNS_RPC_ZONE_CREATE_INFO_W2K;
|
|
|
|
typedef struct {
|
|
DWORD dwRpcStructureVersion;
|
|
DWORD dwReserved0;
|
|
|
|
[string, charset(UTF8)] char * pszZoneName;
|
|
DWORD dwZoneType;
|
|
dns_zone_update fAllowUpdate;
|
|
BOOL fAging;
|
|
DWORD dwFlags;
|
|
|
|
/* Database info */
|
|
|
|
[string, charset(UTF8)] char * pszDataFile;
|
|
DWORD fDsIntegrated;
|
|
DWORD fLoadExisting;
|
|
|
|
/* Admin name (if auto-create SOA) */
|
|
|
|
[string, charset(UTF8)] char * pszAdmin;
|
|
|
|
/* Masters (if secondary) */
|
|
|
|
PIP4_ARRAY aipMasters;
|
|
|
|
/* Secondaries */
|
|
|
|
PIP4_ARRAY aipSecondaries;
|
|
DNS_ZONE_SECONDARY_SECURITY fSecureSecondaries;
|
|
DNS_ZONE_NOTIFY_LEVEL fNotifyLevel;
|
|
|
|
/* Forwarder zones */
|
|
|
|
DWORD dwTimeout;
|
|
DWORD fRecurseAfterForwarding;
|
|
|
|
/* Directory partition */
|
|
|
|
DWORD dwDpFlags; /* specify built-in DP or */
|
|
[string, charset(UTF8)] char * pszDpFqdn; /* UTF8 FQDN of partition */
|
|
|
|
DWORD dwReserved[ 32 ];
|
|
}
|
|
DNS_RPC_ZONE_CREATE_INFO_DOTNET;
|
|
|
|
typedef struct {
|
|
DWORD dwRpcStructureVersion;
|
|
DWORD dwReserved0;
|
|
|
|
[string, charset(UTF8)] char * pszZoneName;
|
|
DWORD dwZoneType;
|
|
dns_zone_update fAllowUpdate;
|
|
BOOL fAging;
|
|
DWORD dwFlags;
|
|
|
|
/* Database info */
|
|
|
|
[string, charset(UTF8)] char * pszDataFile;
|
|
DWORD fDsIntegrated;
|
|
DWORD fLoadExisting;
|
|
|
|
/* Admin name (if auto-create SOA) */
|
|
|
|
[string, charset(UTF8)] char * pszAdmin;
|
|
|
|
/* Masters (if secondary) */
|
|
|
|
PDNS_ADDR_ARRAY aipMasters;
|
|
|
|
/* Secondaries */
|
|
|
|
PDNS_ADDR_ARRAY aipSecondaries;
|
|
DNS_ZONE_SECONDARY_SECURITY fSecureSecondaries;
|
|
DNS_ZONE_NOTIFY_LEVEL fNotifyLevel;
|
|
|
|
/* Forwarder zones */
|
|
|
|
DWORD dwTimeout;
|
|
DWORD fRecurseAfterForwarding;
|
|
|
|
/* Directory partition */
|
|
|
|
DWORD dwDpFlags; /* specify built-in DP or */
|
|
[string, charset(UTF8)] char * pszDpFqdn; /* UTF8 FQDN of partition */
|
|
|
|
DWORD dwReserved[ 32 ];
|
|
}
|
|
DNS_RPC_ZONE_CREATE_INFO_LONGHORN;
|
|
#define DNS_RPC_ZONE_CREATE_INFO DNS_RPC_ZONE_CREATE_INFO_LONGHORN
|
|
|
|
/* Zone export */
|
|
typedef struct {
|
|
DWORD dwRpcStructureVersion;
|
|
DWORD dwReserved0;
|
|
|
|
[string, charset(UTF8)] char * pszZoneExportFile;
|
|
}
|
|
DNS_RPC_ZONE_EXPORT_INFO;
|
|
|
|
typedef struct {
|
|
DWORD dwRpcStructureVersion;
|
|
DWORD dwReserved0;
|
|
|
|
DWORD dwFilter;
|
|
[string, charset(UTF8)] char * pszPartitionFqdn;
|
|
[string, charset(UTF8)] char * pszQueryString;
|
|
|
|
DNS_EXTENSION pszReserved[ 6 ];
|
|
}
|
|
DNS_RPC_ENUM_ZONES_FILTER;
|
|
|
|
/* Forwarders information */
|
|
typedef struct {
|
|
DWORD fRecurseAfterForwarding;
|
|
DWORD dwForwardTimeout;
|
|
PIP4_ARRAY aipForwarders;
|
|
}
|
|
DNS_RPC_FORWARDERS_W2K;
|
|
|
|
typedef struct {
|
|
DWORD dwRpcStructureVersion;
|
|
DWORD dwReserved0;
|
|
DWORD fRecurseAfterForwarding;
|
|
DWORD dwForwardTimeout;
|
|
PIP4_ARRAY aipForwarders;
|
|
}
|
|
DNS_RPC_FORWARDERS_DOTNET;
|
|
|
|
typedef struct {
|
|
DWORD dwRpcStructureVersion;
|
|
DWORD dwReserved0;
|
|
DWORD fRecurseAfterForwarding;
|
|
DWORD dwForwardTimeout;
|
|
PDNS_ADDR_ARRAY aipForwarders;
|
|
}
|
|
DNS_RPC_FORWARDERS_LONGHORN;
|
|
#define DNS_RPC_FORWARDERS DNS_RPC_FORWARDERS_LONGHORN
|
|
|
|
|
|
/* */
|
|
/* DNS autoconfig data types */
|
|
/* */
|
|
|
|
typedef [v1_enum] enum {
|
|
DNS_RPC_AUTOCONFIG_INTERNAL_ROOTHINTS = 0x00000001,
|
|
DNS_RPC_AUTOCONFIG_INTERNAL_FORWARDERS = 0x00000002,
|
|
DNS_RPC_AUTOCONFIG_INTERNAL_ZONES = 0x00000004,
|
|
DNS_RPC_AUTOCONFIG_INTERNAL_SELFPOINT = 0x00000010,
|
|
DNS_RPC_AUTOCONFIG_INTERNAL_SELFPOINT_PREPEND = 0x00000020,
|
|
DNS_RPC_AUTOCONFIG_INTERNAL_SELFPOINT_APPEND = 0x00000040,
|
|
DNS_RPC_AUTOCONFIG_INTERNAL_RETURN_ERROR = 0x00008000,
|
|
DNS_RPC_AUTOCONFIG_ALL = 0xFFFFFFFF
|
|
}
|
|
DNS_RPC_AUTOCONFIG;
|
|
|
|
typedef struct {
|
|
DWORD dwRpcStructureVersion;
|
|
DWORD dwReserved0;
|
|
DNS_RPC_AUTOCONFIG dwAutoConfigFlags;
|
|
DWORD dwReserved1;
|
|
[string, charset(UTF8)] char * pszNewDomainName;
|
|
}
|
|
DNS_RPC_AUTOCONFIGURE;
|
|
|
|
|
|
/* */
|
|
/* DNS logging data types */
|
|
/* */
|
|
|
|
typedef [bitmap32bit] bitmap {
|
|
DNS_EVENT_LOG_SUCCESS = 0x00000000,
|
|
DNS_EVENT_LOG_ERROR_TYPE = 0x00000001,
|
|
DNS_EVENT_LOG_WARNING_TYPE = 0x00000002,
|
|
DNS_EVENT_LOG_INFORMATION_TYPE = 0x00000004
|
|
}
|
|
DNS_EVENT_LOG_TYPES;
|
|
|
|
typedef [bitmap32bit] bitmap {
|
|
DNS_RPC_VIEW_AUTHORITY_DATA = 0x00000001,
|
|
DNS_RPC_VIEW_CACHE_DATA = 0x00000002,
|
|
DNS_RPC_VIEW_GLUE_DATA = 0x00000004,
|
|
DNS_RPC_VIEW_ROOT_HINT_DATA = 0x00000008,
|
|
DNS_RPC_VIEW_ADDITIONAL_DATA = 0x00000010,
|
|
DNS_RPC_VIEW_NO_CHILDREN = 0x00010000,
|
|
DNS_RPC_VIEW_ONLY_CHILDREN = 0x00020000
|
|
}
|
|
DNS_SELECT_FLAGS;
|
|
|
|
|
|
/* */
|
|
/* DNS statistics data types */
|
|
/* */
|
|
|
|
typedef struct {
|
|
DWORD StatId;
|
|
WORD wLength;
|
|
BOOLEAN fClear;
|
|
UCHAR fReserved;
|
|
}
|
|
DNSSRV_STAT_HEADER;
|
|
|
|
typedef struct {
|
|
DNSSRV_STAT_HEADER Header;
|
|
BYTE Buffer[1];
|
|
}
|
|
DNSSRV_STAT;
|
|
|
|
|
|
/* */
|
|
/* DNS Typid and Union of all RPC data types */
|
|
/* */
|
|
|
|
typedef [v1_enum] enum {
|
|
DNSSRV_TYPEID_NULL = 0,
|
|
DNSSRV_TYPEID_DWORD = 1,
|
|
DNSSRV_TYPEID_LPSTR = 2,
|
|
DNSSRV_TYPEID_LPWSTR = 3,
|
|
DNSSRV_TYPEID_IPARRAY = 4,
|
|
DNSSRV_TYPEID_BUFFER = 5,
|
|
DNSSRV_TYPEID_SERVER_INFO_W2K = 6,
|
|
DNSSRV_TYPEID_STATS = 7,
|
|
DNSSRV_TYPEID_FORWARDERS_W2K = 8,
|
|
DNSSRV_TYPEID_ZONE_W2K = 9,
|
|
DNSSRV_TYPEID_ZONE_INFO_W2K = 10,
|
|
DNSSRV_TYPEID_ZONE_SECONDARIES_W2K = 11,
|
|
DNSSRV_TYPEID_ZONE_DATABASE_W2K = 12,
|
|
DNSSRV_TYPEID_ZONE_TYPE_RESET_W2K = 13,
|
|
DNSSRV_TYPEID_ZONE_CREATE_W2K = 14,
|
|
DNSSRV_TYPEID_NAME_AND_PARAM = 15,
|
|
DNSSRV_TYPEID_ZONE_LIST_W2K = 16,
|
|
DNSSRV_TYPEID_ZONE_RENAME = 17,
|
|
DNSSRV_TYPEID_ZONE_EXPORT = 18,
|
|
DNSSRV_TYPEID_SERVER_INFO_DOTNET = 19,
|
|
DNSSRV_TYPEID_FORWARDERS_DOTNET = 20,
|
|
DNSSRV_TYPEID_ZONE = 21,
|
|
DNSSRV_TYPEID_ZONE_INFO_DOTNET = 22,
|
|
DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET = 23,
|
|
DNSSRV_TYPEID_ZONE_DATABASE = 24,
|
|
DNSSRV_TYPEID_ZONE_TYPE_RESET_DOTNET = 25,
|
|
DNSSRV_TYPEID_ZONE_CREATE_DOTNET = 26,
|
|
DNSSRV_TYPEID_ZONE_LIST = 27,
|
|
DNSSRV_TYPEID_DP_ENUM = 28,
|
|
DNSSRV_TYPEID_DP_INFO = 29,
|
|
DNSSRV_TYPEID_DP_LIST = 30,
|
|
DNSSRV_TYPEID_ENLIST_DP = 31,
|
|
DNSSRV_TYPEID_ZONE_CHANGE_DP = 32,
|
|
DNSSRV_TYPEID_ENUM_ZONES_FILTER = 33,
|
|
DNSSRV_TYPEID_ADDRARRAY = 34,
|
|
DNSSRV_TYPEID_SERVER_INFO = 35,
|
|
DNSSRV_TYPEID_ZONE_INFO = 36,
|
|
DNSSRV_TYPEID_FORWARDERS = 37,
|
|
DNSSRV_TYPEID_ZONE_SECONDARIES = 38,
|
|
DNSSRV_TYPEID_ZONE_TYPE_RESET = 39,
|
|
DNSSRV_TYPEID_ZONE_CREATE = 40,
|
|
DNSSRV_TYPEID_IP_VALIDATE = 41,
|
|
DNSSRV_TYPEID_AUTOCONFIGURE = 42,
|
|
DNSSRV_TYPEID_UTF8_STRING_LIST = 43,
|
|
DNSSRV_TYPEID_UNICODE_STRING_LIST = 44
|
|
}
|
|
DNS_RPC_TYPEID;
|
|
|
|
typedef [switch_type(uint3264)] union {
|
|
[case(DNSSRV_TYPEID_NULL)] PBYTE Null;
|
|
|
|
[case(DNSSRV_TYPEID_DWORD)] DWORD Dword;
|
|
|
|
[case(DNSSRV_TYPEID_LPSTR)] [string, charset(UTF8)] char * String;
|
|
|
|
[case(DNSSRV_TYPEID_LPWSTR)] [string, charset(UTF16)] wchar_t * WideString;
|
|
|
|
[case(DNSSRV_TYPEID_IPARRAY)] IP4_ARRAY *IpArray;
|
|
|
|
[case(DNSSRV_TYPEID_BUFFER)]
|
|
DNS_RPC_BUFFER *Buffer;
|
|
|
|
[case(DNSSRV_TYPEID_SERVER_INFO_W2K)]
|
|
DNS_RPC_SERVER_INFO_W2K *ServerInfoW2K;
|
|
|
|
[case(DNSSRV_TYPEID_STATS)]
|
|
DNSSRV_STAT *Stats;
|
|
|
|
[case(DNSSRV_TYPEID_FORWARDERS_W2K)]
|
|
DNS_RPC_FORWARDERS_W2K *ForwardersW2K;
|
|
|
|
[case(DNSSRV_TYPEID_ZONE_W2K)]
|
|
DNS_RPC_ZONE_W2K *ZoneW2K;
|
|
|
|
[case(DNSSRV_TYPEID_ZONE_INFO_W2K)]
|
|
DNS_RPC_ZONE_INFO_W2K *ZoneInfoW2K;
|
|
|
|
[case(DNSSRV_TYPEID_ZONE_SECONDARIES_W2K)]
|
|
DNS_RPC_ZONE_SECONDARIES_W2K *SecondariesW2K;
|
|
|
|
[case(DNSSRV_TYPEID_ZONE_DATABASE_W2K)]
|
|
DNS_RPC_ZONE_DATABASE_W2K *DatabaseW2K;
|
|
|
|
[case(DNSSRV_TYPEID_ZONE_CREATE_W2K)]
|
|
DNS_RPC_ZONE_CREATE_INFO_W2K *ZoneCreateW2K;
|
|
|
|
[case(DNSSRV_TYPEID_NAME_AND_PARAM)]
|
|
DNS_RPC_NAME_AND_PARAM *NameAndParam;
|
|
|
|
[case(DNSSRV_TYPEID_ZONE_LIST_W2K)]
|
|
DNS_RPC_ZONE_LIST_W2K *ZoneListW2K;
|
|
|
|
[case(DNSSRV_TYPEID_SERVER_INFO_DOTNET)]
|
|
DNS_RPC_SERVER_INFO_DOTNET *ServerInfoDotNet;
|
|
|
|
[case(DNSSRV_TYPEID_FORWARDERS_DOTNET)]
|
|
DNS_RPC_FORWARDERS_DOTNET *ForwardersDotNet;
|
|
|
|
[case(DNSSRV_TYPEID_ZONE)]
|
|
DNS_RPC_ZONE *Zone;
|
|
|
|
[case(DNSSRV_TYPEID_ZONE_INFO_DOTNET)]
|
|
DNS_RPC_ZONE_INFO_DOTNET *ZoneInfoDotNet;
|
|
|
|
[case(DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET)]
|
|
DNS_RPC_ZONE_SECONDARIES_DOTNET *SecondariesDotNet;
|
|
|
|
[case(DNSSRV_TYPEID_ZONE_DATABASE)]
|
|
DNS_RPC_ZONE_DATABASE *Database;
|
|
|
|
[case(DNSSRV_TYPEID_ZONE_CREATE_DOTNET)]
|
|
DNS_RPC_ZONE_CREATE_INFO_DOTNET *ZoneCreateDotNet;
|
|
|
|
[case(DNSSRV_TYPEID_ZONE_LIST)]
|
|
DNS_RPC_ZONE_LIST *ZoneList;
|
|
|
|
[case(DNSSRV_TYPEID_ZONE_EXPORT)]
|
|
DNS_RPC_ZONE_EXPORT_INFO *ZoneExport;
|
|
|
|
[case(DNSSRV_TYPEID_DP_INFO)]
|
|
DNS_RPC_DP_INFO *DirectoryPartition;
|
|
|
|
[case(DNSSRV_TYPEID_DP_ENUM)]
|
|
DNS_RPC_DP_ENUM *DirectoryPartitionEnum;
|
|
|
|
[case(DNSSRV_TYPEID_DP_LIST)]
|
|
DNS_RPC_DP_LIST *DirectoryPartitionList;
|
|
|
|
[case(DNSSRV_TYPEID_ENLIST_DP)]
|
|
DNS_RPC_ENLIST_DP *EnlistDirectoryPartition;
|
|
|
|
[case(DNSSRV_TYPEID_ZONE_CHANGE_DP)]
|
|
DNS_RPC_ZONE_CHANGE_DP *ZoneChangeDirectoryPartition;
|
|
|
|
[case(DNSSRV_TYPEID_ENUM_ZONES_FILTER)]
|
|
DNS_RPC_ENUM_ZONES_FILTER *EnumZonesFilter;
|
|
|
|
[case(DNSSRV_TYPEID_ADDRARRAY)]
|
|
DNS_ADDR_ARRAY *AddrArray;
|
|
|
|
[case(DNSSRV_TYPEID_SERVER_INFO)]
|
|
DNS_RPC_SERVER_INFO *ServerInfo;
|
|
|
|
[case(DNSSRV_TYPEID_ZONE_CREATE)]
|
|
DNS_RPC_ZONE_CREATE_INFO *ZoneCreate;
|
|
|
|
[case(DNSSRV_TYPEID_FORWARDERS)]
|
|
DNS_RPC_FORWARDERS *Forwarders;
|
|
|
|
[case(DNSSRV_TYPEID_ZONE_SECONDARIES)]
|
|
DNS_RPC_ZONE_SECONDARIES *Secondaries;
|
|
|
|
[case(DNSSRV_TYPEID_IP_VALIDATE)]
|
|
DNS_RPC_IP_VALIDATE *IpValidate;
|
|
|
|
[case(DNSSRV_TYPEID_ZONE_INFO)]
|
|
DNS_RPC_ZONE_INFO *ZoneInfo;
|
|
|
|
[case(DNSSRV_TYPEID_AUTOCONFIGURE)]
|
|
DNS_RPC_AUTOCONFIGURE *AutoConfigure;
|
|
|
|
[case(DNSSRV_TYPEID_UTF8_STRING_LIST)]
|
|
DNS_RPC_UTF8_STRING_LIST *Utf8StringList;
|
|
} DNSSRV_RPC_UNION;
|
|
|
|
|
|
/* */
|
|
/* DNS RPC interface */
|
|
/* */
|
|
|
|
typedef [public,gensize] struct {
|
|
[value((12+ndr_size_DNS_RPC_NAME(&dnsNodeName,0)+3) & ~3)] uint16 wLength;
|
|
uint16 wRecordCount;
|
|
uint32 dwFlags;
|
|
uint32 dwChildCount;
|
|
DNS_RPC_NAME dnsNodeName;
|
|
DNS_RPC_RECORD records[wRecordCount];
|
|
} DNS_RPC_RECORDS;
|
|
|
|
typedef [public,nopull,nopush,gensize] struct {
|
|
uint32 count;
|
|
DNS_RPC_RECORDS rec[count];
|
|
} DNS_RPC_RECORDS_ARRAY;
|
|
|
|
WERROR DnssrvOperation(
|
|
[in,unique,string,charset(UTF16)] uint16 *pwszServerName,
|
|
[in,unique,string,charset(UTF8)] uint8 *pszZone,
|
|
[in] DWORD dwContext,
|
|
[in,unique,string,charset(UTF8)] uint8 *pszOperation,
|
|
[in] DNS_RPC_TYPEID dwTypeId,
|
|
[in, switch_is(dwTypeId)] DNSSRV_RPC_UNION pData
|
|
);
|
|
|
|
WERROR DnssrvQuery(
|
|
[in,unique,string,charset(UTF16)] uint16 *pwszServerName,
|
|
[in,unique,string,charset(UTF8)] uint8 *pszZone,
|
|
[in,unique,string,charset(UTF8)] uint8 *pszOperation,
|
|
[out] DNS_RPC_TYPEID *pdwTypeId,
|
|
[out, switch_is(*pdwTypeId)] DNSSRV_RPC_UNION *ppData
|
|
);
|
|
|
|
WERROR DnssrvComplexOperation(
|
|
[in,unique,string,charset(UTF16)] uint16 *pwszServerName,
|
|
[in,unique,string,charset(UTF8)] uint8 *pszZone,
|
|
[in,unique,string,charset(UTF8)] uint8 *pszOperation,
|
|
[in] DNS_RPC_TYPEID dwTypeIn,
|
|
[in, switch_is(dwTypeIn)] DNSSRV_RPC_UNION pDataIn,
|
|
[out] DNS_RPC_TYPEID *pdwTypeOut,
|
|
[out, switch_is(*pdwTypeOut)] DNSSRV_RPC_UNION *ppDataOut
|
|
);
|
|
|
|
WERROR DnssrvEnumRecords(
|
|
[in,unique,string,charset(UTF16)] uint16 *pwszServerName,
|
|
[in,unique,string,charset(UTF8)] uint8 *pszZone,
|
|
[in,unique,string,charset(UTF8)] uint8 *pszNodeName,
|
|
[in,unique,string,charset(UTF8)] uint8 *pszStartChild,
|
|
[in] dns_record_type wRecordType,
|
|
[in] DNS_SELECT_FLAGS fSelectFlag,
|
|
[in,unique,string,charset(UTF8)] uint8 *pszFilterStart,
|
|
[in,unique,string,charset(UTF8)] uint8 *pszFilterStop,
|
|
[out] DWORD *pdwBufferLength,
|
|
[out,ref,subcontext(4),subcontext_size(*pdwBufferLength)] DNS_RPC_RECORDS_ARRAY **pBuffer
|
|
);
|
|
|
|
WERROR DnssrvUpdateRecord(
|
|
[in,unique,string,charset(UTF16)] uint16 *pwszServerName,
|
|
[in,unique,string,charset(UTF8)] uint8 *pszZone,
|
|
[in,unique,string,charset(UTF8)] uint8 *pszNodeName,
|
|
[in, unique] DNS_RPC_RECORD_BUF *pAddRecord,
|
|
[in, unique] DNS_RPC_RECORD_BUF *pDeleteRecord
|
|
);
|
|
|
|
WERROR DnssrvOperation2(
|
|
[in] DNS_RPC_CLIENT_VERSION dwClientVersion,
|
|
[in] uint32 dwSettingFlags,
|
|
[in,unique,string,charset(UTF16)] uint16 *pwszServerName,
|
|
[in,unique,string,charset(UTF8)] uint8 *pszZone,
|
|
[in] DWORD dwContext,
|
|
[in,unique,string,charset(UTF8)] uint8 *pszOperation,
|
|
[in] DNS_RPC_TYPEID dwTypeId,
|
|
[in, switch_is(dwTypeId)] DNSSRV_RPC_UNION pData
|
|
);
|
|
|
|
WERROR DnssrvQuery2(
|
|
[in] DNS_RPC_CLIENT_VERSION dwClientVersion,
|
|
[in] uint32 dwSettingFlags,
|
|
[in,unique,string,charset(UTF16)] uint16 *pwszServerName,
|
|
[in,unique,string,charset(UTF8)] uint8 *pszZone,
|
|
[in,unique,string,charset(UTF8)] uint8 *pszOperation,
|
|
[out] DNS_RPC_TYPEID *pdwTypeId,
|
|
[out, switch_is(*pdwTypeId)] DNSSRV_RPC_UNION *ppData
|
|
);
|
|
|
|
WERROR DnssrvComplexOperation2(
|
|
[in] DNS_RPC_CLIENT_VERSION dwClientVersion,
|
|
[in] uint32 dwSettingFlags,
|
|
[in,unique,string,charset(UTF16)] uint16 *pwszServerName,
|
|
[in,unique,string,charset(UTF8)] uint8 *pszZone,
|
|
[in,unique,string,charset(UTF8)] uint8 *pszOperation,
|
|
[in] DNS_RPC_TYPEID dwTypeIn,
|
|
[in, switch_is(dwTypeIn)] DNSSRV_RPC_UNION pDataIn,
|
|
[out] DNS_RPC_TYPEID *pdwTypeOut,
|
|
[out, switch_is(*pdwTypeOut)] DNSSRV_RPC_UNION *ppDataOut
|
|
);
|
|
|
|
WERROR DnssrvEnumRecords2(
|
|
[in] DNS_RPC_CLIENT_VERSION dwClientVersion,
|
|
[in] DWORD dwSettingFlags,
|
|
[in,unique,string,charset(UTF16)] uint16 *pwszServerName,
|
|
[in,unique,string,charset(UTF8)] uint8 *pszZone,
|
|
[in,unique,string,charset(UTF8)] uint8 *pszNodeName,
|
|
[in,unique,string,charset(UTF8)] uint8 *pszStartChild,
|
|
[in] dns_record_type wRecordType,
|
|
[in] DNS_SELECT_FLAGS fSelectFlag,
|
|
[in,unique,string,charset(UTF8)] uint8 *pszFilterStart,
|
|
[in,unique,string,charset(UTF8)] uint8 *pszFilterStop,
|
|
[out] uint32 *pdwBufferLength,
|
|
[out,ref,subcontext(4),subcontext_size(*pdwBufferLength)] DNS_RPC_RECORDS_ARRAY **pBuffer
|
|
);
|
|
|
|
WERROR DnssrvUpdateRecord2(
|
|
[in] DNS_RPC_CLIENT_VERSION dwClientVersion,
|
|
[in] uint32 dwSettingFlags,
|
|
[in,unique,string,charset(UTF16)] uint16 *pwszServerName,
|
|
[in,unique,string,charset(UTF8)] uint8 *pszZone,
|
|
[in,string,charset(UTF8)] uint8 *pszNodeName,
|
|
[in, unique] DNS_RPC_RECORD_BUF *pAddRecord,
|
|
[in, unique] DNS_RPC_RECORD_BUF *pDeleteRecord
|
|
);
|
|
}
|