]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Add htrie_type option to rlm_files
authorNick Porter <nick@portercomputing.co.uk>
Thu, 16 Oct 2025 13:28:13 +0000 (14:28 +0100)
committerNick Porter <nick@portercomputing.co.uk>
Mon, 20 Oct 2025 07:32:29 +0000 (08:32 +0100)
src/modules/rlm_cache/drivers/rlm_cache_htrie/rlm_cache_htrie.c
src/modules/rlm_files/rlm_files.c

index af2776b908f9d5f9b9d184dad6bc9b193ea9d2dc..d2aede9ee4d552b012cdfa61affd49ca88a6f1a5 100644 (file)
@@ -60,7 +60,7 @@ typedef struct {
 } rlm_cache_htrie_entry_t;
 
 static conf_parser_t driver_config[] = {
-       { FR_CONF_OFFSET("type", rlm_cache_htrie_t, htype), .dflt = "auto",
+       { FR_CONF_OFFSET("htrie_type", rlm_cache_htrie_t, htype), .dflt = "auto",
          .func = cf_htrie_type_parse,
          .uctx = &(cf_table_parse_ctx_t){ .table = fr_htrie_type_table, .len = &fr_htrie_type_table_len }  },
        CONF_PARSER_TERMINATOR
index b8f806df3ed437ad31a55878d07a580b73ae9723..0be1642dbd4558c4f2a2f31086fea69def274492 100644 (file)
@@ -39,6 +39,7 @@ RCSID("$Id$")
 typedef struct {
        char const      *filename;
        bool            v3_compat;
+       fr_htrie_type_t htype;
 } rlm_files_t;
 
 /**  Structure produced by custom call_env parser
@@ -80,6 +81,8 @@ fr_dict_attr_autoload_t rlm_files_dict_attr[] = {
 static const conf_parser_t module_config[] = {
        { FR_CONF_OFFSET_FLAGS("filename", CONF_FLAG_REQUIRED | CONF_FLAG_FILE_READABLE, rlm_files_t, filename) },
        { FR_CONF_OFFSET("v3_compat", rlm_files_t, v3_compat) },
+       { FR_CONF_OFFSET("type", rlm_files_t, htype), .dflt = "auto",
+         .func = cf_table_parse_int, .uctx = &(cf_table_parse_ctx_t){ .table = fr_htrie_type_table, .len = &fr_htrie_type_table_len } },
        CONF_PARSER_TERMINATOR
 };
 
@@ -126,7 +129,11 @@ static int getrecv_filename(TALLOC_CTX *ctx, rlm_files_t const *inst, fr_htrie_t
                return -1;
        }
 
-       htype = fr_htrie_hint(data_type);
+       if (inst->htype == FR_HTRIE_AUTO) {
+               htype = fr_htrie_hint(data_type);
+       } else {
+               htype = inst->htype;
+       }
 
        /*
         *      Walk through the 'users' file list