diff options
author | Stefan Metzmacher <metze@samba.org> | 2005-03-11 12:15:50 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:11:01 -0500 |
commit | 4b83366b6cf81a29fab0f9dac5e6074784c639a8 (patch) | |
tree | a3e230e7b8f097af86099515e7c4c6e3b14699ca /source4/librpc | |
parent | 736797ef7fe3b9cf542fa69281272501f95bfa3f (diff) | |
download | samba-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.idl | 137 |
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; |