Rework service init functions to pass down service name. This is
[ira/wip.git] / source / dsdb / repl / drepl_service.c
index 2896050ddc70c6f62c84e49a7c9527472ad19f10..246309e16f4ba32663af48619fc90f7219f13eeb 100644 (file)
@@ -37,7 +37,8 @@ static WERROR dreplsrv_init_creds(struct dreplsrv_service *service)
 {
        NTSTATUS status;
 
-       status = auth_system_session_info(service, &service->system_session_info);
+       status = auth_system_session_info(service, service->task->lp_ctx, 
+                                         &service->system_session_info);
        if (!NT_STATUS_IS_OK(status)) {
                return ntstatus_to_werror(status);
        }
@@ -45,12 +46,12 @@ static WERROR dreplsrv_init_creds(struct dreplsrv_service *service)
        return WERR_OK;
 }
 
-static WERROR dreplsrv_connect_samdb(struct dreplsrv_service *service)
+static WERROR dreplsrv_connect_samdb(struct dreplsrv_service *service, struct loadparm_context *lp_ctx)
 {
        const struct GUID *ntds_guid;
        struct drsuapi_DsBindInfo28 *bind_info28;
 
-       service->samdb = samdb_connect(service, service->system_session_info);
+       service->samdb = samdb_connect(service, lp_ctx, service->system_session_info);
        if (!service->samdb) {
                return WERR_DS_SERVICE_UNAVAILABLE;
        }
@@ -118,7 +119,7 @@ static void dreplsrv_task_init(struct task_server *task)
        struct dreplsrv_service *service;
        uint32_t periodic_startup_interval;
 
-       switch (lp_server_role()) {
+       switch (lp_server_role(task->lp_ctx)) {
        case ROLE_STANDALONE:
                task_server_terminate(task, "dreplsrv: no DSDB replication required in standalone configuration");
                return;
@@ -149,7 +150,7 @@ static void dreplsrv_task_init(struct task_server *task)
                return;
        }
 
-       status = dreplsrv_connect_samdb(service);
+       status = dreplsrv_connect_samdb(service, task->lp_ctx);
        if (!W_ERROR_IS_OK(status)) {
                task_server_terminate(task, talloc_asprintf(task,
                                      "dreplsrv: Failed to connect to local samdb: %s\n",
@@ -165,8 +166,8 @@ static void dreplsrv_task_init(struct task_server *task)
                return;
        }
 
-       periodic_startup_interval       = lp_parm_int(NULL, "dreplsrv", "periodic_startup_interval", 15); /* in seconds */
-       service->periodic.interval      = lp_parm_int(NULL, "dreplsrv", "periodic_interval", 300); /* in seconds */
+       periodic_startup_interval       = lp_parm_int(task->lp_ctx, NULL, "dreplsrv", "periodic_startup_interval", 15); /* in seconds */
+       service->periodic.interval      = lp_parm_int(task->lp_ctx, NULL, "dreplsrv", "periodic_interval", 300); /* in seconds */
 
        status = dreplsrv_periodic_schedule(service, periodic_startup_interval);
        if (!W_ERROR_IS_OK(status)) {
@@ -182,9 +183,9 @@ static void dreplsrv_task_init(struct task_server *task)
 /*
   initialise the dsdb replicator service
  */
-static NTSTATUS dreplsrv_init(struct event_context *event_ctx, const struct model_ops *model_ops)
+static NTSTATUS dreplsrv_init(struct event_context *event_ctx, struct loadparm_context *lp_ctx, const struct model_ops *model_ops)
 {
-       return task_server_startup(event_ctx, model_ops, dreplsrv_task_init);
+       return task_server_startup(event_ctx, lp_ctx, "drepl", model_ops, dreplsrv_task_init);
 }
 
 /*