From: Arran Cudbard-Bell Date: Tue, 7 May 2024 16:07:19 +0000 (-0600) Subject: Fix cosmetic issue where the prefix of modules wasn't being printed X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=43b324adc67a09cab22ac98a4a3594b5506294ee;p=thirdparty%2Ffreeradius-server.git Fix cosmetic issue where the prefix of modules wasn't being printed --- diff --git a/src/lib/server/dl_module.c b/src/lib/server/dl_module.c index 11671f5e962..792d88ff8fc 100644 --- a/src/lib/server/dl_module.c +++ b/src/lib/server/dl_module.c @@ -201,6 +201,34 @@ static int dl_module_magic_verify(dl_module_common_t const *module) return 0; } +/** Return top root module, in a hierarchy of modules + * + */ +dl_module_inst_t const *dl_module_instance_root(dl_module_inst_t const *dl_inst) +{ + if (!dl_inst) return NULL; + + while (dl_inst->parent) dl_inst = dl_inst->parent; + + return dl_inst; +} + +/** Return the prefix string for the deepest module + * + * This is useful for submodules which don't have a prefix of their own. + * In this case we need to use the prefix of the shallowest module, which + * will be a proto or rlm module. + * + * @param[in] dl_inst Instance to get the prefix for. + * @return The prefix string for the shallowest module. + */ +char const *dl_module_instance_root_prefix_str(dl_module_inst_t const *dl_inst) +{ + dl_module_inst_t const *root = dl_module_instance_root(dl_inst); + + return fr_table_str_by_value(dl_module_type_prefix, root->module->type, ""); +} + /** Lookup a module's parent * */ diff --git a/src/lib/server/dl_module.h b/src/lib/server/dl_module.h index 619b6a5e9bb..19f1b1c7a16 100644 --- a/src/lib/server/dl_module.h +++ b/src/lib/server/dl_module.h @@ -173,6 +173,10 @@ extern size_t dl_module_type_prefix_len; dl_module_t const *dl_module(dl_module_t const *parent, char const *name, dl_module_type_t type); +dl_module_inst_t const *dl_module_instance_root(dl_module_inst_t const *dl_inst); + +char const *dl_module_instance_root_prefix_str(dl_module_inst_t const *dl_inst); + dl_module_inst_t const *dl_module_parent_instance(dl_module_inst_t const *child); dl_module_inst_t const *dl_module_instance_by_data(void const *data); diff --git a/src/lib/server/module.c b/src/lib/server/module.c index 57813cc1bdf..f0bd11ed530 100644 --- a/src/lib/server/module.c +++ b/src/lib/server/module.c @@ -729,7 +729,7 @@ int module_instantiate(module_instance_t *instance) */ if (mi->module->instantiate) { cf_log_debug(cs, "Instantiating %s_%s \"%s\"", - fr_table_str_by_value(dl_module_type_prefix, mi->dl_inst->module->type, ""), + dl_module_instance_root_prefix_str(mi->dl_inst), mi->dl_inst->module->common->name, mi->name); @@ -804,7 +804,7 @@ int module_bootstrap(module_instance_t *mi) CONF_SECTION *cs = mi->dl_inst->conf; cf_log_debug(cs, "Bootstrapping %s_%s \"%s\"", - fr_table_str_by_value(dl_module_type_prefix, mi->dl_inst->module->type, ""), + dl_module_instance_root_prefix_str(mi->dl_inst), mi->dl_inst->module->common->name, mi->name);