From: Arran Cudbard-Bell Date: Wed, 27 Jul 2022 09:07:41 +0000 (+0800) Subject: Because NUM_ANY confuses everyone X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6829816cbc515f0044a18e04320689865d55a4b6;p=thirdparty%2Ffreeradius-server.git Because NUM_ANY confuses everyone --- diff --git a/src/lib/server/map.c b/src/lib/server/map.c index a7d5acd6de0..145ac78bab6 100644 --- a/src/lib/server/map.c +++ b/src/lib/server/map.c @@ -978,7 +978,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_ANY); + 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); @@ -1621,7 +1621,7 @@ int map_to_request(request_t *request, map_t const *map, radius_map_getvalue_t f /* * Wildcard: delete all of the matching ones */ - if (tmpl_num(map->lhs) == NUM_ANY) { + if (tmpl_num(map->lhs) == NUM_UNSPEC) { fr_pair_delete_by_child_num(list, tmpl_da(map->lhs)->parent, tmpl_da(map->lhs)->attr); dst = NULL; /* @@ -1645,7 +1645,7 @@ int map_to_request(request_t *request, map_t const *map, radius_map_getvalue_t f * This operation has two modes: * - If tmpl_num(map->lhs) > 0, we check each of the src_list attributes against * the dst attribute, to see if any of their values match. - * - If tmpl_num(map->lhs) == NUM_ANY, we compare all instances of the dst attribute + * - If tmpl_num(map->lhs) == NUM_UNSPEC, we compare all instances of the dst attribute * against each of the src_list attributes. */ case T_OP_SUB_EQ: @@ -1658,7 +1658,7 @@ int map_to_request(request_t *request, map_t const *map, radius_map_getvalue_t f /* * Instance specific[n] delete */ - if (tmpl_num(map->lhs) != NUM_ANY) { + if (tmpl_num(map->lhs) != NUM_UNSPEC) { for (vp = fr_pair_list_head(&src_list); vp; vp = fr_pair_list_next(&src_list, vp)) { @@ -2038,7 +2038,7 @@ void map_debug_log(request_t *request, map_t const *map, fr_pair_t const *vp) */ tmpl_attr_copy(vpt, map->rhs); tmpl_attr_set_leaf_da(vpt, vp->da); - tmpl_attr_set_leaf_num(vpt, NUM_ANY); + tmpl_attr_set_leaf_num(vpt, NUM_UNSPEC); /* * Not appropriate to use map->rhs->quote here, as that's the quoting diff --git a/src/lib/server/map_async.c b/src/lib/server/map_async.c index 3ab991224e6..e40bf4a6f7a 100644 --- a/src/lib/server/map_async.c +++ b/src/lib/server/map_async.c @@ -1126,7 +1126,7 @@ int map_list_mod_apply(request_t *request, vp_list_mod_t const *vlm) * This operation has two modes: * - If tmpl_num(map->lhs) > 0, we check each of the src_list attributes against * the found attribute, to see if any of their values match. - * - If tmpl_num(map->lhs) == NUM_ANY, we compare all instances of the found attribute + * - If tmpl_num(map->lhs) == NUM_UNSPEC, we compare all instances of the found attribute * against each of the src_list attributes. */ case T_OP_SUB_EQ: diff --git a/src/lib/server/tmpl.h b/src/lib/server/tmpl.h index 6d83b67a60c..b6eafc1968b 100644 --- a/src/lib/server/tmpl.h +++ b/src/lib/server/tmpl.h @@ -399,7 +399,7 @@ typedef enum { #define tmpl_attr_is_unresolved(_ar) (_ar->ar_type == TMPL_ATTR_TYPE_UNRESOLVED) -#define NUM_ANY INT16_MIN +#define NUM_UNSPEC INT16_MIN #define NUM_ALL (INT16_MIN + 1) #define NUM_COUNT (INT16_MIN + 2) #define NUM_LAST (INT16_MIN + 3) diff --git a/src/lib/server/tmpl_dcursor.c b/src/lib/server/tmpl_dcursor.c index df7bfbad751..48985054060 100644 --- a/src/lib/server/tmpl_dcursor.c +++ b/src/lib/server/tmpl_dcursor.c @@ -179,7 +179,7 @@ fr_pair_t *_tmpl_cursor_eval(fr_dlist_head_t *list_head, fr_pair_t *curr, tmpl_d /* * Get the first instance */ - case NUM_ANY: + case NUM_UNSPEC: vp = ns->func(list_head, curr, ns); _tmpl_cursor_common_pop(cc); break; diff --git a/src/lib/server/tmpl_tokenize.c b/src/lib/server/tmpl_tokenize.c index 0d3101a11dd..143b4f54512 100644 --- a/src/lib/server/tmpl_tokenize.c +++ b/src/lib/server/tmpl_tokenize.c @@ -162,7 +162,7 @@ size_t tmpl_request_ref_table_len = NUM_ELEMENTS(tmpl_request_ref_table); static fr_table_num_sorted_t const attr_num_table[] = { { L("*"), NUM_ALL }, { L("#"), NUM_COUNT }, - { L("any"), NUM_ANY }, + { L("u"), NUM_UNSPEC }, { L("n"), NUM_LAST } }; static size_t attr_num_table_len = NUM_ELEMENTS(attr_num_table); @@ -213,9 +213,9 @@ void tmpl_attr_ref_debug(const tmpl_attr_t *ar, int i) FR_FAULT_LOG("\t[%u] %s null%s%s%s", i, fr_table_str_by_value(attr_table, ar->type, ""), - ar->num != NUM_ANY ? "[" : "", - ar->num != NUM_ANY ? fr_table_str_by_value(attr_num_table, ar->num, buffer) : "", - ar->num != NUM_ANY ? "]" : ""); + ar->num != NUM_UNSPEC ? "[" : "", + ar->num != NUM_UNSPEC ? fr_table_str_by_value(attr_num_table, ar->num, buffer) : "", + ar->num != NUM_UNSPEC ? "]" : ""); return; } @@ -224,9 +224,9 @@ void tmpl_attr_ref_debug(const tmpl_attr_t *ar, int i) fr_table_str_by_value(attr_table, ar->type, ""), fr_type_to_str(ar->da->type), ar->da->name, - ar->num != NUM_ANY ? "[" : "", - ar->num != NUM_ANY ? fr_table_str_by_value(attr_num_table, ar->num, buffer) : "", - ar->num != NUM_ANY ? "]" : "", + ar->num != NUM_UNSPEC ? "[" : "", + ar->num != NUM_UNSPEC ? fr_table_str_by_value(attr_num_table, ar->num, buffer) : "", + ar->num != NUM_UNSPEC ? "]" : "", ar->da, ar->da->attr ); @@ -245,9 +245,9 @@ void tmpl_attr_ref_debug(const tmpl_attr_t *ar, int i) i, fr_table_str_by_value(attr_table, ar->type, ""), ar->ar_unresolved, - ar->num != NUM_ANY ? "[" : "", - ar->num != NUM_ANY ? fr_table_str_by_value(attr_num_table, ar->num, buffer) : "", - ar->num != NUM_ANY ? "]" : ""); + ar->num != NUM_UNSPEC ? "[" : "", + ar->num != NUM_UNSPEC ? fr_table_str_by_value(attr_num_table, ar->num, buffer) : "", + ar->num != NUM_UNSPEC ? "]" : ""); if (ar->ar_parent) FR_FAULT_LOG("\t parent : %s", ar->ar_parent->name); if (ar->ar_unresolved_namespace) FR_FAULT_LOG("\t namespace : %s", ar->ar_unresolved_namespace->name); break; @@ -967,7 +967,7 @@ static tmpl_attr_t *tmpl_attr_add(tmpl_t *vpt, tmpl_attr_type_t type) MEM(ar = talloc(ctx, tmpl_attr_t)); *ar = (tmpl_attr_t){ .type = type, - .num = NUM_ANY + .num = NUM_UNSPEC }; tmpl_attr_list_insert_tail(&vpt->data.attribute.ar, ar); @@ -1299,7 +1299,7 @@ static inline CC_HINT(always_inline) void tmpl_attr_insert(tmpl_t *vpt, tmpl_att switch (ar->num) { case 0: - case NUM_ANY: + case NUM_UNSPEC: break; default: @@ -1468,7 +1468,7 @@ int tmpl_attr_afrom_attr_unresolved_substr(TALLOC_CTX *ctx, tmpl_attr_error_t *e } *ar = (tmpl_attr_t){ - .ar_num = NUM_ANY, + .ar_num = NUM_UNSPEC, .ar_type = TMPL_ATTR_TYPE_UNRESOLVED, .ar_unresolved = unresolved, .ar_unresolved_namespace = namespace, @@ -1631,7 +1631,7 @@ static inline int tmpl_attr_afrom_attr_substr(TALLOC_CTX *ctx, tmpl_attr_error_t if (da) { MEM(ar = talloc(ctx, tmpl_attr_t)); *ar = (tmpl_attr_t){ - .ar_num = NUM_ANY, + .ar_num = NUM_UNSPEC, .ar_type = TMPL_ATTR_TYPE_NORMAL, .ar_da = da, .ar_parent = our_parent @@ -1688,7 +1688,7 @@ static inline int tmpl_attr_afrom_attr_substr(TALLOC_CTX *ctx, tmpl_attr_error_t */ MEM(ar = talloc(ctx, tmpl_attr_t)); *ar = (tmpl_attr_t){ - .ar_num = NUM_ANY, + .ar_num = NUM_UNSPEC, .ar_type = TMPL_ATTR_TYPE_NORMAL, .ar_da = da, .ar_parent = our_parent, @@ -1727,7 +1727,7 @@ static inline int tmpl_attr_afrom_attr_substr(TALLOC_CTX *ctx, tmpl_attr_error_t da_unknown->flags.internal = 1; *ar = (tmpl_attr_t){ - .ar_num = NUM_ANY, + .ar_num = NUM_UNSPEC, .ar_type = TMPL_ATTR_TYPE_UNKNOWN, .ar_unknown = da_unknown, .ar_da = da_unknown, @@ -3745,7 +3745,7 @@ static inline CC_HINT(always_inline) int tmpl_attr_resolve(tmpl_t *vpt, tmpl_res * be removed. */ prev = tmpl_attr_list_prev(&vpt->data.attribute.ar, ar); - if (prev && (prev->ar_da->type != FR_TYPE_GROUP) && (prev->ar_num == NUM_ANY)) { + if (prev && (prev->ar_da->type != FR_TYPE_GROUP) && (prev->ar_num == NUM_UNSPEC)) { tmpl_attr_list_remove(&vpt->data.attribute.ar, prev); ar->ar_parent = prev->ar_parent; talloc_free(prev); @@ -4428,7 +4428,7 @@ fr_slen_t tmpl_attr_print(fr_sbuff_t *out, tmpl_t const *vpt, tmpl_attr_prefix_t * Will later be complex filters. */ switch (ar->ar_num) { - case NUM_ANY: + case NUM_UNSPEC: break; case NUM_ALL: diff --git a/src/lib/unlang/compile.c b/src/lib/unlang/compile.c index 9afd9989985..0a2f74d9c6f 100644 --- a/src/lib/unlang/compile.c +++ b/src/lib/unlang/compile.c @@ -864,12 +864,12 @@ int unlang_fixup_update(map_t *map, UNUSED void *ctx) } /* - * Fixup LHS attribute references to change NUM_ANY to NUM_ALL. + * Fixup LHS attribute references to change NUM_UNSPEC to NUM_ALL. */ switch (map->lhs->type) { case TMPL_TYPE_ATTR: case TMPL_TYPE_LIST: - tmpl_attr_rewrite_leaf_num(map->lhs, NUM_ANY, NUM_ALL); + tmpl_attr_rewrite_leaf_num(map->lhs, NUM_UNSPEC, NUM_ALL); break; default: @@ -877,12 +877,12 @@ int unlang_fixup_update(map_t *map, UNUSED void *ctx) } /* - * Fixup RHS attribute references to change NUM_ANY to NUM_ALL. + * Fixup RHS attribute references to change NUM_UNSPEC to NUM_ALL. */ switch (map->rhs->type) { case TMPL_TYPE_ATTR: case TMPL_TYPE_LIST: - tmpl_attr_rewrite_leaf_num(map->rhs, NUM_ANY, NUM_ALL); + tmpl_attr_rewrite_leaf_num(map->rhs, NUM_UNSPEC, NUM_ALL); break; default: @@ -1093,14 +1093,14 @@ static int unlang_fixup_filter(map_t *map, UNUSED void *ctx) } /* - * Fixup LHS attribute references to change NUM_ANY to NUM_ALL. + * Fixup LHS attribute references to change NUM_UNSPEC to NUM_ALL. */ - if (tmpl_is_attr(map->lhs)) tmpl_attr_rewrite_leaf_num(map->lhs, NUM_ANY, NUM_ALL); + if (tmpl_is_attr(map->lhs)) tmpl_attr_rewrite_leaf_num(map->lhs, NUM_UNSPEC, NUM_ALL); /* - * Fixup RHS attribute references to change NUM_ANY to NUM_ALL. + * Fixup RHS attribute references to change NUM_UNSPEC to NUM_ALL. */ - if (tmpl_is_attr(map->rhs)) tmpl_attr_rewrite_leaf_num(map->rhs, NUM_ANY, NUM_ALL); + if (tmpl_is_attr(map->rhs)) tmpl_attr_rewrite_leaf_num(map->rhs, NUM_UNSPEC, NUM_ALL); /* * Values used by unary operators should be literal ANY @@ -2876,7 +2876,7 @@ static unlang_t *compile_foreach(unlang_t *parent, unlang_compile_t *unlang_ctx, return NULL; } - if ((tmpl_num(vpt) != NUM_ALL) && (tmpl_num(vpt) != NUM_ANY)) { + if ((tmpl_num(vpt) != NUM_ALL) && (tmpl_num(vpt) != NUM_UNSPEC)) { cf_log_err(cs, "MUST NOT use instance selectors in 'foreach'"); talloc_free(vpt); return NULL; @@ -2887,7 +2887,7 @@ static unlang_t *compile_foreach(unlang_t *parent, unlang_compile_t *unlang_ctx, * the attribute. In a perfect consistent world, users would do * foreach &attr[*], but that's taking the consistency thing a bit far. */ - tmpl_attr_rewrite_leaf_num(vpt, NUM_ANY, NUM_ALL); + tmpl_attr_rewrite_leaf_num(vpt, NUM_UNSPEC, NUM_ALL); c = compile_section(parent, unlang_ctx, cs, &foreach_ext); if (!c) { diff --git a/src/lib/unlang/xlat_tokenize.c b/src/lib/unlang/xlat_tokenize.c index c6df0507803..082ce4d3a33 100644 --- a/src/lib/unlang/xlat_tokenize.c +++ b/src/lib/unlang/xlat_tokenize.c @@ -1118,7 +1118,7 @@ static void _xlat_debug(xlat_exp_head_t const *head, int depth) if (tmpl_is_attr(node->vpt)) { fr_assert(!node->flags.pure); INFO_INDENT("attribute (%s)", tmpl_da(node->vpt)->name); - if (tmpl_num(node->vpt) != NUM_ANY) { + if (tmpl_num(node->vpt) != NUM_UNSPEC) { FR_DLIST_HEAD(tmpl_request_list) const *list; tmpl_request_t *rr = NULL; @@ -1132,7 +1132,7 @@ static void _xlat_debug(xlat_exp_head_t const *head, int depth) INFO_INDENT("ref %d", rr->request); } INFO_INDENT("list %d", tmpl_list(node->vpt)); - if (tmpl_num(node->vpt) != NUM_ANY) { + if (tmpl_num(node->vpt) != NUM_UNSPEC) { if (tmpl_num(node->vpt) == NUM_COUNT) { INFO_INDENT("[#]"); } else if (tmpl_num(node->vpt) == NUM_ALL) {