15d1ca8efcd1c44f7cb73fc5e4eea7a6eb0dbc47
[samba.git] / source4 / librpc / idl / drsuapi.idl
1 #include "idl_types.h"
2
3
4   uuid("e3514235-4b06-11d1-ab04-00c04fc2dcd2"),
5   version(4.0),
6   endpoint("ncacn_np:[\\pipe\\lsass]","ncacn_np:[\\pipe\\protected_storage]","ncacn_ip_tcp:"),
7   helpstring("Active Directory Replication"),
8   pointer_default(unique)
9
10 interface drsuapi
11 {
12         /*****************/
13         /* Function 0x00 */
14
15         typedef [flag(NDR_PAHEX)] struct {
16                 [range(1,10000)] uint32 length;
17                 [size_is(length)] uint8 data[];
18         } drsuapi_DsBindInfo;
19
20         /* this is a magic guid you need to pass to DsBind to make drsuapi_DsWriteAccountSpn() work
21          * 
22          * maybe the bind_guid could also be the invocation_id see drsuapi_DsReplicaConnection04
23          */
24         const string DRSUAPI_DS_BIND_GUID = "e24d201a-4fd6-11d1-a3da-0000f875ae0d";
25         
26
27         /* this are the bind info blobs returned (seemed to be const):
28                 w2k3    7ffbff1f81a6ff5d80139441a372e9b779d70268f801000000000000
29                 w2k     7ffb1f00cb7fb9102391c143bda81fc90e0ff452f4000000
30         */
31         const uint8 DRSUAPI_DS_BIND_INFO_RESPONSE_W2K3[] = {    0x7f,0xfb,0xff,0x1f,0x81,0xa6,0xff,0x5d,
32                                                                 0x80,0x13,0x94,0x41,0xa3,0x72,0xe9,0xb7,
33                                                                 0x79,0xd7,0x02,0x68,0xf8,0x01,0x00,0x00,
34                                                                 0x00,0x00,0x00,0x00};
35         const uint8 DRSUAPI_DS_BIND_INFO_RESPONSE_W2K[] = {     0x7f,0xfb,0x1f,0x00,0xcb,0x7f,0xb9,0x10,
36                                                                 0x23,0x91,0xc1,0x43,0xbd,0xa8,0x1f,0xc9,
37                                                                 0x0e,0x0f,0xf4,0x52,0xf4,0x00,0x00,0x00};
38
39         WERROR drsuapi_DsBind(
40                 [in]        GUID *bind_guid,
41                 [in,out]    drsuapi_DsBindInfo *bind_info,
42                 [out,ref]   policy_handle *bind_handle
43                 );
44
45         /*****************/
46         /* Function 0x01 */
47         WERROR drsuapi_DsUnbind(
48                 [in,out,ref] policy_handle *bind_handle
49                 );
50
51         /*****************/
52         /* Function 0x02 */
53         typedef struct {
54                 uint32 unknown1;
55                 uint32 unknown2;
56                 GUID guid1;
57                 [size_is(28)] uint8 unknown3[28];
58                 [flag(STR_LEN4|STR_CHARLEN)] string nc_dn;
59         } drsuapi_DsReplicaSyncRequest1Info;
60
61         typedef struct {
62                 drsuapi_DsReplicaSyncRequest1Info *info;
63                 GUID guid1;
64                 asclstr string1;
65                 uint32 unknown1;
66         } drsuapi_DsReplicaSyncRequest1;
67
68         typedef union {
69                 [case(1)] drsuapi_DsReplicaSyncRequest1 req1;
70         } drsuapi_DsReplicaSyncRequest;
71
72         WERROR drsuapi_DsReplicaSync(
73                 [in,ref] policy_handle *bind_handle,
74                 [in] uint32 level,
75                 [in,switch_is(level)] drsuapi_DsReplicaSyncRequest req
76                 );
77
78         /*****************/
79         /* Function 0x03 */
80         WERROR DRSUAPI_GET_NC_CHANGES();
81
82         /*****************/
83         /* Function 0x04 */
84         WERROR DRSUAPI_UPDATE_REFS();
85
86         /*****************/
87         /* Function 0x05 */
88         WERROR DRSUAPI_REPLICA_ADD();
89
90         /*****************/
91         /* Function 0x06 */
92         WERROR DRSUAPI_REPLICA_DEL();
93
94         /*****************/
95         /* Function 0x07 */
96         WERROR DRSUAPI_REPLICA_MODIFY();
97
98         /*****************/
99         /* Function 0x08 */
100         WERROR DRSUAPI_VERIFY_NAMES();
101
102         /*****************/
103         /* Function 0x09 */
104         WERROR DRSUAPI_GET_MEMBERSHIPS();
105
106         /*****************/
107         /* Function 0x0a */
108         WERROR DRSUAPI_INTER_DOMAIN_MOVE();
109
110         /*****************/
111         /* Function 0x0b */
112         WERROR DRSUAPI_GET_NT4_CHANGELOG();
113
114         /*****************/
115         /* Function 0x0c */
116         typedef enum {
117                 DRSUAPI_DS_NAME_STATUS_OK                       = 0,
118                 DRSUAPI_DS_NAME_STATUS_RESOLVE_ERROR            = 1,
119                 DRSUAPI_DS_NAME_STATUS_NOT_FOUND                = 2,
120                 DRSUAPI_DS_NAME_STATUS_NOT_UNIQUE               = 3,
121                 DRSUAPI_DS_NAME_STATUS_NO_MAPPING               = 4,
122                 DRSUAPI_DS_NAME_STATUS_DOMAIN_ONLY              = 5,
123                 DRSUAPI_DS_NAME_STATUS_NO_SYNTACTICAL_MAPPING   = 6,
124                 DRSUAPI_DS_NAME_STATUS_TRUST_REFERRAL           = 7
125         } drsuapi_DsNameStatus;
126
127         typedef enum {
128                 DRSUAPI_DS_NAME_FLAG_NO_FLAGS                   = 0x0,
129                 DRSUAPI_DS_NAME_FLAG_SYNTACTICAL_ONLY           = 0x1,
130                 DRSUAPI_DS_NAME_FLAG_EVAL_AT_DC                 = 0x2,
131                 DRSUAPI_DS_NAME_FLAG_GCVERIFY                   = 0x4,
132                 DRSUAPI_DS_NAME_FLAG_TRUST_REFERRAL             = 0x8
133         } drsuapi_DsNameFlags;
134
135         typedef enum {
136                 DRSUAPI_DS_NAME_FORMAT_UKNOWN                   = 0,
137                 DRSUAPI_DS_NAME_FORMAT_FQDN_1779                = 1,
138                 DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT              = 2,
139                 DRSUAPI_DS_NAME_FORMAT_DISPLAY                  = 3,
140                 DRSUAPI_DS_NAME_FORMAT_GUID                     = 6,
141                 DRSUAPI_DS_NAME_FORMAT_CANONICAL                = 7,
142                 DRSUAPI_DS_NAME_FORMAT_USER_PRINCIPAL           = 8,
143                 DRSUAPI_DS_NAME_FORMAT_CANONICAL_EX             = 9,
144                 DRSUAPI_DS_NAME_FORMAT_SERVICE_PRINCIPAL        = 10,
145                 DRSUAPI_DS_NAME_FORMAT_SID_OR_SID_HISTORY       = 11,
146                 DRSUAPI_DS_NAME_FORMAT_DNS_DOMAIN               = 12
147         } drsuapi_DsNameFormat;
148
149         typedef struct {
150                 unistr *str;
151         } drsuapi_DsNameString;
152
153         typedef struct {
154                 uint32 unknown1; /* 0x000004e4 */
155                 uint32 unknown2; /* 0x00000407 */
156                 uint32 format_flags;
157                 uint32 format_offered;
158                 uint32 format_desired;
159                 [range(1,10000)] uint32 count;
160                 [size_is(count)] drsuapi_DsNameString *names;
161         } drsuapi_DsNameRequest1;
162
163         typedef union {
164                 [case(1)] drsuapi_DsNameRequest1 req1;
165         } drsuapi_DsNameRequest;
166
167         typedef struct {
168                 uint32 status;
169                 unistr *dns_domain_name;
170                 unistr *result_name;
171         } drsuapi_DsNameInfo1;
172
173         typedef struct {
174                 uint32 count;
175                 [size_is(count)] drsuapi_DsNameInfo1 *array;
176         } drsuapi_DsNameCtr1;
177
178         typedef union {
179                 [case(1)] drsuapi_DsNameCtr1 *ctr1;
180         } drsuapi_DsNameCtr;
181
182         WERROR drsuapi_DsCrackNames(
183                 [in,ref] policy_handle *bind_handle,
184                 [in, out] uint32 level,
185                 [in,switch_is(level)] drsuapi_DsNameRequest req,
186                 [out,switch_is(level)] drsuapi_DsNameCtr ctr
187                 );
188
189         /*****************/
190         /* Function 0x0d */
191         typedef enum {
192                 DRSUAPI_DS_SPN_OPERATION_ADD    = 0,
193                 DRSUAPI_DS_SPN_OPERATION_REPLACE= 1,
194                 DRSUAPI_DS_SPN_OPERATION_DELETE = 2
195         } drsuapi_DsSpnOperation;
196
197         typedef struct {
198                 int32 operation;
199                 int32 unknown1;
200                 unistr *object_dn;
201                 [range(0,10000)] uint32 count;
202                 [size_is(count)] drsuapi_DsNameString *spn_names;
203         } drsuapi_DsWriteAccountSpnRequest1;
204
205         typedef union {
206                 [case(1)] drsuapi_DsWriteAccountSpnRequest1 req1;
207         } drsuapi_DsWriteAccountSpnRequest;
208
209         typedef struct {
210                 WERROR status;
211         } drsuapi_DsWriteAccountSpnResult1;
212
213         typedef union {
214                 [case(1)] drsuapi_DsWriteAccountSpnResult1 res1;
215         } drsuapi_DsWriteAccountSpnResult;
216
217         WERROR drsuapi_DsWriteAccountSpn(
218                 [in,ref] policy_handle *bind_handle,
219                 [in, out] uint32 level,
220                 [in,switch_is(level)] drsuapi_DsWriteAccountSpnRequest req,
221                 [out,switch_is(level)] drsuapi_DsWriteAccountSpnResult res
222                 );
223
224         /*****************/
225         /* Function 0x0e */
226         WERROR DRSUAPI_REMOVE_DS_SERVER();
227
228         /*****************/
229         /* Function 0x0f */
230         WERROR DRSUAPI_REMOVE_DS_DOMAIN();
231
232         /*****************/
233         /* Function 0x10 */
234         typedef struct {
235                 unistr *domain_name; /* netbios or dns */
236                 int32 level; /* specifies the switch level for the request */
237         } drsuapi_DsGetDCInfoRequest1;
238
239         typedef union {
240                 [case(1)] drsuapi_DsGetDCInfoRequest1 req1;
241         } drsuapi_DsGetDCInfoRequest;
242
243         typedef struct {
244                 unistr *netbios_name;
245                 unistr *dns_name;
246                 unistr *site_name;
247                 unistr *computer_dn;
248                 unistr *server_dn;
249                 uint32 is_pdc;
250                 uint32 is_enabled;
251         } drsuapi_DsGetDCInfo1;
252
253         typedef struct {
254                 [range(0,10000)] uint32 count;
255                 [size_is(count)] drsuapi_DsGetDCInfo1 *array;
256         } drsuapi_DsGetDCInfoCtr1;
257
258         typedef struct {
259                 unistr *netbios_name;
260                 unistr *dns_name;
261                 unistr *site_name;
262                 unistr *site_dn;
263                 unistr *computer_dn;
264                 unistr *server_dn;
265                 unistr *ntds_dn;
266                 uint32 is_pdc;
267                 uint32 is_enabled;
268                 uint32 is_gc;
269                 GUID site_guid;
270                 GUID computer_guid;
271                 GUID server_guid;
272                 GUID ntds_guid;
273         } drsuapi_DsGetDCInfo2;
274
275         typedef struct {
276                 [range(0,10000)] uint32 count;
277                 [size_is(count)] drsuapi_DsGetDCInfo2 *array;
278         } drsuapi_DsGetDCInfoCtr2;
279
280         typedef struct {
281                 uint32 unknown1;
282                 uint32 unknown2;
283                 uint32 unknown3;
284                 uint32 unknown4;
285                 uint32 unknown5;
286                 uint32 unknown6;
287                 unistr *server_nt4_account;
288         } drsuapi_DsGetDCInfo01;
289
290         typedef struct {
291                 [range(0,10000)] uint32 count;
292                 [size_is(count)] drsuapi_DsGetDCInfo01 *array;
293         } drsuapi_DsGetDCInfoCtr01;
294
295         typedef union {
296                 [case(1)] drsuapi_DsGetDCInfoCtr1 ctr1;
297                 [case(2)] drsuapi_DsGetDCInfoCtr2 ctr2;
298                 [case(-1)] drsuapi_DsGetDCInfoCtr01 ctr01;
299         } drsuapi_DsGetDCInfoCtr;
300
301         WERROR drsuapi_DsGetDomainControllerInfo(
302                 [in,ref] policy_handle *bind_handle,
303                 [in, out] int32 level,
304                 [in,switch_is(level)] drsuapi_DsGetDCInfoRequest req,
305                 [out,switch_is(level)] drsuapi_DsGetDCInfoCtr ctr
306                 );
307
308         /*****************/
309         /* Function 0x11 */
310         WERROR DRSUAPI_ADD_ENTRY();
311
312         /*****************/
313         /* Function 0x12 */
314         WERROR DRSUAPI_EXECUTE_KCC();
315
316         /*****************/
317         /* Function 0x13 */
318         typedef enum {
319                 DRSUAPI_DS_REPLICA_GET_INFO                             = 1,
320                 DRSUAPI_DS_REPLICA_GET_INFO2                            = 2
321         } drsuapi_DsReplicaGetInfoLevel;
322
323         typedef enum {
324                 DRSUAPI_DS_REPLICA_INFO_NEIGHBORS                       = 0,
325                 DRSUAPI_DS_REPLICA_INFO_CURSORS                         = 1,
326                 DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA                    = 2,
327                 DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES        = 3,
328                 DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES           = 4,
329                 DRSUAPI_DS_REPLICA_INFO_PENDING_OPS                     = 5,
330                 DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA        = 6,
331                 DRSUAPI_DS_REPLICA_INFO_CURSORS2                        = 7,
332                 DRSUAPI_DS_REPLICA_INFO_CURSORS3                        = 8,
333                 DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2                   = 9,
334                 DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2       = 10,
335                 DRSUAPI_DS_REPLICA_INFO_NEIGHBORS02                     = -2,
336                 DRSUAPI_DS_REPLICA_INFO_CONNECTIONS04                   = -4,
337                 DRSUAPI_DS_REPLICA_INFO_CURSURS05                       = -5,
338                 DRSUAPI_DS_REPLICA_INFO_06                              = -6
339         } drsuapi_DsReplicaInfoType;
340
341         typedef struct {
342                 int32 info_type;
343                 unistr *object_dn;
344                 GUID guid1;
345         } drsuapi_DsReplicaGetInfoRequest1;
346
347         typedef struct {
348                 int32 info_type;
349                 unistr *object_dn;
350                 GUID guid1;
351                 uint32 unknown1;
352                 unistr *string1;
353                 unistr *string2;
354                 uint32 unknown2;
355         } drsuapi_DsReplicaGetInfoRequest2;
356
357         typedef union {
358                 [case(1)] drsuapi_DsReplicaGetInfoRequest1 req1;
359                 [case(2)] drsuapi_DsReplicaGetInfoRequest2 req2;
360         } drsuapi_DsReplicaGetInfoRequest;
361
362         typedef struct {
363                 unistr *naming_context_dn;
364                 unistr *source_dsa_obj_dn;
365                 unistr *source_dsa_address;
366                 unistr *transport_obj_dn;
367                 uint32 replica_flags;
368                 uint32 reserved;
369                 GUID naming_context_obj_guid;
370                 GUID source_dsa_obj_guid;
371                 GUID source_dsa_invocation_id;
372                 GUID transport_obj_guid;
373                 uint64 tmp_highest_usn;
374                 uint64 highest_usn;
375                 NTTIME last_success;
376                 NTTIME last_attempt;
377                 WERROR result_last_attempt;
378                 uint32 consecutive_sync_failures;
379         } drsuapi_DsReplicaNeighbour;
380
381         typedef struct {
382                 uint32 count;
383                 uint32 reserved;
384                 [size_is(count)] drsuapi_DsReplicaNeighbour array[];
385         } drsuapi_DsReplicaNeighbourCtr;
386
387         typedef struct {
388                 GUID source_dsa_invocation_id;
389                 uint64 highest_usn;
390         } drsuapi_DsReplicaCoursor;
391
392         typedef struct {
393                 uint32 count;
394                 uint32 reserved;
395                 [size_is(count)] drsuapi_DsReplicaCoursor array[];
396         } drsuapi_DsReplicaCoursorCtr;
397
398         typedef struct {
399                 unistr *attribute_name;
400                 uint32 version;
401                 NTTIME originating_last_changed;
402                 GUID originating_dsa_invocation_id;
403                 uint64 originating_usn;
404                 uint64 local_usn;
405         } drsuapi_DsReplicaObjMetaData;
406
407         typedef struct {
408                 uint32 count;
409                 uint32 reserved;
410                 [size_is(count)] drsuapi_DsReplicaObjMetaData array[];
411         } drsuapi_DsReplicaObjMetaDataCtr;
412
413         typedef struct {
414                 unistr *dsa_obj_dn;
415                 GUID dsa_obj_guid;
416                 NTTIME first_failure;
417                 uint32 num_failures;
418                 WERROR last_result;
419         } drsuapi_DsReplicaKccDsaFailure;
420
421         typedef struct {
422                 uint32 count;
423                 uint32 reserved;
424                 [size_is(count)] drsuapi_DsReplicaKccDsaFailure array[];
425         } drsuapi_DsReplicaKccDsaFailuresCtr;
426
427         typedef struct {
428                 NTTIME operation_start;
429                 uint32 serial_num; /* unique till reboot */
430                 uint32 priority;
431                 uint16 operation_type;
432                 uint32 options_flags;
433                 unistr *nc_dn;
434                 unistr *remote_dsa_obj_dn;
435                 unistr *remote_dsa_address;
436                 GUID nc_obj_guid;
437                 GUID remote_dsa_obj_guid;
438         } drsuapi_DsReplicaOp;
439
440         typedef struct {
441                 NTTIME time;
442                 uint32 count;
443                 [size_is(count)] drsuapi_DsReplicaOp array[];
444         } drsuapi_DsReplicaOpCtr;
445
446         typedef struct {
447                 unistr *attribute_name;
448                 unistr *object_dn;
449                 uint32 value_length;
450                 [size_is(value_length)] uint8 *value;
451                 NTTIME deleted;
452                 NTTIME created;
453                 uint32 version;
454                 NTTIME originating_last_changed;
455                 GUID originating_dsa_invocation_id;
456                 uint64 originating_usn;
457                 uint64 local_usn;
458         } drsuapi_DsReplicaAttrValMetaData;
459
460         typedef struct {
461                 uint32 count;
462                 int32 enumeration_context;
463                 [size_is(count)] drsuapi_DsReplicaAttrValMetaData array[];
464         } drsuapi_DsReplicaAttrValMetaDataCtr;
465
466         typedef struct {
467                 GUID source_dsa_invocation_id;
468                 uint64 highest_usn;
469                 NTTIME last_sync_success;
470         } drsuapi_DsReplicaCoursor2;
471
472         typedef struct {
473                 uint32 count;
474                 int32 enumeration_context;
475                 [size_is(count)] drsuapi_DsReplicaCoursor2 array[];
476         } drsuapi_DsReplicaCoursor2Ctr;
477
478         typedef struct {
479                 GUID source_dsa_invocation_id;
480                 uint64 highest_usn;
481                 NTTIME last_sync_success;
482                 unistr *source_dsa_obj_dn;
483         } drsuapi_DsReplicaCoursor3;
484
485         typedef struct {
486                 uint32 count;
487                 int32 enumeration_context;
488                 [size_is(count)] drsuapi_DsReplicaCoursor3 array[];
489         } drsuapi_DsReplicaCoursor3Ctr;
490
491         typedef struct {
492                 uint32 attribute_name;/*unistr *attribute_name;*/
493                 uint32 version;
494                 NTTIME originating_last_changed;
495                 GUID originating_dsa_invocation_id;
496                 uint64 originating_usn;
497                 uint64 local_usn;
498                 uint32 originating_dsa_obj_dn;/*unistr *originating_dsa_obj_dn;*/
499                 uint32 u1; /* in the last element this is not present; some stupid alignment? */
500         } drsuapi_DsReplicaObjMetaData2;
501
502         typedef struct {
503                 uint32 count;
504                 int32 enumeration_context;
505                 [size_is(count)] drsuapi_DsReplicaObjMetaData2 array[];
506         } drsuapi_DsReplicaObjMetaData2Ctr;
507
508         typedef struct {
509                 unistr *attribute_name;
510                 unistr *object_dn;
511                 uint32 value_length;
512                 [size_is(value_length)] uint8 *value;
513                 NTTIME deleted;
514                 NTTIME created;
515                 uint32 version;
516                 NTTIME originating_last_changed;
517                 GUID originating_dsa_invocation_id;
518                 uint64 originating_usn;
519                 uint64 local_usn;
520                 unistr *originating_dsa_obj_dn;
521         } drsuapi_DsReplicaAttrValMetaData2;
522
523         typedef struct {
524                 uint32 count;
525                 int32 enumeration_context;
526                 [size_is(count)] drsuapi_DsReplicaAttrValMetaData2 array[];
527         } drsuapi_DsReplicaAttrValMetaData2Ctr;
528
529         typedef struct {
530                 uint64 u1; /* session number? */
531                 uint32 u2;
532                 uint32 u3;
533                 GUID bind_guid;
534                 NTTIME_1sec bind_time;
535                 uint32 u4; /* flags? */
536                 uint32 u5;
537         } drsuapi_DsReplicaConnection04;
538
539         typedef struct {
540                 [range(0,10000)] uint32 count;
541                 uint32 reserved;
542                 [size_is(count)] drsuapi_DsReplicaConnection04 array[];
543         } drsuapi_DsReplicaConnection04Ctr;
544
545         typedef struct {
546                 uint32 u1;
547                 uint32 u2;
548                 [range(0,0x100000)] uint32 count;
549                 uint32 u3;
550                 [size_is(count)] drsuapi_DsReplicaCoursor array[];
551         } drsuapi_DsReplicaCoursor05Ctr;
552
553         typedef struct {
554                 unistr *str1;
555                 uint32 u1;
556                 uint32 u2;
557                 uint32 u3;
558                 uint32 u4;
559                 uint32 u5;
560                 uint64 u6;
561                 uint32 u7;
562         } drsuapi_DsReplica06;
563
564         typedef struct {
565                 [range(0,256)] uint32 count;
566                 uint32 reserved;
567                 [size_is(count)] drsuapi_DsReplica06 array[];
568         } drsuapi_DsReplica06Ctr;
569
570         typedef union {
571                 [case(0)] drsuapi_DsReplicaNeighbourCtr *neighbours;
572                 [case(1)] drsuapi_DsReplicaCoursorCtr *coursors;
573                 [case(2)] drsuapi_DsReplicaObjMetaDataCtr *objmetadata;
574                 [case(3)] drsuapi_DsReplicaKccDsaFailuresCtr *connectfailures;
575                 [case(4)] drsuapi_DsReplicaKccDsaFailuresCtr *linkfailures;
576                 [case(5)] drsuapi_DsReplicaOpCtr *pendingops;
577                 [case(6)] drsuapi_DsReplicaAttrValMetaDataCtr *attrvalmetadata;
578                 [case(7)] drsuapi_DsReplicaCoursor2Ctr *coursors2;
579                 [case(8)] drsuapi_DsReplicaCoursor3Ctr *coursors3;
580                 [case(9)] drsuapi_DsReplicaObjMetaData2Ctr *objmetadata2;
581                 [case(10)] drsuapi_DsReplicaAttrValMetaData2Ctr *attrvalmetadata2;
582                 [case(-2)] drsuapi_DsReplicaNeighbourCtr *neighbours02;
583                 [case(-4)] drsuapi_DsReplicaConnection04Ctr *connections04;
584                 [case(-5)] drsuapi_DsReplicaCoursor05Ctr *coursors05;
585                 [case(-6)] drsuapi_DsReplica06Ctr *i06;
586         } drsuapi_DsReplicaInfo;
587
588         WERROR drsuapi_DsReplicaGetInfo(
589                 [in,ref] policy_handle *bind_handle,
590                 [in] int32 level,
591                 [in,switch_is(level)] drsuapi_DsReplicaGetInfoRequest req,
592                 [out] int32 info_type,
593                 [out,switch_is(info_type)] drsuapi_DsReplicaInfo info
594                 );
595
596         /*****************/
597         /* Function 0x14 */
598         WERROR DRSUAPI_ADD_SID_HISTORY();
599
600         /*****************/
601         /* Function 0x15 */
602         WERROR DRSUAPI_GET_MEMBERSHIPS2();
603
604         /*****************/
605         /* Function 0x16 */
606         WERROR DRSUAPI_REPLICA_VERIFY_OBJECTS();
607
608         /*****************/
609         /* Function 0x17 */
610         WERROR DRSUAPI_GET_OBJECT_EXISTENCE();
611
612         /*****************/
613         /* Function 0x18 */
614         WERROR DRSUAPI_QUERY_SITES_BY_COST();
615 }