1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-11 05:18:09 +03:00

r5998: I was wrong with the highwater mark...

I think I now understand how it works:-)

metze
(This used to be commit f8add2e66a)
This commit is contained in:
Stefan Metzmacher 2005-03-23 18:54:06 +00:00 committed by Gerald (Jerry) Carter
parent b8f395cf78
commit 01ab1128ce
3 changed files with 58 additions and 31 deletions

View File

@ -9,6 +9,7 @@
]
interface drsblobs {
declare bitmap drsuapi_DsReplicaSyncOptions;
declare bitmap drsuapi_DsReplicaNeighbourFlags;
declare [v1_enum] enum drsuapi_DsAttributeId;
/*
@ -95,10 +96,10 @@ interface drsblobs {
WERROR result_last_attempt;
[relative] repsFromTo1OtherInfo *other_info;
[value(ndr_size_repsFromTo1OtherInfo(r->other_info, ndr->flags))] uint32 other_info_length;
drsuapi_DsReplicaSyncOptions replica_flags;
drsuapi_DsReplicaNeighbourFlags replica_flags;
uint8 schedule[84];
uint32 reserved;
drsuapi_DsReplicaUsnCtr replication_state;
drsuapi_DsReplicaHighWaterMark highwatermark;
GUID source_dsa_obj_guid; /* the 'objectGuid' field of the CN=NTDS Settings object */
GUID source_dsa_invocation_id; /* the 'invocationId' field of the CN=NTDS Settings object */
GUID transport_guid;
@ -125,7 +126,7 @@ interface drsblobs {
uint32 u2;
uint32 u3;
uint32 u4;
drsuapi_DsReplicaUsnCtr replication_state;
drsuapi_DsReplicaHighWaterMark highwatermark;
GUID guid1;
hyper h4;
replUpToDateVectorCtr1 uptodateness_vector;

View File

@ -172,7 +172,7 @@ interface drsuapi
hyper tmp_highest_usn; /* updated after each object update */
hyper reserved_usn;
hyper highest_usn; /* updated after a full replication cycle */
} drsuapi_DsReplicaUsnCtr;
} drsuapi_DsReplicaHighWaterMark;
typedef [public] struct {
GUID source_dsa_invocation_id; /* the 'invocationId' field of the CN=NTDS Settings object */
@ -187,13 +187,31 @@ interface drsuapi
[size_is(count)] drsuapi_DsReplicaCoursor coursors[];
} drsuapi_DsReplicaCoursor05Ctr;
typedef [public] bitmap {
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 = 0x00010000,
DRSUAPI_DS_REPLICA_NEIGHBOUR_FULL_NEXT_PACKET = 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,
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 struct {
GUID destination_dsa_guid;
GUID source_dsa_guid;
[ref] drsuapi_DsReplicaObjectIdentifier *naming_context;
drsuapi_DsReplicaUsnCtr replication_state;
drsuapi_DsReplicaCoursor05Ctr *highwatermark_vector;
uint32 unknown1;
drsuapi_DsReplicaHighWaterMark highwatermark;
drsuapi_DsReplicaCoursor05Ctr *uptodateness_vector;
drsuapi_DsReplicaNeighbourFlags replica_flags;
uint32 unknown2;
uint32 unknown3;
uint32 unknown4;
@ -219,9 +237,9 @@ interface drsuapi
GUID destination_dsa_guid;
GUID source_dsa_guid;
[ref] drsuapi_DsReplicaObjectIdentifier *naming_context;
drsuapi_DsReplicaUsnCtr replication_state;
drsuapi_DsReplicaCoursor05Ctr *highwatermark_vector;
uint32 unknown1;
drsuapi_DsReplicaHighWaterMark highwatermark;
drsuapi_DsReplicaCoursor05Ctr *uptodateness_vector;
drsuapi_DsReplicaNeighbourFlags replica_flags;
uint32 unknown2;
uint32 unknown3;
uint32 unknown4;
@ -448,17 +466,18 @@ interface drsuapi
drsuapi_DsReplicaMetaDataCtr *meta_data_ctr;
} drsuapi_DsReplicaObjectListItemEx;
typedef struct {
typedef [gensize] struct {
GUID guid1;
GUID guid2;
drsuapi_DsReplicaObjectIdentifier *naming_context;
drsuapi_DsReplicaUsnCtr old_replication_state;
drsuapi_DsReplicaUsnCtr new_replication_state;
drsuapi_DsReplicaHighWaterMark old_highwatermark;
drsuapi_DsReplicaHighWaterMark new_highwatermark;
drsuapi_DsReplicaCoursor05Ctr *uptodateness_vector;
drsuapi_DsGetNCChangesRequest_Ctr12 ctr12;
uint32 unknown1;
uint32 unknown2;
uint32 unknown3;
uint32 object_count;
/* this +55 is sometimes +56, so I don't know where this comes from... --metze */
[value(ndr_size_drsuapi_DsGetNCChangesCtr1(r,ndr->flags)+55)] uint32 __ndr_size;
drsuapi_DsReplicaObjectListItemEx *first_object;
uint32 unknown4;
} drsuapi_DsGetNCChangesCtr1;
@ -477,8 +496,8 @@ interface drsuapi
GUID guid1;
GUID guid2;
drsuapi_DsReplicaObjectIdentifier *naming_context;
drsuapi_DsReplicaUsnCtr old_replication_state;
drsuapi_DsReplicaUsnCtr new_replication_state;
drsuapi_DsReplicaHighWaterMark old_highwatermark;
drsuapi_DsReplicaHighWaterMark new_highwatermark;
drsuapi_DsReplicaCoursor05Ctr *uptodateness_vector;
drsuapi_DsGetNCChangesRequest_Ctr12 ctr12;
uint32 unknown1;
@ -889,7 +908,7 @@ interface drsuapi
unistr *source_dsa_obj_dn;
unistr *source_dsa_address;
unistr *transport_obj_dn;
uint32 replica_flags;
drsuapi_DsReplicaNeighbourFlags replica_flags;
uint32 reserved;
GUID naming_context_obj_guid;
GUID source_dsa_obj_guid;

View File

@ -902,7 +902,7 @@ static BOOL test_DsGetNCChanges(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
ZERO_STRUCT(null_guid);
ZERO_STRUCT(null_sid);
for (i=0; i < ARRAY_SIZE(array); i++) {
printf("testing DsGetNCChanges level %d\n",
array[i].level);
@ -919,13 +919,13 @@ static BOOL test_DsGetNCChanges(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
r.in.req.req5.destination_dsa_guid = GUID_random();
r.in.req.req5.source_dsa_guid = null_guid;
r.in.req.req5.naming_context = &nc;
r.in.req.req5.replication_state.tmp_highest_usn = 0;
r.in.req.req5.replication_state.reserved_usn = 0;
r.in.req.req5.replication_state.highest_usn = 0;
r.in.req.req5.highwatermark_vector = NULL;
r.in.req.req5.unknown1 = 0;/*0x10201C70;*/
r.in.req.req5.unknown2 = 402;
r.in.req.req5.unknown3 = 402116;
r.in.req.req5.highwatermark.tmp_highest_usn = 167997;
r.in.req.req5.highwatermark.reserved_usn = 0;
r.in.req.req5.highwatermark.highest_usn = 0;
r.in.req.req5.uptodateness_vector = NULL;
r.in.req.req5.replica_flags = 0;
r.in.req.req5.unknown2 = 0;
r.in.req.req5.unknown3 = 0;
r.in.req.req5.unknown4 = 0;
r.in.req.req5.h1 = 0;
@ -938,11 +938,18 @@ static BOOL test_DsGetNCChanges(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
r.in.req.req8.destination_dsa_guid = GUID_random();
r.in.req.req8.source_dsa_guid = null_guid;
r.in.req.req8.naming_context = &nc;
r.in.req.req8.replication_state.tmp_highest_usn = 0;
r.in.req.req8.replication_state.reserved_usn = 0;
r.in.req.req8.replication_state.highest_usn = 0;
r.in.req.req8.highwatermark_vector = NULL;
r.in.req.req8.unknown1 = 0x10201C70;
r.in.req.req8.highwatermark.tmp_highest_usn = 0;
r.in.req.req8.highwatermark.reserved_usn = 0;
r.in.req.req8.highwatermark.highest_usn = 0;
r.in.req.req8.uptodateness_vector = NULL;
r.in.req.req8.replica_flags = 0
| DRSUAPI_DS_REPLICA_NEIGHBOUR_WRITEABLE
| DRSUAPI_DS_REPLICA_NEIGHBOUR_SYNC_ON_STARTUP
| DRSUAPI_DS_REPLICA_NEIGHBOUR_DO_SCHEDULED_SYNCS
| DRSUAPI_DS_REPLICA_NEIGHBOUR_RETURN_OBJECT_PARENTS
| DRSUAPI_DS_REPLICA_NEIGHBOUR_NEVER_SYNCED
| DRSUAPI_DS_REPLICA_NEIGHBOUR_COMPRESS_CHANGES
;
r.in.req.req8.unknown2 = 402;
r.in.req.req8.unknown3 = 402116;
r.in.req.req8.unknown4 = 0;