if (unlikely(module_conf_parse(mi, submodule_cs) < 0)) {
cf_log_err(submodule_cs, "Failed parsing submodule config");
- error:
talloc_free(mi);
return -1;
}
- if (unlikely(module_bootstrap(mi) < 0)) {
- cf_log_err(submodule_cs, "Failed bootstrapping submodule");
- goto error;
-
- }
*((module_instance_t **)out) = mi;
return 0;
return -1;
}
- if (module_bootstrap(mi) < 0) {
- cf_log_perr(subcs, "Failed bootstrapping module");
- goto error;
- }
-
/*
* Compile the default "actions" subsection, which includes retries.
*/
}
}
+ /*
+ * Having parsed all the modules, bootstrap them.
+ * This needs to be after parsing so that submodules can access
+ * their parent's fully parsed data.
+ */
+ modules_bootstrap(rlm_modules);
+
cf_log_debug(modules, " } # modules");
if (fr_command_register_hook(NULL, NULL, modules, module_cmd_list_table) < 0) {
return 0;
}
-static int mod_instantiate(module_inst_ctx_t const *mctx)
+static int mod_bootstrap(module_inst_ctx_t const *mctx)
{
rlm_sql_mysql_t *inst = talloc_get_type_abort(mctx->inst->data, rlm_sql_mysql_t);
int warnings;
.onload = mod_load,
.unload = mod_unload,
.config = driver_config,
- .instantiate = mod_instantiate
+ .bootstrap = mod_bootstrap
},
.flags = RLM_SQL_RCODE_FLAGS_ALT_QUERY,
.sql_socket_init = sql_socket_init,
return 0;
}
-static int mod_instantiate(module_inst_ctx_t const *mctx)
+static int mod_bootstrap(module_inst_ctx_t const *mctx)
{
rlm_sql_t const *parent = talloc_get_type_abort(mctx->inst->parent->data, rlm_sql_t);
rlm_sql_config_t const *config = &parent->config;
.magic = MODULE_MAGIC_INIT,
.inst_size = sizeof(rlm_sql_oracle_t),
.config = driver_config,
- .instantiate = mod_instantiate,
+ .bootstrap = mod_bootstrap,
.detach = mod_detach
},
.sql_socket_init = sql_socket_init,
return ret;
}
-static int mod_instantiate(module_inst_ctx_t const *mctx)
+static int mod_bootstrap(module_inst_ctx_t const *mctx)
{
rlm_sql_t const *parent = talloc_get_type_abort(mctx->inst->parent->data, rlm_sql_t);
rlm_sql_config_t const *config = &parent->config;
.inst_size = sizeof(rlm_sql_postgresql_t),
.onload = mod_load,
.config = driver_config,
- .instantiate = mod_instantiate
+ .bootstrap = mod_bootstrap
},
.flags = RLM_SQL_RCODE_FLAGS_ALT_QUERY,
.sql_socket_init = sql_socket_init,
return -1;
}
- /*
- * Ensure the driver is instantiated before attempting connections
- */
- if (module_instantiate(inst->driver_submodule) < 0) {
- cf_log_err(conf, "Failed instantiating SQL driver");
- return -1;
- }
-
/*
* Initialise the connection pool for this instance
*/