X-Git-Url: http://git.samba.org/?p=samba.git;a=blobdiff_plain;f=source4%2Flibrpc%2Fidl%2Fdrsuapi.idl;h=a85871e28e5efd0a5fbaf256facff176fb00b7b3;hp=b914292abb46fea02edab8af7b76447b96e13c7c;hb=75f02f9d4daf4a16b408ce145f841f11d4b0ca67;hpb=4d545e09c899dd63dfc055d05dd871c7df8638a5 diff --git a/source4/librpc/idl/drsuapi.idl b/source4/librpc/idl/drsuapi.idl index b914292abb4..a85871e28e5 100644 --- a/source4/librpc/idl/drsuapi.idl +++ b/source4/librpc/idl/drsuapi.idl @@ -12,33 +12,91 @@ interface drsuapi /*****************/ /* Function 0x00 */ - typedef [flag(NDR_PAHEX)] struct { - [range(1,10000)] uint32 length; - [size_is(length)] uint8 data[]; + const uint32 DRSUAPI_SUPPORTED_EXTENSION_BASE = 0x00000001; + const uint32 DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATION = 0x00000002; + const uint32 DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPI = 0x00000004; + const uint32 DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2 = 0x00000008; + const uint32 DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS = 0x00000010; + const uint32 DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1 = 0x00000020; + const uint32 DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION = 0x00000040; + const uint32 DRSUAPI_SUPPORTED_EXTENSION_00000080 = 0x00000080; + const uint32 DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE = 0x00000100; + const uint32 DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2 = 0x00000200; + const uint32 DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION = 0x00000400; + const uint32 DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V2 = 0x00000800; + const uint32 DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MOD = 0x00001000; + const uint32 DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BIND = 0x00002000; + const uint32 DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFO = 0x00004000; + const uint32 DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTION = 0x00008000; + const uint32 DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V01 = 0x00010000; + const uint32 DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP = 0x00020000; + const uint32 DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY = 0x00040000; + const uint32 DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3 = 0x00080000; + const uint32 DRSUAPI_SUPPORTED_EXTENSION_00100000 = 0x00100000; + const uint32 DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2 = 0x00200000; + const uint32 DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6 = 0x00400000; + const uint32 DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCS = 0x00800000; + const uint32 DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8 = 0x01000000; + const uint32 DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5 = 0x02000000; + const uint32 DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6 = 0x04000000; + /* the following 3 are correctly be the same value */ + const uint32 DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3 = 0x08000000; + const uint32 DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7 = 0x08000000; + const uint32 DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECT = 0x08000000; + const uint32 DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS = 0x10000000; + const uint32 DRSUAPI_SUPPORTED_EXTENSION_20000000 = 0x20000000; + const uint32 DRSUAPI_SUPPORTED_EXTENSION_40000000 = 0x40000000; + const uint32 DRSUAPI_SUPPORTED_EXTENSION_80000000 = 0x80000000; + + /* this is used by w2k */ + typedef struct { + uint32 supported_extensions; + GUID site_guid; + uint32 u1; + } drsuapi_DsBindInfo24; + + /* this is used by w2k3 */ + typedef struct { + uint32 supported_extensions; + GUID site_guid; + uint32 u1; + uint32 repl_epoch; + } drsuapi_DsBindInfo28; + + typedef struct { + [flag(NDR_REMAINING)] DATA_BLOB info; + } drsuapi_DsBindInfoFallBack; + + typedef [nodiscriminant] union { + [case(24)][subcontext(4)] drsuapi_DsBindInfo24 info24; + [case(28)][subcontext(4)] drsuapi_DsBindInfo28 info28; + [default][subcontext(4)] drsuapi_DsBindInfoFallBack FallBack; } drsuapi_DsBindInfo; + /* the drsuapi_DsBindInfoCtr was this before + * typedef [flag(NDR_PAHEX)] struct { + * [range(1,10000)] uint32 length; + * [size_is(length)] uint8 data[]; + * } drsuapi_DsBindInfo; + * + * but we don't want the caller to manually decode this blob, + * so we're doing it here + */ + + typedef struct { + [range(1,10000)] uint32 length; + [switch_is(length)] drsuapi_DsBindInfo info; + } drsuapi_DsBindInfoCtr; + /* this is a magic guid you need to pass to DsBind to make drsuapi_DsWriteAccountSpn() work * * maybe the bind_guid could also be the invocation_id see drsuapi_DsReplicaConnection04 */ const string DRSUAPI_DS_BIND_GUID = "e24d201a-4fd6-11d1-a3da-0000f875ae0d"; - - - /* this are the bind info blobs returned (seemed to be const): - w2k3 7ffbff1f81a6ff5d80139441a372e9b779d70268f801000000000000 - w2k 7ffb1f00cb7fb9102391c143bda81fc90e0ff452f4000000 - */ - const uint8 DRSUAPI_DS_BIND_INFO_RESPONSE_W2K3[] = { 0x7f,0xfb,0xff,0x1f,0x81,0xa6,0xff,0x5d, - 0x80,0x13,0x94,0x41,0xa3,0x72,0xe9,0xb7, - 0x79,0xd7,0x02,0x68,0xf8,0x01,0x00,0x00, - 0x00,0x00,0x00,0x00}; - const uint8 DRSUAPI_DS_BIND_INFO_RESPONSE_W2K[] = { 0x7f,0xfb,0x1f,0x00,0xcb,0x7f,0xb9,0x10, - 0x23,0x91,0xc1,0x43,0xbd,0xa8,0x1f,0xc9, - 0x0e,0x0f,0xf4,0x52,0xf4,0x00,0x00,0x00}; WERROR drsuapi_DsBind( [in] GUID *bind_guid, - [in,out] drsuapi_DsBindInfo *bind_info, + [in,out] drsuapi_DsBindInfoCtr *bind_info, [out,ref] policy_handle *bind_handle );