From: Arran Cudbard-Bell Date: Thu, 20 Jun 2024 23:36:01 +0000 (-0600) Subject: Evaluate all chained method groups when searching for methods or printing methods X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=314af821c13a1df9dce41ee97bdf8f538f30427c;p=thirdparty%2Ffreeradius-server.git Evaluate all chained method groups when searching for methods or printing methods --- diff --git a/src/lib/server/module_rlm.c b/src/lib/server/module_rlm.c index 18b3260cbb4..1559ecfc620 100644 --- a/src/lib/server/module_rlm.c +++ b/src/lib/server/module_rlm.c @@ -446,9 +446,9 @@ bool module_rlm_section_type_set(request_t *request, fr_dict_attr_t const *type_ /** Iterate over an array of named module methods, looking for matches * - * @param[in] bindings A terminated array of module method bindings. - * pre-sorted using #section_name_cmp with name2 - * sublists populated. + * @param[in] mmg A structure containing a terminated array of + * module method bindings. pre-sorted using #section_name_cmp + * with name2 sublists populated. * @param[in] section name1 of the method being called can be one of the following: * - An itenfier. * - CF_IDENT_ANY if the method is a wildcard. @@ -461,40 +461,48 @@ bool module_rlm_section_type_set(request_t *request, fr_dict_attr_t const *type_ * - NULL on not found. */ static CC_HINT(nonnull) -module_method_binding_t const *module_binding_find(module_method_binding_t const *bindings, section_name_t const *section) +module_method_binding_t const *module_binding_find(module_method_group_t const *mmg, section_name_t const *section) { + module_method_group_t const *mmg_p = mmg; module_method_binding_t const *p; - /* - * This could potentially be improved by using a binary search - * but given the small number of items, reduced branches and - * sequential access just scanning the list, it's probably not - * worth it. - */ - for (p = bindings; p->section; p++) { - switch (section_name_match(p->section, section)) { - case 1: /* match */ - return p; + while (mmg_p) { + /* + * This could potentially be improved by using a binary search + * but given the small number of items, reduced branches and + * sequential access just scanning the list, it's probably not + * worth it. + */ + for (p = mmg_p->bindings; p->section; p++) { + switch (section_name_match(p->section, section)) { + case 1: /* match */ + return p; - case -1: /* name1 didn't match, skip to the end of the sub-list */ - p = fr_dlist_tail(&p->same_name1); - break; + case -1: /* name1 didn't match, skip to the end of the sub-list */ + p = fr_dlist_tail(&p->same_name1); + break; - case 0: /* name1 did match - see if we can find a matching name2 */ - { - fr_dlist_head_t const *same_name1 = &p->same_name1; + case 0: /* name1 did match - see if we can find a matching name2 */ + { + fr_dlist_head_t const *same_name1 = &p->same_name1; - while ((p = fr_dlist_next(same_name1, p))) { - if (section_name2_match(p->section, section)) return p; + while ((p = fr_dlist_next(same_name1, p))) { + if (section_name2_match(p->section, section)) return p; + } + p = fr_dlist_tail(same_name1); + } + break; } - p = fr_dlist_tail(same_name1); - } - break; - } #ifdef __clang_analyzer__ - /* Will never be NULL, worse case, p doesn't change*/ - if (!p) break; + /* Will never be NULL, worse case, p doesn't change*/ + if (!p) break; #endif + } + + /* + * Failed to match, search the next deepest group in the chain. + */ + mmg_p = mmg_p->next; } return NULL; @@ -502,25 +510,39 @@ module_method_binding_t const *module_binding_find(module_method_binding_t const /** Dump the available bindings for the module into the strerror stack * - * @param[in] mmb bindings to push onto the strerror stack. + * @note Methods from _all_ linked module method groups will be pushed onto the error stack. + * + * @param[in] mmg module method group to evaluate. */ -static void module_rlm_methods_to_strerror(module_method_binding_t const *mmb) +static void module_rlm_methods_to_strerror(module_method_group_t const *mmg) { - module_method_binding_t const *mmb_p; + module_method_group_t const *mmg_p = mmg; + module_method_binding_t const *mmb_p; + bool first = true; - if (!mmb || !mmb[0].section) { - fr_strerror_const_push("Module provides no methods"); - return; - } + while (mmg_p) { + mmb_p = mmg_p->bindings; - fr_strerror_const_push("Available methods are:"); + if (!mmb_p || !mmb_p[0].section) goto next; - for (mmb_p = mmb; mmb_p->section; mmb_p++) { - char const *name1 = section_name_str(mmb_p->section->name1); - char const *name2 = section_name_str(mmb_p->section->name2); + if (first) { + fr_strerror_const_push("Available methods are:"); + first = false; + } + + for (; mmb_p->section; mmb_p++) { + char const *name1 = section_name_str(mmb_p->section->name1); + char const *name2 = section_name_str(mmb_p->section->name2); + + fr_strerror_printf_push(" %s%s%s", + name1, name2 ? "." : "", name2 ? name2 : ""); + } + next: + mmg_p = mmg_p->next; + } - fr_strerror_printf_push(" %s%s%s", - name1, name2 ? "." : "", name2 ? name2 : ""); + if (first) { + fr_strerror_const_push("No methods available"); } } @@ -726,7 +748,7 @@ fr_slen_t module_rlm_by_name_and_method(TALLOC_CTX *ctx, module_method_call_t *m .name2 = fr_sbuff_used(elem2) ? elem2->start : NULL }; - mmb = module_binding_find(mmc->rlm->method.bindings, &method); + mmb = module_binding_find(&mmc->rlm->method_group, &method); if (!mmb) { fr_strerror_printf("Module \"%s\" does not have method %s%s%s", mmc->mi->name, @@ -735,7 +757,7 @@ fr_slen_t module_rlm_by_name_and_method(TALLOC_CTX *ctx, module_method_call_t *m method.name2 ? method.name2 : "" ); - module_rlm_methods_to_strerror(mmc->rlm->method.bindings); + module_rlm_methods_to_strerror(&mmc->rlm->method_group); return fr_sbuff_error(&meth_start); } mmc->mmb = *mmb; /* For locality of reference and fewer derefs */ @@ -752,12 +774,12 @@ by_section: * * If that fails, we're done. */ - mmb = module_binding_find(mmc->rlm->method.bindings, section); + mmb = module_binding_find(&mmc->rlm->method_group, section); if (!mmb) { section_name_t const **alt_p = virtual_server_section_methods(vs, section); if (alt_p) { for (; *alt_p; alt_p++) { - mmb = module_binding_find(mmc->rlm->method.bindings, *alt_p); + mmb = module_binding_find(&mmc->rlm->method_group, *alt_p); if (mmb) { if (mmc_out) section_name_dup(ctx, &mmc->asked, *alt_p); break; @@ -776,7 +798,7 @@ by_section: section->name2 ? "." : "", section->name2 ? section->name2 : "" ); - module_rlm_methods_to_strerror(mmc->rlm->method.bindings); + module_rlm_methods_to_strerror(&mmc->rlm->method_group); return fr_sbuff_error(&meth_start); } @@ -1067,7 +1089,7 @@ static int module_method_validate(module_instance_t *mi) { module_rlm_t *mrlm = module_rlm_from_module(mi->exported); - return module_method_group_validate(&mrlm->method); + return module_method_group_validate(&mrlm->method_group); } /** Allocate a rlm module instance diff --git a/src/lib/server/module_rlm.h b/src/lib/server/module_rlm.h index 4fb008a8f01..c0d00984ebc 100644 --- a/src/lib/server/module_rlm.h +++ b/src/lib/server/module_rlm.h @@ -37,7 +37,7 @@ typedef struct module_rlm_instance_s module_rlm_instance_t; struct module_rlm_s { module_t common; //!< Common fields presented by all modules. - module_method_group_t method; //!< named methods + module_method_group_t method_group; //!< named methods }; struct module_rlm_instance_s { diff --git a/src/modules/rlm_always/rlm_always.c b/src/modules/rlm_always/rlm_always.c index d7dd8adf549..f954669b977 100644 --- a/src/modules/rlm_always/rlm_always.c +++ b/src/modules/rlm_always/rlm_always.c @@ -191,7 +191,7 @@ module_rlm_t rlm_always = { .instantiate = mod_instantiate, .detach = mod_detach }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY), .method = mod_always_return }, MODULE_BINDING_TERMINATOR diff --git a/src/modules/rlm_attr_filter/rlm_attr_filter.c b/src/modules/rlm_attr_filter/rlm_attr_filter.c index 386efd66b92..489f63025bd 100644 --- a/src/modules/rlm_attr_filter/rlm_attr_filter.c +++ b/src/modules/rlm_attr_filter/rlm_attr_filter.c @@ -376,7 +376,7 @@ module_rlm_t rlm_attr_filter = { .config = module_config, .instantiate = mod_instantiate, }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ /* * Hack to support old configurations diff --git a/src/modules/rlm_cache/rlm_cache.c b/src/modules/rlm_cache/rlm_cache.c index 1241a21498b..0d97c1c1026 100644 --- a/src/modules/rlm_cache/rlm_cache.c +++ b/src/modules/rlm_cache/rlm_cache.c @@ -1515,7 +1515,7 @@ module_rlm_t rlm_cache = { .instantiate = mod_instantiate, .detach = mod_detach }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME("clear", CF_IDENT_ANY), .method = mod_method_clear, .method_env = &cache_method_env }, { .section = SECTION_NAME("load", CF_IDENT_ANY), .method = mod_method_load, .method_env = &cache_method_env }, diff --git a/src/modules/rlm_chap/rlm_chap.c b/src/modules/rlm_chap/rlm_chap.c index b8a96f012b7..770156e5666 100644 --- a/src/modules/rlm_chap/rlm_chap.c +++ b/src/modules/rlm_chap/rlm_chap.c @@ -388,7 +388,7 @@ module_rlm_t rlm_chap = { .config = module_config, .instantiate = mod_instantiate }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME("authenticate", CF_IDENT_ANY), .method = mod_authenticate, .method_env = &chap_auth_method_env }, { .section = SECTION_NAME("recv", "Access-Request"), .method = mod_authorize, .method_env = &chap_autz_method_env }, diff --git a/src/modules/rlm_client/rlm_client.c b/src/modules/rlm_client/rlm_client.c index 78a25f9d235..b6fbff0dfcd 100644 --- a/src/modules/rlm_client/rlm_client.c +++ b/src/modules/rlm_client/rlm_client.c @@ -385,7 +385,7 @@ module_rlm_t rlm_client = { .onload = mod_load, .unload = mod_unload }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY), .method = mod_authorize }, MODULE_BINDING_TERMINATOR diff --git a/src/modules/rlm_couchbase/rlm_couchbase.c b/src/modules/rlm_couchbase/rlm_couchbase.c index 94e28d1b53d..f9f8ed9a982 100644 --- a/src/modules/rlm_couchbase/rlm_couchbase.c +++ b/src/modules/rlm_couchbase/rlm_couchbase.c @@ -555,7 +555,7 @@ module_rlm_t rlm_couchbase = { .instantiate = mod_instantiate, .detach = mod_detach }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME("accounting", CF_IDENT_ANY), .method = mod_accounting }, { .section = SECTION_NAME("recv", CF_IDENT_ANY), .method = mod_authorize }, diff --git a/src/modules/rlm_csv/rlm_csv.c b/src/modules/rlm_csv/rlm_csv.c index a0f261b7a56..853bde97c05 100644 --- a/src/modules/rlm_csv/rlm_csv.c +++ b/src/modules/rlm_csv/rlm_csv.c @@ -1058,7 +1058,7 @@ module_rlm_t rlm_csv = { .bootstrap = mod_bootstrap, .instantiate = mod_instantiate, }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY), .method = mod_process }, MODULE_BINDING_TERMINATOR diff --git a/src/modules/rlm_delay/rlm_delay.c b/src/modules/rlm_delay/rlm_delay.c index eb2a120c208..35277704421 100644 --- a/src/modules/rlm_delay/rlm_delay.c +++ b/src/modules/rlm_delay/rlm_delay.c @@ -279,7 +279,7 @@ module_rlm_t rlm_delay = { .config = module_config, .bootstrap = mod_bootstrap }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY), .method = mod_delay }, MODULE_BINDING_TERMINATOR diff --git a/src/modules/rlm_detail/rlm_detail.c b/src/modules/rlm_detail/rlm_detail.c index 6104463b869..dceb8bc9a74 100644 --- a/src/modules/rlm_detail/rlm_detail.c +++ b/src/modules/rlm_detail/rlm_detail.c @@ -508,7 +508,7 @@ module_rlm_t rlm_detail = { .config = module_config, .instantiate = mod_instantiate }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME("accounting", CF_IDENT_ANY), .method = mod_accounting, .method_env = &method_env }, { .section = SECTION_NAME("recv", "accounting-request"), .method = mod_accounting, .method_env = &method_env }, diff --git a/src/modules/rlm_dhcpv4/rlm_dhcpv4.c b/src/modules/rlm_dhcpv4/rlm_dhcpv4.c index 4c3ca74fb68..87c14390c62 100644 --- a/src/modules/rlm_dhcpv4/rlm_dhcpv4.c +++ b/src/modules/rlm_dhcpv4/rlm_dhcpv4.c @@ -333,7 +333,7 @@ module_rlm_t rlm_dhcpv4 = { .thread_inst_type = "rlm_dhcpv4_thread_t", .thread_instantiate = mod_thread_instantiate }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY), .method = mod_process }, MODULE_BINDING_TERMINATOR diff --git a/src/modules/rlm_digest/rlm_digest.c b/src/modules/rlm_digest/rlm_digest.c index acc4a896f70..dfbb50bbb97 100644 --- a/src/modules/rlm_digest/rlm_digest.c +++ b/src/modules/rlm_digest/rlm_digest.c @@ -480,7 +480,7 @@ module_rlm_t rlm_digest = { .inst_size = sizeof(rlm_digest_t), .instantiate = mod_instantiate, }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME("authenticate", CF_IDENT_ANY), .method = mod_authenticate }, { .section = SECTION_NAME("recv", "Access-Request"), .method = mod_authorize }, diff --git a/src/modules/rlm_eap/rlm_eap.c b/src/modules/rlm_eap/rlm_eap.c index 4a4dfe23dcc..f68982e8e89 100644 --- a/src/modules/rlm_eap/rlm_eap.c +++ b/src/modules/rlm_eap/rlm_eap.c @@ -1196,7 +1196,7 @@ module_rlm_t rlm_eap = { .unload = mod_unload, .instantiate = mod_instantiate, }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME("authenticate", CF_IDENT_ANY), .method = mod_authenticate }, { .section = SECTION_NAME("recv", "Access-Request"), .method = mod_authorize }, diff --git a/src/modules/rlm_exec/rlm_exec.c b/src/modules/rlm_exec/rlm_exec.c index 3027b51460a..3c1ac23a4d5 100644 --- a/src/modules/rlm_exec/rlm_exec.c +++ b/src/modules/rlm_exec/rlm_exec.c @@ -531,7 +531,7 @@ module_rlm_t rlm_exec = { .bootstrap = mod_bootstrap, .instantiate = mob_instantiate }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY), .method = mod_exec_dispatch_oneshot, .method_env = &exec_method_env }, MODULE_BINDING_TERMINATOR diff --git a/src/modules/rlm_files/rlm_files.c b/src/modules/rlm_files/rlm_files.c index 320f04610e9..f7e8d85ba9e 100644 --- a/src/modules/rlm_files/rlm_files.c +++ b/src/modules/rlm_files/rlm_files.c @@ -674,7 +674,7 @@ module_rlm_t rlm_files = { .inst_size = sizeof(rlm_files_t), .config = module_config, }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY), .method = mod_files, .method_env = &method_env }, MODULE_BINDING_TERMINATOR diff --git a/src/modules/rlm_imap/rlm_imap.c b/src/modules/rlm_imap/rlm_imap.c index 4281425c8ee..816e6231a0d 100644 --- a/src/modules/rlm_imap/rlm_imap.c +++ b/src/modules/rlm_imap/rlm_imap.c @@ -292,7 +292,7 @@ module_rlm_t rlm_imap = { .thread_instantiate = mod_thread_instantiate, .thread_detach = mod_thread_detach, }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME("authenticate", CF_IDENT_ANY), .method = mod_authenticate }, MODULE_BINDING_TERMINATOR diff --git a/src/modules/rlm_isc_dhcp/rlm_isc_dhcp.c b/src/modules/rlm_isc_dhcp/rlm_isc_dhcp.c index 6f0077a0aaa..d1cedaf327f 100644 --- a/src/modules/rlm_isc_dhcp/rlm_isc_dhcp.c +++ b/src/modules/rlm_isc_dhcp/rlm_isc_dhcp.c @@ -2240,7 +2240,7 @@ module_rlm_t rlm_isc_dhcp = { .config = module_config, .instantiate = mod_instantiate }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME("recv", CF_IDENT_ANY), .method = mod_authorize }, { .section = SECTION_NAME("send", CF_IDENT_ANY), .method = mod_post_auth }, diff --git a/src/modules/rlm_krb5/rlm_krb5.c b/src/modules/rlm_krb5/rlm_krb5.c index 71a857806dd..033f6148c21 100644 --- a/src/modules/rlm_krb5/rlm_krb5.c +++ b/src/modules/rlm_krb5/rlm_krb5.c @@ -504,7 +504,7 @@ module_rlm_t rlm_krb5 = { .instantiate = mod_instantiate, .detach = mod_detach }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME("authenticate", CF_IDENT_ANY), .method = mod_authenticate }, MODULE_BINDING_TERMINATOR diff --git a/src/modules/rlm_ldap/rlm_ldap.c b/src/modules/rlm_ldap/rlm_ldap.c index 38f6a2de598..6db3c53f238 100644 --- a/src/modules/rlm_ldap/rlm_ldap.c +++ b/src/modules/rlm_ldap/rlm_ldap.c @@ -2729,7 +2729,7 @@ module_rlm_t rlm_ldap = { .thread_instantiate = mod_thread_instantiate, .thread_detach = mod_thread_detach, }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ /* * Hack to support old configurations diff --git a/src/modules/rlm_linelog/rlm_linelog.c b/src/modules/rlm_linelog/rlm_linelog.c index b0bc7201b73..71fd2a96883 100644 --- a/src/modules/rlm_linelog/rlm_linelog.c +++ b/src/modules/rlm_linelog/rlm_linelog.c @@ -1059,7 +1059,7 @@ module_rlm_t rlm_linelog = { .instantiate = mod_instantiate, .detach = mod_detach }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY), .method = mod_do_linelog, .method_env = &linelog_method_env }, MODULE_BINDING_TERMINATOR diff --git a/src/modules/rlm_logtee/rlm_logtee.c b/src/modules/rlm_logtee/rlm_logtee.c index 0bcf4c1ca33..aec818b235d 100644 --- a/src/modules/rlm_logtee/rlm_logtee.c +++ b/src/modules/rlm_logtee/rlm_logtee.c @@ -665,7 +665,7 @@ module_rlm_t rlm_logtee = { .instantiate = mod_instantiate, .thread_instantiate = mod_thread_instantiate, }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY), .method = mod_insert_logtee }, MODULE_BINDING_TERMINATOR diff --git a/src/modules/rlm_mschap/rlm_mschap.c b/src/modules/rlm_mschap/rlm_mschap.c index 8cb4487afb8..1b540f45bfc 100644 --- a/src/modules/rlm_mschap/rlm_mschap.c +++ b/src/modules/rlm_mschap/rlm_mschap.c @@ -2527,7 +2527,7 @@ module_rlm_t rlm_mschap = { .instantiate = mod_instantiate, .detach = mod_detach }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME("authenticate", CF_IDENT_ANY), .method = mod_authenticate, .method_env = &mschap_auth_method_env }, { .section = SECTION_NAME("recv", CF_IDENT_ANY), .method = mod_authorize, .method_env = &mschap_autz_method_env }, diff --git a/src/modules/rlm_opendirectory/rlm_opendirectory.c b/src/modules/rlm_opendirectory/rlm_opendirectory.c index 25acedcc6af..55c4c26babb 100644 --- a/src/modules/rlm_opendirectory/rlm_opendirectory.c +++ b/src/modules/rlm_opendirectory/rlm_opendirectory.c @@ -536,7 +536,7 @@ module_rlm_t rlm_opendirectory = { .inst_size = sizeof(rlm_opendirectory_t), .instantiate = mod_instantiate }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME("authenticate", CF_IDENT_ANY), .method = mod_authenticate }, { .section = SECTION_NAME("recv", CF_IDENT_ANY), .method = mod_authorize }, diff --git a/src/modules/rlm_pam/rlm_pam.c b/src/modules/rlm_pam/rlm_pam.c index a9a3c5ab57e..9686d20a9d3 100644 --- a/src/modules/rlm_pam/rlm_pam.c +++ b/src/modules/rlm_pam/rlm_pam.c @@ -277,7 +277,7 @@ module_rlm_t rlm_pam = { .config = module_config, .instantiate = mod_instantiate }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME("authenticate", CF_IDENT_ANY), .method = mod_authenticate }, MODULE_BINDING_TERMINATOR diff --git a/src/modules/rlm_pap/rlm_pap.c b/src/modules/rlm_pap/rlm_pap.c index 208343cedda..9e543014056 100644 --- a/src/modules/rlm_pap/rlm_pap.c +++ b/src/modules/rlm_pap/rlm_pap.c @@ -1073,7 +1073,7 @@ module_rlm_t rlm_pap = { .config = module_config, .instantiate = mod_instantiate }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ /* * Hack to support old configurations diff --git a/src/modules/rlm_passwd/rlm_passwd.c b/src/modules/rlm_passwd/rlm_passwd.c index 6e28d99da53..727587dc4ad 100644 --- a/src/modules/rlm_passwd/rlm_passwd.c +++ b/src/modules/rlm_passwd/rlm_passwd.c @@ -616,7 +616,7 @@ module_rlm_t rlm_passwd = { .instantiate = mod_instantiate, .detach = mod_detach }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY), .method = mod_passwd_map }, MODULE_BINDING_TERMINATOR diff --git a/src/modules/rlm_perl/rlm_perl.c b/src/modules/rlm_perl/rlm_perl.c index d181a198781..ac56f0599d3 100644 --- a/src/modules/rlm_perl/rlm_perl.c +++ b/src/modules/rlm_perl/rlm_perl.c @@ -1182,7 +1182,7 @@ module_rlm_t rlm_perl = { .thread_instantiate = mod_thread_instantiate, .thread_detach = mod_thread_detach, }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ /* * Hack to support old configurations diff --git a/src/modules/rlm_python/rlm_python.c b/src/modules/rlm_python/rlm_python.c index 1ea5d2c7c3c..f4590db1b5a 100644 --- a/src/modules/rlm_python/rlm_python.c +++ b/src/modules/rlm_python/rlm_python.c @@ -1182,7 +1182,7 @@ module_rlm_t rlm_python = { .thread_instantiate = mod_thread_instantiate, .thread_detach = mod_thread_detach }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ /* * Hack to support old configurations diff --git a/src/modules/rlm_radius/rlm_radius.c b/src/modules/rlm_radius/rlm_radius.c index aac7b64389d..40d56a30d6b 100644 --- a/src/modules/rlm_radius/rlm_radius.c +++ b/src/modules/rlm_radius/rlm_radius.c @@ -663,7 +663,7 @@ module_rlm_t rlm_radius = { .instantiate = mod_instantiate, }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY), .method = mod_process }, MODULE_BINDING_TERMINATOR diff --git a/src/modules/rlm_radutmp/rlm_radutmp.c b/src/modules/rlm_radutmp/rlm_radutmp.c index 5ee9911663f..0b05b004934 100644 --- a/src/modules/rlm_radutmp/rlm_radutmp.c +++ b/src/modules/rlm_radutmp/rlm_radutmp.c @@ -586,7 +586,7 @@ module_rlm_t rlm_radutmp = { .instantiate = mod_instantiate, .detach = mod_detach }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME("accounting", CF_IDENT_ANY), .method = mod_accounting, .method_env = &method_env }, MODULE_BINDING_TERMINATOR diff --git a/src/modules/rlm_redis_ippool/rlm_redis_ippool.c b/src/modules/rlm_redis_ippool/rlm_redis_ippool.c index 025cb3cd215..d164d1f3bf0 100644 --- a/src/modules/rlm_redis_ippool/rlm_redis_ippool.c +++ b/src/modules/rlm_redis_ippool/rlm_redis_ippool.c @@ -1291,7 +1291,7 @@ module_rlm_t rlm_redis_ippool = { .onload = mod_load, .instantiate = mod_instantiate }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME("recv", "Access-Request"), .method = mod_alloc, .method_env = &redis_ippool_alloc_method_env }, /* radius */ { .section = SECTION_NAME("accounting", "Start"), .method = mod_update, .method_env = &redis_ippool_update_method_env }, /* radius */ diff --git a/src/modules/rlm_rediswho/rlm_rediswho.c b/src/modules/rlm_rediswho/rlm_rediswho.c index 647daa049dc..1c8a9200957 100644 --- a/src/modules/rlm_rediswho/rlm_rediswho.c +++ b/src/modules/rlm_rediswho/rlm_rediswho.c @@ -257,7 +257,7 @@ module_rlm_t rlm_rediswho = { .onload = mod_load, .instantiate = mod_instantiate }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME("accounting", CF_IDENT_ANY), .method = mod_accounting }, MODULE_BINDING_TERMINATOR diff --git a/src/modules/rlm_rest/rlm_rest.c b/src/modules/rlm_rest/rlm_rest.c index a0a7123cd2c..c2c34245671 100644 --- a/src/modules/rlm_rest/rlm_rest.c +++ b/src/modules/rlm_rest/rlm_rest.c @@ -1418,7 +1418,7 @@ module_rlm_t rlm_rest = { .thread_instantiate = mod_thread_instantiate, .thread_detach = mod_thread_detach }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ /* * Hack to support old configurations diff --git a/src/modules/rlm_smtp/rlm_smtp.c b/src/modules/rlm_smtp/rlm_smtp.c index 1a7b24d5f42..cd165f6e2dc 100644 --- a/src/modules/rlm_smtp/rlm_smtp.c +++ b/src/modules/rlm_smtp/rlm_smtp.c @@ -1050,7 +1050,7 @@ module_rlm_t rlm_smtp = { .thread_instantiate = mod_thread_instantiate, .thread_detach = mod_thread_detach, }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME("authenticate", CF_IDENT_ANY), .method = mod_authenticate, .method_env = &auth_env }, { .section = SECTION_NAME("mail", CF_IDENT_ANY), .method = mod_mail, .method_env = &method_env }, diff --git a/src/modules/rlm_sometimes/rlm_sometimes.c b/src/modules/rlm_sometimes/rlm_sometimes.c index 25b13c47e35..5db3c666482 100644 --- a/src/modules/rlm_sometimes/rlm_sometimes.c +++ b/src/modules/rlm_sometimes/rlm_sometimes.c @@ -161,7 +161,7 @@ module_rlm_t rlm_sometimes = { .config = module_config, .instantiate = mod_instantiate }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME("send", CF_IDENT_ANY), .method = mod_sometimes_reply }, { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY), .method = mod_sometimes_packet }, diff --git a/src/modules/rlm_sql/rlm_sql.c b/src/modules/rlm_sql/rlm_sql.c index e063423380e..4d30c5b9feb 100644 --- a/src/modules/rlm_sql/rlm_sql.c +++ b/src/modules/rlm_sql/rlm_sql.c @@ -2300,7 +2300,7 @@ module_rlm_t rlm_sql = { .thread_instantiate = mod_thread_instantiate, .thread_detach = mod_thread_detach, }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ /* * Hack to support old configurations diff --git a/src/modules/rlm_sqlcounter/rlm_sqlcounter.c b/src/modules/rlm_sqlcounter/rlm_sqlcounter.c index ead809f43d9..d2eb231889e 100644 --- a/src/modules/rlm_sqlcounter/rlm_sqlcounter.c +++ b/src/modules/rlm_sqlcounter/rlm_sqlcounter.c @@ -583,7 +583,7 @@ module_rlm_t rlm_sqlcounter = { .bootstrap = mod_bootstrap, .instantiate = mod_instantiate, }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY), .method = mod_authorize, .method_env = &sqlcounter_call_env }, MODULE_BINDING_TERMINATOR diff --git a/src/modules/rlm_sqlippool/rlm_sqlippool.c b/src/modules/rlm_sqlippool/rlm_sqlippool.c index 77d0a09cd33..b3173ff859f 100644 --- a/src/modules/rlm_sqlippool/rlm_sqlippool.c +++ b/src/modules/rlm_sqlippool/rlm_sqlippool.c @@ -815,7 +815,7 @@ module_rlm_t rlm_sqlippool = { .config = module_config, .instantiate = mod_instantiate }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ /* * RADIUS specific diff --git a/src/modules/rlm_stats/rlm_stats.c b/src/modules/rlm_stats/rlm_stats.c index a67fc779a3b..4c28094fcf9 100644 --- a/src/modules/rlm_stats/rlm_stats.c +++ b/src/modules/rlm_stats/rlm_stats.c @@ -458,7 +458,7 @@ module_rlm_t rlm_stats = { .thread_instantiate = mod_thread_instantiate, .thread_detach = mod_thread_detach }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY), .method = mod_stats }, MODULE_BINDING_TERMINATOR diff --git a/src/modules/rlm_tacacs/rlm_tacacs.c b/src/modules/rlm_tacacs/rlm_tacacs.c index 594bf1e6cad..7726cc5ca69 100644 --- a/src/modules/rlm_tacacs/rlm_tacacs.c +++ b/src/modules/rlm_tacacs/rlm_tacacs.c @@ -264,7 +264,7 @@ module_rlm_t rlm_tacacs = { .instantiate = mod_instantiate, }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY), .method = mod_process }, MODULE_BINDING_TERMINATOR diff --git a/src/modules/rlm_test/rlm_test.c b/src/modules/rlm_test/rlm_test.c index ed05d697693..ff3e1336ee3 100644 --- a/src/modules/rlm_test/rlm_test.c +++ b/src/modules/rlm_test/rlm_test.c @@ -528,7 +528,7 @@ module_rlm_t rlm_test = { .thread_instantiate = mod_thread_instantiate, .thread_detach = mod_thread_detach }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME("accounting", CF_IDENT_ANY), .method = mod_accounting }, { .section = SECTION_NAME("authenticate", CF_IDENT_ANY), .method = mod_authenticate }, diff --git a/src/modules/rlm_totp/rlm_totp.c b/src/modules/rlm_totp/rlm_totp.c index aef581702dc..9e6800ec4bf 100644 --- a/src/modules/rlm_totp/rlm_totp.c +++ b/src/modules/rlm_totp/rlm_totp.c @@ -181,7 +181,7 @@ module_rlm_t rlm_totp = { .config = module_config, .instantiate = mod_instantiate }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME("authenticate", CF_IDENT_ANY), .method = mod_authenticate, .method_env = &method_env }, MODULE_BINDING_TERMINATOR diff --git a/src/modules/rlm_unix/rlm_unix.c b/src/modules/rlm_unix/rlm_unix.c index 6114f2f0902..a66913ce637 100644 --- a/src/modules/rlm_unix/rlm_unix.c +++ b/src/modules/rlm_unix/rlm_unix.c @@ -560,7 +560,7 @@ module_rlm_t rlm_unix = { .config = module_config, .bootstrap = mod_bootstrap }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME("accounting", CF_IDENT_ANY), .method = mod_accounting }, { .section = SECTION_NAME("recv", "Access-Request"), .method = mod_authorize }, diff --git a/src/modules/rlm_utf8/rlm_utf8.c b/src/modules/rlm_utf8/rlm_utf8.c index e76738f7be3..2b4c50b4f7f 100644 --- a/src/modules/rlm_utf8/rlm_utf8.c +++ b/src/modules/rlm_utf8/rlm_utf8.c @@ -60,7 +60,7 @@ module_rlm_t rlm_utf8 = { .magic = MODULE_MAGIC_INIT, .name = "utf8" }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY), .method = mod_utf8_clean }, MODULE_BINDING_TERMINATOR diff --git a/src/modules/rlm_wimax/rlm_wimax.c b/src/modules/rlm_wimax/rlm_wimax.c index 1b92c4039e3..856d8f7e893 100644 --- a/src/modules/rlm_wimax/rlm_wimax.c +++ b/src/modules/rlm_wimax/rlm_wimax.c @@ -460,7 +460,7 @@ module_rlm_t rlm_wimax = { .inst_size = sizeof(rlm_wimax_t), .config = module_config, }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME("recv", "accounting-request"), .method = mod_preacct }, { .section = SECTION_NAME("recv", CF_IDENT_ANY), .method = mod_authorize }, diff --git a/src/modules/rlm_yubikey/rlm_yubikey.c b/src/modules/rlm_yubikey/rlm_yubikey.c index 3072080fb7a..5806b080de1 100644 --- a/src/modules/rlm_yubikey/rlm_yubikey.c +++ b/src/modules/rlm_yubikey/rlm_yubikey.c @@ -468,7 +468,7 @@ module_rlm_t rlm_yubikey = { .detach = mod_detach, #endif }, - .method = { + .method_group = { .bindings = (module_method_binding_t[]){ { .section = SECTION_NAME("authenticate", CF_IDENT_ANY), .method = mod_authenticate }, { .section = SECTION_NAME("recv", "Access-Request"), .method = mod_authorize },