tmpl_attr_set_request_ref(map->lhs, rules->attr.request_def);
tmpl_attr_set_list(map->lhs, rules->attr.list_def);
- tmpl_print(&buffer_sbuff, map->lhs, TMPL_ATTR_REF_PREFIX_YES, NULL);
+ tmpl_print(&buffer_sbuff, map->lhs, TMPL_ATTR_REF_PREFIX_AUTO, NULL);
tmpl_set_name(map->lhs, T_BARE_WORD, fr_sbuff_start(&buffer_sbuff), -1);
/*
FR_SBUFF_IN_SPRINTF_RETURN(&our_out, "<%s>",
fr_type_to_str(tmpl_rules_cast(map->lhs)));
}
- FR_SBUFF_RETURN(tmpl_print_quoted, &our_out, map->lhs, TMPL_ATTR_REF_PREFIX_YES);
+ FR_SBUFF_RETURN(tmpl_print_quoted, &our_out, map->lhs, TMPL_ATTR_REF_PREFIX_AUTO);
/*
* Print separators and operator
/*
* Print the RHS.
*/
- FR_SBUFF_RETURN(tmpl_print_quoted, &our_out, map->rhs, TMPL_ATTR_REF_PREFIX_YES);
+ FR_SBUFF_RETURN(tmpl_print_quoted, &our_out, map->rhs, TMPL_ATTR_REF_PREFIX_AUTO);
FR_SBUFF_SET_RETURN(out, &our_out);
}
* the quoting based on the data type.
*/
fr_pair_aprint_value_quoted(request, &value, vp, quote);
- tmpl_print(&FR_SBUFF_OUT(buffer, sizeof(buffer)), map->rhs, TMPL_ATTR_REF_PREFIX_YES, NULL);
+ tmpl_print(&FR_SBUFF_OUT(buffer, sizeof(buffer)), map->rhs, TMPL_ATTR_REF_PREFIX_AUTO, NULL);
rhs = talloc_typed_asprintf(request, "%s -> %s", buffer, value);
}
break;
switch (map->lhs->type) {
case TMPL_TYPE_ATTR:
- tmpl_print(&FR_SBUFF_OUT(buffer, sizeof(buffer)), map->lhs, TMPL_ATTR_REF_PREFIX_YES, NULL);
+ tmpl_print(&FR_SBUFF_OUT(buffer, sizeof(buffer)), map->lhs, TMPL_ATTR_REF_PREFIX_AUTO, NULL);
RDEBUG2("%s %s %s", buffer, fr_table_str_by_value(fr_tokens_table, vp ? vp->op : map->op, "<INVALID>"), rhs);
break;
* We need to rebuild the attribute name, to be the
* one we copied from the source list.
*/
- slen = tmpl_print(&FR_SBUFF_OUT(attr, sizeof(attr)), vpt, TMPL_ATTR_REF_PREFIX_YES,
+ slen = tmpl_print(&FR_SBUFF_OUT(attr, sizeof(attr)), vpt, TMPL_ATTR_REF_PREFIX_AUTO,
fr_value_escape_by_quote[list->quote]);
if (slen < 0) {
fr_strerror_printf("Serialized attribute too long. Must be < "
fr_dict_attr_err_t dict_err;
fr_dict_attr_t const *our_parent = parent;
- fr_assert(at_rules->prefix != TMPL_ATTR_REF_PREFIX_YES);
-
fr_sbuff_marker(&m_s, name);
if (depth > FR_DICT_MAX_TLV_STACK) {
at_rules = &t_rules->attr;
- fr_assert(at_rules->prefix != TMPL_ATTR_REF_PREFIX_YES);
-
if (err) *err = TMPL_ATTR_ERROR_NONE;
if (!fr_sbuff_extend(&our_name)) {
fr_assert(ar != NULL);
if (tmpl_attr_is_list_attr(ar)) vpt->rules.attr.list_def = ar->ar_da;
-
- fr_assert(vpt->rules.attr.prefix != TMPL_ATTR_REF_PREFIX_YES);
-
}
if (!tmpl_substr_terminal_check(&our_name, p_rules)) {
if (slen > 0) goto done_bareword;
fr_assert(!*out);
- fr_assert(t_rules->attr.prefix != TMPL_ATTR_REF_PREFIX_YES);
-
/*
* See if it's an attribute reference
* without the prefix.
fr_assert(tmpl_is_attr_unresolved(vpt) || tmpl_is_attr(vpt));
- fr_assert(vpt->rules.attr.prefix != TMPL_ATTR_REF_PREFIX_YES);
-
/*
* Loop detection
*/
if (!tmpl_is_attr(vpt)) return;
- fr_assert(vpt->rules.attr.prefix != TMPL_ATTR_REF_PREFIX_YES);
-
da = tmpl_attr_tail_da(vpt);
/*
rhs_rules = (tmpl_rules_t) {
.attr = {
.dict_def = dict,
- .prefix = TMPL_ATTR_REF_PREFIX_YES,
+ .prefix = TMPL_ATTR_REF_PREFIX_AUTO,
.list_def = request_attr_request,
.list_presence = TMPL_ATTR_LIST_ALLOW,
.bare_word_enum = v3_compat,
#ifndef NDEBUG
if (vpt->name[0] == '%') {
fr_assert(vpt->rules.attr.prefix == TMPL_ATTR_REF_PREFIX_NO);
- } else {
- fr_assert(vpt->rules.attr.prefix != TMPL_ATTR_REF_PREFIX_YES);
}
#endif
fr_assert(talloc_parent(node->vpt) == node);
fr_assert(!node->flags.pure);
- /*
- * Can't have prefix YES if we're using the new flag. The parser / tmpl alloc routines
- * MUST have set this to prefix AUTO.
- */
- fr_assert(node->vpt->rules.attr.prefix != TMPL_ATTR_REF_PREFIX_YES);
-
/*
* No '&', print the name, BUT without any attribute prefix.
*/
};
tmpl_rules_t rhs_rules = lhs_rules;
- rhs_rules.attr.prefix = TMPL_ATTR_REF_PREFIX_YES;
+ rhs_rules.attr.prefix = TMPL_ATTR_REF_PREFIX_AUTO;
rhs_rules.attr.list_def = request_attr_request;
rhs_rules.at_runtime = true;
rhs_rules.xlat.runtime_el = unlang_interpret_event_list(request);
map_t *parent = NULL;
rlm_sql_t const *inst = map_ctx->inst;
- rhs_rules.attr.prefix = TMPL_ATTR_REF_PREFIX_YES;
+ rhs_rules.attr.prefix = TMPL_ATTR_REF_PREFIX_AUTO;
rhs_rules.attr.list_def = request_attr_request;
if (query_ctx->rcode != RLM_SQL_OK) RETURN_MODULE_FAIL;