From: Nick Porter Date: Fri, 29 Aug 2025 16:26:33 +0000 (+0100) Subject: Add trigger args to rlm_ldap X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e397fdb0163ce22d073c0fd22928708eb9e48791;p=thirdparty%2Ffreeradius-server.git Add trigger args to rlm_ldap --- diff --git a/src/lib/ldap/base.h b/src/lib/ldap/base.h index 38f984fa6e..6adb84e9db 100644 --- a/src/lib/ldap/base.h +++ b/src/lib/ldap/base.h @@ -386,6 +386,8 @@ typedef struct { fr_event_list_t *el; //!< Thread event list for callbacks / timeouts fr_ldap_thread_trunk_t *bind_trunk; //!< LDAP trunk used for bind auths fr_rb_tree_t *binds; //!< Tree of outstanding bind auths + fr_pair_list_t *trigger_args; //!< Passed to trigger request for normal trunks + fr_pair_list_t *bind_trigger_args; //!< Passed to trigger request for bind trunks } fr_ldap_thread_t; /** Thread LDAP trunk structure diff --git a/src/modules/rlm_ldap/rlm_ldap.c b/src/modules/rlm_ldap/rlm_ldap.c index 2b64b9f23d..b01c7adb6b 100644 --- a/src/modules/rlm_ldap/rlm_ldap.c +++ b/src/modules/rlm_ldap/rlm_ldap.c @@ -2532,6 +2532,8 @@ static int mod_thread_instantiate(module_thread_inst_ctx_t const *mctx) t->trunk_conf = &inst->trunk_conf; t->bind_trunk_conf = &inst->bind_trunk_conf; t->el = mctx->el; + t->trigger_args = inst->trigger_args; + t->bind_trigger_args = inst->bind_trigger_args; /* * Launch trunk for module default connection @@ -2765,6 +2767,27 @@ static int mod_instantiate(module_inst_ctx_t const *mctx) } } + if (inst->trunk_conf.conn_triggers) { + MEM(inst->trigger_args = fr_pair_list_alloc(inst)); + if (module_trigger_args_build(inst->trigger_args, inst->trigger_args, cf_section_find(conf, "pool", NULL), + &(module_trigger_args_t) { + .module = mctx->mi->module->name, + .name = mctx->mi->name, + .server = inst->handle_config.server, + .port = inst->handle_config.port + }) < 0) return -1; + } + + if (inst->bind_trunk_conf.conn_triggers) { + MEM(inst->bind_trigger_args = fr_pair_list_alloc(inst)); + if (module_trigger_args_build(inst->bind_trigger_args, inst->bind_trigger_args, cf_section_find(conf, "bind_pool", NULL), + &(module_trigger_args_t) { + .module = mctx->mi->module->name, + .name = mctx->mi->name, + .server = inst->handle_config.server, + .port = inst->handle_config.port + }) < 0) return -1; + } return 0; error: diff --git a/src/modules/rlm_ldap/rlm_ldap.h b/src/modules/rlm_ldap/rlm_ldap.h index 3e7bd57f7a..7daf64dd66 100644 --- a/src/modules/rlm_ldap/rlm_ldap.h +++ b/src/modules/rlm_ldap/rlm_ldap.h @@ -127,6 +127,9 @@ typedef struct { trunk_conf_t bind_trunk_conf; //!< Trunk configuration for trunk used for bind auths module_instance_t const *mi; //!< Module instance data for thread lookups. + + fr_pair_list_t *trigger_args; //!< Pairs passed to trigger request for standard trunk. + fr_pair_list_t *bind_trigger_args; //!< Pairs passed to trigger request for bind trunk. } rlm_ldap_t; /** Call environment used in LDAP authorization