]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Sort module methods to ensure a consistent order
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Mon, 27 May 2024 03:38:35 +0000 (23:38 -0400)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Mon, 27 May 2024 03:38:35 +0000 (23:38 -0400)
45 files changed:
src/lib/server/libfreeradius-server.mk
src/lib/server/module.h
src/lib/server/module_rlm.c
src/lib/server/module_rlm.h
src/lib/server/section.c [new file with mode: 0644]
src/lib/server/section.h
src/modules/rlm_attr_filter/rlm_attr_filter.c
src/modules/rlm_cache/rlm_cache.c
src/modules/rlm_chap/rlm_chap.c
src/modules/rlm_couchbase/rlm_couchbase.c
src/modules/rlm_detail/rlm_detail.c
src/modules/rlm_digest/rlm_digest.c
src/modules/rlm_eap/rlm_eap.c
src/modules/rlm_exec/rlm_exec.c
src/modules/rlm_files/rlm_files.c
src/modules/rlm_imap/rlm_imap.c
src/modules/rlm_isc_dhcp/rlm_isc_dhcp.c
src/modules/rlm_ldap/rlm_ldap.c
src/modules/rlm_lua/rlm_lua.c
src/modules/rlm_mruby/rlm_mruby.c
src/modules/rlm_mschap/rlm_mschap.c
src/modules/rlm_opendirectory/rlm_opendirectory.c
src/modules/rlm_pam/rlm_pam.c
src/modules/rlm_pap/rlm_pap.c
src/modules/rlm_passwd/rlm_passwd.c
src/modules/rlm_perl/rlm_perl.c
src/modules/rlm_python/rlm_python.c
src/modules/rlm_radutmp/rlm_radutmp.c
src/modules/rlm_redis_ippool/rlm_redis_ippool.c
src/modules/rlm_rediswho/rlm_rediswho.c
src/modules/rlm_securid/rlm_securid.c
src/modules/rlm_sigtran/rlm_sigtran.c
src/modules/rlm_smtp/rlm_smtp.c
src/modules/rlm_sometimes/rlm_sometimes.c
src/modules/rlm_sql/rlm_sql.c
src/modules/rlm_sqlcounter/rlm_sqlcounter.c
src/modules/rlm_sqlippool/rlm_sqlippool.c
src/modules/rlm_stats/rlm_stats.c
src/modules/rlm_tacacs/rlm_tacacs.c
src/modules/rlm_test/rlm_test.c
src/modules/rlm_totp/rlm_totp.c
src/modules/rlm_unix/rlm_unix.c
src/modules/rlm_wimax/rlm_wimax.c
src/modules/rlm_winbind/rlm_winbind.c
src/modules/rlm_yubikey/rlm_yubikey.c

index 4bed684a717c74312455ac636dc0295bb473ace2..250c1586422d247ee646a10ecfa181fd50913385 100644 (file)
@@ -33,6 +33,7 @@ SOURCES       := \
        regex.c \
        request.c \
        request_data.c \
+       section.c \
        snmp.c \
        state.c \
        stats.c \
index d15ecc6ae8858af3f67760a17cc66127268eb40a..48d29ab28de96646a68855fbf143cb1557ce930e 100644 (file)
@@ -153,12 +153,20 @@ extern "C" {
  *
  */
 struct module_method_binding_s {
-       fr_dict_t const                         **proto;                //!< Only allow this method to be called in this namespace.
-
        section_name_t const                    *section;               //!< Identifier for a section.
 
        module_method_t                         method;                 //!< Module method to call
-       call_env_method_t const * const         method_env;             //!< Call specific conf parsing.
+       call_env_method_t const                 *method_env;            //!< Method specific call_env.
+
+       fr_dlist_head_t                         name2_list;             //!< List of bindings with the same name1.  Only initialised
+                                                                       ///< for the the first name1 binding.
+                                                                       ///< DO NOT INITIALISE IN THE MODULE.
+       fr_dlist_t                              name2_entry;            //!< Linked list of bindings with the same name1.
+                                                                       ///< Allows us to more quickly iterate over all
+                                                                       ///< name2 entries after finding a matching name1.
+                                                                       ///< This is also temporarily used to verify the ordering
+                                                                       ///< of name bindings.
+                                                                       ///< DO NOT INITIALISE IN THE MODULE.
 };
 
 /** Struct exported by a rlm_* module
index ee1ee1b5d3b759a9ea451bce73a5393405d42bac..79342b40b990ee41b822587bff468462d3649bd3 100644 (file)
@@ -25,7 +25,6 @@
  * @copyright 2000 Alan DeKok (aland@freeradius.org)
  * @copyright 2000 Alan Curry (pacman@world.std.com)
  */
-
 RCSID("$Id$")
 
 #include <freeradius-devel/server/cf_file.h>
@@ -37,7 +36,10 @@ RCSID("$Id$")
 #include <freeradius-devel/server/module_rlm.h>
 #include <freeradius-devel/server/pair.h>
 #include <freeradius-devel/server/virtual_servers.h>
+
 #include <freeradius-devel/util/atexit.h>
+#include <freeradius-devel/util/debug.h>
+#include <freeradius-devel/util/dlist.h>
 
 #include <freeradius-devel/unlang/compile.h>
 #include <freeradius-devel/unlang/xlat_func.h>
@@ -961,6 +963,138 @@ int modules_rlm_instantiate(void)
        return modules_instantiate(rlm_modules_static);
 }
 
+/** Compare the section names of two module_method_binding_t structures
+ */
+static int8_t binding_name_cmp(void const *one, void const *two)
+{
+       module_method_binding_t const *a = one;
+       module_method_binding_t const *b = two;
+
+       return section_name_cmp(a->section, b->section);
+}
+
+static int module_method_validate(module_instance_t *mi)
+{
+       module_method_binding_t *p, *srt_p;
+       module_rlm_t const      *mrlm;
+       fr_dlist_head_t         bindings;
+       bool                    in_order = true;
+
+       mrlm = module_rlm_from_module(mi->exported);
+
+       fr_dlist_init(&bindings, module_method_binding_t, name2_entry);
+
+       /*
+        *      Not all modules export module method bindings
+        */
+       if (!mrlm->bindings) return 0;
+
+       for (p = mrlm->bindings; p->section; p++) {
+               if (!fr_cond_assert_msg(p->section->name1,
+                                       "%s: First section identifier can't be NULL", mi->name)) return -1;
+               if (!fr_cond_assert_msg(p->section->name1 || p->section->name2,
+                                       "%s: Section identifiers can't both be null", mi->name)) return -1;
+
+               /*
+                *      All the bindings go in a list so we can sort them
+                *      and produce the list in the correct order.
+                */
+               fr_dlist_insert_tail(&bindings, p);
+       }
+
+       fr_dlist_sort(&bindings, binding_name_cmp);
+
+       /*
+        *      Iterate over the sorted list of bindings,
+        *      and the original list, to ensure they're
+        *      in the correct order.
+        */
+       for (srt_p = fr_dlist_head(&bindings), p = mrlm->bindings;
+            srt_p;
+            srt_p = fr_dlist_next(&bindings, srt_p), p++) {
+               if (p != srt_p) {
+                       in_order = false;
+                       break;
+               }
+#if 0
+               {
+                       module_method_binding_t const *pp;
+                       /*
+                       *       Print the correct order of bindings
+                       */
+                       FR_FAULT_LOG("%s: Module method bindings are not in the correct order, the correct order is:", mi->name);
+                       FR_FAULT_LOG(".bindings = (module_method_binding_t[]){");
+                       for (pp = fr_dlist_head(&bindings);
+                               pp;
+                               pp = fr_dlist_next(&bindings, pp)) {
+                               char const *name1_quote = (pp->section->name1 && (pp->section->name1 != CF_IDENT_ANY)) ? "\"" : "";
+                               char const *name2_quote = (pp->section->name2 && (pp->section->name2 != CF_IDENT_ANY)) ? "\"" : "";
+                               char const *name1 = pp->section->name1;
+                               char const *name2 = pp->section->name2;
+
+                               if (name1 == CF_IDENT_ANY) {
+                                       name1 = "CF_IDENT_ANY";
+                               } else if (!name1) {
+                                       name1 = "NULL";
+                               }
+                               if (name2 == CF_IDENT_ANY) {
+                                       name2 = "CF_IDENT_ANY";
+                               } else if (!name2) {
+                                       name2 = "NULL";
+                               }
+
+                               FR_FAULT_LOG("\t.section = SECTION_NAME(%s%s%s, %s%s%s)",
+                                               name1_quote, name1, name1_quote,
+                                               name2_quote, name2, name2_quote);
+                       }
+                       FR_FAULT_LOG("}");
+               }
+#endif
+       }
+
+       /*
+        *      Rebuild the binding list in the correct order.
+        */
+       if (!in_order) {
+               module_method_binding_t *ordered;
+
+               MEM(ordered = talloc_array(NULL, module_method_binding_t, fr_dlist_num_elements(&bindings)));
+               for (srt_p = fr_dlist_head(&bindings), p = ordered;
+                    srt_p;
+                    srt_p = fr_dlist_next(&bindings, srt_p), p++) {
+                       *p = *srt_p;
+               }
+               memcpy(mrlm->bindings, ordered, fr_dlist_num_elements(&bindings) * sizeof(*ordered));
+               talloc_free(ordered);
+       }
+
+       /*
+        *      Build the "skip" list of name1 entries
+        */
+       {
+               module_method_binding_t *last_binding = NULL;
+
+               for (p = mrlm->bindings; p->section; p++) {
+                       if (!last_binding ||
+                               (
+                                       (last_binding->section->name1 != p->section->name1) &&
+                                       (
+                                               (last_binding->section->name1 == CF_IDENT_ANY) ||
+                                               (p->section->name1 == CF_IDENT_ANY) ||
+                                               (strcmp(last_binding->section->name1, p->section->name1) != 0)
+                                       )
+                               )
+                       ) {
+                               fr_dlist_init(&p->name2_list, module_method_binding_t, name2_entry);
+                               last_binding = p;
+                       }
+                       fr_dlist_insert_tail(&last_binding->name2_list, p);
+               }
+       }
+
+       return 0;
+}
+
 static int module_conf_parse(module_list_t *ml, CONF_SECTION *mod_conf)
 {
        char const              *name;
@@ -1006,7 +1140,17 @@ static int module_conf_parse(module_list_t *ml, CONF_SECTION *mod_conf)
        if (unlikely(mi == NULL)) {
                cf_log_perr(mod_conf, "Failed loading module");
                return -1;
+       }
 
+       /*
+        *      First time we've loaded the dl module, so we need to
+        *      check the module methods to make sure they're ordered
+        *      correctly, and to add the "skip list" style name2
+        *      entries.
+        */
+       if ((mi->module->refs == 1) && (module_method_validate(mi) < 0)) {
+               talloc_free(mi);
+               return -1;
        }
 
        if (module_instance_conf_parse(mi, mod_conf) < 0) {
index 221960141e3fd35dc2cb91c4be181c61f3a5a181..fd175057cae2f5192082b68d1244f3e65d599917 100644 (file)
@@ -34,7 +34,7 @@ extern "C" {
 
 typedef struct {
        module_t                        common;                 //!< Common fields presented by all modules.
-       module_method_binding_t const   *bindings;              //!< named methods
+       module_method_binding_t         *bindings;              //!< named methods
 } module_rlm_t;
 
 /** Cast a module_t to a module_rlm_t
diff --git a/src/lib/server/section.c b/src/lib/server/section.c
new file mode 100644 (file)
index 0000000..8745e17
--- /dev/null
@@ -0,0 +1,119 @@
+/*
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/**
+ * $Id$
+ *
+ * @file lib/server/section.c
+ * @brief Comparison functions for sections
+ *
+ * @copyright 2024 Arran Cudbard-Bell (a.cudbardb@freeradius.org)
+ */
+RCSID("$Id$")
+
+#include <freeradius-devel/server/section.h>
+#include <freeradius-devel/server/cf_util.h>
+
+#define IDENT_ANY_CMP(_a, _b) \
+       (((_a) == CF_IDENT_ANY) < ((_b) == CF_IDENT_ANY)) - (((_a) == CF_IDENT_ANY) > ((_b) == CF_IDENT_ANY))
+
+#define NULL_CMP(_a, _b) \
+       (((_a) == NULL) < ((_b) == NULL)) - (((_a) == NULL) > ((_b) == NULL))
+
+/** Compare two sections
+ *
+ * - Sections are sorted by name1, then name2.
+ * - NULLs sort before non-NULLs.
+ * - CF_IDENT_ANY sort after non-CF_IDENT_ANY.
+ * - Any other comparisons are lexicographic.
+ *
+ * @param[in] one              First section name.
+ * @param[in] two              Second section name.
+ *
+ * @return < 0 if one < two, 0 if one == two, > 0 if one > two.
+ */
+int8_t section_name_cmp(void const *one, void const *two)
+{
+       section_name_t const *a = one;
+       section_name_t const *b = two;
+       int ret;
+
+       /*
+        *      name1 isn't allowed to be NULL, for wildcard matches
+        *      we use CF_IDENT_ANY.
+        */
+       fr_assert(a->name1 && b->name1);
+
+       /*
+        *      Straight comparison between sections.
+        */
+       ret = CMP(a, b);
+       if (ret == 0) return 0;
+
+       /*
+        *      Fastpath for static strings and CF_IDENT_ANY
+        */
+       if (a->name1 == b->name1) goto name2;
+
+       /*
+        *      If either identifier is CF_IDENT_ANY, we can't strcmp.
+        */
+       if ((a->name1 == CF_IDENT_ANY) || (b->name1 == CF_IDENT_ANY)) {
+               ret = IDENT_ANY_CMP(b->name1, a->name1);
+               if (ret != 0) return ret;
+       } else {
+               ret = strcmp(a->name1, b->name1);
+               if (ret != 0) return CMP(ret, 0);
+       }
+
+name2:
+       /*
+        *      Second identifier can be NULL.
+        *
+        *      NULL name2s sort first.
+        */
+       ret = NULL_CMP(a->name2, b->name2);
+       if (ret != 0) return ret;
+
+       if (a->name2 == b->name2) return 0;
+
+       if ((a->name2 == CF_IDENT_ANY) || (b->name2 == CF_IDENT_ANY)) {
+               return IDENT_ANY_CMP(b->name2, a->name2); /* Can't strcmp */
+       }
+
+       return CMP(strcmp(a->name2, b->name2), 0);
+}
+
+/* Compare two section names
+ *
+ * Respects CF_IDENT_ANY values
+ *
+ * @param[in] a                First section name.
+ * @param[in] b                Second section name.
+ *
+ * @return true if the section names match, false otherwise.
+ */
+bool section_name_match(section_name_t const *a, section_name_t const *b)
+{
+       if ((a->name1 == CF_IDENT_ANY) || (b->name2 == CF_IDENT_ANY)) goto name2;
+
+       if (strcmp(a->name1, b->name1) != 0) return false;
+
+name2:
+       if ((a->name2 == CF_IDENT_ANY) || (b->name2 == CF_IDENT_ANY)) return true;
+
+       return (strcmp(a->name2, b->name2) == 0);
+}
index 14cc91fddc6628c906649d11bfb023c2590df4b9..34b502fb2bf2a8bb1273acebe1f0884c1d9121ed 100644 (file)
@@ -25,6 +25,8 @@
  */
 RCSIDH(section_h, "$Id$")
 
+#include <stdbool.h>
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -43,6 +45,10 @@ typedef struct {
        char const *name2;              //!< Second section name.  Usually a packet type like 'access-request', 'access-accept', etc...
 } section_name_t;
 
+int8_t section_name_cmp(void const *one, void const *two);
+
+bool section_name_match(section_name_t const *a, section_name_t const *b);
+
 #ifdef __cplusplus
 }
 #endif
index df3c6da5e40c39f572ac9439db626d06278cde94..c9e637398393bb1f1c97c87b1280b3eac7888413 100644 (file)
@@ -384,11 +384,12 @@ module_rlm_t rlm_attr_filter = {
                /*
                 *      Hack to support old configurations
                 */
+               { .section = SECTION_NAME("accounting", CF_IDENT_ANY),          .method = mod_accounting        },
                { .section = SECTION_NAME("authorize", CF_IDENT_ANY),           .method = mod_authorize         },
 
                { .section = SECTION_NAME("recv", "accounting-request"),        .method = mod_preacct           },
                { .section = SECTION_NAME("recv", CF_IDENT_ANY),                .method = mod_authorize         },
-               { .section = SECTION_NAME("accounting", CF_IDENT_ANY),          .method = mod_accounting        },
+
                { .section = SECTION_NAME("send", CF_IDENT_ANY),                .method = mod_post_auth         },
                MODULE_BINDING_TERMINATOR
        }
index 235a1c31d38287b07dc1a15ed63c5073b22ec644..999dd4281c3ae632f614e58b0eeecceb32ebc756 100644 (file)
@@ -1517,12 +1517,12 @@ module_rlm_t rlm_cache = {
                .detach         = mod_detach
        },
        .bindings = (module_method_binding_t[]){
-               { .section = SECTION_NAME("status", CF_IDENT_ANY),              .method = mod_method_status,    .method_env = &cache_method_env },
+               { .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 },
-               { .section = SECTION_NAME("update", CF_IDENT_ANY),              .method = mod_method_update,    .method_env = &cache_method_env },
+               { .section = SECTION_NAME("status", CF_IDENT_ANY),              .method = mod_method_status,    .method_env = &cache_method_env },
                { .section = SECTION_NAME("store", CF_IDENT_ANY),               .method = mod_method_store,     .method_env = &cache_method_env },
-               { .section = SECTION_NAME("clear", CF_IDENT_ANY),               .method = mod_method_clear,     .method_env = &cache_method_env },
-               { .section = SECTION_NAME("ttl", CF_IDENT_ANY),         .method = mod_method_ttl,       .method_env = &cache_method_env },
+               { .section = SECTION_NAME("ttl", CF_IDENT_ANY),                 .method = mod_method_ttl,       .method_env = &cache_method_env },
+               { .section = SECTION_NAME("update", CF_IDENT_ANY),              .method = mod_method_update,    .method_env = &cache_method_env },
                { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY),          .method = mod_cache_it,         .method_env = &cache_method_env },
                MODULE_BINDING_TERMINATOR
        }
index 334d0a2d1bad2b2f98fac9659895e4f1d235298a..3dc3476051b0659fd3b95321180cf8e624cd7e49 100644 (file)
@@ -389,10 +389,8 @@ module_rlm_t rlm_chap = {
                .instantiate    = mod_instantiate
        },
        .bindings = (module_method_binding_t[]){
-               { .section = SECTION_NAME("recv", "access-request"),    .method = mod_authorize,
-                 .method_env = &chap_autz_method_env   },
-               { .section = SECTION_NAME("authenticate", CF_IDENT_ANY),                .method = mod_authenticate,
-                 .method_env = &chap_auth_method_env   },
+               { .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 },
                MODULE_BINDING_TERMINATOR
        }
 };
index a3240e4fdb4e48963fa53d77f583d05e91418789..c26926a15b21fe125e732ee6ff27e090a89f6e67 100644 (file)
@@ -556,8 +556,8 @@ module_rlm_t rlm_couchbase = {
                .detach         = mod_detach
        },
        .bindings = (module_method_binding_t[]){
-               { .section = SECTION_NAME("recv", CF_IDENT_ANY),                .method = mod_authorize   },
                { .section = SECTION_NAME("accounting", CF_IDENT_ANY),          .method = mod_accounting   },
+               { .section = SECTION_NAME("recv", CF_IDENT_ANY),                .method = mod_authorize   },
                MODULE_BINDING_TERMINATOR
        }
 };
index 1cc1b8b72cb5d727cfbfc8d1dd3233d963efef39..62c7e1c8e15e5ce202b89b618683730e4f423df4 100644 (file)
@@ -509,14 +509,10 @@ module_rlm_t rlm_detail = {
                .instantiate    = mod_instantiate
        },
        .bindings = (module_method_binding_t[]){
-               { .section = SECTION_NAME("recv", "accounting-request"),        .method = mod_accounting,
-                 .method_env = &method_env },
-               { .section = SECTION_NAME("recv", CF_IDENT_ANY),                .method = mod_authorize,
-                 .method_env = &method_env },
-               { .section = SECTION_NAME("accounting", CF_IDENT_ANY),          .method = mod_accounting,
-                 .method_env = &method_env },
-               { .section = SECTION_NAME("send", CF_IDENT_ANY),                .method = mod_post_auth,
-                 .method_env = &method_env },
+               { .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 },
+               { .section = SECTION_NAME("recv", CF_IDENT_ANY), .method = mod_authorize, .method_env = &method_env },
+               { .section = SECTION_NAME("send", CF_IDENT_ANY), .method = mod_post_auth, .method_env = &method_env },
                MODULE_BINDING_TERMINATOR
        }
 };
index e832859ba147a32468f9945013186f559dd5b244..ce09465c30a52a03cb0cb12e559aed888681fd58 100644 (file)
@@ -481,8 +481,8 @@ module_rlm_t rlm_digest = {
                .instantiate    = mod_instantiate,
        },
         .bindings = (module_method_binding_t[]){
-                { .proto = &dict_radius,       .section = SECTION_NAME("recv", "access-request"),      .method = mod_authorize },
-                { .proto = &dict_radius,       .section = SECTION_NAME("authenticate", CF_IDENT_ANY),          .method = mod_authenticate },
+                { .section = SECTION_NAME("authenticate", CF_IDENT_ANY),       .method = mod_authenticate },
+                { .section = SECTION_NAME("recv", "access-request"), .method = mod_authorize },
                 MODULE_BINDING_TERMINATOR
         },
 };
index ded2843ebd1465add575c598d003352d665dfe99..36882ade2ec254deb57130226b1cec2f3ffddf15 100644 (file)
@@ -1197,9 +1197,9 @@ module_rlm_t rlm_eap = {
                .instantiate    = mod_instantiate,
        },
         .bindings = (module_method_binding_t[]){
-                { .section = SECTION_NAME("recv", "access-request"),   .method = mod_authorize },
-                { .section = SECTION_NAME("authenticate", CF_IDENT_ANY),               .method = mod_authenticate },
-                { .section = SECTION_NAME("send", CF_IDENT_ANY),               .method = mod_post_auth },
+                { .section = SECTION_NAME("authenticate", CF_IDENT_ANY), .method = mod_authenticate },
+                { .section = SECTION_NAME("recv", "access-request"), .method = mod_authorize },
+                { .section = SECTION_NAME("send", CF_IDENT_ANY), .method = mod_post_auth },
                 MODULE_BINDING_TERMINATOR
         }
 };
index 7cbe9ab59cbe1086a65b717975e69f46a9b659a8..2463afe9a0cb6c573db59fc7047d6fa06c7b63ba 100644 (file)
@@ -532,8 +532,7 @@ module_rlm_t rlm_exec = {
                .instantiate    = mob_instantiate
        },
         .bindings = (module_method_binding_t[]){
-                { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY),         .method = mod_exec_dispatch_oneshot,
-                 .method_env = &exec_method_env },
+                { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY), .method = mod_exec_dispatch_oneshot, .method_env = &exec_method_env },
                 MODULE_BINDING_TERMINATOR
         }
 };
index 61e81d95e2410f6acddcfd3009c9fe2fc292031c..79cd5ee539b09f0f823b67fecb63dcbe3862539e 100644 (file)
@@ -676,8 +676,7 @@ module_rlm_t rlm_files = {
                .config         = module_config,
        },
        .bindings = (module_method_binding_t[]){
-               { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY),          .method = mod_files,
-                 .method_env = &method_env     },
+               { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY), .method = mod_files, .method_env = &method_env },
                MODULE_BINDING_TERMINATOR
        }
 
index 86b9344c09a25e0e59289399be1d88af5861bd94..ccc5a5ee770bf6066dc599efe154ed8c593744dd 100644 (file)
@@ -293,7 +293,7 @@ module_rlm_t rlm_imap = {
                .thread_detach          = mod_thread_detach,
        },
        .bindings = (module_method_binding_t[]){
-               { .section = SECTION_NAME("authenticate", CF_IDENT_ANY),                .method = mod_authenticate },
+               { .section = SECTION_NAME("authenticate", CF_IDENT_ANY), .method = mod_authenticate },
                MODULE_BINDING_TERMINATOR
        }
 };
index a1677232768f25c161f8f236898e86446b4eb3f1..0619c7bcf5ef037dd511bef8c45d02d813411ea2 100644 (file)
@@ -2241,8 +2241,8 @@ module_rlm_t rlm_isc_dhcp = {
                .instantiate    = mod_instantiate
        },
        .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 },
+               { .section = SECTION_NAME("recv", CF_IDENT_ANY), .method = mod_authorize },
+               { .section = SECTION_NAME("send", CF_IDENT_ANY), .method = mod_post_auth },
                MODULE_BINDING_TERMINATOR
        }
 };
index 150272bc3effc49153a5dd6dfe129947b22d51fc..0e4e3631bef56832bab260575e3d424110f02968 100644 (file)
@@ -2734,17 +2734,12 @@ module_rlm_t rlm_ldap = {
                /*
                 *      Hack to support old configurations
                 */
-               { .section = SECTION_NAME("authorize", CF_IDENT_ANY),           .method = mod_authorize,
-                 .method_env = &authorize_method_env           },
-
-               { .section = SECTION_NAME("recv", CF_IDENT_ANY),                .method = mod_authorize,
-                 .method_env = &authorize_method_env           },
-               { .section = SECTION_NAME("accounting", CF_IDENT_ANY),          .method = mod_accounting,
-                 .method_env = &usermod_method_env             },
-               { .section = SECTION_NAME("authenticate", CF_IDENT_ANY),                .method = mod_authenticate,
-                 .method_env = &authenticate_method_env        },
-               { .section = SECTION_NAME("send", CF_IDENT_ANY),                .method = mod_post_auth,
-                 .method_env = &usermod_method_env             },
+               { .section = SECTION_NAME("accounting", CF_IDENT_ANY), .method = mod_accounting, .method_env = &usermod_method_env },
+               { .section = SECTION_NAME("authenticate", CF_IDENT_ANY), .method = mod_authenticate, .method_env = &authenticate_method_env },
+               { .section = SECTION_NAME("authorize", CF_IDENT_ANY), .method = mod_authorize, .method_env = &authorize_method_env },
+
+               { .section = SECTION_NAME("recv", CF_IDENT_ANY), .method = mod_authorize, .method_env = &authorize_method_env },
+               { .section = SECTION_NAME("send", CF_IDENT_ANY), .method = mod_post_auth, .method_env = &usermod_method_env },
                MODULE_BINDING_TERMINATOR
        }
 };
index c1c3ec2b86c734f11cb108bfd030cd2d10e08b1a..fc78a855bc99ec0a98e70c11858b5f4d9b5ca549 100644 (file)
@@ -184,13 +184,13 @@ module_rlm_t rlm_lua = {
                /*
                 *      Hack to support old configurations
                 */
-               { .section = SECTION_NAME("authorize", CF_IDENT_ANY),           .method = mod_authorize         },
+               { .section = SECTION_NAME("accounting", CF_IDENT_ANY), .method = mod_accounting },
+               { .section = SECTION_NAME("authenticate", CF_IDENT_ANY), .method = mod_authenticate },
+               { .section = SECTION_NAME("authorize", CF_IDENT_ANY), .method = mod_authorize },
 
-               { .section = SECTION_NAME("recv", "accounting-request"),        .method = mod_preacct           },
-               { .section = SECTION_NAME("recv", CF_IDENT_ANY),                .method = mod_authorize         },
-               { .section = SECTION_NAME("accounting", CF_IDENT_ANY),          .method = mod_accounting        },
-               { .section = SECTION_NAME("authenticate", CF_IDENT_ANY),                .method = mod_authenticate      },
-               { .section = SECTION_NAME("send", CF_IDENT_ANY),                .method = mod_post_auth         },
+               { .section = SECTION_NAME("recv", "accounting-request"), .method = mod_preacct },
+               { .section = SECTION_NAME("recv", CF_IDENT_ANY), .method = mod_authorize },
+               { .section = SECTION_NAME("send", CF_IDENT_ANY), .method = mod_post_auth },
                MODULE_BINDING_TERMINATOR
        }
 };
index e5181373badb893e563d92e3fe67ddcd51feb532..3bd497243c5fd1a121e76e0b69289c39579246ec 100644 (file)
@@ -521,13 +521,14 @@ module_rlm_t rlm_mruby = {
                /*
                 *      Hack to support old configurations
                 */
-               { .section = SECTION_NAME("authorize", CF_IDENT_ANY),           .method = mod_authorize         },
+               { .section = SECTION_NAME("accounting", CF_IDENT_ANY), .method = mod_accounting },
+               { .section = SECTION_NAME("authenticate", CF_IDENT_ANY), .method = mod_authenticate },
+               { .section = SECTION_NAME("authorize", CF_IDENT_ANY), .method = mod_authorize },
 
-               { .section = SECTION_NAME("recv", "accounting-request"),        .method = mod_preacct           },
-               { .section = SECTION_NAME("recv", CF_IDENT_ANY),                .method = mod_authorize         },
-               { .section = SECTION_NAME("accounting", CF_IDENT_ANY),          .method = mod_accounting        },
-               { .section = SECTION_NAME("authenticate", CF_IDENT_ANY),                .method = mod_authenticate      },
-               { .section = SECTION_NAME("send", CF_IDENT_ANY),                .method = mod_post_auth         },
+               { .section = SECTION_NAME("recv", "accounting-request"), .method = mod_preacct },
+               { .section = SECTION_NAME("recv", CF_IDENT_ANY), .method = mod_authorize },
+
+               { .section = SECTION_NAME("send", CF_IDENT_ANY), .method = mod_post_auth },
                MODULE_BINDING_TERMINATOR
        }
 };
index cb060f0e3a76c5d6b807822cb3f6a8eafefd5f6a..57e15001f5d4d9d1a7c03f52f349d31ad64ff0c8 100644 (file)
@@ -2528,10 +2528,8 @@ module_rlm_t rlm_mschap = {
                .detach         = mod_detach
        },
        .bindings = (module_method_binding_t[]){
-               { .section = SECTION_NAME("recv", CF_IDENT_ANY),                .method = mod_authorize,
-                 .method_env = &mschap_autz_method_env },
-               { .section = SECTION_NAME("authenticate", CF_IDENT_ANY),                .method = mod_authenticate,
-                 .method_env = &mschap_auth_method_env },
+               { .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 },
                MODULE_BINDING_TERMINATOR
        }
 };
index a75f02ced2df9ed20179c210fab5d7baabaca4c6..91f7c342ec1051ae5142b02fd68477096614a35c 100644 (file)
@@ -537,8 +537,8 @@ module_rlm_t rlm_opendirectory = {
                .instantiate    = mod_instantiate
        },
        .bindings = (module_method_binding_t[]){
-               { .section = SECTION_NAME("recv", CF_IDENT_ANY),                .method = mod_authorize },
-               { .section = SECTION_NAME("authenticate", CF_IDENT_ANY),                .method = mod_authenticate },
+               { .section = SECTION_NAME("authenticate", CF_IDENT_ANY), .method = mod_authenticate },
+               { .section = SECTION_NAME("recv", CF_IDENT_ANY), .method = mod_authorize },
                MODULE_BINDING_TERMINATOR
        }
 };
index 83bb4a55bfc7f8103d85f5734ef05ed10d7c69ff..0c47b006ae87094a15f1094b5fddbbbd87e0d5e6 100644 (file)
@@ -278,7 +278,7 @@ module_rlm_t rlm_pam = {
                .instantiate    = mod_instantiate
        },
        .bindings = (module_method_binding_t[]){
-               { .section = SECTION_NAME("authenticate", CF_IDENT_ANY),                .method = mod_authenticate },
+               { .section = SECTION_NAME("authenticate", CF_IDENT_ANY), .method = mod_authenticate },
                MODULE_BINDING_TERMINATOR
        }
 };
index 085aa02324a5bc2b8e37433aea6d0bcc0b142ee1..67a363fb7dfa15b5bdd8a3ac2da37a276e578651 100644 (file)
@@ -1067,13 +1067,10 @@ module_rlm_t rlm_pap = {
                /*
                 *      Hack to support old configurations
                 */
-               { .section = SECTION_NAME("authorize", CF_IDENT_ANY),           .method = mod_authorize,
-                 .method_env = &pap_method_env         },
+               { .section = SECTION_NAME("authenticate", CF_IDENT_ANY), .method = mod_authenticate, .method_env = &pap_method_env },
+               { .section = SECTION_NAME("authorize", CF_IDENT_ANY), .method = mod_authorize, .method_env = &pap_method_env },
+               { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY), .method = mod_authorize, .method_env = &pap_method_env },
 
-               { .section = SECTION_NAME("authenticate", CF_IDENT_ANY),                .method = mod_authenticate,
-                 .method_env = &pap_method_env         },
-               { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY),          .method = mod_authorize,
-                 .method_env = &pap_method_env         },
                MODULE_BINDING_TERMINATOR
        }
 };
index ac3e1a1e4074924c11f5493809cd41a7d0577852..d295a061ced28b7ca536948f51c4c3c3c1571e32 100644 (file)
@@ -617,7 +617,7 @@ module_rlm_t rlm_passwd = {
                .detach         = mod_detach
        },
        .bindings = (module_method_binding_t[]){
-               { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY),          .method = mod_passwd_map },
+               { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY), .method = mod_passwd_map },
                MODULE_BINDING_TERMINATOR
        }
 };
index f87d05fb086876f2fe7dc191a8bd26fea480009b..53a7e9e799dab4e4d0dae423ab95add966df6eed 100644 (file)
@@ -1186,13 +1186,14 @@ module_rlm_t rlm_perl = {
                /*
                 *      Hack to support old configurations
                 */
-               { .section = SECTION_NAME("authorize", CF_IDENT_ANY),           .method = mod_authorize         },
+               { .section = SECTION_NAME("accounting", CF_IDENT_ANY), .method = mod_accounting },
+               { .section = SECTION_NAME("authenticate", CF_IDENT_ANY), .method = mod_authenticate },
+               { .section = SECTION_NAME("authorize", CF_IDENT_ANY), .method = mod_authorize },
 
-               { .section = SECTION_NAME("recv", "accounting-request"),        .method = mod_preacct           },
-               { .section = SECTION_NAME("recv", CF_IDENT_ANY),                .method = mod_authorize         },
-               { .section = SECTION_NAME("accounting", CF_IDENT_ANY),          .method = mod_accounting        },
-               { .section = SECTION_NAME("authenticate", CF_IDENT_ANY),                .method = mod_authenticate      },
-               { .section = SECTION_NAME("send", CF_IDENT_ANY),                .method = mod_post_auth         },
+               { .section = SECTION_NAME("recv", "accounting-request"), .method = mod_preacct },
+               { .section = SECTION_NAME("recv", CF_IDENT_ANY), .method = mod_authorize },
+
+               { .section = SECTION_NAME("send", CF_IDENT_ANY), .method = mod_post_auth },
                MODULE_BINDING_TERMINATOR
        }
 };
index 48e65f84eaefcdc55116c9eeb5d594f6a027152f..6ef78a38d1e64c98850fe233da32106d8009b5e8 100644 (file)
@@ -1186,13 +1186,14 @@ module_rlm_t rlm_python = {
                /*
                 *      Hack to support old configurations
                 */
-               { .section = SECTION_NAME("authorize", CF_IDENT_ANY),           .method = mod_authorize         },
+               { .section = SECTION_NAME("accounting", CF_IDENT_ANY), .method = mod_accounting },
+               { .section = SECTION_NAME("authenticate", CF_IDENT_ANY), .method = mod_authenticate },
+               { .section = SECTION_NAME("authorize", CF_IDENT_ANY), .method = mod_authorize },
 
-               { .section = SECTION_NAME("recv", "accounting-request"),        .method = mod_preacct           },
-               { .section = SECTION_NAME("recv", CF_IDENT_ANY),                .method = mod_authorize         },
-               { .section = SECTION_NAME("accounting", CF_IDENT_ANY),          .method = mod_accounting        },
-               { .section = SECTION_NAME("authenticate", CF_IDENT_ANY),                .method = mod_authenticate      },
-               { .section = SECTION_NAME("send", CF_IDENT_ANY),                .method = mod_post_auth         },
+               { .section = SECTION_NAME("recv", "accounting-request"), .method = mod_preacct },
+               { .section = SECTION_NAME("recv", CF_IDENT_ANY), .method = mod_authorize },
+
+               { .section = SECTION_NAME("send", CF_IDENT_ANY), .method = mod_post_auth },
                MODULE_BINDING_TERMINATOR
        }
 };
index 5437a15c18271baa3c8cf374bb1ef1a497faa0af..1d516b783b88b3ca1888d93976f00d921921829d 100644 (file)
@@ -587,8 +587,7 @@ module_rlm_t rlm_radutmp = {
                .detach         = mod_detach
        },
        .bindings = (module_method_binding_t[]){
-               { .section = SECTION_NAME("accounting", CF_IDENT_ANY),          .method = mod_accounting,
-                 .method_env = &method_env },
+               { .section = SECTION_NAME("accounting", CF_IDENT_ANY), .method = mod_accounting, .method_env = &method_env },
                MODULE_BINDING_TERMINATOR
        }
 };
index 217cc713f9d6028c662a80be7e0346cecde95788..598b0f331ae78d70331c753e5bf3de08c5bad112 100644 (file)
@@ -1292,59 +1292,27 @@ module_rlm_t rlm_redis_ippool = {
                .instantiate    = mod_instantiate
        },
        .bindings = (module_method_binding_t[]){
-               /*
-                *      RADIUS specific
-                */
-               { .section = SECTION_NAME("recv", "access-request"),    .method = mod_alloc,
-                 .method_env = &redis_ippool_alloc_method_env },
-               { .section = SECTION_NAME("accounting", "start"),               .method = mod_update,
-                 .method_env = &redis_ippool_update_method_env },
-               { .section = SECTION_NAME("accounting", "interim-update"),      .method = mod_update,
-                 .method_env = &redis_ippool_update_method_env },
-               { .section = SECTION_NAME("accounting", "stop"),                .method = mod_release,
-                 .method_env = &redis_ippool_release_method_env },
-               { .section = SECTION_NAME("accounting", "accounting-on"),       .method = mod_bulk_release,
-                 .method_env = &redis_ippool_bulk_release_method_env },
-               { .section = SECTION_NAME("accounting", "accounting-off"),      .method = mod_bulk_release,
-                 .method_env = &redis_ippool_bulk_release_method_env },
-
-               /*
-                *      DHCPv4
-                */
-               { .section = SECTION_NAME("recv", "discover"),          .method = mod_alloc,
-                 .method_env = &redis_ippool_alloc_method_env },
-               { .section = SECTION_NAME("recv", "release"),           .method = mod_release,
-                 .method_env = &redis_ippool_release_method_env },
-               { .section = SECTION_NAME("send", "ack"),                       .method = mod_update,
-                 .method_env = &redis_ippool_update_method_env },
-
-               /*
-                *      DHCPv6
-                */
-               { .section = SECTION_NAME("recv", "solicit"),           .method = mod_alloc,
-                 .method_env = &redis_ippool_alloc_method_env },
-
-               /*
-                *      Generic
-                */
-               { .section = SECTION_NAME("recv", CF_IDENT_ANY),                .method = mod_update,
-                 .method_env = &redis_ippool_update_method_env },
-               { .section = SECTION_NAME("send", CF_IDENT_ANY),                .method = mod_alloc,
-                 .method_env = &redis_ippool_alloc_method_env },
-
-               /*
-                *      Named methods matching module operations
-                */
-               { .section = SECTION_NAME("allocate", CF_IDENT_ANY),            .method = mod_alloc,
-                 .method_env = &redis_ippool_alloc_method_env },
-               { .section = SECTION_NAME("update", CF_IDENT_ANY),              .method = mod_update,
-                 .method_env = &redis_ippool_update_method_env },
-               { .section = SECTION_NAME("renew", CF_IDENT_ANY),               .method = mod_update,
-                 .method_env = &redis_ippool_update_method_env },
-               { .section = SECTION_NAME("release", CF_IDENT_ANY),             .method = mod_release,
-                 .method_env = &redis_ippool_release_method_env },
-               { .section = SECTION_NAME("bulk-release", CF_IDENT_ANY),                .method = mod_bulk_release,
-                 .method_env = &redis_ippool_bulk_release_method_env },
+               { .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 */
+               { .section = SECTION_NAME("accounting", "Interim-Update"), .method = mod_update, .method_env = &redis_ippool_update_method_env },               /* radius */
+               { .section = SECTION_NAME("accounting", "Stop"), .method = mod_release, .method_env = &redis_ippool_release_method_env },                       /* radius */
+               { .section = SECTION_NAME("accounting", "Accounting-On"), .method = mod_bulk_release, .method_env = &redis_ippool_bulk_release_method_env },    /* radius */
+               { .section = SECTION_NAME("accounting", "Accounting-Off"), .method = mod_bulk_release, .method_env = &redis_ippool_bulk_release_method_env },   /* radius */
+
+               { .section = SECTION_NAME("recv", "Discover"), .method = mod_alloc, .method_env = &redis_ippool_alloc_method_env },                             /* dhcpv4 */
+               { .section = SECTION_NAME("recv", "Release"), .method = mod_release, .method_env = &redis_ippool_release_method_env },                          /* dhcpv4 */
+               { .section = SECTION_NAME("send", "Ack"), .method = mod_update, .method_env = &redis_ippool_update_method_env },                                /* dhcpv4 */
+
+               { .section = SECTION_NAME("recv", "Solicit"), .method = mod_alloc, .method_env = &redis_ippool_alloc_method_env },                              /* dhcpv6 */
+
+               { .section = SECTION_NAME("recv", CF_IDENT_ANY), .method = mod_update, .method_env = &redis_ippool_update_method_env },                         /* generic */
+               { .section = SECTION_NAME("send", CF_IDENT_ANY), .method = mod_alloc, .method_env = &redis_ippool_alloc_method_env },                           /* generic */
+
+               { .section = SECTION_NAME("allocate", NULL), .method = mod_alloc, .method_env = &redis_ippool_alloc_method_env },                               /* verb */
+               { .section = SECTION_NAME("update", NULL), .method = mod_update, .method_env = &redis_ippool_update_method_env },                               /* verb */
+               { .section = SECTION_NAME("renew", NULL), .method = mod_update, .method_env = &redis_ippool_update_method_env },                                /* verb */
+               { .section = SECTION_NAME("release", NULL), .method = mod_release, .method_env = &redis_ippool_release_method_env },                            /* verb */
+               { .section = SECTION_NAME("bulk-release", NULL), .method = mod_bulk_release, .method_env = &redis_ippool_bulk_release_method_env },             /* verb */
                MODULE_BINDING_TERMINATOR
        }
 };
index 42c19d274fb8f2ffa09402435441910b6008a11d..4033098bdce4cccd30cafdc9614e6c8bc7245ae1 100644 (file)
@@ -258,7 +258,7 @@ module_rlm_t rlm_rediswho = {
                .instantiate    = mod_instantiate
        },
        .bindings = (module_method_binding_t[]){
-               { .section = SECTION_NAME("accounting", CF_IDENT_ANY),          .method = mod_accounting },
+               { .section = SECTION_NAME("accounting", CF_IDENT_ANY), .method = mod_accounting },
                MODULE_BINDING_TERMINATOR
        }
 };
index a2a597e68a580d1758b208f9a928dfdc6badb982..b23ad501676ed6eb090c87b87746ea97de7eb404 100644 (file)
@@ -561,7 +561,7 @@ module_rlm_t rlm_securid = {
                .detach         = mod_detach
        },
        .bindings = (module_method_binding_t[]){
-               { .section = SECTION_NAME("authenticate", CF_IDENT_ANY),                .method = mod_authenticate },
+               { .section = SECTION_NAME("authenticate", CF_IDENT_ANY), .method = mod_authenticate },
                MODULE_BINDING_TERMINATOR
        }
 };
index 044ed5f341dc16d6444a492ff3aaa988364b3bff..d2b2c414bc8beb675ec47ac21787e95351b3105d 100644 (file)
@@ -435,7 +435,7 @@ module_rlm_t rlm_sigtran = {
                .thread_detach          = mod_thread_detach
        },
        .bindings = (module_method_binding_t[]){
-               { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY),          .method = mod_authorize },
+               { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY), .method = mod_authorize },
                MODULE_BINDING_TERMINATOR
        }
 };
index 3fa33fe8605e5d228f2651acde42acfc1d654368..3fa81f000f3af87d88ab512da880beb86ca3f900 100644 (file)
@@ -1051,10 +1051,9 @@ module_rlm_t rlm_smtp = {
                .thread_detach          = mod_thread_detach,
        },
        .bindings = (module_method_binding_t[]){
-               { .section = SECTION_NAME("mail", CF_IDENT_ANY),                .method = mod_mail,
-                 .method_env = &method_env },
-               { .section = SECTION_NAME("authenticate", CF_IDENT_ANY),                .method = mod_authenticate,
-                 .method_env = &auth_env },
+               { .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 },
+
                MODULE_BINDING_TERMINATOR
        }
 };
index 3046186dac90bb83f7a14f9b2bbdfb0837a28850..06e57ed1cc80d0c055dc2d606b4843914a273e18 100644 (file)
@@ -162,8 +162,8 @@ module_rlm_t rlm_sometimes = {
                .instantiate    = mod_instantiate
        },
        .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 },
+               { .section = SECTION_NAME("send", CF_IDENT_ANY), .method = mod_sometimes_reply },
+               { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY), .method = mod_sometimes_packet },
                MODULE_BINDING_TERMINATOR
        }
 };
index 10298f1b22cccceeddcbcf247727061d3df1ceae..6f3007ef786f53f44dcbf76300e5585105546002 100644 (file)
@@ -1998,15 +1998,11 @@ module_rlm_t rlm_sql = {
                /*
                 *      Hack to support old configurations
                 */
-               { .section = SECTION_NAME("authorize", CF_IDENT_ANY),           .method = mod_authorize,
-                 .method_env = &authorize_method_env   },
-
-               { .section = SECTION_NAME("recv", CF_IDENT_ANY),                .method = mod_authorize,
-                 .method_env = &authorize_method_env   },
-               { .section = SECTION_NAME("accounting", CF_IDENT_ANY),          .method = mod_sql_redundant,
-                 .method_env = &accounting_method_env  },
-               { .section = SECTION_NAME("send", CF_IDENT_ANY),                .method = mod_sql_redundant,
-                 .method_env = &send_method_env        },
+               { .section = SECTION_NAME("accounting", CF_IDENT_ANY), .method = mod_sql_redundant, .method_env = &accounting_method_env },
+               { .section = SECTION_NAME("authorize", CF_IDENT_ANY), .method = mod_authorize, .method_env = &authorize_method_env },
+
+               { .section = SECTION_NAME("recv", CF_IDENT_ANY), .method = mod_authorize, .method_env = &authorize_method_env },
+               { .section = SECTION_NAME("send", CF_IDENT_ANY), .method = mod_sql_redundant, .method_env = &send_method_env },
                MODULE_BINDING_TERMINATOR
        }
 };
index d68c28ec7fdc9ff2c88d068a288a8568f431ffa6..83ce70c732ded367581aff1b4c7da4f4f0bca59b 100644 (file)
@@ -585,8 +585,7 @@ module_rlm_t rlm_sqlcounter = {
                .instantiate    = mod_instantiate,
        },
        .bindings = (module_method_binding_t[]){
-               { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY),          .method = mod_authorize,
-                 .method_env = &sqlcounter_call_env },
+               { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY), .method = mod_authorize, .method_env = &sqlcounter_call_env },
                MODULE_BINDING_TERMINATOR
        }
 };
index 08d572cf702b651e791652f15afe6efdfdca47e7..f4666eafa30a9a2e9fa42621abd614cc10fe0045 100644 (file)
@@ -714,60 +714,39 @@ module_rlm_t rlm_sqlippool = {
                /*
                 *      RADIUS specific
                 */
-               { .section = SECTION_NAME("recv", "access-request"),    .method = mod_alloc,
-                 .method_env = &sqlippool_alloc_method_env },
-               { .section = SECTION_NAME("accounting", "start"),               .method = mod_common,
-                 .method_env = &sqlippool_update_method_env },
-               { .section = SECTION_NAME("accounting", "alive"),               .method = mod_common,
-                 .method_env = &sqlippool_update_method_env },
-               { .section = SECTION_NAME("accounting", "stop"),                .method = mod_common,
-                 .method_env = &sqlippool_release_method_env },
-               { .section = SECTION_NAME("accounting", "accounting-on"),       .method = mod_common,
-                 .method_env = &sqlippool_bulk_release_method_env },
-               { .section = SECTION_NAME("accounting", "accounting-off"),      .method = mod_common,
-                 .method_env = &sqlippool_bulk_release_method_env },
+               { .section = SECTION_NAME("recv", "access-request"), .method = mod_alloc, .method_env = &sqlippool_alloc_method_env },
+               { .section = SECTION_NAME("accounting", "start"), .method = mod_common, .method_env = &sqlippool_update_method_env },
+               { .section = SECTION_NAME("accounting", "alive"), .method = mod_common, .method_env = &sqlippool_update_method_env },
+               { .section = SECTION_NAME("accounting", "stop"), .method = mod_common, .method_env = &sqlippool_release_method_env },
+               { .section = SECTION_NAME("accounting", "accounting-on"), .method = mod_common, .method_env = &sqlippool_bulk_release_method_env },
+               { .section = SECTION_NAME("accounting", "accounting-off"), .method = mod_common, .method_env = &sqlippool_bulk_release_method_env },
 
                /*
                 *      DHCPv4
                 */
-               { .section = SECTION_NAME("recv", "Discover"),          .method = mod_alloc,
-                 .method_env = &sqlippool_alloc_method_env },
-               { .section = SECTION_NAME("recv", "Request"),           .method = mod_common,
-                 .method_env = &sqlippool_update_method_env },
-               { .section = SECTION_NAME("recv", "Confirm"),           .method = mod_common,
-                 .method_env = &sqlippool_update_method_env },
-               { .section = SECTION_NAME("recv", "Rebind"),            .method = mod_common,
-                 .method_env = &sqlippool_update_method_env },
-               { .section = SECTION_NAME("recv", "Renew"),             .method = mod_common,
-                 .method_env = &sqlippool_update_method_env },
-               { .section = SECTION_NAME("recv", "Release"),           .method = mod_common,
-                 .method_env = &sqlippool_release_method_env },
-               { .section = SECTION_NAME("recv", "Decline"),           .method = mod_common,
-                 .method_env = &sqlippool_mark_method_env },
+               { .section = SECTION_NAME("recv", "Discover"), .method = mod_alloc, .method_env = &sqlippool_alloc_method_env },
+               { .section = SECTION_NAME("recv", "Request"), .method = mod_common, .method_env = &sqlippool_update_method_env },
+               { .section = SECTION_NAME("recv", "Confirm"), .method = mod_common, .method_env = &sqlippool_update_method_env },
+               { .section = SECTION_NAME("recv", "Rebind"), .method = mod_common, .method_env = &sqlippool_update_method_env },
+               { .section = SECTION_NAME("recv", "Renew"), .method = mod_common, .method_env = &sqlippool_update_method_env },
+               { .section = SECTION_NAME("recv", "Release"), .method = mod_common, .method_env = &sqlippool_release_method_env },
+               { .section = SECTION_NAME("recv", "Decline"), .method = mod_common, .method_env = &sqlippool_mark_method_env },
 
                /*
                 *      Generic
                 */
-               { .section = SECTION_NAME("recv", CF_IDENT_ANY),                .method = mod_common,
-                 .method_env = &sqlippool_update_method_env },
-               { .section = SECTION_NAME("send", CF_IDENT_ANY),                .method = mod_alloc,
-                 .method_env = &sqlippool_alloc_method_env },
+               { .section = SECTION_NAME("recv", CF_IDENT_ANY), .method = mod_common, .method_env = &sqlippool_update_method_env },
+               { .section = SECTION_NAME("send", CF_IDENT_ANY),.method = mod_alloc, .method_env = &sqlippool_alloc_method_env },
 
                /*
                 *      Named methods matching module operations
                 */
-               { .section = SECTION_NAME("allocate", CF_IDENT_ANY),            .method = mod_alloc,
-                 .method_env = &sqlippool_alloc_method_env },
-               { .section = SECTION_NAME("update", CF_IDENT_ANY),              .method = mod_common,
-                 .method_env = &sqlippool_update_method_env },
-               { .section = SECTION_NAME("renew", CF_IDENT_ANY),               .method = mod_common,
-                 .method_env = &sqlippool_update_method_env },
-               { .section = SECTION_NAME("release", CF_IDENT_ANY),             .method = mod_common,
-                 .method_env = &sqlippool_release_method_env },
-               { .section = SECTION_NAME("bulk-release", CF_IDENT_ANY),                .method = mod_common,
-                 .method_env = &sqlippool_bulk_release_method_env },
-               { .section = SECTION_NAME("mark", CF_IDENT_ANY),                .method = mod_common,
-                 .method_env = &sqlippool_mark_method_env },
+               { .section = SECTION_NAME("allocate", NULL), .method = mod_alloc, .method_env = &sqlippool_alloc_method_env },
+               { .section = SECTION_NAME("update", NULL), .method = mod_common, .method_env = &sqlippool_update_method_env },
+               { .section = SECTION_NAME("renew", NULL), .method = mod_common, .method_env = &sqlippool_update_method_env },
+               { .section = SECTION_NAME("release", NULL), .method = mod_common, .method_env = &sqlippool_release_method_env },
+               { .section = SECTION_NAME("bulk-release", NULL), .method = mod_common, .method_env = &sqlippool_bulk_release_method_env },
+               { .section = SECTION_NAME("mark", NULL),.method = mod_common,.method_env = &sqlippool_mark_method_env },
 
                MODULE_BINDING_TERMINATOR
        }
index 4d0f78db79fcab1b5b8af6538c08a048b5a4a732..b7ec90dacc76b79b98f85644f8b8fc8e61402c72 100644 (file)
@@ -459,7 +459,7 @@ module_rlm_t rlm_stats = {
                .thread_detach          = mod_thread_detach
        },
        .bindings = (module_method_binding_t[]){
-               { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY),          .method = mod_stats },
+               { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY), .method = mod_stats },
                MODULE_BINDING_TERMINATOR
        }
 };
index 9ea0f6c2f533b9dfbb3f1d7706bda4f5438a039c..d49e02d45ed9d8c614bd2afd77f4bc7a53d75758 100644 (file)
@@ -265,7 +265,7 @@ module_rlm_t rlm_tacacs = {
                .instantiate    = mod_instantiate,
        },
        .bindings = (module_method_binding_t[]){
-               { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY),  .method = mod_process },
+               { .section = SECTION_NAME(CF_IDENT_ANY, CF_IDENT_ANY), .method = mod_process },
                MODULE_BINDING_TERMINATOR
        },
 };
index ba3f1354ec4afca94ef9c3b92093641ce7e97706..369ca2a7589ae33227226f5c747c33f135d0b4d6 100644 (file)
@@ -529,17 +529,18 @@ module_rlm_t rlm_test = {
                .thread_detach          = mod_thread_detach
        },
        .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 },
                { .section = SECTION_NAME("authorize", CF_IDENT_ANY),           .method = mod_authorize },
 
+               { .section = SECTION_NAME("name1_null", NULL),                  .method = mod_return },
+
+               { .section = SECTION_NAME("recv", "access-challenge"),          .method = mod_return },
                { .section = SECTION_NAME("recv", "accounting-request"),        .method = mod_preacct },
                { .section = SECTION_NAME("recv", CF_IDENT_ANY),                .method = mod_authorize },
-               { .section = SECTION_NAME("accounting", CF_IDENT_ANY),          .method = mod_accounting },
-               { .section = SECTION_NAME("authenticate", CF_IDENT_ANY),        .method = mod_authenticate },
 
-               { .section = SECTION_NAME("recv", "access-challenge"),          .method = mod_return },
-               { .section = SECTION_NAME("name1_null", NULL),                  .method = mod_return },
-               { .section = SECTION_NAME("send", CF_IDENT_ANY),                .method = mod_return },
                { .section = SECTION_NAME("retry", NULL),                       .method = mod_retry },
+               { .section = SECTION_NAME("send", CF_IDENT_ANY),                .method = mod_return },
 
                MODULE_BINDING_TERMINATOR
        }
index 4946b442eb6bb6c2513ae181a987dc2a4646ea1f..52c2471d6a41858b807d9df2d8cfbf182671c638 100644 (file)
@@ -182,7 +182,7 @@ module_rlm_t rlm_totp = {
                .instantiate    = mod_instantiate
        },
        .bindings = (module_method_binding_t[]){
-               { .section = SECTION_NAME("authenticate", CF_IDENT_ANY),                .method = mod_authenticate,     .method_env = &method_env },
+               { .section = SECTION_NAME("authenticate", CF_IDENT_ANY), .method = mod_authenticate, .method_env = &method_env },
                MODULE_BINDING_TERMINATOR
        }
 };
index a1762977dd09b7eb0c1592c519b6fe5dc303a4eb..f7f19a154f1733b0918c9b7394b895fcb3827a7b 100644 (file)
@@ -561,9 +561,9 @@ module_rlm_t rlm_unix = {
                .bootstrap      = mod_bootstrap
        },
        .bindings = (module_method_binding_t[]){
-               { .section = SECTION_NAME("recv", "access-request"),    .method = mod_authorize },
-               { .section = SECTION_NAME("send", "accounting-response"),       .method = mod_accounting },     /* Backwards compatibility */
-               { .section = SECTION_NAME("accounting", CF_IDENT_ANY),          .method = mod_accounting },
+               { .section = SECTION_NAME("accounting", CF_IDENT_ANY), .method = mod_accounting },
+               { .section = SECTION_NAME("recv", "access-request"), .method = mod_authorize },
+               { .section = SECTION_NAME("send", "accounting-response"), .method = mod_accounting },   /* Backwards compatibility */
                MODULE_BINDING_TERMINATOR
        }
 };
index 1343e422d255ff9064a2960868ee6dc3ee0702cc..46e4a1933ef8d9e9067084b2a31bc9771b59e176 100644 (file)
@@ -461,9 +461,9 @@ module_rlm_t rlm_wimax = {
                .config         = module_config,
        },
        .bindings = (module_method_binding_t[]){
-               { .proto = &dict_radius,        .section = SECTION_NAME("recv", "accounting-request"),  .method = mod_preacct },
-               { .proto = &dict_radius,        .section = SECTION_NAME("recv", CF_IDENT_ANY),          .method = mod_authorize },
-               { .proto = &dict_radius,        .section = SECTION_NAME("send", CF_IDENT_ANY),          .method = mod_post_auth },
+               { .section = SECTION_NAME("recv", "accounting-request"), .method = mod_preacct },
+               { .section = SECTION_NAME("recv", CF_IDENT_ANY), .method = mod_authorize },
+               { .section = SECTION_NAME("send", CF_IDENT_ANY), .method = mod_post_auth },
                MODULE_BINDING_TERMINATOR
        }
 };
index 09e03f08a8626586e52afb0696ccbd665dea72e7..f878efc418c48f1aad22c4505d0c5977eaf2f52c 100644 (file)
@@ -578,10 +578,8 @@ module_rlm_t rlm_winbind = {
                .detach         = mod_detach
        },
        .bindings = (module_method_binding_t[]){
-               { .section = SECTION_NAME("recv", CF_IDENT_ANY),                .method = mod_authorize,
-                 .method_env = &winbind_autz_method_env },
-               { .section = SECTION_NAME("authenticate", CF_IDENT_ANY),                .method = mod_authenticate,
-                 .method_env = &winbind_auth_method_env },
+               { .section = SECTION_NAME("authenticate", CF_IDENT_ANY), .method = mod_authenticate, .method_env = &winbind_auth_method_env },
+               { .section = SECTION_NAME("recv", CF_IDENT_ANY), .method = mod_authorize, .method_env = &winbind_autz_method_env },
                MODULE_BINDING_TERMINATOR
        }
 };
index 42c71a6117ad034470f11d508d11ce6e3ab3a648..c55462d0bd5d1824af49566f751cff3ef1e0d33c 100644 (file)
@@ -469,8 +469,8 @@ module_rlm_t rlm_yubikey = {
 #endif
        },
        .bindings = (module_method_binding_t[]){
-               { .section = SECTION_NAME("recv", "access-request"),    .method = mod_authorize },
-               { .section = SECTION_NAME("authenticate", CF_IDENT_ANY),                .method = mod_authenticate },
+               { .section = SECTION_NAME("authenticate", CF_IDENT_ANY), .method = mod_authenticate },
+               { .section = SECTION_NAME("recv", "access-request"), .method = mod_authorize },
                MODULE_BINDING_TERMINATOR
        }
 };