s4-repl: added min_usn to extended replication call
authorAndrew Tridgell <tridge@samba.org>
Wed, 15 Sep 2010 10:23:47 +0000 (20:23 +1000)
committerAndrew Tridgell <tridge@samba.org>
Wed, 15 Sep 2010 21:24:01 +0000 (07:24 +1000)
the repl_secret code needs to set it to avoid too many duplicate
attributes

Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>

source4/dsdb/repl/drepl_extended.c
source4/dsdb/repl/drepl_fsmo.c
source4/dsdb/repl/drepl_ridalloc.c
source4/dsdb/repl/drepl_secret.c

index 67dbedbb9adce497450b4723751008f00c80acbf..de56cb5ac5a06070c5d93ab848272c091e0c288d 100644 (file)
@@ -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);
index dc7fe27b01ba9afb653dc34a2f3c056dcf4aa4a4..375e37b517639a769b037b1f0b16e30578a6886f 100644 (file)
@@ -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 {
index ff5bb163e72d1671d2d4230017a1a80397d366af..4e1a4fa2c24beb5d748bac96f3389f5903e83706 100644 (file)
@@ -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;
index 2b5fae2d5b961ecf0a97faaacded5de946ebd97d..7c8f8b752d26b7e10117a6280534614a6b546f12 100644 (file)
@@ -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));