From: Alan T. DeKok Date: Thu, 12 May 2022 00:50:53 +0000 (-0400) Subject: xlat_resolve() no longer needs flags X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b819117798fbae93a3ae932707ee63ea5927d7a5;p=thirdparty%2Ffreeradius-server.git xlat_resolve() no longer needs flags --- diff --git a/src/bin/unit_test_module.c b/src/bin/unit_test_module.c index 296ddc247ae..adee93ce965 100644 --- a/src/bin/unit_test_module.c +++ b/src/bin/unit_test_module.c @@ -445,7 +445,7 @@ static bool do_xlats(fr_event_list_t *el, char const *filename, FILE *fp) continue; } - if (xlat_resolve(head, NULL, NULL) < 0) { + if (xlat_resolve(head, NULL) < 0) { talloc_free(xlat_ctx); snprintf(output, sizeof(output), "ERROR resolving xlat: %s", fr_strerror()); continue; diff --git a/src/lib/server/tmpl_tokenize.c b/src/lib/server/tmpl_tokenize.c index 7ccfdd7b832..5f90726c008 100644 --- a/src/lib/server/tmpl_tokenize.c +++ b/src/lib/server/tmpl_tokenize.c @@ -3557,7 +3557,7 @@ static inline CC_HINT(always_inline) int tmpl_attr_resolve(tmpl_t *vpt, tmpl_res static inline CC_HINT(always_inline) int tmpl_xlat_resolve(tmpl_t *vpt, tmpl_res_rules_t const *tr_rules) { - if (xlat_resolve(vpt->data.xlat.ex, NULL, + if (xlat_resolve(vpt->data.xlat.ex, &(xlat_res_rules_t){ .tr_rules = tr_rules, .allow_unresolved = false diff --git a/src/lib/unlang/xlat.h b/src/lib/unlang/xlat.h index 7432e8ae2bb..1927959e97b 100644 --- a/src/lib/unlang/xlat.h +++ b/src/lib/unlang/xlat.h @@ -328,7 +328,7 @@ bool xlat_needs_resolving(xlat_exp_head_t const *head); bool xlat_to_string(TALLOC_CTX *ctx, char **str, xlat_exp_head_t **head); -int xlat_resolve(xlat_exp_head_t *head, xlat_flags_t *flags, xlat_res_rules_t const *xr_rules); +int xlat_resolve(xlat_exp_head_t *head, xlat_res_rules_t const *xr_rules); xlat_t *xlat_register_module(TALLOC_CTX *ctx, module_inst_ctx_t const *mctx, char const *name, xlat_func_t func, xlat_flags_t const *flags); diff --git a/src/lib/unlang/xlat_builtin.c b/src/lib/unlang/xlat_builtin.c index 5bc55584ff3..72fbabb551b 100644 --- a/src/lib/unlang/xlat_builtin.c +++ b/src/lib/unlang/xlat_builtin.c @@ -1611,7 +1611,7 @@ static xlat_action_t xlat_func_eval(TALLOC_CTX *ctx, fr_dcursor_t *out, * unresolved. */ if (rctx->ex->flags.needs_resolving && - (xlat_resolve(rctx->ex, NULL, &(xlat_res_rules_t){ .allow_unresolved = false }) < 0)) { + (xlat_resolve(rctx->ex, &(xlat_res_rules_t){ .allow_unresolved = false }) < 0)) { RPEDEBUG("Unresolved expansion functions in expansion"); goto error; diff --git a/src/lib/unlang/xlat_tokenize.c b/src/lib/unlang/xlat_tokenize.c index 755fcd692b8..09e81b4d9d4 100644 --- a/src/lib/unlang/xlat_tokenize.c +++ b/src/lib/unlang/xlat_tokenize.c @@ -1651,19 +1651,18 @@ bool xlat_to_string(TALLOC_CTX *ctx, char **str, xlat_exp_head_t **head) /** Walk over an xlat tree recursively, resolving any unresolved functions or references * * @param[in,out] head of xlat tree to resolve. - * @param[in,out] flags that control evaluation and parsing. * @param[in] xr_rules Specifies rules to use for resolution passes after initial * tokenization. * @return * - 0 on success. * - -1 on failure. */ -int xlat_resolve(xlat_exp_head_t *head, xlat_flags_t *flags, xlat_res_rules_t const *xr_rules) +int xlat_resolve(xlat_exp_head_t *head, xlat_res_rules_t const *xr_rules) { static xlat_res_rules_t xr_default; xlat_flags_t our_flags; - if (!head->flags.needs_resolving && flags && !flags->needs_resolving) return 0; /* Already done */ + if (!head->flags.needs_resolving) return 0; /* Already done */ if (!xr_rules) xr_rules = &xr_default; @@ -1675,7 +1674,7 @@ int xlat_resolve(xlat_exp_head_t *head, xlat_flags_t *flags, xlat_res_rules_t co switch (node->type) { case XLAT_GROUP: - if (xlat_resolve(node->group, NULL, xr_rules) < 0) return -1; + if (xlat_resolve(node->group, xr_rules) < 0) return -1; node->flags = node->group->flags; break; @@ -1685,8 +1684,8 @@ int xlat_resolve(xlat_exp_head_t *head, xlat_flags_t *flags, xlat_res_rules_t co * Do resolution for a OR b */ case XLAT_ALTERNATE: - if ((xlat_resolve(node->alternate[0], NULL, xr_rules) < 0) || - (xlat_resolve(node->alternate[1], NULL, xr_rules) < 0)) return -1; + if ((xlat_resolve(node->alternate[0], xr_rules) < 0) || + (xlat_resolve(node->alternate[1], xr_rules) < 0)) return -1; node->flags = node->alternate[0]->flags; xlat_flags_merge(&node->flags, &node->alternate[1]->flags); @@ -1696,7 +1695,7 @@ int xlat_resolve(xlat_exp_head_t *head, xlat_flags_t *flags, xlat_res_rules_t co * A resolved function with unresolved args */ case XLAT_FUNC: - if (xlat_resolve(node->call.args, NULL, xr_rules) < 0) return -1; + if (xlat_resolve(node->call.args, xr_rules) < 0) return -1; node->flags = node->call.func->flags; xlat_flags_merge(&node->flags, &node->call.args->flags); break; @@ -1712,7 +1711,7 @@ int xlat_resolve(xlat_exp_head_t *head, xlat_flags_t *flags, xlat_res_rules_t co * We can't tell if it's just the function * that needs resolving or its children too. */ - if (xlat_resolve(node->call.args, NULL, xr_rules) < 0) return -1; + if (xlat_resolve(node->call.args, xr_rules) < 0) return -1; /* * Try and find the function @@ -1831,7 +1830,6 @@ int xlat_resolve(xlat_exp_head_t *head, xlat_flags_t *flags, xlat_res_rules_t co } head->flags = our_flags; - if (flags) *flags = our_flags; /* Update parent flags - not merge, replacement */ return 0; }