summaryrefslogtreecommitdiff
path: root/source4/librpc
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2005-03-11 12:15:50 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:11:01 -0500
commit4b83366b6cf81a29fab0f9dac5e6074784c639a8 (patch)
treea3e230e7b8f097af86099515e7c4c6e3b14699ca /source4/librpc
parent736797ef7fe3b9cf542fa69281272501f95bfa3f (diff)
downloadsamba-4b83366b6cf81a29fab0f9dac5e6074784c639a8.tar.gz
samba-4b83366b6cf81a29fab0f9dac5e6074784c639a8.tar.bz2
samba-4b83366b6cf81a29fab0f9dac5e6074784c639a8.zip
r5742: - add torture test and idl for DsReplicaUpdateRefs()
(the torture test currently only tests if the idl is correct) - add start for idl for DsGetNCChanges() (if someone didn't noticed the current ethereal trunk code can successful decrypt DCERPC and LDAP gsskrb5 encrypted blobs, when you provide a keytab and have compiled against heimdal :-) - add a view bitmaps and enum's for better debugging metze (This used to be commit cf7c1352ab2857b80256e02f70ab3fbd5177d596)
Diffstat (limited to 'source4/librpc')
-rw-r--r--source4/librpc/idl/drsuapi.idl137
1 files changed, 127 insertions, 10 deletions
diff --git a/source4/librpc/idl/drsuapi.idl b/source4/librpc/idl/drsuapi.idl
index 759599e707..8a6a96dcac 100644
--- a/source4/librpc/idl/drsuapi.idl
+++ b/source4/librpc/idl/drsuapi.idl
@@ -4,6 +4,7 @@
uuid("e3514235-4b06-11d1-ab04-00c04fc2dcd2"),
version(4.0),
endpoint("ncacn_np:[\\pipe\\lsass]","ncacn_np:[\\pipe\\protected_storage]", "ncacn_ip_tcp:", "ncalrpc:"),
+ authservice("ldap"),
helpstring("Active Directory Replication"),
pointer_default(unique)
]
@@ -112,19 +113,46 @@ interface drsuapi
/*****************/
/* Function 0x02 */
- typedef [flag(NDR_PAHEX)] struct {
+ typedef [gensize,flag(NDR_PAHEX)] struct {
+ [value(ndr_size_drsuapi_DsReplicaSyncRequest1Info(r, ndr->flags)-4)] uint32 __ndr_size;
uint32 unknown1;
- uint32 unknown2;
GUID guid1;
- uint8 unknown3[28];
+ uint8 byte_array[28];
[flag(STR_SIZE4|STR_CHARLEN|STR_CONFORMANT)] string nc_dn;
} drsuapi_DsReplicaSyncRequest1Info;
+ typedef bitmap {
+ DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_OPERATION = 0x00000001,
+ DRSUAPI_DS_REPLICA_SYNC_WRITEABLE = 0x00000002,
+ DRSUAPI_DS_REPLICA_SYNC_PERIODIC = 0x00000004,
+ DRSUAPI_DS_REPLICA_SYNC_INTERSITE_MESSAGING = 0x00000008,
+ DRSUAPI_DS_REPLICA_SYNC_ALL_SOURCES = 0x00000010,
+ DRSUAPI_DS_REPLICA_SYNC_FULL = 0x00000020,
+ DRSUAPI_DS_REPLICA_SYNC_URGENT = 0x00000040,
+ DRSUAPI_DS_REPLICA_SYNC_NO_DISCARD = 0x00000080,
+ DRSUAPI_DS_REPLICA_SYNC_FORCE = 0x00000100,
+ DRSUAPI_DS_REPLICA_SYNC_ADD_REFERENCE = 0x00000200,
+ DRSUAPI_DS_REPLICA_SYNC_NEVER_COMPLETED = 0x00000400,
+ DRSUAPI_DS_REPLICA_SYNC_TWO_WAY = 0x00000800,
+ DRSUAPI_DS_REPLICA_SYNC_NEVER_NOTIFY = 0x00001000,
+ DRSUAPI_DS_REPLICA_SYNC_INITIAL = 0x00002000,
+ DRSUAPI_DS_REPLICA_SYNC_USE_COMPRESSION = 0x00004000,
+ DRSUAPI_DS_REPLICA_SYNC_ABANDONED = 0x00008000,
+ DRSUAPI_DS_REPLICA_SYNC_INITIAL_IN_PROGRESS = 0x00010000,
+ DRSUAPI_DS_REPLICA_SYNC_PARTIAL_ATTRIBUTE_SET = 0x00020000,
+ DRSUAPI_DS_REPLICA_SYNC_REQUEUE = 0x00040000,
+ DRSUAPI_DS_REPLICA_SYNC_NOTIFICATION = 0x00080000,
+ DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_REPLICA = 0x00100000,
+ DRSUAPI_DS_REPLICA_SYNC_CRITICAL = 0x00200000,
+ DRSUAPI_DS_REPLICA_SYNC_FULL_IN_PROGRESS = 0x00400000,
+ DRSUAPI_DS_REPLICA_SYNC_PREEMPTED = 0x00800000
+ } drsuapi_DsReplicaSyncOptions;
+
typedef struct {
drsuapi_DsReplicaSyncRequest1Info *info;
GUID guid1;
astring *string1;
- uint32 unknown1;
+ drsuapi_DsReplicaSyncOptions options;
} drsuapi_DsReplicaSyncRequest1;
typedef [switch_type(int32)] union {
@@ -138,23 +166,95 @@ interface drsuapi
);
/*****************/
- /* Function 0x03 */
- WERROR DRSUAPI_GET_NC_CHANGES();
+ /* Function 0x03 */
+ typedef struct {
+ hyper usn1;
+ hyper usn2;
+ hyper usn3;
+ } drsuapi_DsGetNCChangesUsnTriple;
+
+ typedef struct {
+ GUID guid1;
+ GUID guid2;
+ uint32 unknown1[20];
+ drsuapi_DsReplicaSyncRequest1Info sync_req_info1;
+ drsuapi_DsGetNCChangesUsnTriple usn;
+ } drsuapi_DsGetNCChangesRequest8;
+
+ typedef [switch_type(int32)] union {
+ [case(8)] drsuapi_DsGetNCChangesRequest8 req8;
+ } drsuapi_DsGetNCChangesRequest;
+
+ typedef struct {
+ } drsuapi_DsGetNCChangesCtr7;
+
+ typedef [switch_type(int32)] union {
+ [case(7)] drsuapi_DsGetNCChangesCtr7 ctr7;
+ } drsuapi_DsGetNCChangesCtr;
+
+ WERROR drsuapi_DsGetNCChanges(
+ [in,ref] policy_handle *bind_handle,
+ [in,out] int32 level,
+ [in,switch_is(level)] drsuapi_DsGetNCChangesRequest req,
+ [out,switch_is(level)] drsuapi_DsGetNCChangesCtr ctr
+ );
/*****************/
/* Function 0x04 */
- WERROR DRSUAPI_UPDATE_REFS();
+ typedef bitmap {
+ DRSUAPI_DS_REPLICA_UPDATE_ASYNCHRONOUS_OPERATION = 0x00000001,
+ DRSUAPI_DS_REPLICA_UPDATE_WRITEABLE = 0x00000002,
+ DRSUAPI_DS_REPLICA_UPDATE_ADD_REFERENCE = 0x00000004,
+ DRSUAPI_DS_REPLICA_UPDATE_DELETE_REFERENCE = 0x00000008,
+ DRSUAPI_DS_REPLICA_UPDATE_0x00000010 = 0x00000010
+ } drsuapi_DsReplicaUpdateRefsOptions;
+
+ typedef struct {
+ uint32 unknown1;
+ uint32 unknown2;
+ GUID dest_dsa_guid;
+ drsuapi_DsReplicaUpdateRefsOptions options;
+ drsuapi_DsReplicaSyncRequest1Info sync_req_info1;
+ ascstr dest_dsa_dns_name;
+ } drsuapi_DsReplicaUpdateRefsRequest1;
+
+ typedef [switch_type(int32)] union {
+ [case(1)] drsuapi_DsReplicaUpdateRefsRequest1 req1;
+ } drsuapi_DsReplicaUpdateRefsRequest;
+
+ WERROR drsuapi_DsReplicaUpdateRefs(
+ [in,ref] policy_handle *bind_handle,
+ [in] int32 level,
+ [in,switch_is(level)] drsuapi_DsReplicaUpdateRefsRequest req
+ );
/*****************/
/* Function 0x05 */
+ typedef bitmap {
+ DRSUAPI_DS_REPLICA_ADD_ASYNCHRONOUS_OPERATION = 0x00000001,
+ DRSUAPI_DS_REPLICA_ADD_WRITEABLE = 0x00000002
+ /* TODO ... */
+ } drsuapi_DsReplicaAddOptions;
+
WERROR DRSUAPI_REPLICA_ADD();
/*****************/
/* Function 0x06 */
+ typedef bitmap {
+ DRSUAPI_DS_REPLICA_DELETE_ASYNCHRONOUS_OPERATION = 0x00000001,
+ DRSUAPI_DS_REPLICA_DELETE_WRITEABLE = 0x00000002
+ /* TODO ... */
+ } drsuapi_DsReplicaDeleteOptions;
+
WERROR DRSUAPI_REPLICA_DEL();
/*****************/
/* Function 0x07 */
+ typedef bitmap {
+ DRSUAPI_DS_REPLICA_MODIFY_ASYNCHRONOUS_OPERATION = 0x00000001,
+ DRSUAPI_DS_REPLICA_MODIFY_WRITEABLE = 0x00000002
+ } drsuapi_DsReplicaModifyOptions;
+
WERROR DRSUAPI_REPLICA_MODIFY();
/*****************/
@@ -369,7 +469,7 @@ interface drsuapi
/*****************/
/* Function 0x11 */
- WERROR DRSUAPI_ADD_ENTRY();
+ WERROR drsuapi_DsAddEntry();
/*****************/
/* Function 0x12 */
@@ -486,12 +586,29 @@ interface drsuapi
[size_is(count)] drsuapi_DsReplicaKccDsaFailure array[];
} drsuapi_DsReplicaKccDsaFailuresCtr;
+ typedef enum {
+ DRSUAPI_DS_REPLICA_OP_TYPE_SYNC = 0,
+ DRSUAPI_DS_REPLICA_OP_TYPE_ADD = 1,
+ DRSUAPI_DS_REPLICA_OP_TYPE_DELETE = 2,
+ DRSUAPI_DS_REPLICA_OP_TYPE_MODIFY = 3,
+ 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 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;
- uint16 operation_type;
- uint32 options_flags;
+ drsuapi_DsReplicaOpType operation_type;
+ [switch_is(operation_type)] drsuapi_DsRplicaOpOptions options;
unistr *nc_dn;
unistr *remote_dsa_obj_dn;
unistr *remote_dsa_address;