From: Alan T. DeKok Date: Fri, 6 Jul 2018 18:40:28 +0000 (-0400) Subject: stupid hooks to get it building and linking X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=eea1dfbdd0852efc87007a6e87ae72eca24824db;p=thirdparty%2Ffreeradius-server.git stupid hooks to get it building and linking --- diff --git a/src/include/radiusd.h b/src/include/radiusd.h index 5acd1c36e82..fdf0e36e5a7 100644 --- a/src/include/radiusd.h +++ b/src/include/radiusd.h @@ -654,6 +654,7 @@ int fr_radmin_start(void); void fr_radmin_stop(void); typedef struct fr_cmd_table_t fr_cmd_table_t; +typedef int (*fr_radmin_register_hook_t)(char const *name, void *ctx, fr_cmd_table_t *table); int fr_radmin_register(char const *name, void *ctx, fr_cmd_table_t *table); #ifdef __cplusplus diff --git a/src/main/module.c b/src/main/module.c index 5d9fc64ab74..5f265c04e24 100644 --- a/src/main/module.c +++ b/src/main/module.c @@ -35,6 +35,9 @@ RCSID("$Id$") #include #include +extern fr_radmin_register_hook_t radmin_register_module; +fr_radmin_register_hook_t radmin_register_module = NULL; + static _Thread_local rbtree_t *module_thread_inst_tree; static TALLOC_CTX *instance_ctx = NULL; @@ -801,7 +804,7 @@ int modules_instantiate(CONF_SECTION *root) DEBUG2("#### Instantiating modules ####"); - if (fr_radmin_register(NULL, modules, cmd_module_table) < 0) { + if (radmin_register_module && (radmin_register_module(NULL, modules, cmd_module_table) < 0)) { ERROR("Failed registering radmin commands for modules - %s", fr_strerror()); return -1; diff --git a/src/main/radiusd.c b/src/main/radiusd.c index 1dd6ecc4938..1d82769fc18 100644 --- a/src/main/radiusd.c +++ b/src/main/radiusd.c @@ -488,6 +488,8 @@ int main(int argc, char *argv[]) } #endif + if (radmin && (fr_radmin_start() < 0)) EXIT_WITH_FAILURE; + #ifndef __MINGW32__ /* * Disconnect from session @@ -774,8 +776,6 @@ int main(int argc, char *argv[]) */ fr_strerror(); - if (radmin && (fr_radmin_start() < 0)) EXIT_WITH_FAILURE; - /* * Process requests until HUP or exit. */ diff --git a/src/main/radmin.c b/src/main/radmin.c index 0c535dcfc5e..fa2a55e7151 100644 --- a/src/main/radmin.c +++ b/src/main/radmin.c @@ -498,11 +498,14 @@ void fr_radmin_stop(void) } } +extern fr_radmin_register_hook_t radmin_register_module; /* * MUST be called before fr_radmin_start() */ int fr_radmin_register(char const *name, void *ctx, fr_cmd_table_t *table) { + radmin_register_module = fr_radmin_register; + return fr_command_add_multi(NULL, &radmin_cmd, name, ctx, table); }