From: Alan T. DeKok Date: Wed, 7 Jun 2017 15:05:48 +0000 (-0400) Subject: create a scheduler (always) with hard-coded values X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5711a7bb37d0a5204ef3d9b8df35cdc97d664b60;p=thirdparty%2Ffreeradius-server.git create a scheduler (always) with hard-coded values TODO: make it configurable --- diff --git a/src/include/modules.h b/src/include/modules.h index cafe38e4c8a..924af4bafd8 100644 --- a/src/include/modules.h +++ b/src/include/modules.h @@ -30,6 +30,7 @@ RCSIDH(modules_h, "$Id$") #include #include #include +#include #ifdef __cplusplus extern "C" { @@ -205,7 +206,7 @@ rlm_rcode_t process_send_coa(int type, REQUEST *request); #endif int virtual_servers_bootstrap(CONF_SECTION *config); -int virtual_servers_init(CONF_SECTION *config); +int virtual_servers_init(fr_schedule_t *sc, CONF_SECTION *config); /* * In unlang_interpret.c, but here for public consumption. diff --git a/src/main/radiusd.c b/src/main/radiusd.c index 30ca3610349..0d2888f2de2 100644 --- a/src/main/radiusd.c +++ b/src/main/radiusd.c @@ -140,6 +140,7 @@ int main(int argc, char *argv[]) bool display_version = false; int from_child[2] = {-1, -1}; char *p; + fr_schedule_t *sc; /* * Setup talloc callbacks so we get useful errors @@ -170,6 +171,7 @@ int main(int argc, char *argv[]) rad_debug_lvl = 0; set_radius_dir(autofree, RADIUS_DIR); + fr_time_start(); /* * Ensure that the configuration is initialized. @@ -548,10 +550,16 @@ int main(int argc, char *argv[]) */ if (modules_instantiate(main_config.config) < 0) exit(EXIT_FAILURE); + sc = fr_schedule_create(NULL, &default_log, 1, 4, NULL, NULL); + if (!sc) { + exit(EXIT_FAILURE); + } + + /* * And then load the virtual servers. */ - if (virtual_servers_init(main_config.config) < 0) exit(EXIT_FAILURE); + if (virtual_servers_init(sc, main_config.config) < 0) exit(EXIT_FAILURE); /* * Initialise the SNMP stats structures diff --git a/src/main/radiusd.mk b/src/main/radiusd.mk index 8a453664e8e..66ae85b42e1 100644 --- a/src/main/radiusd.mk +++ b/src/main/radiusd.mk @@ -31,7 +31,7 @@ SRC_CFLAGS := TGT_INSTALLDIR := ${sbindir} TGT_LDLIBS := $(LIBS) $(LCRYPT) $(SYSTEMD_LIBS) TGT_LDFLAGS := $(LDFLAGS) $(SYSTEMD_LDFLAGS) -TGT_PREREQS := libfreeradius-server.a libfreeradius-util.a libfreeradius-radius.a +TGT_PREREQS := libfreeradius-server.a libfreeradius-util.a libfreeradius-radius.a libfreeradius-io.a # Libraries can't depend on libraries (oops), so make the binary # depend on the EAP code... diff --git a/src/main/unit_test_module.c b/src/main/unit_test_module.c index 4fbe0f797f1..4416110c7f6 100644 --- a/src/main/unit_test_module.c +++ b/src/main/unit_test_module.c @@ -712,6 +712,7 @@ int main(int argc, char *argv[]) rad_debug_lvl = 0; set_radius_dir(NULL, RADIUS_DIR); + fr_time_start(); /* * Ensure that the configuration is initialized. @@ -889,7 +890,7 @@ int main(int argc, char *argv[]) /* * And then load the virtual servers. */ - if (virtual_servers_init(main_config.config) < 0) goto exit_failure; + if (virtual_servers_init(NULL, main_config.config) < 0) goto exit_failure; state = fr_state_tree_init(NULL, main_config.max_requests * 2, 10); diff --git a/src/main/unit_test_module.mk b/src/main/unit_test_module.mk index b53f544f560..f5557c79b74 100644 --- a/src/main/unit_test_module.mk +++ b/src/main/unit_test_module.mk @@ -23,7 +23,7 @@ endif TGT_INSTALLDIR := TGT_LDLIBS := $(LIBS) $(LCRYPT) -TGT_PREREQS := libfreeradius-server.a libfreeradius-util.a libfreeradius-radius.a +TGT_PREREQS := libfreeradius-server.a libfreeradius-util.a libfreeradius-radius.a libfreeradius-io.a # Libraries can't depend on libraries (oops), so make the binary # depend on the EAP code... diff --git a/src/main/virtual_servers.c b/src/main/virtual_servers.c index f04d2893a4d..678d3b295f2 100644 --- a/src/main/virtual_servers.c +++ b/src/main/virtual_servers.c @@ -647,7 +647,7 @@ int virtual_servers_bootstrap(CONF_SECTION *config) /* * Load all of the virtual servers. */ -int virtual_servers_init(CONF_SECTION *config) +int virtual_servers_init(fr_schedule_t *sc, CONF_SECTION *config) { CONF_SECTION *cs; @@ -683,7 +683,7 @@ int virtual_servers_init(CONF_SECTION *config) name2, cf_section_filename(cs)); cf_log_info(cs, " namespace = %s", app->name); - if (app->instantiate(NULL, cs, check_config) < 0) { + if (app->instantiate(sc, cs, check_config) < 0) { cf_log_err_cs(cs, "Failed loading virtual server %s", name2); return -1; }