s4-idl: give a enum for attribute cn and a 'NONE' attribute
[ira/wip.git] / librpc / idl / drsuapi.idl
index 4ca7e568f3041fafe80269b2c7c08660ab6d9a8d..dadaeeee3abfbdd1bf79a349422477bf94c0503b 100644 (file)
@@ -15,6 +15,40 @@ interface drsuapi
 {
        typedef bitmap samr_GroupAttrs samr_GroupAttrs;
 
+       /* see MS-DRSR section 5.37 */
+       typedef [public,bitmap32bit] bitmap {
+               DRSUAPI_DRS_ASYNC_OP                  = 0x00000001,
+               DRSUAPI_DRS_GETCHG_CHECK              = 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_SYNC_BYNAME               = 0x00004000,
+               DRSUAPI_DRS_REF_OK                    = 0x00004000,
+               DRSUAPI_DRS_FULL_SYNC_NOW             = 0x00008000,
+               DRSUAPI_DRS_NO_SOURCE                 = 0x00008000,
+               DRSUAPI_DRS_FULL_SYNC_PACKET          = 0x00020000,
+               DRSUAPI_DRS_REF_GCSPN                 = 0x00100000,
+               DRSUAPI_DRS_SPECIAL_SECRET_PROCESSING = 0x00800000,
+               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 {
@@ -219,16 +253,22 @@ interface drsuapi
                /* the _WRITEABLE flag indicates a replication with all attributes
                 *
                 * --metze
+                *
+                * See drsuapi_DrsOptions for the WSPP bit names 
                 */
                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_ASYNC_REP                          = 0x00000100,
+               DRSUAPI_DS_REPLICA_NEIGHBOUR_IGNORE_ERROR                       = 0x00000100,
                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_CRITICAL_ONLY                      = 0x00000400,
+               DRSUAPI_DS_REPLICA_NEIGHBOUR_RETURN_OBJECT_PARENTS              = 0x00000800,/*Include updates to ancestor objects before updates to their descendants*/
+               DRSUAPI_DS_REPLICA_NEIGHBOUR_FULL_IN_PROGRESS                   = 0x00010000,
+               DRSUAPI_DS_REPLICA_NEIGHBOUR_FULL_SYNC_PACKET                   = 0x00020000,
                DRSUAPI_DS_REPLICA_NEIGHBOUR_NEVER_SYNCED                       = 0x00200000,
+               DRSUAPI_DS_REPLICA_NEIGHBOUR_SPECIAL_SECRET_PROCESSING          = 0x00800000,
                DRSUAPI_DS_REPLICA_NEIGHBOUR_PREEMPTED                          = 0x01000000,
                DRSUAPI_DS_REPLICA_NEIGHBOUR_IGNORE_CHANGE_NOTIFICATIONS        = 0x04000000,
                DRSUAPI_DS_REPLICA_NEIGHBOUR_DISABLE_SCHEDULED_SYNC             = 0x08000000,
@@ -374,9 +414,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 +437,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 +448,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 +487,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 +504,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 {
@@ -490,9 +535,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_DsReplicaNeighbourFlags 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 +593,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;
@@ -1316,7 +1379,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 */