]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
define and use vp_raw
authorAlan T. DeKok <aland@freeradius.org>
Fri, 8 Sep 2023 11:47:52 +0000 (07:47 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Fri, 8 Sep 2023 13:44:22 +0000 (09:44 -0400)
In preparation for moving the "raw" flag out of the dictionaries

src/lib/json/json.c
src/lib/unlang/xlat_builtin.c
src/lib/util/pair.c
src/lib/util/pair.h
src/lib/util/pair_print.c

index f8d22821303241603ba59709cff33803e60fc407..16005f0922bd92a96405b92d287eec2dd17a3236 100644 (file)
@@ -640,7 +640,7 @@ static json_object *json_object_afrom_pair_list(TALLOC_CTX *ctx, fr_pair_list_t
                fr_sbuff_t              attr_name;
                struct json_object      *vp_object, *values, *value, *type_name;
 
-               if (vp->da->flags.is_raw) continue;
+               if (vp->vp_raw) continue;
 
                switch (vp->vp_type) {
                case FR_TYPE_LEAF:
@@ -774,7 +774,7 @@ static json_object *json_smplobj_afrom_pair_list(TALLOC_CTX *ctx, fr_pair_list_t
                struct json_object      *values = NULL;
                bool                    add_single = false;
 
-               if (vp->da->flags.is_raw) continue;
+               if (vp->vp_raw) continue;
 
                /*
                 *      Get attribute name and value.
@@ -896,7 +896,7 @@ static struct json_object *json_array_afrom_pair_list(TALLOC_CTX *ctx, fr_pair_l
                struct json_object      *attrobj = NULL;
                bool                    already_seen = false;
 
-               if (vp->da->flags.is_raw) continue;
+               if (vp->vp_raw) continue;
 
                /*
                 *      Get attribute name and value.
@@ -1020,7 +1020,7 @@ static struct json_object *json_value_array_afrom_pair_list(TALLOC_CTX *ctx, fr_
             vp = fr_pair_list_next(vps, vp)) {
                struct json_object      *value;
 
-               if (vp->da->flags.is_raw) continue;
+               if (vp->vp_raw) continue;
 
                if (json_afrom_value_box(ctx, &value, vp, format) < 0) {
                        fr_strerror_const("Failed to convert attribute value to JSON object");
@@ -1072,7 +1072,7 @@ static struct json_object *json_attr_array_afrom_pair_list(UNUSED TALLOC_CTX *ct
                fr_sbuff_t              attr_name;
                struct json_object      *value;
 
-               if (vp->da->flags.is_raw) continue;
+               if (vp->vp_raw) continue;
 
                fr_sbuff_init_in(&attr_name, buf, sizeof(buf) - 1);
                if (attr_name_with_prefix(&attr_name, vp->da, format) < 0) {
index d3819f7844d2ed95d253b22f4542542573921c16..9989052efa7cfedf0cfb0f7af84fd027be6ec994 100644 (file)
@@ -178,7 +178,7 @@ void xlat_debug_attr_vp(request_t *request, fr_pair_t *vp, tmpl_t const *vpt)
 
        RINDENT();
        RIDEBUG3("da         : %p", vp->da);
-       RIDEBUG3("is_raw     : %pV", fr_box_bool(vp->da->flags.is_raw));
+       RIDEBUG3("is_raw     : %pV", fr_box_bool(vp->vp_raw));
        RIDEBUG3("is_unknown : %pV", fr_box_bool(vp->da->flags.is_unknown));
 
        if (RDEBUG_ENABLED3) {
index 8d8b10a38b56c83517244e2ed9dfc2bffbdc8615..f3998e71cddc533ef1e5e0f7948446ffbf15baf4 100644 (file)
@@ -3182,7 +3182,7 @@ void fr_pair_verify(char const *file, int line, fr_pair_list_t const *list, fr_p
                break;
        }
 
-       if (vp->da->flags.is_unknown || vp->da->flags.is_raw) {
+       if (vp->da->flags.is_unknown || vp->vp_raw) {
                (void) talloc_get_type_abort_const(vp->da, fr_dict_attr_t);
 
        } else {
@@ -3200,7 +3200,7 @@ void fr_pair_verify(char const *file, int line, fr_pair_list_t const *list, fr_p
                }
        }
 
-       if (vp->da->flags.is_raw || vp->da->flags.is_unknown) {
+       if (vp->vp_raw || vp->da->flags.is_unknown) {
                if ((vp->da->parent->type != FR_TYPE_VSA) && (vp->vp_type != FR_TYPE_VSA) && (vp->vp_type != FR_TYPE_OCTETS) && (vp->vp_type != FR_TYPE_TLV)) {
                        fr_fatal_assert_fail("CONSISTENCY CHECK FAILED %s[%u]: fr_pair_t (raw/unknown) attribute %p \"%s\" "
                                             "data type incorrect.  Expected %s, got %s",
@@ -3208,6 +3208,7 @@ void fr_pair_verify(char const *file, int line, fr_pair_list_t const *list, fr_p
                                             fr_type_to_str(FR_TYPE_OCTETS),
                                             fr_type_to_str(vp->vp_type));
                }
+
        } else if (fr_type_is_leaf(vp->vp_type) && (vp->vp_type != vp->da->type) &&
                   !((vp->da->type == FR_TYPE_COMBO_IP_ADDR) && ((vp->vp_type == FR_TYPE_IPV4_ADDR) || (vp->vp_type == FR_TYPE_IPV6_ADDR))) &&
                   !((vp->da->type == FR_TYPE_COMBO_IP_PREFIX) && ((vp->vp_type == FR_TYPE_IPV4_PREFIX) || (vp->vp_type == FR_TYPE_IPV6_PREFIX)))) {
index 50bcf3135ee44776a4692064676a8738b69a7a50..2a9a59b3bb2cc3231bc840459d58ca254972ec2a 100644 (file)
@@ -138,6 +138,7 @@ struct value_pair_s {
 #define vp_type                        data.type
 #define vp_tainted             data.tainted
 #define vp_immutable           data.immutable
+#define vp_raw                 da->flags.is_raw
 
 #define ATTRIBUTE_EQ(_x, _y) ((_x && _y) && (_x->da == _y->da))
 
index 7c7aa7717c04707883f0af0498077bca9e7e6df2..20e02d807438dc9399429d96d28395c880aa03ee 100644 (file)
@@ -99,7 +99,7 @@ ssize_t fr_pair_print(fr_sbuff_t *out, fr_dict_attr_t const *parent, fr_pair_t c
         */
        if (parent && (parent->type == FR_TYPE_GROUP)) parent = NULL;
 
-       if (vp->da->flags.is_raw) FR_SBUFF_IN_STRCPY_LITERAL_RETURN(&our_out, "raw.");
+       if (vp->vp_raw) FR_SBUFF_IN_STRCPY_LITERAL_RETURN(&our_out, "raw.");
        FR_DICT_ATTR_OID_PRINT_RETURN(&our_out, parent, vp->da, false);
        FR_SBUFF_IN_CHAR_RETURN(&our_out, ' ');
        FR_SBUFF_IN_STRCPY_RETURN(&our_out, token);
@@ -149,7 +149,7 @@ ssize_t fr_pair_print_secure(fr_sbuff_t *out, fr_dict_attr_t const *parent, fr_p
         */
        if (parent && (parent->type == FR_TYPE_GROUP)) parent = NULL;
 
-       if (vp->da->flags.is_raw) FR_SBUFF_IN_STRCPY_LITERAL_RETURN(&our_out, "raw.");
+       if (vp->vp_raw) FR_SBUFF_IN_STRCPY_LITERAL_RETURN(&our_out, "raw.");
        FR_DICT_ATTR_OID_PRINT_RETURN(&our_out, parent, vp->da, false);
        FR_SBUFF_IN_CHAR_RETURN(&our_out, ' ');
        FR_SBUFF_IN_STRCPY_RETURN(&our_out, token);
@@ -433,7 +433,7 @@ static void fr_pair_list_log_sbuff(fr_log_t const *log, int lvl, fr_pair_t *pare
 
                fr_sbuff_set_to_start(sbuff);
 
-               if (vp->da->flags.is_raw) (void) fr_sbuff_in_strcpy(sbuff, "raw.");
+               if (vp->vp_raw) (void) fr_sbuff_in_strcpy(sbuff, "raw.");
 
                if (parent && (parent->vp_type != FR_TYPE_GROUP)) parent_da = parent->da;
                if (fr_dict_attr_oid_print(sbuff, parent_da, vp->da, false) <= 0) return;