]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
move on_read callback to separate struct element
authorAlan T. DeKok <aland@freeradius.org>
Fri, 19 Feb 2021 14:26:48 +0000 (09:26 -0500)
committerAlan T. DeKok <aland@freeradius.org>
Fri, 19 Feb 2021 14:26:48 +0000 (09:26 -0500)
in preparation for getting rid of FR_TYPE_ON_READ

src/lib/server/cf_file.c
src/lib/server/cf_parse.h
src/lib/server/cf_util.c
src/lib/server/main_config.c
src/lib/server/virtual_servers.c

index 73596b1ce2ea1431a1ee57b438f7ce84b4e053c7..fe08df044eb6aff1f273a691cbfa09f1688ae5ea 100644 (file)
@@ -1571,7 +1571,7 @@ static int add_pair(CONF_SECTION *parent, char const *attr, char const *value,
                return 0;
        }
 
-       return rule->func(parent, NULL, NULL, cf_pair_to_item(cp), rule);
+       return rule->on_read(parent, NULL, NULL, cf_pair_to_item(cp), rule);
 }
 
 static fr_table_ptr_sorted_t unlang_keywords[] = {
index 0d97a55dad953ec010de05d7c3110579e07a9abe..93d6c8bab147c11f3fd86c29b9d9ee0a6e68e4ae 100644 (file)
@@ -426,6 +426,9 @@ struct CONF_PARSER {
        cf_parse_t      func;                   //!< Override default parsing behaviour for the specified type with
                                                //!< a custom parsing function.
 
+       cf_parse_t      on_read;                //!< Function to call as the item is being read, just after
+                                               //!< it has been allocated and initialized.
+
        void const      *uctx;                  //!< User data accessible by the #cf_parse_t func.  Useful for
                                                ///< building reusable functions.
 
index 9ab8e077102b85bed0ce5fd1d590797786cb64bf..50df317b9657dba4eb100cbb82658f6a4b2fc7b1 100644 (file)
@@ -766,10 +766,10 @@ CONF_SECTION *_cf_section_alloc(TALLOC_CTX *ctx, CONF_SECTION *parent,
                cd = cf_data_find(CF_TO_ITEM(parent), CONF_PARSER, name1);
                if (cd) {
                        rule = cf_data_value(cd);
-                       if (rule->func &&
+                       if (rule->on_read &&
                            (FR_BASE_TYPE(rule->type) == FR_TYPE_SUBSECTION) &&
                            ((rule->type & FR_TYPE_ON_READ) != 0)) {
-                               if (rule->func(ctx, NULL, NULL, cf_section_to_item(cs), rule) < 0) {
+                               if (rule->on_read(ctx, NULL, NULL, cf_section_to_item(cs), rule) < 0) {
                                        talloc_free(cs);
                                        return NULL;
                                }
index 3858e8d577e87d81cffcee8259c12a74a4ba7d1d..771b6f6a2946deb5bfe05c958c20f3c457563a3e 100644 (file)
@@ -125,7 +125,7 @@ static const CONF_PARSER lib_dir_on_read_config[] = {
        { FR_CONF_OFFSET_IS_SET("timestamp", FR_TYPE_BOOL, main_config_t, log_timestamp) },
 
        { FR_CONF_OFFSET("libdir", FR_TYPE_STRING | FR_TYPE_ON_READ, main_config_t, lib_dir), .dflt = "${prefix}/lib",
-         .func = lib_dir_parse },
+         .on_read = lib_dir_parse },
 
        CONF_PARSER_TERMINATOR
 };
index 96bae318a3547a39364e118148569f9ce2fe1aef..5dece9deab9b28849d9b92e08d7e53717dc41038 100644 (file)
@@ -109,7 +109,7 @@ static const CONF_PARSER listen_on_read_config[] = {
        { FR_CONF_OFFSET("listen", FR_TYPE_SUBSECTION | FR_TYPE_MULTI | FR_TYPE_OK_MISSING | FR_TYPE_ON_READ,
                         fr_virtual_server_t, listener), \
                         .subcs_size = sizeof(fr_virtual_listen_t), .subcs_type = "fr_virtual_listen_t",
-                        .func = listen_on_read },
+                        .on_read = listen_on_read },
 
        CONF_PARSER_TERMINATOR
 };
@@ -122,7 +122,7 @@ const CONF_PARSER virtual_servers_on_read_config[] = {
        { FR_CONF_POINTER("server", FR_TYPE_SUBSECTION | FR_TYPE_MULTI | FR_TYPE_OK_MISSING | FR_TYPE_ON_READ, &virtual_servers), \
                          .subcs_size = sizeof(fr_virtual_server_t), .subcs_type = "fr_virtual_server_t",
                          .subcs = (void const *) listen_on_read_config, .ident2 = CF_IDENT_ANY,
-                         .func = server_on_read },
+                         .on_read = server_on_read },
 
        CONF_PARSER_TERMINATOR
 };