]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
add FR_TYPE_UNION
authorAlan T. DeKok <aland@freeradius.org>
Wed, 13 Aug 2025 19:10:55 +0000 (15:10 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Thu, 14 Aug 2025 18:12:54 +0000 (14:12 -0400)
which is not used for anything

src/lib/util/types.c
src/lib/util/types.h
src/lib/util/value.c

index 55ed550bb7ce86826da5f15cf6353ac8d9f65067..c943376987d4d3915d6f7962214a5bc791340e17 100644 (file)
@@ -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            },
 
index 00d91f6a3656ae989a8a6c484fb8eb7a3e332fc5..a310f3ed4d2839eff56a7e525ee91414c30d2d15 100644 (file)
@@ -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
index e58266a6beffa60c9a27fe2ddc5e7d1f55074b02..393de99c9c56acfe5f4725e2ee8f8e71bbc11211 100644 (file)
@@ -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: