]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Fix cosmetic issue where the prefix of modules wasn't being printed
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Tue, 7 May 2024 16:07:19 +0000 (10:07 -0600)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Tue, 7 May 2024 22:41:29 +0000 (16:41 -0600)
src/lib/server/dl_module.c
src/lib/server/dl_module.h
src/lib/server/module.c

index 11671f5e962fdb53289587721defa3607be2b2a9..792d88ff8fc4bb67a30b3e9ecd01dc62c62e71b0 100644 (file)
@@ -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, "<INVALID>");
+}
+
 /** Lookup a module's parent
  *
  */
index 619b6a5e9bb7e92b75c07caefef4428b865be05f..19f1b1c7a16d9faf1b00bcfcf151614be3c6aa22 100644 (file)
@@ -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);
index 57813cc1bdf853769b46b9d915e2569f81598384..f0bd11ed53039220b7d94cc66d087b27c33c40c3 100644 (file)
@@ -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, "<INVALID>"),
+                            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, "<INVALID>"),
+                            dl_module_instance_root_prefix_str(mi->dl_inst),
                             mi->dl_inst->module->common->name,
                             mi->name);