From: Alan T. DeKok Date: Sat, 8 Mar 2025 12:50:48 +0000 (-0500) Subject: add migration flag for xlat functions X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fe6b986261acaac7f5ecac28490dee2f8a45be09;p=thirdparty%2Ffreeradius-server.git add migration flag for xlat functions to treat the arguments as bare words or as expressions --- diff --git a/src/lib/server/main_config.c b/src/lib/server/main_config.c index 27c7d3feea..8fb8f5051f 100644 --- a/src/lib/server/main_config.c +++ b/src/lib/server/main_config.c @@ -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; diff --git a/src/lib/server/main_config.h b/src/lib/server/main_config.h index f623cbdee9..c7dee6b981 100644 --- a/src/lib/server/main_config.h +++ b/src/lib/server/main_config.h @@ -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); diff --git a/src/tests/keywords/all.mk b/src/tests/keywords/all.mk index 8decd268ce..0fdf8d618d 100644 --- a/src/tests/keywords/all.mk +++ b/src/tests/keywords/all.mk @@ -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 \