s4/drs:kccdrs_replica_get_info_obj_metadata implementation
[abartlet/samba.git/.git] / librpc / idl / drsuapi.idl
index 4ca7e568f3041fafe80269b2c7c08660ab6d9a8d..4c8126ed02b50b06142c24b0f70c6d0791ea21ff 100644 (file)
@@ -15,6 +15,49 @@ interface drsuapi
 {
        typedef bitmap samr_GroupAttrs samr_GroupAttrs;
 
+       /* see MS-DRSR section 5.39 */
+       typedef [public,bitmap32bit] bitmap {
+               DRSUAPI_DRS_ASYNC_OP                  = 0x00000001,
+               DRSUAPI_DRS_GETCHG_CHECK              = 0x00000002,
+               DRSUAPI_DRS_UPDATE_NOTIFICATION       = 0x00000002,
+               DRSUAPI_DRS_ADD_REF                   = 0x00000004,
+               DRSUAPI_DRS_SYNC_ALL                  = 0x00000008,
+               DRSUAPI_DRS_DEL_REF                   = 0x00000008,
+               DRSUAPI_DRS_WRIT_REP                  = 0x00000010,
+               DRSUAPI_DRS_INIT_SYNC                 = 0x00000020,
+               DRSUAPI_DRS_PER_SYNC                  = 0x00000040,
+               DRSUAPI_DRS_MAIL_REP                  = 0x00000080,
+               DRSUAPI_DRS_ASYNC_REP                 = 0x00000100,
+               DRSUAPI_DRS_IGNORE_ERROR              = 0x00000100,
+               DRSUAPI_DRS_TWOWAY_SYNC               = 0x00000200,
+               DRSUAPI_DRS_CRITICAL_ONLY             = 0x00000400,
+               DRSUAPI_DRS_GET_ANC                   = 0x00000800,
+               DRSUAPI_DRS_GET_NC_SIZE               = 0x00001000,
+               DRSUAPI_DRS_LOCAL_ONLY                = 0x00001000,
+               DRSUAPI_DRS_NONGC_RO_REP              = 0x00002000,
+               DRSUAPI_DRS_SYNC_BYNAME               = 0x00004000,
+               DRSUAPI_DRS_REF_OK                    = 0x00004000,
+               DRSUAPI_DRS_FULL_SYNC_NOW             = 0x00008000,
+               DRSUAPI_DRS_NO_SOURCE                 = 0x00008000,
+               DRSUAPI_DRS_FULL_SYNC_IN_PROGRESS     = 0x00010000,
+               DRSUAPI_DRS_FULL_SYNC_PACKET          = 0x00020000,
+               DRSUAPI_DRS_SYNC_REQUEUE              = 0x00040000,
+               DRSUAPI_DRS_SYNC_URGENT               = 0x00080000,
+               DRSUAPI_DRS_REF_GCSPN                 = 0x00100000,
+               DRSUAPI_DRS_NO_DISCARD                = 0x00100000,
+               DRSUAPI_DRS_NEVER_SYNCED              = 0x00200000,
+               DRSUAPI_DRS_SPECIAL_SECRET_PROCESSING = 0x00400000,
+               DRSUAPI_DRS_INIT_SYNC_NOW             = 0x00800000,
+               DRSUAPI_DRS_PREEMPTED                 = 0x01000000,
+               DRSUAPI_DRS_SYNC_FORCED               = 0x02000000,
+               DRSUAPI_DRS_DISABLE_AUTO_SYNC         = 0x04000000,
+               DRSUAPI_DRS_DISABLE_PERIODIC_SYNC     = 0x08000000,
+               DRSUAPI_DRS_USE_COMPRESSION           = 0x10000000,
+               DRSUAPI_DRS_NEVER_NOTIFY              = 0x20000000,
+               DRSUAPI_DRS_SYNC_PAS                  = 0x40000000,
+               DRSUAPI_DRS_GET_ALL_GROUP_MEMBERSHIP  = 0x80000000
+       } drsuapi_DrsOptions;
+
        /*****************/
         /* Function 0x00 */
         typedef [bitmap32bit] bitmap {
@@ -25,7 +68,7 @@ interface drsuapi
                DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS             = 0x00000010,
                DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1                   = 0x00000020,
                DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION    = 0x00000040,
-               DRSUAPI_SUPPORTED_EXTENSION_00000080                    = 0x00000080,
+               DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY                    = 0x00000080,
                DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE                 = 0x00000100,
                DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2                 = 0x00000200,
                DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION    = 0x00000400,
@@ -38,7 +81,7 @@ interface drsuapi
                DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP       = 0x00020000,
                DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY             = 0x00040000,
                DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3                  = 0x00080000,
-               DRSUAPI_SUPPORTED_EXTENSION_00100000                    = 0x00100000,
+               DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V5                = 0x00100000,
                DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2            = 0x00200000,
                DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6                = 0x00400000,
                DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCS               = 0x00800000,
@@ -53,14 +96,15 @@ interface drsuapi
                DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7              = 0x08000000,
                DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECT               = 0x08000000,
                DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS             = 0x10000000,
-               DRSUAPI_SUPPORTED_EXTENSION_20000000                    = 0x20000000,
-               DRSUAPI_SUPPORTED_EXTENSION_40000000                    = 0x40000000,
-               DRSUAPI_SUPPORTED_EXTENSION_80000000                    = 0x80000000
+               DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V10               = 0x20000000,
+               DRSUAPI_SUPPORTED_EXTENSION_RESERVED_PART2              = 0x40000000,
+               DRSUAPI_SUPPORTED_EXTENSION_RESERVED_PART3              = 0x80000000
        } drsuapi_SupportedExtensions;
 
        typedef [bitmap32bit] bitmap {
                DRSUAPI_SUPPORTED_EXTENSION_ADAM                        = 0x00000001,
-               DRSUAPI_SUPPORTED_EXTENSION_LH_BETA2                    = 0x00000002
+               DRSUAPI_SUPPORTED_EXTENSION_LH_BETA2                    = 0x00000002,
+               DRSUAPI_SUPPORTED_EXTENSION_RECYCLE_BIN                 = 0x00000004
        } drsuapi_SupportedExtensionsExt;
 
        /* this is used by w2k */
@@ -181,7 +225,7 @@ interface drsuapi
                drsuapi_DsReplicaObjectIdentifier *naming_context;
                GUID source_dsa_guid;
                astring *other_info; /* I assume this is related to the repsFromTo1OtherInfo dns_name */
-               drsuapi_DsReplicaSyncOptions options;
+               drsuapi_DrsOptions options;
        } drsuapi_DsReplicaSyncRequest1;
 
        typedef [switch_type(int32)] union {
@@ -215,37 +259,6 @@ interface drsuapi
                [size_is(count)] drsuapi_DsReplicaCursor cursors[];
        } drsuapi_DsReplicaCursorCtrEx;
 
-       typedef [public] bitmap {
-               /* the _WRITEABLE flag indicates a replication with all attributes
-                *
-                * --metze
-                */
-               DRSUAPI_DS_REPLICA_NEIGHBOUR_WRITEABLE                          = 0x00000010,
-               DRSUAPI_DS_REPLICA_NEIGHBOUR_SYNC_ON_STARTUP                    = 0x00000020,
-               DRSUAPI_DS_REPLICA_NEIGHBOUR_DO_SCHEDULED_SYNCS                 = 0x00000040,
-               DRSUAPI_DS_REPLICA_NEIGHBOUR_USE_ASYNC_INTERSIDE_TRANSPORT      = 0x00000080,
-               DRSUAPI_DS_REPLICA_NEIGHBOUR_TWO_WAY_SYNC                       = 0x00000200,
-               DRSUAPI_DS_REPLICA_NEIGHBOUR_RETURN_OBJECT_PARENTS              = 0x00000800,
-               DRSUAPI_DS_REPLICA_NEIGHBOUR_FULL_IN_PROGRESS                   = 0x00001000, /* was 0x00010000, */
-               DRSUAPI_DS_REPLICA_NEIGHBOUR_FULL_NEXT_PACKET                   = 0x00002000, /* was 0x00020000, */
-               DRSUAPI_DS_REPLICA_NEIGHBOUR_NEVER_SYNCED                       = 0x00200000,
-               DRSUAPI_DS_REPLICA_NEIGHBOUR_PREEMPTED                          = 0x01000000,
-               DRSUAPI_DS_REPLICA_NEIGHBOUR_IGNORE_CHANGE_NOTIFICATIONS        = 0x04000000,
-               DRSUAPI_DS_REPLICA_NEIGHBOUR_DISABLE_SCHEDULED_SYNC             = 0x08000000,
-               /*
-                * the following NOTE applies to DsGetNCChangesRequest5:
-                *  - the data is only compressed when 10 or more objects are replicated
-                *  - but there could also be a size limit of 35 KBytes or something like that
-                *  - the reply is DsGetNCChangesCtr2
-                *  - maybe the same applies to DsGetNCChangesRequest8...
-                *
-                *  --metze
-                */
-               DRSUAPI_DS_REPLICA_NEIGHBOUR_COMPRESS_CHANGES                   = 0x10000000,
-               DRSUAPI_DS_REPLICA_NEIGHBOUR_NO_CHANGE_NOTIFICATIONS            = 0x20000000,
-               DRSUAPI_DS_REPLICA_NEIGHBOUR_PARTIAL_ATTRIBUTE_SET              = 0x40000000
-       } drsuapi_DsReplicaNeighbourFlags;
-
        typedef [flag(NDR_PAHEX),v1_enum] enum {
                DRSUAPI_EXOP_NONE                               = 0x00000000,
                DRSUAPI_EXOP_FSMO_REQ_ROLE                      = 0x00000001,
@@ -283,7 +296,7 @@ interface drsuapi
                [ref] drsuapi_DsReplicaObjectIdentifier *naming_context;
                drsuapi_DsReplicaHighWaterMark highwatermark;
                drsuapi_DsReplicaCursorCtrEx *uptodateness_vector;
-               drsuapi_DsReplicaNeighbourFlags replica_flags;
+               drsuapi_DrsOptions replica_flags;
                uint32 max_object_count; /* w2k3 uses min(133,max(100,max_object_count)) */
                uint32 max_ndr_size; /* w2k3 seems to ignore this */
                drsuapi_DsExtendedOperation extended_op;
@@ -374,9 +387,9 @@ interface drsuapi
         *
         * 2.5.5.17     => dom_sid
         */
-       typedef [nopush,nopull] struct {
-               [range(0,10000),value(ndr_size_drsuapi_DsReplicaOID_oid(oid, 0))] uint32 __ndr_size;
-               [size_is(__ndr_size),charset(DOS)] uint8 *oid; /* it's encoded with asn1_write_OID_String() */
+       typedef [noprint] struct {
+               [range(0,10000)] uint32 length;
+               [size_is(length)] uint8 *binary_oid; /* partial-binary-OID encoded with asn1_write_partial_OID_String() */
        } drsuapi_DsReplicaOID;
 
        typedef struct {
@@ -397,6 +410,7 @@ interface drsuapi
 
        typedef [flag(NDR_PAHEX),v1_enum,public] enum {
                DRSUAPI_ATTRIBUTE_objectClass                   = 0x00000000,
+               DRSUAPI_ATTRIBUTE_cn                            = 0x00000003,
                DRSUAPI_ATTRIBUTE_description                   = 0x0000000d,
                DRSUAPI_ATTRIBUTE_member                        = 0x0000001f,
                DRSUAPI_ATTRIBUTE_instanceType                  = 0x00020001,
@@ -407,6 +421,7 @@ interface drsuapi
                DRSUAPI_ATTRIBUTE_governsID                     = 0x00020016,
                DRSUAPI_ATTRIBUTE_mustContain                   = 0x00020018,
                DRSUAPI_ATTRIBUTE_mayContain                    = 0x00020019,
+               DRSUAPI_ATTRIBUTE_rDNAttId                      = 0x0002001A,
                DRSUAPI_ATTRIBUTE_attributeID                   = 0x0002001e,
                DRSUAPI_ATTRIBUTE_attributeSyntax               = 0x00020020,
                DRSUAPI_ATTRIBUTE_isSingleValued                = 0x00020021,
@@ -445,6 +460,7 @@ interface drsuapi
                DRSUAPI_ATTRIBUTE_systemPossSuperiors           = 0x000900c3,
                DRSUAPI_ATTRIBUTE_systemMayContain              = 0x000900c4,
                DRSUAPI_ATTRIBUTE_systemMustContain             = 0x000900c5,
+               DRSUAPI_ATTRIBUTE_systemAuxiliaryClass          = 0x000900c6,
                DRSUAPI_ATTRIBUTE_sAMAccountName                = 0x000900dd,
                DRSUAPI_ATTRIBUTE_sAMAccountType                = 0x0009012e,
                DRSUAPI_ATTRIBUTE_fSMORoleOwner                 = 0x00090171,
@@ -461,10 +477,12 @@ interface drsuapi
                DRSUAPI_ATTRIBUTE_servicePrincipalName          = 0x00090303,
                DRSUAPI_ATTRIBUTE_objectCategory                = 0x0009030e,
                DRSUAPI_ATTRIBUTE_gPLink                        = 0x0009037b,
+               DRSUAPI_ATTRIBUTE_transportAddressAttribute     = 0x0009037f,
                DRSUAPI_ATTRIBUTE_msDS_Behavior_Version         = 0x000905b3,
                DRSUAPI_ATTRIBUTE_msDS_KeyVersionNumber         = 0x000906f6,
                DRSUAPI_ATTRIBUTE_msDS_HasDomainNCs             = 0x0009071c,
-               DRSUAPI_ATTRIBUTE_msDS_hasMasterNCs             = 0x0009072c
+               DRSUAPI_ATTRIBUTE_msDS_hasMasterNCs             = 0x0009072c,           
+               DRSUAPI_ATTRIBUTE_NONE                          = 0xFFFFFFFF
        } drsuapi_DsAttributeId;
 
        typedef struct {
@@ -480,7 +498,7 @@ interface drsuapi
                [ref] drsuapi_DsReplicaObjectIdentifier *naming_context;
                drsuapi_DsReplicaHighWaterMark highwatermark;
                drsuapi_DsReplicaCursorCtrEx *uptodateness_vector;
-               drsuapi_DsReplicaNeighbourFlags replica_flags;
+               drsuapi_DrsOptions replica_flags;
                uint32 max_object_count; /* w2k3 uses min(133,max(100,max_object_count)) */
                uint32 max_ndr_size; /* w2k3 seems to ignore this */
                drsuapi_DsExtendedOperation extended_op;
@@ -490,9 +508,27 @@ interface drsuapi
                drsuapi_DsReplicaOIDMapping_Ctr mapping_ctr;
        } drsuapi_DsGetNCChangesRequest8;
 
+       typedef struct {
+               GUID destination_dsa_guid;
+               GUID source_dsa_invocation_id; /* the 'invocationId' field of the CN=NTDS Settings object */
+               [ref] drsuapi_DsReplicaObjectIdentifier *naming_context;
+               drsuapi_DsReplicaHighWaterMark highwatermark;
+               drsuapi_DsReplicaCursorCtrEx *uptodateness_vector;
+               drsuapi_DrsOptions replica_flags;
+               uint32 max_object_count; /* w2k3 uses min(133,max(100,max_object_count)) */
+               uint32 max_ndr_size; /* w2k3 seems to ignore this */
+               drsuapi_DsExtendedOperation extended_op;
+               hyper fsmo_info;
+               drsuapi_DsPartialAttributeSet *partial_attribute_set;
+               drsuapi_DsPartialAttributeSet *partial_attribute_set_ex;
+               drsuapi_DsReplicaOIDMapping_Ctr mapping_ctr;
+               uint32 more_flags;
+       } drsuapi_DsGetNCChangesRequest10;
+
        typedef [switch_type(int32)] union {
                [case(5)] drsuapi_DsGetNCChangesRequest5 req5;
                [case(8)] drsuapi_DsGetNCChangesRequest8 req8;
+               [case(10)] drsuapi_DsGetNCChangesRequest10 req10;
        } drsuapi_DsGetNCChangesRequest;
 
        typedef [public] struct {
@@ -530,8 +566,8 @@ interface drsuapi
                [charset(UTF16)] uint16 dn[__ndr_size_dn+1];
        } drsuapi_DsReplicaObjectIdentifier3;
 
-       typedef [public,gensize] struct {
-               [value(ndr_size_drsuapi_DsReplicaObjectIdentifier3Binary(r, ndr->iconv_convenience, ndr->flags))] uint32 __ndr_size;
+       typedef [public] struct {
+               [value(ndr_size_drsuapi_DsReplicaObjectIdentifier3Binary_without_Binary(r, ndr->iconv_convenience, ndr->flags))] uint32 __ndr_size;
                [value(ndr_size_dom_sid28(&sid,ndr->flags))]  uint32 __ndr_size_sid;
                GUID guid;
                dom_sid28 sid;
@@ -718,19 +754,12 @@ interface drsuapi
        /*****************/
         /* Function 0x04 */
        /* [MS-DRSR] 4.1.26 */
-       typedef bitmap {
-               DRSUAPI_DS_REPLICA_UPDATE_ASYNCHRONOUS_OPERATION        = 0x00000001,
-               DRSUAPI_DS_REPLICA_UPDATE_GETCHG_CHECK                  = 0x00000002,
-               DRSUAPI_DS_REPLICA_UPDATE_ADD_REFERENCE                 = 0x00000004,
-               DRSUAPI_DS_REPLICA_UPDATE_DELETE_REFERENCE              = 0x00000008,
-               DRSUAPI_DS_REPLICA_UPDATE_WRITEABLE                     = 0x00000010
-       } drsuapi_DsReplicaUpdateRefsOptions;
 
        typedef struct {
                [ref] drsuapi_DsReplicaObjectIdentifier *naming_context;
                [ref,charset(DOS),string] uint8 *dest_dsa_dns_name;
                GUID dest_dsa_guid;
-               drsuapi_DsReplicaUpdateRefsOptions options;
+               drsuapi_DrsOptions options;
        } drsuapi_DsReplicaUpdateRefsRequest1;
 
        typedef [switch_type(int32)] union {
@@ -745,18 +774,12 @@ interface drsuapi
 
        /*****************/
         /* Function 0x05 */
-       typedef bitmap {
-               DRSUAPI_DS_REPLICA_ADD_ASYNCHRONOUS_OPERATION   = 0x00000001,
-               DRSUAPI_DS_REPLICA_ADD_WRITEABLE                = 0x00000002
-               /* TODO ... */
-       } drsuapi_DsReplicaAddOptions;
-
 
        typedef struct {
                [ref] drsuapi_DsReplicaObjectIdentifier *naming_context;
                [charset(UTF16),string] uint16 *source_dsa_address;
                uint8 schedule[84];
-               drsuapi_DsReplicaAddOptions options;
+               drsuapi_DrsOptions options;
        } drsuapi_DsReplicaAddRequest1;
 
        typedef struct {
@@ -765,7 +788,7 @@ interface drsuapi
                drsuapi_DsReplicaObjectIdentifier *transport_dn;
                [charset(UTF16),string] uint16 *source_dsa_address;
                uint8 schedule[84];
-               drsuapi_DsReplicaAddOptions options;
+               drsuapi_DrsOptions options;
        } drsuapi_DsReplicaAddRequest2;
 
        typedef [switch_type(int32)] union {
@@ -782,17 +805,10 @@ interface drsuapi
 
        /*****************/
         /* Function 0x06 */
-       typedef bitmap {
-               DRSUAPI_DS_REPLICA_ADD_ASYNCHRONOUS_OPERATION   = 0x00000001,
-               DRSUAPI_DS_REPLICA_ADD_WRITEABLE                = 0x00000002
-               /* TODO ... */
-       } drsuapi_DsReplicaDeleteOptions;
-
-
        typedef struct {
                [ref] drsuapi_DsReplicaObjectIdentifier *naming_context;
                [charset(UTF16),string] uint16 *source_dsa_address;
-               drsuapi_DsReplicaDeleteOptions options;
+               drsuapi_DrsOptions options;
        } drsuapi_DsReplicaDelRequest1;
 
        typedef [switch_type(int32)] union {
@@ -807,12 +823,6 @@ interface drsuapi
 
        /*****************/
         /* Function 0x07 */
-       typedef bitmap {
-               DRSUAPI_DS_REPLICA_ADD_ASYNCHRONOUS_OPERATION   = 0x00000001,
-               DRSUAPI_DS_REPLICA_ADD_WRITEABLE                = 0x00000002
-               /* TODO ... */
-       } drsuapi_DsReplicaModifyOptions;
-
 
        typedef struct {
                [ref] drsuapi_DsReplicaObjectIdentifier *naming_context;
@@ -821,7 +831,7 @@ interface drsuapi
                uint8 schedule[84];
                uint32 replica_flags;
                uint32 modify_fields;
-               drsuapi_DsReplicaModifyOptions options;
+               drsuapi_DrsOptions options;
        } drsuapi_DsReplicaModRequest1;
 
        typedef [switch_type(int32)] union {
@@ -1316,7 +1326,25 @@ interface drsuapi
 
        /*****************/
         /* Function 0x12 */
-       [todo] WERROR DRSUAPI_EXECUTE_KCC();
+       typedef bitmap {
+               DRSUAPI_DS_EXECUTE_KCC_ASYNCHRONOUS_OPERATION   = 0x00000001,
+               DRSUAPI_DS_EXECUTE_KCC_DAMPED                   = 0x00000002
+       } drsuapi_DsExecuteKCCFlags;
+
+       typedef struct {
+               uint32 taskID;
+               drsuapi_DsExecuteKCCFlags flags;
+       } drsuapi_DsExecuteKCC1;
+
+       typedef [switch_type(uint32)] union {
+               [case(1)] drsuapi_DsExecuteKCC1 ctr1;
+       } drsuapi_DsExecuteKCCRequest;
+
+       WERROR drsuapi_DsExecuteKCC(
+               [in] policy_handle *bind_handle,
+               [in] uint32 level,
+               [in, ref, switch_is(level)] drsuapi_DsExecuteKCCRequest *req
+               );
 
        /*****************/
        /* Function 0x13 */
@@ -1337,10 +1365,10 @@ interface drsuapi
                DRSUAPI_DS_REPLICA_INFO_CURSORS3                        = 8,
                DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2                   = 9,
                DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2       = 10,
-               DRSUAPI_DS_REPLICA_INFO_NEIGHBORS02                     = -2,
-               DRSUAPI_DS_REPLICA_INFO_CONNECTIONS04                   = -4,
-               DRSUAPI_DS_REPLICA_INFO_CURSORS05                       = -5,
-               DRSUAPI_DS_REPLICA_INFO_06                              = -6
+               DRSUAPI_DS_REPLICA_INFO_REPSTO                          = -2,
+               DRSUAPI_DS_REPLICA_INFO_CLIENT_CONTEXTS                 = -4,
+               DRSUAPI_DS_REPLICA_INFO_UPTODATE_VECTOR_V1              = -5,
+               DRSUAPI_DS_REPLICA_INFO_SERVER_OUTGOING_CALLS           = -6
        } drsuapi_DsReplicaInfoType;
 
        typedef struct {
@@ -1353,10 +1381,10 @@ interface drsuapi
                drsuapi_DsReplicaInfoType info_type;
                [charset(UTF16),string] uint16 *object_dn;
                GUID guid1;
-               uint32 unknown1;
+               uint32 flags;
                [charset(UTF16),string] uint16 *string1;
                [charset(UTF16),string] uint16 *string2;
-               uint32 unknown2;
+               uint32 enumeration_context;
        } drsuapi_DsReplicaGetInfoRequest2;
 
        typedef [switch_type(drsuapi_DsReplicaGetInfoLevel)] union {
@@ -1369,7 +1397,7 @@ interface drsuapi
                [charset(UTF16),string] uint16 *source_dsa_obj_dn;
                [charset(UTF16),string] uint16 *source_dsa_address;
                [charset(UTF16),string] uint16 *transport_obj_dn;
-               drsuapi_DsReplicaNeighbourFlags replica_flags;
+               drsuapi_DrsOptions replica_flags;
                uint32 reserved;
                GUID naming_context_obj_guid;
                GUID source_dsa_obj_guid;
@@ -1432,21 +1460,12 @@ interface drsuapi
                DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS  = 4
        } drsuapi_DsReplicaOpType;
 
-       typedef [switch_type(drsuapi_DsReplicaOpType)] union {
-               [case(DRSUAPI_DS_REPLICA_OP_TYPE_SYNC)]         drsuapi_DsReplicaSyncOptions sync;
-               [case(DRSUAPI_DS_REPLICA_OP_TYPE_ADD)]          drsuapi_DsReplicaAddOptions add;
-               [case(DRSUAPI_DS_REPLICA_OP_TYPE_DELETE)]       drsuapi_DsReplicaDeleteOptions op_delete;
-               [case(DRSUAPI_DS_REPLICA_OP_TYPE_MODIFY)]       drsuapi_DsReplicaModifyOptions modify;
-               [case(DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS)]  drsuapi_DsReplicaUpdateRefsOptions update_refs;
-               [default] uint32 unknown;
-       } drsuapi_DsRplicaOpOptions;
-
        typedef struct {
                NTTIME operation_start;
                uint32 serial_num; /* unique till reboot */
                uint32 priority;
                drsuapi_DsReplicaOpType operation_type;
-               [switch_is(operation_type)] drsuapi_DsRplicaOpOptions options;
+               drsuapi_DrsOptions options;
                [charset(UTF16),string] uint16 *nc_dn;
                [charset(UTF16),string] uint16 *remote_dsa_obj_dn;
                [charset(UTF16),string] uint16 *remote_dsa_address;
@@ -1476,13 +1495,13 @@ interface drsuapi
 
        typedef struct {
                uint32 count;
-               int32 enumeration_context;
+               uint32 enumeration_context;
                [size_is(count)] drsuapi_DsReplicaAttrValMetaData array[];
        } drsuapi_DsReplicaAttrValMetaDataCtr;
 
        typedef struct {
                uint32 count;
-               int32 enumeration_context;
+               uint32 enumeration_context;
                [size_is(count)] drsuapi_DsReplicaCursor2 array[];
        } drsuapi_DsReplicaCursor2Ctr;
 
@@ -1495,7 +1514,7 @@ interface drsuapi
 
        typedef struct {
                uint32 count;
-               int32 enumeration_context;
+               uint32 enumeration_context;
                [size_is(count)] drsuapi_DsReplicaCursor3 array[];
        } drsuapi_DsReplicaCursor3Ctr;
 
@@ -1511,7 +1530,7 @@ interface drsuapi
 
        typedef struct {
                uint32 count;
-               int32 enumeration_context;
+               uint32 enumeration_context;
                [size_is(count)] drsuapi_DsReplicaObjMetaData2 array[];
        } drsuapi_DsReplicaObjMetaData2Ctr;
 
@@ -1532,7 +1551,7 @@ interface drsuapi
 
        typedef struct {
                uint32 count;
-               int32 enumeration_context;
+               uint32 enumeration_context;
                [size_is(count)] drsuapi_DsReplicaAttrValMetaData2 array[];
        } drsuapi_DsReplicaAttrValMetaData2Ctr;
 
@@ -1581,10 +1600,10 @@ interface drsuapi
                [case(DRSUAPI_DS_REPLICA_INFO_CURSORS3)] drsuapi_DsReplicaCursor3Ctr *cursors3;
                [case(DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2)] drsuapi_DsReplicaObjMetaData2Ctr *objmetadata2;
                [case(DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2)] drsuapi_DsReplicaAttrValMetaData2Ctr *attrvalmetadata2;
-               [case(DRSUAPI_DS_REPLICA_INFO_NEIGHBORS02)] drsuapi_DsReplicaNeighbourCtr *neighbours02;
-               [case(DRSUAPI_DS_REPLICA_INFO_CONNECTIONS04)] drsuapi_DsReplicaConnection04Ctr *connections04;
-               [case(DRSUAPI_DS_REPLICA_INFO_CURSORS05)] drsuapi_DsReplicaCursorCtrEx *cursors05;
-               [case(DRSUAPI_DS_REPLICA_INFO_06)] drsuapi_DsReplica06Ctr *i06;
+               [case(DRSUAPI_DS_REPLICA_INFO_REPSTO)] drsuapi_DsReplicaNeighbourCtr *repsto;
+               [case(DRSUAPI_DS_REPLICA_INFO_CLIENT_CONTEXTS)] drsuapi_DsReplicaConnection04Ctr *clientctx;
+               [case(DRSUAPI_DS_REPLICA_INFO_UPTODATE_VECTOR_V1)] drsuapi_DsReplicaCursorCtrEx *udv1;
+               [case(DRSUAPI_DS_REPLICA_INFO_SERVER_OUTGOING_CALLS)] drsuapi_DsReplica06Ctr *srvoutgoingcalls;
        } drsuapi_DsReplicaInfo;
 
        WERROR drsuapi_DsReplicaGetInfo(