]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
stupid hooks to get it building and linking
authorAlan T. DeKok <aland@freeradius.org>
Fri, 6 Jul 2018 18:40:28 +0000 (14:40 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Fri, 6 Jul 2018 18:40:28 +0000 (14:40 -0400)
src/include/radiusd.h
src/main/module.c
src/main/radiusd.c
src/main/radmin.c

index 5acd1c36e82d30e6d85f7558a05c9fbc491c4689..fdf0e36e5a7ecdf0ee1080fe941e00957ed28b64 100644 (file)
@@ -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
index 5d9fc64ab74cedd554715ea8e94f61c614eeacca..5f265c04e249384fc24840a437a6f1a815bbb371 100644 (file)
@@ -35,6 +35,9 @@ RCSID("$Id$")
 #include <freeradius-devel/command.h>
 #include <freeradius-devel/cf_file.h>
 
+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;
index 1dd6ecc4938bf31b16fd6d7064b22240bb4fd695..1d82769fc18f86b7c87768441c428c7a3551d6ce 100644 (file)
@@ -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.
         */
index 0c535dcfc5ef2d656cd9200899ed102ab611cf03..fa2a55e7151d87d44dcbb62fb8e2230b2e564756 100644 (file)
@@ -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);
 }