r4171: an attempt at better IDL for DsReplicaSync
[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                 uint8 unknown3[28];
58                 [range(0,0xA00000)] uint32 length;
59                 [size_is(length+1)] uint16 nc_dn[*];
60         } drsuapi_DsReplicaSyncRequest1Info;
61
62         typedef struct {
63                 drsuapi_DsReplicaSyncRequest1Info *info;
64                 GUID guid1;
65                 astring *string1;
66                 uint32 unknown1;
67         } drsuapi_DsReplicaSyncRequest1;
68
69         typedef union {
70                 [case(1)] drsuapi_DsReplicaSyncRequest1 req1;
71         } drsuapi_DsReplicaSyncRequest;
72
73         WERROR drsuapi_DsReplicaSync(
74                 [in,ref] policy_handle *bind_handle,
75                 [in] uint32 level,
76                 [in,switch_is(level)] drsuapi_DsReplicaSyncRequest req
77                 );
78
79         /*****************/
80         /* Function 0x03 */
81         WERROR DRSUAPI_GET_NC_CHANGES();
82
83         /*****************/
84         /* Function 0x04 */
85         WERROR DRSUAPI_UPDATE_REFS();
86
87         /*****************/
88         /* Function 0x05 */
89         WERROR DRSUAPI_REPLICA_ADD();
90
91         /*****************/
92         /* Function 0x06 */
93         WERROR DRSUAPI_REPLICA_DEL();
94
95         /*****************/
96         /* Function 0x07 */
97         WERROR DRSUAPI_REPLICA_MODIFY();
98
99         /*****************/
100         /* Function 0x08 */
101         WERROR DRSUAPI_VERIFY_NAMES();
102
103         /*****************/
104         /* Function 0x09 */
105         WERROR DRSUAPI_GET_MEMBERSHIPS();
106
107         /*****************/
108         /* Function 0x0a */
109         WERROR DRSUAPI_INTER_DOMAIN_MOVE();
110
111         /*****************/
112         /* Function 0x0b */
113         WERROR DRSUAPI_GET_NT4_CHANGELOG();
114
115         /*****************/
116         /* Function 0x0c */
117         typedef enum {
118                 DRSUAPI_DS_NAME_STATUS_OK                       = 0,
119                 DRSUAPI_DS_NAME_STATUS_RESOLVE_ERROR            = 1,
120                 DRSUAPI_DS_NAME_STATUS_NOT_FOUND                = 2,
121                 DRSUAPI_DS_NAME_STATUS_NOT_UNIQUE               = 3,
122                 DRSUAPI_DS_NAME_STATUS_NO_MAPPING               = 4,
123                 DRSUAPI_DS_NAME_STATUS_DOMAIN_ONLY              = 5,
124                 DRSUAPI_DS_NAME_STATUS_NO_SYNTACTICAL_MAPPING   = 6,
125                 DRSUAPI_DS_NAME_STATUS_TRUST_REFERRAL           = 7
126         } drsuapi_DsNameStatus;
127
128         typedef enum {
129                 DRSUAPI_DS_NAME_FLAG_NO_FLAGS                   = 0x0,
130                 DRSUAPI_DS_NAME_FLAG_SYNTACTICAL_ONLY           = 0x1,
131                 DRSUAPI_DS_NAME_FLAG_EVAL_AT_DC                 = 0x2,
132                 DRSUAPI_DS_NAME_FLAG_GCVERIFY                   = 0x4,
133                 DRSUAPI_DS_NAME_FLAG_TRUST_REFERRAL             = 0x8
134         } drsuapi_DsNameFlags;
135
136         typedef enum {
137                 DRSUAPI_DS_NAME_FORMAT_UKNOWN                   = 0,
138                 DRSUAPI_DS_NAME_FORMAT_FQDN_1779                = 1,
139                 DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT              = 2,
140                 DRSUAPI_DS_NAME_FORMAT_DISPLAY                  = 3,
141                 DRSUAPI_DS_NAME_FORMAT_GUID                     = 6,
142                 DRSUAPI_DS_NAME_FORMAT_CANONICAL                = 7,
143                 DRSUAPI_DS_NAME_FORMAT_USER_PRINCIPAL           = 8,
144                 DRSUAPI_DS_NAME_FORMAT_CANONICAL_EX             = 9,
145                 DRSUAPI_DS_NAME_FORMAT_SERVICE_PRINCIPAL        = 10,
146                 DRSUAPI_DS_NAME_FORMAT_SID_OR_SID_HISTORY       = 11,
147                 DRSUAPI_DS_NAME_FORMAT_DNS_DOMAIN               = 12
148         } drsuapi_DsNameFormat;
149
150         typedef struct {
151                 unistr *str;
152         } drsuapi_DsNameString;
153
154         typedef struct {
155                 uint32 unknown1; /* 0x000004e4 */
156                 uint32 unknown2; /* 0x00000407 */
157                 uint32 format_flags;
158                 uint32 format_offered;
159                 uint32 format_desired;
160                 [range(1,10000)] uint32 count;
161                 [size_is(count)] drsuapi_DsNameString *names;
162         } drsuapi_DsNameRequest1;
163
164         typedef union {
165                 [case(1)] drsuapi_DsNameRequest1 req1;
166         } drsuapi_DsNameRequest;
167
168         typedef struct {
169                 uint32 status;
170                 unistr *dns_domain_name;
171                 unistr *result_name;
172         } drsuapi_DsNameInfo1;
173
174         typedef struct {
175                 uint32 count;
176                 [size_is(count)] drsuapi_DsNameInfo1 *array;
177         } drsuapi_DsNameCtr1;
178
179         typedef union {
180                 [case(1)] drsuapi_DsNameCtr1 *ctr1;
181         } drsuapi_DsNameCtr;
182
183         WERROR drsuapi_DsCrackNames(
184                 [in,ref] policy_handle *bind_handle,
185                 [in, out] uint32 level,
186                 [in,switch_is(level)] drsuapi_DsNameRequest req,
187                 [out,switch_is(level)] drsuapi_DsNameCtr ctr
188                 );
189
190         /*****************/
191         /* Function 0x0d */
192         typedef enum {
193                 DRSUAPI_DS_SPN_OPERATION_ADD    = 0,
194                 DRSUAPI_DS_SPN_OPERATION_REPLACE= 1,
195                 DRSUAPI_DS_SPN_OPERATION_DELETE = 2
196         } drsuapi_DsSpnOperation;
197
198         typedef struct {
199                 int32 operation;
200                 int32 unknown1;
201                 unistr *object_dn;
202                 [range(0,10000)] uint32 count;
203                 [size_is(count)] drsuapi_DsNameString *spn_names;
204         } drsuapi_DsWriteAccountSpnRequest1;
205
206         typedef union {
207                 [case(1)] drsuapi_DsWriteAccountSpnRequest1 req1;
208         } drsuapi_DsWriteAccountSpnRequest;
209
210         typedef struct {
211                 WERROR status;
212         } drsuapi_DsWriteAccountSpnResult1;
213
214         typedef union {
215                 [case(1)] drsuapi_DsWriteAccountSpnResult1 res1;
216         } drsuapi_DsWriteAccountSpnResult;
217
218         WERROR drsuapi_DsWriteAccountSpn(
219                 [in,ref] policy_handle *bind_handle,
220                 [in, out] uint32 level,
221                 [in,switch_is(level)] drsuapi_DsWriteAccountSpnRequest req,
222                 [out,switch_is(level)] drsuapi_DsWriteAccountSpnResult res
223                 );
224
225         /*****************/
226         /* Function 0x0e */
227         WERROR DRSUAPI_REMOVE_DS_SERVER();
228
229         /*****************/
230         /* Function 0x0f */
231         WERROR DRSUAPI_REMOVE_DS_DOMAIN();
232
233         /*****************/
234         /* Function 0x10 */
235         typedef struct {
236                 unistr *domain_name; /* netbios or dns */
237                 int32 level; /* specifies the switch level for the request */
238         } drsuapi_DsGetDCInfoRequest1;
239
240         typedef union {
241                 [case(1)] drsuapi_DsGetDCInfoRequest1 req1;
242         } drsuapi_DsGetDCInfoRequest;
243
244         typedef struct {
245                 unistr *netbios_name;
246                 unistr *dns_name;
247                 unistr *site_name;
248                 unistr *computer_dn;
249                 unistr *server_dn;
250                 uint32 is_pdc;
251                 uint32 is_enabled;
252         } drsuapi_DsGetDCInfo1;
253
254         typedef struct {
255                 [range(0,10000)] uint32 count;
256                 [size_is(count)] drsuapi_DsGetDCInfo1 *array;
257         } drsuapi_DsGetDCInfoCtr1;
258
259         typedef struct {
260                 unistr *netbios_name;
261                 unistr *dns_name;
262                 unistr *site_name;
263                 unistr *site_dn;
264                 unistr *computer_dn;
265                 unistr *server_dn;
266                 unistr *ntds_dn;
267                 uint32 is_pdc;
268                 uint32 is_enabled;
269                 uint32 is_gc;
270                 GUID site_guid;
271                 GUID computer_guid;
272                 GUID server_guid;
273                 GUID ntds_guid;
274         } drsuapi_DsGetDCInfo2;
275
276         typedef struct {
277                 [range(0,10000)] uint32 count;
278                 [size_is(count)] drsuapi_DsGetDCInfo2 *array;
279         } drsuapi_DsGetDCInfoCtr2;
280
281         typedef struct {
282                 uint32 unknown1;
283                 uint32 unknown2;
284                 uint32 unknown3;
285                 uint32 unknown4;
286                 uint32 unknown5;
287                 uint32 unknown6;
288                 unistr *server_nt4_account;
289         } drsuapi_DsGetDCInfo01;
290
291         typedef struct {
292                 [range(0,10000)] uint32 count;
293                 [size_is(count)] drsuapi_DsGetDCInfo01 *array;
294         } drsuapi_DsGetDCInfoCtr01;
295
296         typedef union {
297                 [case(1)] drsuapi_DsGetDCInfoCtr1 ctr1;
298                 [case(2)] drsuapi_DsGetDCInfoCtr2 ctr2;
299                 [case(-1)] drsuapi_DsGetDCInfoCtr01 ctr01;
300         } drsuapi_DsGetDCInfoCtr;
301
302         WERROR drsuapi_DsGetDomainControllerInfo(
303                 [in,ref] policy_handle *bind_handle,
304                 [in, out] int32 level,
305                 [in,switch_is(level)] drsuapi_DsGetDCInfoRequest req,
306                 [out,switch_is(level)] drsuapi_DsGetDCInfoCtr ctr
307                 );
308
309         /*****************/
310         /* Function 0x11 */
311         WERROR DRSUAPI_ADD_ENTRY();
312
313         /*****************/
314         /* Function 0x12 */
315         WERROR DRSUAPI_EXECUTE_KCC();
316
317         /*****************/
318         /* Function 0x13 */
319         typedef enum {
320                 DRSUAPI_DS_REPLICA_GET_INFO                             = 1,
321                 DRSUAPI_DS_REPLICA_GET_INFO2                            = 2
322         } drsuapi_DsReplicaGetInfoLevel;
323
324         typedef enum {
325                 DRSUAPI_DS_REPLICA_INFO_NEIGHBORS                       = 0,
326                 DRSUAPI_DS_REPLICA_INFO_CURSORS                         = 1,
327                 DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA                    = 2,
328                 DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES        = 3,
329                 DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES           = 4,
330                 DRSUAPI_DS_REPLICA_INFO_PENDING_OPS                     = 5,
331                 DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA        = 6,
332                 DRSUAPI_DS_REPLICA_INFO_CURSORS2                        = 7,
333                 DRSUAPI_DS_REPLICA_INFO_CURSORS3                        = 8,
334                 DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2                   = 9,
335                 DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2       = 10,
336                 DRSUAPI_DS_REPLICA_INFO_NEIGHBORS02                     = -2,
337                 DRSUAPI_DS_REPLICA_INFO_CONNECTIONS04                   = -4,
338                 DRSUAPI_DS_REPLICA_INFO_CURSURS05                       = -5,
339                 DRSUAPI_DS_REPLICA_INFO_06                              = -6
340         } drsuapi_DsReplicaInfoType;
341
342         typedef struct {
343                 int32 info_type;
344                 unistr *object_dn;
345                 GUID guid1;
346         } drsuapi_DsReplicaGetInfoRequest1;
347
348         typedef struct {
349                 int32 info_type;
350                 unistr *object_dn;
351                 GUID guid1;
352                 uint32 unknown1;
353                 unistr *string1;
354                 unistr *string2;
355                 uint32 unknown2;
356         } drsuapi_DsReplicaGetInfoRequest2;
357
358         typedef union {
359                 [case(1)] drsuapi_DsReplicaGetInfoRequest1 req1;
360                 [case(2)] drsuapi_DsReplicaGetInfoRequest2 req2;
361         } drsuapi_DsReplicaGetInfoRequest;
362
363         typedef struct {
364                 unistr *naming_context_dn;
365                 unistr *source_dsa_obj_dn;
366                 unistr *source_dsa_address;
367                 unistr *transport_obj_dn;
368                 uint32 replica_flags;
369                 uint32 reserved;
370                 GUID naming_context_obj_guid;
371                 GUID source_dsa_obj_guid;
372                 GUID source_dsa_invocation_id;
373                 GUID transport_obj_guid;
374                 HYPER_T tmp_highest_usn;
375                 HYPER_T highest_usn;
376                 NTTIME last_success;
377                 NTTIME last_attempt;
378                 WERROR result_last_attempt;
379                 uint32 consecutive_sync_failures;
380         } drsuapi_DsReplicaNeighbour;
381
382         typedef struct {
383                 uint32 count;
384                 uint32 reserved;
385                 [size_is(count)] drsuapi_DsReplicaNeighbour array[];
386         } drsuapi_DsReplicaNeighbourCtr;
387
388         typedef struct {
389                 GUID source_dsa_invocation_id;
390                 HYPER_T highest_usn;
391         } drsuapi_DsReplicaCoursor;
392
393         typedef struct {
394                 uint32 count;
395                 uint32 reserved;
396                 [size_is(count)] drsuapi_DsReplicaCoursor array[];
397         } drsuapi_DsReplicaCoursorCtr;
398
399         typedef struct {
400                 unistr *attribute_name;
401                 uint32 version;
402                 NTTIME originating_last_changed;
403                 GUID originating_dsa_invocation_id;
404                 HYPER_T originating_usn;
405                 HYPER_T local_usn;
406         } drsuapi_DsReplicaObjMetaData;
407
408         typedef struct {
409                 uint32 count;
410                 uint32 reserved;
411                 [size_is(count)] drsuapi_DsReplicaObjMetaData array[];
412         } drsuapi_DsReplicaObjMetaDataCtr;
413
414         typedef struct {
415                 unistr *dsa_obj_dn;
416                 GUID dsa_obj_guid;
417                 NTTIME first_failure;
418                 uint32 num_failures;
419                 WERROR last_result;
420         } drsuapi_DsReplicaKccDsaFailure;
421
422         typedef struct {
423                 uint32 count;
424                 uint32 reserved;
425                 [size_is(count)] drsuapi_DsReplicaKccDsaFailure array[];
426         } drsuapi_DsReplicaKccDsaFailuresCtr;
427
428         typedef struct {
429                 NTTIME operation_start;
430                 uint32 serial_num; /* unique till reboot */
431                 uint32 priority;
432                 uint16 operation_type;
433                 uint32 options_flags;
434                 unistr *nc_dn;
435                 unistr *remote_dsa_obj_dn;
436                 unistr *remote_dsa_address;
437                 GUID nc_obj_guid;
438                 GUID remote_dsa_obj_guid;
439         } drsuapi_DsReplicaOp;
440
441         typedef struct {
442                 NTTIME time;
443                 uint32 count;
444                 [size_is(count)] drsuapi_DsReplicaOp array[];
445         } drsuapi_DsReplicaOpCtr;
446
447         typedef struct {
448                 unistr *attribute_name;
449                 unistr *object_dn;
450                 uint32 value_length;
451                 [size_is(value_length)] uint8 *value;
452                 NTTIME deleted;
453                 NTTIME created;
454                 uint32 version;
455                 NTTIME originating_last_changed;
456                 GUID originating_dsa_invocation_id;
457                 HYPER_T originating_usn;
458                 HYPER_T local_usn;
459         } drsuapi_DsReplicaAttrValMetaData;
460
461         typedef struct {
462                 uint32 count;
463                 int32 enumeration_context;
464                 [size_is(count)] drsuapi_DsReplicaAttrValMetaData array[];
465         } drsuapi_DsReplicaAttrValMetaDataCtr;
466
467         typedef struct {
468                 GUID source_dsa_invocation_id;
469                 HYPER_T highest_usn;
470                 NTTIME last_sync_success;
471         } drsuapi_DsReplicaCoursor2;
472
473         typedef struct {
474                 uint32 count;
475                 int32 enumeration_context;
476                 [size_is(count)] drsuapi_DsReplicaCoursor2 array[];
477         } drsuapi_DsReplicaCoursor2Ctr;
478
479         typedef struct {
480                 GUID source_dsa_invocation_id;
481                 HYPER_T highest_usn;
482                 NTTIME last_sync_success;
483                 unistr *source_dsa_obj_dn;
484         } drsuapi_DsReplicaCoursor3;
485
486         typedef struct {
487                 uint32 count;
488                 int32 enumeration_context;
489                 [size_is(count)] drsuapi_DsReplicaCoursor3 array[];
490         } drsuapi_DsReplicaCoursor3Ctr;
491
492         typedef struct {
493                 unistr *attribute_name;
494                 uint32 version;
495                 NTTIME originating_last_changed;
496                 GUID originating_dsa_invocation_id;
497                 HYPER_T originating_usn;
498                 HYPER_T local_usn;
499                 unistr *originating_dsa_obj_dn;
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                 HYPER_T originating_usn;
519                 HYPER_T 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                 HYPER_T 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                 HYPER_T 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 }