fr_slen_t xlat_tokenize_expression(TALLOC_CTX *ctx, xlat_exp_head_t **out, fr_sbuff_t *in,
fr_sbuff_parse_rules_t const *p_rules, tmpl_rules_t const *t_rules)
{
+ fr_assert(!t_rules || !t_rules->xlat.runtime_el);
+
return xlat_tokenize_expression_internal(ctx, out, in, p_rules, t_rules, false);
}
terminal_rules->terminals,
&bracket_terms));
MEM(head = xlat_exp_head_alloc(ctx));
- head->el = el;
if (t_rules) {
my_rules = *t_rules;
bool instantiated; //!< temporary flag until we fix more things
fr_dict_t const *dict; //!< dictionary for this xlat
- fr_event_list_t *el; //! for run-time xlats
-
#ifndef NDEBUG
char const * _CONST file; //!< File where the xlat was allocated.
int line; //!< Line where the xlat was alocated.
goto error;
}
xlat_flags_merge(&node->flags, &node->call.args->flags);
- node->call.args->el = head->el;
/*
* Check we have all the required arguments
MEM(node = xlat_exp_alloc(head, XLAT_TMPL, NULL, 0));
MEM(node->vpt = tmpl_alloc(node, TMPL_TYPE_XLAT, T_BARE_WORD, "", 1));
- if (head->el) {
- ret = xlat_tokenize_ephemeral_expression(node->vpt, &child, head->el, in, &attr_p_rules, t_rules);
+ if (t_rules->xlat.runtime_el) {
+ ret = xlat_tokenize_ephemeral_expression(node->vpt, &child, t_rules->xlat.runtime_el, in, &attr_p_rules, t_rules);
} else {
ret = xlat_tokenize_expression(node->vpt, &child, in, &attr_p_rules, t_rules);
}
xlat_exp_head_t *head;
MEM(head = xlat_exp_head_alloc(ctx));
- head->el = el;
if (t_rules) {
head->dict = t_rules->attr.dict_def;