summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2010-09-15 20:23:47 +1000
committerAndrew Tridgell <tridge@samba.org>2010-09-16 07:24:01 +1000
commit520252c8d2b7465d592a05ee68bd466e71330a1f (patch)
treed148263a66f54b75a9bae484794ddfaff56f40ce
parent1da147e6fa485800d2988168889071d97e393fa3 (diff)
downloadsamba-520252c8d2b7465d592a05ee68bd466e71330a1f.tar.gz
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 <abartlet@samba.org>
-rw-r--r--source4/dsdb/repl/drepl_extended.c5
-rw-r--r--source4/dsdb/repl/drepl_fsmo.c4
-rw-r--r--source4/dsdb/repl/drepl_ridalloc.c1
-rw-r--r--source4/dsdb/repl/drepl_secret.c1
4 files changed, 9 insertions, 2 deletions
diff --git a/source4/dsdb/repl/drepl_extended.c b/source4/dsdb/repl/drepl_extended.c
index 67dbedbb9ad..de56cb5ac5a 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 dc7fe27b01b..375e37b5176 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 ff5bb163e72..4e1a4fa2c24 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 2b5fae2d5b9..7c8f8b752d2 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));