]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
add migration flag for xlat functions
authorAlan T. DeKok <aland@freeradius.org>
Sat, 8 Mar 2025 12:50:48 +0000 (07:50 -0500)
committerAlan T. DeKok <aland@freeradius.org>
Sat, 8 Mar 2025 13:40:38 +0000 (08:40 -0500)
to treat the arguments as bare words or as expressions

src/lib/server/main_config.c
src/lib/server/main_config.h
src/tests/keywords/all.mk

index 27c7d3feea8100f810e2becabbab51ed4486b3c0..8fb8f5051f3a151e26d0c033c7f72cd05cc00116 100644 (file)
@@ -188,6 +188,7 @@ static const conf_parser_t thread_config[] = {
  *     Migration configuration.
  */
 extern bool tmpl_require_enum_prefix;
+bool xlat_func_bare_words = false;
 
 static const conf_parser_t migrate_config[] = {
        { FR_CONF_OFFSET_FLAGS("rewrite_update", CONF_FLAG_HIDDEN, main_config_t, rewrite_update) },
@@ -1502,6 +1503,7 @@ static fr_table_num_ordered_t config_arg_table[] = {
        { L("forbid_update"),            offsetof(main_config_t, forbid_update) },
        { L("require_enum_prefix"),      offsetof(main_config_t, require_enum_prefix) },
        { L("v3_enum_names"),            offsetof(main_config_t, require_enum_prefix) },
+       { L("xlat_func_bare_words"),     offsetof(main_config_t, xlat_func_bare_words) },
 };
 static size_t config_arg_table_len = NUM_ELEMENTS(config_arg_table);
 
@@ -1540,6 +1542,7 @@ int main_config_parse_option(char const *value)
        }
 
        if (out == &main_config->require_enum_prefix) tmpl_require_enum_prefix = box.vb_bool;
+       if (out == &main_config->xlat_func_bare_words) xlat_func_bare_words = box.vb_bool;
 
        *out = box.vb_bool;
 
index f623cbdee974ddeae2e573524f03d94ffa2e45b7..c7dee6b981c2391d46fc444c97449e181040ba78 100644 (file)
@@ -163,6 +163,7 @@ struct main_config_s {
        bool            forbid_update;                  //!< forbid "update" sections
        bool            require_enum_prefix;            //!< require "::" for enum parsing.  They're always printed with this
        bool            call_env_forbid_ampersand;      //!< for help with migration
+       bool            xlat_func_bare_words;           //!< %foo(0xabcdef) is string (yes) versus binary blob (no)
 };
 
 void                   main_config_name_set_default(main_config_t *config, char const *name, bool overwrite_config);
index 8decd268ce1ed77508f58195b6ac2d64b902d8e9..0fdf8d618d79072484571b85a4a0918cedc00c4b 100644 (file)
@@ -152,7 +152,7 @@ KEYWORD_LIBS        := $(addsuffix .la,$(addprefix rlm_,$(KEYWORD_MODULES))) rlm_csv.la
 #      (make -k test.keywords 2>&1) | grep 'KEYWORD=' | sed 's/KEYWORD=//;s/ .*$//'
 #
 $(OUTPUT)/%: $(DIR)/% $(TEST_BIN_DIR)/unit_test_module | $(KEYWORD_RADDB) $(KEYWORD_LIBS) build.raddb rlm_test.la rlm_csv.la rlm_unpack.la
-       $(eval CMD:=KEYWORD=$(notdir $@) $(TEST_BIN)/unit_test_module $(NEW_COND) $(UNIT_TEST_KEYWORD_ARGS.$(subst -,_,$(notdir $@))) -D share/dictionary -d src/tests/keywords/ -i "$@.attrs" -f "$@.attrs" -r "$@" -xx )
+       $(eval CMD:=KEYWORD=$(notdir $@) $(TEST_BIN)/unit_test_module $(NEW_COND) -S xlat_func_bare_words=yes $(UNIT_TEST_KEYWORD_ARGS.$(subst -,_,$(notdir $@))) -D share/dictionary -d src/tests/keywords/ -i "$@.attrs" -f "$@.attrs" -r "$@" -xx )
        @echo "KEYWORD-TEST $(notdir $@)"
        ${Q}if ! $(CMD) > "$@.log" 2>&1 || ! test -f "$@"; then \
                if ! grep ERROR $< 2>&1 > /dev/null; then \