From b0aa4769483a1d2084191b70b2ffa3b0c65696ff Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 26 Apr 2010 23:21:10 +1000 Subject: s4-drs: add entries to repsTo based on calculated repsFrom This is based on the documentation: "the KCC will automatically create the Reps-To attributes on destination DSAs based on other DSAs Reps-From entries." --- source4/dsdb/kcc/kcc_periodic.c | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/source4/dsdb/kcc/kcc_periodic.c b/source4/dsdb/kcc/kcc_periodic.c index e05ac56fcc..6dab6b5ea8 100644 --- a/source4/dsdb/kcc/kcc_periodic.c +++ b/source4/dsdb/kcc/kcc_periodic.c @@ -106,8 +106,8 @@ static NTSTATUS kccsrv_add_repsFrom(struct kccsrv_service *s, TALLOC_CTX *mem_ct /* update the repsFrom on all partitions */ for (p=s->partitions; p; p=p->next) { - struct repsFromToBlob *old_reps; - uint32_t old_count; + struct repsFromToBlob *old_reps, *reps_to; + uint32_t old_count, to_count; WERROR werr; uint32_t i; bool modified = false; @@ -150,6 +150,34 @@ static NTSTATUS kccsrv_add_repsFrom(struct kccsrv_service *s, TALLOC_CTX *mem_ct return NT_STATUS_INTERNAL_DB_CORRUPTION; } } + + werr = dsdb_loadreps(s->samdb, mem_ctx, p->dn, "repsTo", &reps_to, &to_count); + if (!W_ERROR_IS_OK(werr)) { + DEBUG(0,(__location__ ": Failed to load repsTo from %s - %s\n", + ldb_dn_get_linearized(p->dn), ldb_errstring(s->samdb))); + return NT_STATUS_INTERNAL_DB_CORRUPTION; + } + + modified = false; + /* add any new ones */ + for (i=0; isamdb, mem_ctx, p->dn, "repsTo", reps_to, to_count); + if (!W_ERROR_IS_OK(werr)) { + DEBUG(0,(__location__ ": Failed to save repsTo to %s - %s\n", + ldb_dn_get_linearized(p->dn), ldb_errstring(s->samdb))); + return NT_STATUS_INTERNAL_DB_CORRUPTION; + } + } } return NT_STATUS_OK; -- cgit