epan/dissectors/pidl/samr/samr.cnf cnf_dissect_lsa_BinaryString => lsarpc_dissect_str...
[wireshark-sm.git] / epan / dissectors / pidl / dnsserver / dnsserver.idl
blobc71b8eb1c30fe8e91a5c638eb2a2f6a5d9f24863
1 /*
2 dnsserver interface definition
3 */
5 [ uuid("50abc2a4-574d-40b3-9d66-ee4fd5fba076"),
6 version(5.0),
7 pointer_default(unique),
8 helpstring("DNS Server")
9 ] interface dnsserver
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 {
19 uint8 OSMajorVersion;
20 uint8 OSMinorVersion;
21 uint16 ServicePackVersion;
22 } DNS_RPC_VERSION;
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
45 } DNS_LOG_LEVELS;
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;
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,
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;
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;
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 :-( */
128 typedef struct {
129 uint8 NameLength;
130 uint8 Name[NameLength];
131 } DNS_RPC_NAME;
133 typedef struct {
134 DNS_RPC_NAME Name;
135 } DNS_RPC_RECORD_NODE_NAME;
137 /* typedef [nodiscriminant] union { */
138 typedef union {
139 [case(2)] DNS_RPC_RECORD_NODE_NAME NodeName;
140 } DNS_RPC_RECORD_UNION;
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;
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 */
164 typedef struct {
165 uint32 AddrCount;
166 [size_is(AddrCount)] uint32 AddrArray[];
167 } IP4_ARRAY;
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];
230 } DNS_RPC_SERVER_INFO_DOTNET;
231 /* XXX */
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;
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*/
327 } DNSSRV_RPC_UNION;
330 /******************/
331 /* Function: 0x00 */
332 NTSTATUS DnssrvOperation (
335 /******************/
336 /* Function: 0x01 */
337 NTSTATUS DnssrvQuery (
340 /******************/
341 /* Function: 0x02 */
342 NTSTATUS DnssrvComplexOperation (
345 /******************/
346 /* Function: 0x03 */
347 NTSTATUS DnssrvEnumRecords (
350 /******************/
351 /* Function: 0x04 */
352 NTSTATUS DnssrvUpdateRecord (
355 /******************/
356 /* Function: 0x05 */
357 NTSTATUS DnssrvOperation2 (
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
372 /******************/
373 /* Function: 0x07 */
374 NTSTATUS DnssrvComplexOperation2 (
377 typedef struct {
378 DNS_RPC_NODE rpc_node;
379 } DNS_RECORD_BUFFER;
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
398 /******************/
399 /* Function: 0x09 */
400 NTSTATUS DnssrvUpdateRecord2 (