From: Arran Cudbard-Bell Date: Wed, 5 Jun 2024 20:18:04 +0000 (-0400) Subject: Get the dictionary direct from the virtual server X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4139335a8182cc919bbf29b61ce25104cd64e07e;p=thirdparty%2Ffreeradius-server.git Get the dictionary direct from the virtual server --- diff --git a/src/listen/cron/proto_cron_crontab.c b/src/listen/cron/proto_cron_crontab.c index 44dafff1e85..38330456036 100644 --- a/src/listen/cron/proto_cron_crontab.c +++ b/src/listen/cron/proto_cron_crontab.c @@ -28,6 +28,7 @@ #include #include +#include "lib/server/cf_util.h" #include "proto_cron.h" extern fr_app_io_t proto_cron_crontab; @@ -76,6 +77,8 @@ struct proto_cron_tab_s { cron_tab_t tab[5]; fr_client_t *client; //!< static client + + fr_dict_t const *dict; //!< our namespace. }; @@ -436,7 +439,7 @@ static int mod_decode(void const *instance, request_t *request, UNUSED uint8_t * * generic->protocol attribute conversions as * the request runs through the server. */ - request->dict = inst->parent->dict; + request->dict = inst->dict; /* * Hacks for now until we have a lower-level decode routine. @@ -695,6 +698,11 @@ static int mod_instantiate(module_inst_ctx_t const *mctx) inst->parent = talloc_get_type_abort(mctx->mi->parent->data, proto_cron_t); inst->cs = mctx->mi->conf; + inst->dict = virtual_server_dict_by_child_ci(cf_section_to_item(conf)); + if (!inst->dict) { + cf_log_err(conf, "Please define 'namespace' in this virtual server"); + return -1; + } fr_pair_list_init(&inst->pair_list); inst->client = client = talloc_zero(inst, fr_client_t); @@ -715,7 +723,7 @@ static int mod_instantiate(module_inst_ctx_t const *mctx) return -1; } - if (fr_pair_list_afrom_file(inst, inst->parent->dict, &inst->pair_list, fp, &done) < 0) { + if (fr_pair_list_afrom_file(inst, inst->dict, &inst->pair_list, fp, &done) < 0) { cf_log_perr(conf, "Failed reading %s", inst->filename); fclose(fp); return -1; diff --git a/src/listen/load/proto_load_step.c b/src/listen/load/proto_load_step.c index f5363df40f7..6460a8bc8a0 100644 --- a/src/listen/load/proto_load_step.c +++ b/src/listen/load/proto_load_step.c @@ -73,6 +73,8 @@ struct proto_load_step_s { fr_load_config_t load; //!< load configuration bool repeat; //!, do we repeat the load generation char const *csv; //!< where to write CSV stats + + fr_dict_t const *dict; //!< Our namespace. }; @@ -262,7 +264,7 @@ static int mod_decode(void const *instance, request_t *request, UNUSED uint8_t * * generic->protocol attribute conversions as * the request runs through the server. */ - request->dict = inst->parent->dict; + request->dict = inst->dict; /* * Hacks for now until we have a lower-level decode routine. @@ -344,6 +346,12 @@ static int mod_instantiate(module_inst_ctx_t const *mctx) fr_pair_t *vp; module_instance_t const *mi = mctx->mi; + inst->dict = virtual_server_dict_by_child_ci(cf_section_to_item(conf)); + if (!inst->dict) { + cf_log_err(conf, "Please define 'namespace' in this virtual server"); + return -1; + } + fr_pair_list_init(&inst->pair_list); inst->client = client = talloc_zero(inst, fr_client_t); if (!inst->client) return 0; @@ -367,7 +375,7 @@ static int mod_instantiate(module_inst_ctx_t const *mctx) return -1; } - if (fr_pair_list_afrom_file(inst, inst->parent->dict, &inst->pair_list, fp, &done) < 0) { + if (fr_pair_list_afrom_file(inst, inst->dict, &inst->pair_list, fp, &done) < 0) { cf_log_perr(conf, "Failed reading %s", inst->filename); fclose(fp); return -1;