svn commit: samba r9740 - in
branches/SOC/SAMBA_4_0/source/torture/rpc: .
metze at samba.org
metze at samba.org
Mon Aug 29 14:58:03 GMT 2005
Author: metze
Date: 2005-08-29 14:58:03 +0000 (Mon, 29 Aug 2005)
New Revision: 9740
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=9740
Log:
fix up the DsGetNCchanges loop,
and remove misleading comments
metze
Modified:
branches/SOC/SAMBA_4_0/source/torture/rpc/dssync.c
Changeset:
Modified: branches/SOC/SAMBA_4_0/source/torture/rpc/dssync.c
===================================================================
--- branches/SOC/SAMBA_4_0/source/torture/rpc/dssync.c 2005-08-29 14:55:40 UTC (rev 9739)
+++ branches/SOC/SAMBA_4_0/source/torture/rpc/dssync.c 2005-08-29 14:58:03 UTC (rev 9740)
@@ -737,7 +737,7 @@
NTSTATUS status;
BOOL ret = True;
int i, y = 0;
- int tmp_usn = 0;
+ uint64_t highest_usn = 0;
const char *partition = NULL;
struct drsuapi_DsGetNCChanges r;
struct drsuapi_DsReplicaObjectIdentifier nc;
@@ -759,12 +759,14 @@
ZERO_STRUCT(null_guid);
ZERO_STRUCT(null_sid);
- partition = lp_parm_string(-1, "drsuapi", "partition");
+ partition = lp_parm_string(-1, "dssync", "partition");
if (partition == NULL) {
partition = ctx->domain_dn;
- printf("drsuapi:partition not specified, defaulting to %s.\n", ctx->domain_dn);
+ printf("dssync:partition not specified, defaulting to %s.\n", ctx->domain_dn);
}
-
+
+ highest_usn = lp_parm_int(-1, "dssync", "highest_usn", 0);
+
for (i=0; i < ARRAY_SIZE(array); i++) {
printf("testing DsGetNCChanges level %d\n",
array[i].level);
@@ -781,15 +783,15 @@
r.in.req.req5.destination_dsa_guid = ctx->new_dc.invocation_id;
r.in.req.req5.source_dsa_guid = null_guid;
r.in.req.req5.naming_context = &nc;
- r.in.req.req5.highwatermark.tmp_highest_usn = 0;
+ r.in.req.req5.highwatermark.tmp_highest_usn = highest_usn;
r.in.req.req5.highwatermark.reserved_usn = 0;
- r.in.req.req5.highwatermark.highest_usn = 0;
+ r.in.req.req5.highwatermark.highest_usn = highest_usn;
r.in.req.req5.uptodateness_vector = NULL;
r.in.req.req5.replica_flags = 0;
- if (lp_parm_bool(-1,"drsuapi","compression",False)) {
+ if (lp_parm_bool(-1,"dssync","compression",False)) {
r.in.req.req5.replica_flags |= DRSUAPI_DS_REPLICA_NEIGHBOUR_COMPRESS_CHANGES;
}
- if (lp_parm_bool(-1,"drsuapi","neighbour_writeable",True)) {
+ if (lp_parm_bool(-1,"dssync","neighbour_writeable",True)) {
r.in.req.req5.replica_flags |= DRSUAPI_DS_REPLICA_NEIGHBOUR_WRITEABLE;
}
r.in.req.req5.replica_flags |= DRSUAPI_DS_REPLICA_NEIGHBOUR_SYNC_ON_STARTUP
@@ -812,15 +814,15 @@
r.in.req.req8.destination_dsa_guid = ctx->new_dc.invocation_id;
r.in.req.req8.source_dsa_guid = null_guid;
r.in.req.req8.naming_context = &nc;
- r.in.req.req8.highwatermark.tmp_highest_usn = 0;
+ r.in.req.req8.highwatermark.tmp_highest_usn = highest_usn;
r.in.req.req8.highwatermark.reserved_usn = 0;
- r.in.req.req8.highwatermark.highest_usn = 0;
+ r.in.req.req8.highwatermark.highest_usn = highest_usn;
r.in.req.req8.uptodateness_vector = NULL;
r.in.req.req8.replica_flags = 0;
- if (lp_parm_bool(-1,"drsuapi","compression",False)) {
+ if (lp_parm_bool(-1,"dssync","compression",False)) {
r.in.req.req8.replica_flags |= DRSUAPI_DS_REPLICA_NEIGHBOUR_COMPRESS_CHANGES;
}
- if (lp_parm_bool(-1,"drsuapi","neighbour_writeable",True)) {
+ if (lp_parm_bool(-1,"dssync","neighbour_writeable",True)) {
r.in.req.req8.replica_flags |= DRSUAPI_DS_REPLICA_NEIGHBOUR_WRITEABLE;
}
r.in.req.req8.replica_flags |= DRSUAPI_DS_REPLICA_NEIGHBOUR_SYNC_ON_STARTUP
@@ -842,27 +844,18 @@
ZERO_STRUCT(r.out);
printf("Dumping AD partition: %s\n", nc.dn);
- do {
- /*r.in.req.req8.highwatermark = r.out.ctr.ctr6.new_highwatermark;*/
- /*
- by setting r.in.req.req8.highwatermark.highest_usn to be the usn of the last update we received
- (r.out.ctr.ctr6.new_highwatermark.tmp_highest_usn from the last run),
- we can get just the updates that have happened since then.
- */
-
- r.in.req.req8.highwatermark.tmp_highest_usn = 0;
- tmp_usn = lp_parm_int(-1, "drsuapi", "last_usn", 0);
- r.in.req.req8.highwatermark.highest_usn = tmp_usn;
-
- ZERO_STRUCT(r.out);
+ for (y=0; ;y++) {
+ if (r.in.level == 8) {
+ r.in.req.req8.highwatermark = r.out.ctr.ctr6.new_highwatermark;
+ ZERO_STRUCT(r.out);
-DEBUG(0,("start[%d] tmp: %llu , hi: %llu\n",y,
- r.in.req.req8.highwatermark.tmp_highest_usn,
- r.in.req.req8.highwatermark.highest_usn));
+ DEBUG(0,("start[%d] tmp_higest_usn: %llu , highest_usn: %llu\n",y,
+ r.in.req.req8.highwatermark.tmp_highest_usn,
+ r.in.req.req8.highwatermark.highest_usn));
+ }
status = dcerpc_drsuapi_DsGetNCChanges(ctx->new_dc.drsuapi.pipe, ctx, &r);
-
if (!NT_STATUS_IS_OK(status)) {
const char *errstr = nt_errstr(status);
if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
@@ -874,31 +867,19 @@
printf("DsGetNCChanges failed - %s\n", win_errstr(r.out.result));
ret = False;
}
-
-DEBUG(0,("end[%d] tmp: %llu , hi: %llu\n",y,
- r.out.ctr.ctr6.new_highwatermark.tmp_highest_usn,
- r.out.ctr.ctr6.new_highwatermark.highest_usn));
- y++;
- r.in.req.req8.highwatermark.tmp_highest_usn += 100000;
- printf("The current highwatermark value (latest USN) = %llu. Temporary Maximum = %llu \n",
- r.out.ctr.ctr6.new_highwatermark.tmp_highest_usn, r.in.req.req8.highwatermark.tmp_highest_usn);
- /* } while (ret == True && r.out.level == 6 &&
- r.out.ctr.ctr6.new_highwatermark.tmp_highest_usn != r.out.ctr.ctr6.new_highwatermark.highest_usn);
- */
- printf("r.in.level = %d.\nr.out.level = %d.\n",
- r.in.level, r.out.level);
-
- } while (ret == True && r.out.level == 7);
-
- /* } while (ret == True &&
- r.out.level == 6 &&
- r.out.ctr.ctr6.new_highwatermark.tmp_highest_usn == r.out.ctr.ctr6.new_highwatermark.highest_usn);
- */
- printf("r.out.ctr.ctr6.new_highwatermark.tmp_highest_usn: %llu.\n",
- r.out.ctr.ctr6.new_highwatermark.tmp_highest_usn);
- printf("r.out.ctr.ctr6.new_highwatermark.highest_usn: %llu.\n",
- r.out.ctr.ctr6.new_highwatermark.highest_usn);
+ if (ret == True && r.out.level == 6) {
+ DEBUG(0,("end[%d] tmp_highest_usn: %llu , highest_usn: %llu\n",y,
+ r.out.ctr.ctr6.new_highwatermark.tmp_highest_usn,
+ r.out.ctr.ctr6.new_highwatermark.highest_usn));
+
+ if (r.out.ctr.ctr6.new_highwatermark.tmp_highest_usn == r.out.ctr.ctr6.new_highwatermark.highest_usn) {
+ break;
+ }
+ } else {
+ break;
+ }
+ }
}
return ret;
More information about the samba-cvs
mailing list