]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Because NUM_ANY confuses everyone
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Wed, 27 Jul 2022 09:07:41 +0000 (17:07 +0800)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Wed, 27 Jul 2022 09:07:41 +0000 (17:07 +0800)
src/lib/server/map.c
src/lib/server/map_async.c
src/lib/server/tmpl.h
src/lib/server/tmpl_dcursor.c
src/lib/server/tmpl_tokenize.c
src/lib/unlang/compile.c
src/lib/unlang/xlat_tokenize.c

index a7d5acd6de0107d0b55c693643b468db6b63999b..145ac78bab6d4d7eaab773e967fba49276fda76f 100644 (file)
@@ -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
index 3ab991224e6d289861c907f6924220c9f49a6bb7..e40bf4a6f7a548db2f11258cfce7dc6ddd14bdf2 100644 (file)
@@ -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:
index 6d83b67a60c98a65727edff4aab594c7a5f4fefc..b6eafc1968bbc32c79f243d9cb8b592cb92e3665 100644 (file)
@@ -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)
index df7bfbad751935052a072eb4b3c1b909ca434a53..48985054060cd31516f2ba66c27f1e5b9edb57d7 100644 (file)
@@ -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;
index 0d3101a11dd8dc9c6386191b7eab7957d8aab08c..143b4f545126193a3376c74c64eca9f984b8e8fd 100644 (file)
@@ -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, "<INVALID>"),
-                                    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, "<INVALID>"),
                             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, "<INVALID>"),
                             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:
index 9afd9989985e24338b3d3c79658dd2450ee3facc..0a2f74d9c6f90b0b5a6f99fde1c1d5f67c1eedb2 100644 (file)
@@ -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) {
index c6df0507803b4ce4e78f1ef8b73bac5f2cb84827..082ce4d3a3355dd4c54dc65a1030486ead5a0f8e 100644 (file)
@@ -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) {