2 dnsserver interface definition
5 [ uuid("50abc2a4-574d-40b3-9d66-ee4fd5fba076"),
7 pointer_default(unique),
8 helpstring("DNS Server")
12 typedef [v1_enum] enum {
13 DNS_CLIENT_VERSION_W2K
= 0x00000000,
14 DNS_CLIENT_VERSION_DOTNET
= 0x00000006,
15 DNS_CLIENT_VERSION_LONGHORN
= 0x00000007
16 } DNS_RPC_CLIENT_VERSION
;
18 typedef [flag
(NDR_ALIGN4
)] struct {
21 uint16 ServicePackVersion
;
24 typedef [enum8bit
] enum {
25 DNS_RPC_BOOT_METHOD_FILE
= 0x01,
26 DNS_RPC_BOOT_METHOD_REGISTRY
= 0x02,
27 DNS_RPC_BOOT_METHOD_DIRECTORY
= 0x03
28 } DNS_RPC_BOOT_METHOD
;
31 const uint32 DNS_LOG_LEVEL_ALL_PACKETS
= 0x0000ffff;
32 const uint32 DNS_LOG_LEVEL_NON_QUERY
= 0x000000fe;
33 typedef [bitmap32bit
] bitmap
{
34 DNS_LOG_LEVEL_QUERY
= 0x00000001,
35 DNS_LOG_LEVEL_NOTIFY
= 0x00000010,
36 DNS_LOG_LEVEL_UPDATE
= 0x00000020,
37 DNS_LOG_LEVEL_QUESTIONS
= 0x00000100,
38 DNS_LOG_LEVEL_ANSWERS
= 0x00000200,
39 DNS_LOG_LEVEL_SEND
= 0x00001000,
40 DNS_LOG_LEVEL_RECV
= 0x00002000,
41 DNS_LOG_LEVEL_UDP
= 0x00004000,
42 DNS_LOG_LEVEL_TCP
= 0x00008000,
43 DNS_LOG_LEVEL_FULL_PACKETS
= 0x01000000,
44 DNS_LOG_LEVEL_WRITE_THROUGH
= 0x80000000
47 const uint32 DNS_RPC_USE_ALL_PROTOCOLS
= 0xffffffff;
48 typedef [bitmap32bit
] bitmap
{
49 DNS_RPC_USE_TCPIP
= 0x00000001,
50 DNS_RPC_USE_NAMED_PIPE
= 0x00000002,
51 DNS_RPC_USE_LPC
= 0x00000004
54 typedef [v1_enum] enum {
55 DNS_ALLOW_RFC_NAMES_ONLY
= 0x00000000,
56 DNS_ALLOW_NONRFC_NAMES
= 0x00000001,
57 DNS_ALLOW_MULTIBYTE_NAMES
= 0x00000002,
58 DNS_ALLOW_ALL_NAMES
= 0x00000003
59 } DNS_NAME_CHECK_FLAGS
;
61 typedef [enum16bit
] enum {
62 DNS_TYPE_ZERO
= 0x0000,
67 DNS_TYPE_CNAME
= 0x0005,
68 DNS_TYPE_SOA
= 0x0006,
72 DNS_TYPE_NULL
= 0x000a,
73 DNS_TYPE_WKS
= 0x000b,
74 DNS_TYPE_PTR
= 0x000c,
75 DNS_TYPE_HINFO
= 0x000d,
76 DNS_TYPE_MINFO
= 0x000e,
78 DNS_TYPE_TXT
= 0x0010,
80 DNS_TYPE_AFSDB
= 0x0012,
81 DNS_TYPE_X25
= 0x0013,
82 DNS_TYPE_ISDN
= 0x0014,
84 DNS_TYPE_NSAP
= 0x0016,
85 DNS_TYPE_NSAPPTR
= 0x0017,
86 DNS_TYPE_SIG
= 0x0018,
87 DNS_TYPE_KEY
= 0x0019,
89 DNS_TYPE_GPOS
= 0x001b,
90 DNS_TYPE_AAAA
= 0x001c,
91 DNS_TYPE_LOC
= 0x001d,
92 DNS_TYPE_NXT
= 0x001e,
93 DNS_TYPE_SRV
= 0x0021,
94 DNS_TYPE_ATMA
= 0x0022,
95 DNS_TYPE_NAPTR
= 0x0023,
96 DNS_TYPE_DNAME
= 0x0024,
97 DNS_TYPE_ALL
= 0x00ff,
98 DNS_TYPE_WINS
= 0xff01,
99 DNS_TYPE_WINSR
= 0xff02
102 typedef [bitmap32bit
] bitmap
{
103 DNS_RPC_VIEW_AUTHORITY_DATA
= 0x00000001,
104 DNS_RPC_VIEW_CACHE_DATA
= 0x00000002,
105 DNS_RPC_VIEW_GLUE_DATA
= 0x00000004,
106 DNS_RPC_VIEW_ROOT_HINT_DATA
= 0x00000008,
107 DNS_RPC_VIEW_ADDITIONAL_DATA
= 0x00000010,
108 DNS_RPC_VIEW_NO_CHILDREN
= 0x00010000,
109 DNS_RPC_VIEW_ONLY_CHILDREN
= 0x00020000
112 typedef [bitmap32bit
] bitmap
{
113 DNS_RPC_FLAG_CACHE_DATA
= 0x80000000,
114 DNS_RPC_FLAG_ZONE_ROOT
= 0x40000000,
115 DNS_RPC_FLAG_AUTH_ZONE_ROOT
= 0x20000000,
116 DNS_RPC_FLAG_ZONE_DELEGATION
= 0x10000000,
117 DNS_RPC_FLAG_RECOR_DEFAULT_TTL
= 0x08000000,
118 DNS_RPC_FLAG_RECORD_TTL_CHANGE
= 0x04000000,
119 DNS_RPC_FLAG_RECORD_CREATE_PTR
= 0x02000000,
120 DNS_RPC_FLAG_NODE_STICKY
= 0x01000000,
121 DNS_RPC_FLAG_NODE_COMPLETE
= 0x00800000,
122 DNS_RPC_FLAG_OPEN_ACL
= 0x00040000,
123 DNS_RPC_FLAG_AGING_ON
= 0x00020000,
124 DNS_RPC_FLAG_SUPPRESS_NOTIFY
= 0x00010000
125 } DNS_RPC_NODE_FLAGS
;
127 /* 2.2.2.2.1 this cant really be described in IDL :-( */
130 uint8 Name
[NameLength
];
135 } DNS_RPC_RECORD_NODE_NAME
;
137 /* typedef [nodiscriminant] union { */
139 [case(2)] DNS_RPC_RECORD_NODE_NAME NodeName
;
140 } DNS_RPC_RECORD_UNION
;
143 uint16 DataLength
; /* size of */
144 DNS_RECORD_TYPE Type
;
150 [switch_is(Type
)] DNS_RPC_RECORD_UNION record
;
156 DNS_RPC_NODE_FLAGS Flags
;
158 DNS_RPC_NAME NodeName
;
159 DNS_RPC_RECORD records
[RecordCount
];
166 [size_is(AddrCount
)] uint32 AddrArray
[];
171 uint32 RpcStructureVersion
;
173 DNS_RPC_VERSION
Version;
174 DNS_RPC_BOOT_METHOD BootMethod
;
175 boolean8 AdminConfigured
;
176 boolean8 AllowUpdate
;
177 boolean8 DsAvailable
;
178 [unique, string] uint8
*ServerName
;
179 [unique, string, charset
(UTF16
)] uint16
*DsContainer
;
180 [unique] IP4_ARRAY
*ServerAddrs
;
181 [unique] IP4_ARRAY
*ListenAddrs
;
182 [unique] IP4_ARRAY
*Forwarders
;
183 [unique] IP4_ARRAY
*LogFilter
;
184 [unique, string, charset
(UTF16
)] uint16
*LogFilePath
;
185 [unique, string] uint8
*DomainName
;
186 [unique, string] uint8
*ForestName
;
187 [unique, string] uint8
*DomainDirectoryPartition
;
188 [unique, string] uint8
*ForestDirectoryPartition
;
189 [unique, string] uint8
*extension0
;
190 [unique, string] uint8
*extension1
;
191 [unique, string] uint8
*extension2
;
192 [unique, string] uint8
*extension3
;
193 [unique, string] uint8
*extension4
;
194 [unique, string] uint8
*extension5
;
195 DNS_LOG_LEVELS LogLevel
;
197 uint32 ForwardTimeout
;
198 DNS_RPC_PROTOCOLS RpcProtocol
;
199 DNS_NAME_CHECK_FLAGS NameCheckFlag
;
200 uint32 AddressAnswerLimit
;
201 uint32 RecursionRetry
;
202 uint32 RecursionTimeout
;
204 uint32 DsPollingInterval
;
205 uint32 LocalNetPriorityNetmask
;
206 uint32 ScavengingInterval
;
207 uint32 DefaultRefreshInterval
;
208 uint32 DefaultNoRefreshInterval
;
209 uint32 LastScavengeTime
;
210 uint32 EventLogLevel
;
211 uint32 LogFileMaxSize
;
212 uint32 DsForestVersion
;
213 uint32 DsDomainVersion
;
215 uint32 reserve_array
[4];
216 boolean8 AutoReverseZones
;
217 boolean8 AutoCacheUpdate
;
218 boolean8 RecurseAfterForwarding
;
219 boolean8 ForwardDelegations
;
220 boolean8 NoRecursion
;
221 boolean8 SecureResponses
;
223 boolean8 LocalNetPriority
;
224 boolean8 BindSecondaries
;
225 boolean8 WriteAuthorityNs
;
226 boolean8 StrictFileParsing
;
227 boolean8 LooseWildcarding
;
228 boolean8 DefaultAgingState
;
229 boolean8 reserve_array2
[15];
230 } DNS_RPC_SERVER_INFO_DOTNET
;
233 typedef [v1_enum, flag
(NDR_PAHEX
)] enum {
234 DNSSRV_TYPEID_NULL
= 0,
235 DNSSRV_TYPEID_DWORD
= 1,
236 DNSSRV_TYPEID_LPSTR
= 2,
237 DNSSRV_TYPEID_LPWSTR
= 3,
238 DNSSRV_TYPEID_IPARRAY
= 4,
239 DNSSRV_TYPEID_BUFFER
= 5,
240 DNSSRV_TYPEID_SERVER_INFO_W2K
= 6,
241 DNSSRV_TYPEID_STATS
= 7,
242 DNSSRV_TYPEID_FORWARDERS_W2K
= 8,
243 DNSSRV_TYPEID_ZONE_W2K
= 9,
244 DNSSRV_TYPEID_ZONE_INFO_W2K
= 10,
245 DNSSRV_TYPEID_ZONE_SECONDARIES_W2K
= 11,
246 DNSSRV_TYPEID_ZONE_DATABASE_W2K
= 12,
247 DNSSRV_TYPEID_ZONE_TYPE_RESET_W2K
= 13,
248 DNSSRV_TYPEID_ZONE_CREATE_W2K
= 14,
249 DNSSRV_TYPEID_NAME_AND_PARAM
= 15,
250 DNSSRV_TYPEID_ZONE_LIST_W2K
= 16,
251 DNSSRV_TYPEID_ZONE_RENAME
= 17,
252 DNSSRV_TYPEID_ZONE_EXPORT
= 18,
253 DNSSRV_TYPEID_SERVER_INFO_DOTNET
= 19,
254 DNSSRV_TYPEID_FORWARDERS_DOTNET
= 20,
255 DNSSRV_TYPEID_ZONE
= 21,
256 DNSSRV_TYPEID_ZONE_INFO_DOTNET
= 22,
257 DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET
= 23,
258 DNSSRV_TYPEID_ZONE_DATABASE
= 24,
259 DNSSRV_TYPEID_ZONE_TYPE_RESET_DOTNET
= 25,
260 DNSSRV_TYPEID_ZONE_CREATE_DOTNET
= 26,
261 DNSSRV_TYPEID_ZONE_LIST
= 27,
262 DNSSRV_TYPEID_DP_ENUM
= 28,
263 DNSSRV_TYPEID_DP_INFO
= 29,
264 DNSSRV_TYPEID_DP_LIST
= 30,
265 DNSSRV_TYPEID_ENLIST_DP
= 31,
266 DNSSRV_TYPEID_ZONE_CHANGE_DP
= 32,
267 DNSSRV_TYPEID_ENUM_ZONES_FILTER
= 33,
268 DNSSRV_TYPEID_ADDARRAY
= 34,
269 DNSSRV_TYPEID_SERVER_INFO
= 35,
270 DNSSRV_TYPEID_ZONE_INFO
= 36,
271 DNSSRV_TYPEID_FORWARDERS
= 37,
272 DNSSRV_TYPEID_ZONE_SECONDARIES
= 38,
273 DNSSRV_TYPEID_ZONE_TYPE_RESET
= 39,
274 DNSSRV_TYPEID_ZONE_CREATE
= 40,
275 DNSSRV_TYPEID_IP_VALIDATE
= 41,
276 DNSSRV_TYPEID_AUTOCONFIGURE
= 42,
277 DNSSRV_TYPEID_UTF8_STRING_LIST
= 43,
278 DNSSRV_TYPEID_UNICODE_STRING_LIST
= 44
282 [case(DNSSRV_TYPEID_NULL
)] uint8
*null
;
283 [case(DNSSRV_TYPEID_DWORD
)] uint32 dword
;
284 /* DNSSRV_TYPEID_LPSTR = 2,*/
285 /* DNSSRV_TYPEID_LPWSTR = 3,*/
286 /* DNSSRV_TYPEID_IPARRAY = 4,*/
287 /* DNSSRV_TYPEID_BUFFER = 5,*/
288 /* DNSSRV_TYPEID_SERVER_INFO_W2K = 6,*/
289 /* DNSSRV_TYPEID_STATS = 7,*/
290 /* DNSSRV_TYPEID_FORWARDERS_W2K = 8,*/
291 /* DNSSRV_TYPEID_ZONE_W2K = 9,*/
292 /* DNSSRV_TYPEID_ZONE_INFO_W2K = 10,*/
293 /* DNSSRV_TYPEID_ZONE_SECONDARIES_W2K = 11,*/
294 /* DNSSRV_TYPEID_ZONE_DATABASE_W2K = 12,*/
295 /* DNSSRV_TYPEID_ZONE_TYPE_RESET_W2K = 13,*/
296 /* DNSSRV_TYPEID_ZONE_CREATE_W2K = 14,*/
297 /* DNSSRV_TYPEID_NAME_AND_PARAM = 15,*/
298 /* DNSSRV_TYPEID_ZONE_LIST_W2K = 16,*/
299 /* DNSSRV_TYPEID_ZONE_RENAME = 17,*/
300 /* DNSSRV_TYPEID_ZONE_EXPORT = 18,*/
301 [case(DNSSRV_TYPEID_SERVER_INFO_DOTNET
)] DNS_RPC_SERVER_INFO_DOTNET
*ServerInfoDotnet
;
302 /* DNSSRV_TYPEID_FORWARDERS_DOTNET = 20,*/
303 /* DNSSRV_TYPEID_ZONE = 21,*/
304 /* DNSSRV_TYPEID_ZONE_INFO_DOTNET = 22,*/
305 /* DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET = 23,*/
306 /* DNSSRV_TYPEID_ZONE_DATABASE = 24,*/
307 /* DNSSRV_TYPEID_ZONE_TYPE_RESET_DOTNET = 25,*/
308 /* DNSSRV_TYPEID_ZONE_CREATE_DOTNET = 26,*/
309 /* DNSSRV_TYPEID_ZONE_LIST = 27,*/
310 /* DNSSRV_TYPEID_DP_ENUM = 28,*/
311 /* DNSSRV_TYPEID_DP_INFO = 29,*/
312 /* DNSSRV_TYPEID_DP_LIST = 30,*/
313 /* DNSSRV_TYPEID_ENLIST_DP = 31,*/
314 /* DNSSRV_TYPEID_ZONE_CHANGE_DP = 32,*/
315 /* DNSSRV_TYPEID_ENUM_ZONES_FILTER = 33,*/
316 /* DNSSRV_TYPEID_ADDARRAY = 34,*/
317 /* DNSSRV_TYPEID_SERVER_INFO = 35,*/
318 /* DNSSRV_TYPEID_ZONE_INFO = 36,*/
319 /* DNSSRV_TYPEID_FORWARDERS = 37,*/
320 /* DNSSRV_TYPEID_ZONE_SECONDARIES = 38,*/
321 /* DNSSRV_TYPEID_ZONE_TYPE_RESET = 39,*/
322 /* DNSSRV_TYPEID_ZONE_CREATE = 40,*/
323 /* DNSSRV_TYPEID_IP_VALIDATE = 41,*/
324 /* DNSSRV_TYPEID_AUTOCONFIGURE = 42,*/
325 /* DNSSRV_TYPEID_UTF8_STRING_LIST = 43,*/
326 /* DNSSRV_TYPEID_UNICODE_STRING_LIST = 44*/
332 NTSTATUS DnssrvOperation
(
337 NTSTATUS DnssrvQuery
(
342 NTSTATUS DnssrvComplexOperation
(
347 NTSTATUS DnssrvEnumRecords
(
352 NTSTATUS DnssrvUpdateRecord
(
357 NTSTATUS DnssrvOperation2
(
362 NTSTATUS DnssrvQuery2
(
363 [in] DNS_RPC_CLIENT_VERSION client_version
,
364 [in] uint32 setting_flags
,
365 [in, unique, string, charset
(UTF16
)] uint16
*server_name
,
366 [in, unique, string] uint8
*zone
,
367 [in, unique, string] uint8
*operation
,
368 [out, ref] DnssrvRpcTypeId
*type_id
,
369 [out, ref, switch_is(*type_id
)] DNSSRV_RPC_UNION
*data
374 NTSTATUS DnssrvComplexOperation2
(
378 DNS_RPC_NODE rpc_node
;
383 NTSTATUS DnssrvEnumRecords2
(
384 [in] DNS_RPC_CLIENT_VERSION client_version
,
385 [in] uint32 setting_flags
,
386 [in, unique, string, charset
(UTF16
)] uint16
*server_name
,
387 [in, unique, string] uint8
*zone
,
388 [in, unique, string] uint8
*node_name
,
389 [in, unique, string] uint8
*start_child
,
390 [in] DNS_RECORD_TYPE record_type
,
391 [in] DNS_SELECT_FLAGS select_flag
,
392 [in, unique, string] uint8
*filter_start
,
393 [in, unique, string] uint8
*filter_stop
,
394 [out,ref] uint32
*buffer_length
,
395 [out, unique, subcontext
(4)] DNS_RPC_NODE
*record_buffer
400 NTSTATUS DnssrvUpdateRecord2
(