From 520252c8d2b7465d592a05ee68bd466e71330a1f Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 15 Sep 2010 20:23:47 +1000 Subject: s4-repl: added min_usn to extended replication call the repl_secret code needs to set it to avoid too many duplicate attributes Pair-Programmed-With: Andrew Bartlett --- source4/dsdb/repl/drepl_extended.c | 5 ++++- source4/dsdb/repl/drepl_fsmo.c | 4 +++- source4/dsdb/repl/drepl_ridalloc.c | 1 + source4/dsdb/repl/drepl_secret.c | 1 + 4 files changed, 9 insertions(+), 2 deletions(-) (limited to 'source4') diff --git a/source4/dsdb/repl/drepl_extended.c b/source4/dsdb/repl/drepl_extended.c index 67dbedbb9a..de56cb5ac5 100644 --- a/source4/dsdb/repl/drepl_extended.c +++ b/source4/dsdb/repl/drepl_extended.c @@ -41,6 +41,7 @@ static WERROR drepl_create_extended_source_dsa(struct dreplsrv_service *service, struct ldb_dn *nc_dn, struct ldb_dn *source_dsa_dn, + uint64_t min_usn, struct dreplsrv_partition_source_dsa **_sdsa) { struct dreplsrv_partition_source_dsa *sdsa; @@ -99,6 +100,7 @@ static WERROR drepl_create_extended_source_dsa(struct dreplsrv_service *service, return WERR_NOMEM; } + sdsa->repsFrom1->highwatermark.highest_usn = min_usn; werr = dreplsrv_out_connection_attach(service, sdsa->repsFrom1, &sdsa->conn); if (!W_ERROR_IS_OK(werr)) { @@ -140,6 +142,7 @@ WERROR drepl_request_extended_op(struct dreplsrv_service *service, struct ldb_dn *source_dsa_dn, enum drsuapi_DsExtendedOperation extended_op, uint64_t fsmo_info, + uint64_t min_usn, dreplsrv_extended_callback_t callback, void *callback_data) { @@ -147,7 +150,7 @@ WERROR drepl_request_extended_op(struct dreplsrv_service *service, struct extended_op_data *data; struct dreplsrv_partition_source_dsa *sdsa; - werr = drepl_create_extended_source_dsa(service, nc_dn, source_dsa_dn, &sdsa); + werr = drepl_create_extended_source_dsa(service, nc_dn, source_dsa_dn, min_usn, &sdsa); W_ERROR_NOT_OK_RETURN(werr); data = talloc(service, struct extended_op_data); diff --git a/source4/dsdb/repl/drepl_fsmo.c b/source4/dsdb/repl/drepl_fsmo.c index dc7fe27b01..375e37b517 100644 --- a/source4/dsdb/repl/drepl_fsmo.c +++ b/source4/dsdb/repl/drepl_fsmo.c @@ -151,7 +151,9 @@ WERROR dreplsrv_fsmo_role_check(struct dreplsrv_service *service, role_owner_dn, extended_op, fsmo_info, - drepl_role_callback); + 0, + drepl_role_callback, + NULL); if (W_ERROR_IS_OK(werr)) { dreplsrv_run_pending_ops(service); } else { diff --git a/source4/dsdb/repl/drepl_ridalloc.c b/source4/dsdb/repl/drepl_ridalloc.c index ff5bb163e7..4e1a4fa2c2 100644 --- a/source4/dsdb/repl/drepl_ridalloc.c +++ b/source4/dsdb/repl/drepl_ridalloc.c @@ -61,6 +61,7 @@ static WERROR drepl_request_new_rid_pool(struct dreplsrv_service *service, fsmo_role_dn, DRSUAPI_EXOP_FSMO_RID_ALLOC, alloc_pool, + 0, drepl_new_rid_pool_callback, NULL); if (W_ERROR_IS_OK(werr)) { service->rid_alloc_in_progress = true; diff --git a/source4/dsdb/repl/drepl_secret.c b/source4/dsdb/repl/drepl_secret.c index 2b5fae2d5b..7c8f8b752d 100644 --- a/source4/dsdb/repl/drepl_secret.c +++ b/source4/dsdb/repl/drepl_secret.c @@ -126,6 +126,7 @@ void drepl_repl_secret(struct dreplsrv_service *service, source_dsa_dn, DRSUAPI_EXOP_REPL_SECRET, 0, + p->sources->repsFrom1->highwatermark.highest_usn, drepl_repl_secret_callback, state); if (!W_ERROR_IS_OK(werr)) { DEBUG(2,(__location__ ": Failed to setup secret replication for user_dn '%s'\n", user_dn)); -- cgit