From: Alan T. DeKok Date: Fri, 8 Sep 2023 11:47:52 +0000 (-0400) Subject: define and use vp_raw X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=92e80395f62c3aaad1f097e69bfd416a1d8b9e5a;p=thirdparty%2Ffreeradius-server.git define and use vp_raw In preparation for moving the "raw" flag out of the dictionaries --- diff --git a/src/lib/json/json.c b/src/lib/json/json.c index f8d22821303..16005f0922b 100644 --- a/src/lib/json/json.c +++ b/src/lib/json/json.c @@ -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) { diff --git a/src/lib/unlang/xlat_builtin.c b/src/lib/unlang/xlat_builtin.c index d3819f7844d..9989052efa7 100644 --- a/src/lib/unlang/xlat_builtin.c +++ b/src/lib/unlang/xlat_builtin.c @@ -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) { diff --git a/src/lib/util/pair.c b/src/lib/util/pair.c index 8d8b10a38b5..f3998e71cdd 100644 --- a/src/lib/util/pair.c +++ b/src/lib/util/pair.c @@ -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)))) { diff --git a/src/lib/util/pair.h b/src/lib/util/pair.h index 50bcf3135ee..2a9a59b3bb2 100644 --- a/src/lib/util/pair.h +++ b/src/lib/util/pair.h @@ -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)) diff --git a/src/lib/util/pair_print.c b/src/lib/util/pair_print.c index 7c7aa7717c0..20e02d80743 100644 --- a/src/lib/util/pair_print.c +++ b/src/lib/util/pair_print.c @@ -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;