From 8708e02e7375e97465eecd330ef24c9560aef41a Mon Sep 17 00:00:00 2001 From: "Alan T. DeKok" Date: Sun, 1 Sep 2024 07:26:17 -0400 Subject: [PATCH] revert leaf changes so that they can be made gradually --- src/lib/server/map.c | 1 + src/lib/server/tmpl_tokenize.c | 28 ++++++++++++++++++---------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/lib/server/map.c b/src/lib/server/map.c index 7d9c49a868..7842d6b9dc 100644 --- a/src/lib/server/map.c +++ b/src/lib/server/map.c @@ -1368,6 +1368,7 @@ int map_afrom_vp(TALLOC_CTX *ctx, map_t **out, fr_pair_t *vp, tmpl_rules_t const if (!map->lhs) goto oom; tmpl_attr_set_leaf_da(map->lhs, vp->da); + tmpl_attr_set_leaf_num(map->lhs, NUM_UNSPEC); tmpl_attr_set_request_ref(map->lhs, rules->attr.request_def); tmpl_attr_set_list(map->lhs, rules->attr.list_def); diff --git a/src/lib/server/tmpl_tokenize.c b/src/lib/server/tmpl_tokenize.c index dfea4cdeec..f2e50862b3 100644 --- a/src/lib/server/tmpl_tokenize.c +++ b/src/lib/server/tmpl_tokenize.c @@ -983,7 +983,6 @@ static tmpl_attr_t *tmpl_attr_add(tmpl_t *vpt, tmpl_attr_type_t type) *ar = (tmpl_attr_t){ .type = type, .filter = { - .type = TMPL_ATTR_FILTER_TYPE_NONE, .num = NUM_UNSPEC } }; @@ -1164,17 +1163,28 @@ int tmpl_attr_set_leaf_da(tmpl_t *vpt, fr_dict_attr_t const *da) */ ref->ar_parent = fr_dict_root(fr_dict_by_da(da)); /* Parent is the root of the dictionary */ - /* - * Set the filter type to none. - */ - ref->ar_filter_type = TMPL_ATTR_FILTER_TYPE_NONE; - ref->ar_num = NUM_UNSPEC; - TMPL_ATTR_VERIFY(vpt); return 0; } +void tmpl_attr_set_leaf_num(tmpl_t *vpt, int16_t num) +{ + tmpl_attr_t *ar; + + tmpl_assert_type(tmpl_is_attr(vpt) || tmpl_is_attr_unresolved(vpt)); + + if (tmpl_attr_list_num_elements(tmpl_attr(vpt)) == 0) { + ar = tmpl_attr_add(vpt, TMPL_ATTR_TYPE_UNKNOWN); + } else { + ar = tmpl_attr_list_tail(tmpl_attr(vpt)); + } + + ar->ar_num = num; + + TMPL_ATTR_VERIFY(vpt); +} + /** Rewrite the leaf's instance number * */ @@ -1258,9 +1268,7 @@ int tmpl_attr_afrom_list(TALLOC_CTX *ctx, tmpl_t **out, tmpl_t const *list, fr_d ar = tmpl_attr_add(vpt, TMPL_ATTR_TYPE_NORMAL); ar->ar_da = da; ar->ar_parent = fr_dict_root(fr_dict_by_da(da)); - - ar->ar_filter_type = TMPL_ATTR_FILTER_TYPE_NONE; - ar->ar_num = NUM_UNSPEC; + tmpl_attr_set_leaf_num(vpt, tmpl_attr_tail_num(list)); /* * We need to rebuild the attribute name, to be the -- 2.47.2