]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Add trigger args to rlm_ldap
authorNick Porter <nick@portercomputing.co.uk>
Fri, 29 Aug 2025 16:26:33 +0000 (17:26 +0100)
committerNick Porter <nick@portercomputing.co.uk>
Fri, 29 Aug 2025 16:26:33 +0000 (17:26 +0100)
src/lib/ldap/base.h
src/modules/rlm_ldap/rlm_ldap.c
src/modules/rlm_ldap/rlm_ldap.h

index 38f984fa6e9ef20538f0f179c1552d62daec72b8..6adb84e9dbe7b83b8a7b94e205f84046b1fad633 100644 (file)
@@ -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
index 2b64b9f23dd57973ec9b3b224a6370a672c3a163..b01c7adb6b53d3e213839abf289c7350379ac95c 100644 (file)
@@ -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:
index 3e7bd57f7a9faa64fad970486964193e998f8d29..7daf64dd662491f0e0361fec09a25c374bfa1604 100644 (file)
@@ -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