Remove useless layer of indirection, where every service called
[bbaumbach/samba-autobuild/.git] / source4 / dsdb / repl / drepl_service.c
index b26358b3a52da076a79c3e47b0c93774d6db6af1..3375059e99e00e58976f4a0af4e59105ad4dcd63 100644 (file)
 #include "librpc/gen_ndr/ndr_misc.h"
 #include "librpc/gen_ndr/ndr_drsuapi.h"
 #include "librpc/gen_ndr/ndr_drsblobs.h"
+#include "param/param.h"
 
 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);
        }
@@ -44,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;
        }
@@ -117,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;
@@ -148,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",
@@ -164,8 +166,8 @@ static void dreplsrv_task_init(struct task_server *task)
                return;
        }
 
-       periodic_startup_interval       = lp_parm_int(-1, "dreplsrv", "periodic_startup_interval", 15); /* in seconds */
-       service->periodic.interval      = lp_parm_int(-1, "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)) {
@@ -178,18 +180,10 @@ static void dreplsrv_task_init(struct task_server *task)
        irpc_add_name(task->msg_ctx, "dreplsrv");
 }
 
-/*
-  initialise the dsdb replicator service
- */
-static NTSTATUS dreplsrv_init(struct event_context *event_ctx, const struct model_ops *model_ops)
-{
-       return task_server_startup(event_ctx, model_ops, dreplsrv_task_init);
-}
-
 /*
   register ourselves as a available server
 */
 NTSTATUS server_service_drepl_init(void)
 {
-       return register_server_service("drepl", dreplsrv_init);
+       return register_server_service("drepl", dreplsrv_task_init);
 }