summaryrefslogtreecommitdiff
path: root/source4/dsdb/kcc/kcc_periodic.c
diff options
context:
space:
mode:
Diffstat (limited to 'source4/dsdb/kcc/kcc_periodic.c')
-rw-r--r--source4/dsdb/kcc/kcc_periodic.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/source4/dsdb/kcc/kcc_periodic.c b/source4/dsdb/kcc/kcc_periodic.c
index 20deac49c5..d24e5e90a5 100644
--- a/source4/dsdb/kcc/kcc_periodic.c
+++ b/source4/dsdb/kcc/kcc_periodic.c
@@ -26,6 +26,7 @@
#include "auth/auth.h"
#include "smbd/service.h"
#include "lib/messaging/irpc.h"
+#include "dsdb/kcc/kcc_connection.h"
#include "dsdb/kcc/kcc_service.h"
#include "lib/ldb/include/ldb_errors.h"
#include "../lib/util/dlinklist.h"
@@ -122,7 +123,7 @@ NTSTATUS kccsrv_simple_update(struct kccsrv_service *s, TALLOC_CTX *mem_ctx)
const char *attrs[] = { "objectGUID", "invocationID", NULL };
struct repsFromToBlob *reps = NULL;
uint32_t count = 0;
- struct ldb_dn **connections;
+ struct kcc_connection_list *ntds_conn, *dsa_conn;
ret = ldb_search(s->samdb, mem_ctx, &res, s->config_dn, LDB_SCOPE_SUBTREE,
attrs, "objectClass=nTDSDSA");
@@ -131,6 +132,11 @@ NTSTATUS kccsrv_simple_update(struct kccsrv_service *s, TALLOC_CTX *mem_ctx)
return NT_STATUS_INTERNAL_DB_CORRUPTION;
}
+ /* get the current list of connections */
+ ntds_conn = kccsrv_find_connections(s, mem_ctx);
+
+ dsa_conn = talloc_zero(mem_ctx, struct kcc_connection_list);
+
for (i=0; i<res->count; i++) {
struct repsFromTo1 *r1;
struct GUID ntds_guid, invocation_id;
@@ -161,12 +167,18 @@ NTSTATUS kccsrv_simple_update(struct kccsrv_service *s, TALLOC_CTX *mem_ctx)
DRSUAPI_DS_REPLICA_NEIGHBOUR_SYNC_ON_STARTUP |
DRSUAPI_DS_REPLICA_NEIGHBOUR_DO_SCHEDULED_SYNCS;
memset(r1->schedule, 0x11, sizeof(r1->schedule));
- /* kccsrv_create_connection(s, r1); */
+
+ dsa_conn->servers = talloc_realloc(dsa_conn, dsa_conn->servers,
+ struct kcc_connection,
+ dsa_conn->count + 1);
+ NT_STATUS_HAVE_NO_MEMORY(dsa_conn->servers);
+ dsa_conn->servers[dsa_conn->count].dsa_guid = r1->source_dsa_obj_guid;
+ dsa_conn->count++;
+
count++;
}
- connections = kccsrv_find_connections(s, mem_ctx);
- kccsrv_apply_connections(connections);
+ kccsrv_apply_connections(s, ntds_conn, dsa_conn);
return kccsrv_add_repsFrom(s, mem_ctx, reps, count);
}