Wireshark  2.9.0-477-g68ec514b
The Wireshark network protocol analyzer
dnsserver.idl
1 /*
2  dnsserver interface definition
3 */
4 
5 [ uuid("50abc2a4-574d-40b3-9d66-ee4fd5fba076"),
6  version(5.0),
7  pointer_default(unique),
8  helpstring("DNS Server")
9 ] interface dnsserver
10 {
11 
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;
17 
18  typedef [flag(NDR_ALIGN4)] struct {
19  uint8 OSMajorVersion;
20  uint8 OSMinorVersion;
21  uint16 ServicePackVersion;
22  } DNS_RPC_VERSION;
23 
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;
29 
30 
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
45  } DNS_LOG_LEVELS;
46 
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
52  } DNS_RPC_PROTOCOLS;
53 
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;
60 
61  typedef [enum16bit] enum {
62  DNS_TYPE_ZERO = 0x0000,
63  DNS_TYPE_A = 0x0001,
64  DNS_TYPE_NS = 0x0002,
65  DNS_TYPE_MD = 0x0003,
66  DNS_TYPE_MF = 0x0004,
67  DNS_TYPE_CNAME = 0x0005,
68  DNS_TYPE_SOA = 0x0006,
69  DNS_TYPE_MB = 0x0007,
70  DNS_TYPE_MG = 0x0008,
71  DNS_TYPE_MR = 0x0009,
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,
77  DNS_TYPE_MX = 0x000f,
78  DNS_TYPE_TXT = 0x0010,
79  DNS_TYPE_RP = 0x0011,
80  DNS_TYPE_AFSDB = 0x0012,
81  DNS_TYPE_X25 = 0x0013,
82  DNS_TYPE_ISDN = 0x0014,
83  DNS_TYPE_RT = 0x0015,
84  DNS_TYPE_NSAP = 0x0016,
85  DNS_TYPE_NSAPPTR = 0x0017,
86  DNS_TYPE_SIG = 0x0018,
87  DNS_TYPE_KEY = 0x0019,
88  DNS_TYPE_PX = 0x001a,
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
100  } DNS_RECORD_TYPE;
101 
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
110  } DNS_SELECT_FLAGS;
111 
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;
126 
127  /* 2.2.2.2.1 this cant really be described in IDL :-( */
128  typedef struct {
129  uint8 NameLength;
130  uint8 Name[NameLength];
131  } DNS_RPC_NAME;
132 
133  typedef struct {
134  DNS_RPC_NAME Name;
136 
137 /* typedef [nodiscriminant] union { */
138  typedef union {
139  [case(2)] DNS_RPC_RECORD_NODE_NAME NodeName;
141 
142  typedef struct {
143  uint16 DataLength; /* size of */
144  DNS_RECORD_TYPE Type;
145  uint32 Flags;
146  uint32 Serial;
147  uint32 TtlSeconds;
148  uint32 TimeStamp;
149  uint32 reserved;
150  [switch_is(Type)] DNS_RPC_RECORD_UNION record;
151  } DNS_RPC_RECORD;
152 
153  typedef struct {
154  uint16 Length;
155  uint16 RecordCount;
156  DNS_RPC_NODE_FLAGS Flags;
157  uint32 Childcount;
158  DNS_RPC_NAME NodeName;
159  DNS_RPC_RECORD records[RecordCount];
160  } DNS_RPC_NODE;
161 /* XXX */
162 
163 
164  typedef struct {
165  uint32 AddrCount;
166  [size_is(AddrCount)] uint32 AddrArray[];
167  } IP4_ARRAY;
168 
169 /* XXX */
170  typedef struct {
171  uint32 RpcStructureVersion;
172  uint32 reserved0;
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;
196  uint32 DebugLevel;
197  uint32 ForwardTimeout;
198  DNS_RPC_PROTOCOLS RpcProtocol;
199  DNS_NAME_CHECK_FLAGS NameCheckFlag;
200  uint32 AddressAnswerLimit;
201  uint32 RecursionRetry;
202  uint32 RecursionTimeout;
203  uint32 MaxCacheTtl;
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;
214  uint32 DsDsaVersion;
215  uint32 reserve_array[4];
216  boolean8 AutoReverseZones;
217  boolean8 AutoCacheUpdate;
218  boolean8 RecurseAfterForwarding;
219  boolean8 ForwardDelegations;
220  boolean8 NoRecursion;
221  boolean8 SecureResponses;
222  boolean8 RoundRobin;
223  boolean8 LocalNetPriority;
224  boolean8 BindSecondaries;
225  boolean8 WriteAuthorityNs;
226  boolean8 StrictFileParsing;
227  boolean8 LooseWildcarding;
228  boolean8 DefaultAgingState;
229  boolean8 reserve_array2[15];
231 /* XXX */
232 
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
279  } DnssrvRpcTypeId;
280 
281  typedef union {
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*/
328 
329 
330  /******************/
331  /* Function: 0x00 */
332  NTSTATUS DnssrvOperation (
333  );
334 
335  /******************/
336  /* Function: 0x01 */
337  NTSTATUS DnssrvQuery (
338  );
339 
340  /******************/
341  /* Function: 0x02 */
342  NTSTATUS DnssrvComplexOperation (
343  );
344 
345  /******************/
346  /* Function: 0x03 */
347  NTSTATUS DnssrvEnumRecords (
348  );
349 
350  /******************/
351  /* Function: 0x04 */
352  NTSTATUS DnssrvUpdateRecord (
353  );
354 
355  /******************/
356  /* Function: 0x05 */
357  NTSTATUS DnssrvOperation2 (
358  );
359 
360  /******************/
361  /* Function: 0x06 */
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
370  );
371 
372  /******************/
373  /* Function: 0x07 */
374  NTSTATUS DnssrvComplexOperation2 (
375  );
376 
377  typedef struct {
378  DNS_RPC_NODE rpc_node;
380 
381  /******************/
382  /* Function: 0x08 */
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
396  );
397 
398  /******************/
399  /* Function: 0x09 */
400  NTSTATUS DnssrvUpdateRecord2 (
401  );
402 }
Definition: dnsserver.idl:133
Definition: dnsserver.idl:281
Definition: dnsserver.idl:9
Definition: dnsserver.idl:164
Definition: dnsserver.idl:170
Definition: dnsserver.idl:142
Definition: dnsserver.idl:377
Definition: dnsserver.idl:153
Definition: dnsserver.idl:138
Definition: dnsserver.idl:128
Definition: packet-giop.h:26