From: Alan T. DeKok Date: Wed, 13 Aug 2025 19:10:55 +0000 (-0400) Subject: add FR_TYPE_UNION X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cbc827977c472613c15e7dfd3a130f5a24bb0db8;p=thirdparty%2Ffreeradius-server.git add FR_TYPE_UNION which is not used for anything --- diff --git a/src/lib/util/types.c b/src/lib/util/types.c index 55ed550bb7c..c943376987d 100644 --- a/src/lib/util/types.c +++ b/src/lib/util/types.c @@ -69,6 +69,7 @@ fr_table_num_ordered_t const fr_type_table[] = { { L("vsa"), FR_TYPE_VSA }, { L("vendor"), FR_TYPE_VENDOR }, { L("group"), FR_TYPE_GROUP }, + { L("union"), FR_TYPE_UNION }, { L("attribute"), FR_TYPE_ATTR }, diff --git a/src/lib/util/types.h b/src/lib/util/types.h index 00d91f6a365..a310f3ed4d2 100644 --- a/src/lib/util/types.h +++ b/src/lib/util/types.h @@ -79,6 +79,7 @@ typedef enum { FR_TYPE_VENDOR, //!< Attribute that represents a vendor in the attribute tree. FR_TYPE_GROUP, //!< A grouping of other attributes + FR_TYPE_UNION, //!< A union of limited children FR_TYPE_VALUE_BOX, //!< A boxed value. FR_TYPE_ATTR, //!< A contains an attribute reference @@ -220,6 +221,7 @@ typedef enum { _beg(FR_TYPE_GROUP) \ _mid(FR_TYPE_STRUCT) \ _mid(FR_TYPE_TLV) \ + _mid(FR_TYPE_UNION) \ _end(FR_TYPE_VENDOR) /** Hack for truthiness check @@ -233,6 +235,7 @@ typedef enum { _beg(FR_TYPE_VSA) \ _mid(FR_TYPE_STRUCT) \ _mid(FR_TYPE_TLV) \ + _mid(FR_TYPE_UNION) \ _end(FR_TYPE_VENDOR) /** Match all non value types in case statements diff --git a/src/lib/util/value.c b/src/lib/util/value.c index e58266a6bef..393de99c9c5 100644 --- a/src/lib/util/value.c +++ b/src/lib/util/value.c @@ -669,6 +669,7 @@ static inline void fr_value_box_copy_meta(fr_value_box_t *dst, fr_value_box_t co case FR_TYPE_STRUCT: case FR_TYPE_VSA: case FR_TYPE_VENDOR: + case FR_TYPE_UNION: case FR_TYPE_INTERNAL: fr_assert(0); break; @@ -1139,6 +1140,7 @@ int fr_value_box_cmp_op(fr_token_t op, fr_value_box_t const *a, fr_value_box_t c case FR_TYPE_STRUCT: case FR_TYPE_VSA: case FR_TYPE_VENDOR: + case FR_TYPE_UNION: case FR_TYPE_INTERNAL: fr_assert(0); return -2; @@ -2555,6 +2557,7 @@ static inline int fr_value_box_cast_to_octets(TALLOC_CTX *ctx, fr_value_box_t *d case FR_TYPE_STRUCT: case FR_TYPE_VSA: case FR_TYPE_VENDOR: + case FR_TYPE_UNION: case FR_TYPE_INTERNAL: case FR_TYPE_NULL: case FR_TYPE_ATTR: @@ -4255,6 +4258,7 @@ int fr_value_box_copy(TALLOC_CTX *ctx, fr_value_box_t *dst, const fr_value_box_t case FR_TYPE_STRUCT: case FR_TYPE_VSA: case FR_TYPE_VENDOR: + case FR_TYPE_UNION: case FR_TYPE_VOID: case FR_TYPE_VALUE_BOX: case FR_TYPE_VALUE_BOX_CURSOR: @@ -5990,6 +5994,7 @@ ssize_t fr_value_box_print(fr_sbuff_t *out, fr_value_box_t const *data, fr_sbuff case FR_TYPE_STRUCT: /* Not a box type */ case FR_TYPE_VSA: /* Not a box type */ case FR_TYPE_VENDOR: /* Not a box type */ + case FR_TYPE_UNION: /* Not a box type */ case FR_TYPE_VALUE_BOX: case FR_TYPE_VOID: case FR_TYPE_MAX: