]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
define and parse "group" attribute
authorAlan T. DeKok <aland@freeradius.org>
Sun, 17 Jun 2018 12:38:39 +0000 (08:38 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Sun, 17 Jun 2018 12:38:39 +0000 (08:38 -0400)
so that we can do arbitrary grouping

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

index 37582b505fae6c95faba7c14588fb4239083315e..00e76ce2205cef45295ea7a0d6a6501869d45371 100644 (file)
@@ -80,6 +80,7 @@ typedef enum {
        FR_TYPE_EVS,                            //!< Extended attribute, vendor specific.
        FR_TYPE_VENDOR,                         //!< Attribute that represents a vendor in the attribute tree.
 
+       FR_TYPE_GROUP,                          //!< A grouping of other attributes
        FR_TYPE_VALUE_BOX,                      //!< A boxed value.
 
        FR_TYPE_MAX                             //!< Number of defined data types.
@@ -175,6 +176,7 @@ typedef enum {
        FR_TYPE_COMBO_IP_ADDR: \
        case FR_TYPE_COMBO_IP_PREFIX: \
        case FR_TYPE_STRUCTURAL: \
+       case FR_TYPE_GROUP: \
        case FR_TYPE_VALUE_BOX: \
        case FR_TYPE_BAD
 
index e7fb0aed7ec5ec54a440f1f623dec56b5409202d..aa90a3acbe2a9c4673c28b86f8f28531a9269144 100644 (file)
@@ -153,6 +153,7 @@ FR_NAME_NUMBER const dict_attr_types[] = {
        { "vsa",                FR_TYPE_VSA },
        { "evs",                FR_TYPE_EVS },
        { "vendor",             FR_TYPE_VENDOR },
+       { "group",              FR_TYPE_GROUP },
 
        /*
         *      Alternative names
index 9074348109a8f29bca57998c801b36ab65ea0170..4bb712a77c38390fba7173e51423f8770ace874e 100644 (file)
@@ -2345,6 +2345,7 @@ int fr_value_box_cast(TALLOC_CTX *ctx, fr_value_box_t *dst,
         */
        case FR_TYPE_VALUE_BOX:
        case FR_TYPE_STRUCTURAL:
+       case FR_TYPE_GROUP:
        case FR_TYPE_INVALID:
        case FR_TYPE_MAX:
                if (!fr_cond_assert(0)) return -1;
@@ -3881,6 +3882,7 @@ parse:
        case FR_TYPE_VALUE_BOX:
        case FR_TYPE_VARIABLE_SIZE:     /* Should have been dealt with above */
        case FR_TYPE_STRUCTURAL:        /* Listed again to suppress compiler warnings */
+       case FR_TYPE_GROUP:
        case FR_TYPE_BAD:
                fr_strerror_printf("Unknown attribute dst_type %d", *dst_type);
                return -1;
@@ -4097,6 +4099,7 @@ char *fr_value_box_asprint(TALLOC_CTX *ctx, fr_value_box_t const *data, char quo
        case FR_TYPE_COMBO_IP_ADDR:
        case FR_TYPE_COMBO_IP_PREFIX:
        case FR_TYPE_STRUCTURAL:
+       case FR_TYPE_GROUP:
        case FR_TYPE_VALUE_BOX:
        case FR_TYPE_BAD:
                (void)fr_cond_assert(0);
@@ -4539,6 +4542,7 @@ size_t fr_value_box_snprint(char *out, size_t outlen, fr_value_box_t const *data
        case FR_TYPE_VSA:
        case FR_TYPE_VENDOR:
        case FR_TYPE_STRUCT:
+       case FR_TYPE_GROUP:
        case FR_TYPE_VALUE_BOX:
        case FR_TYPE_MAX:
                (void)fr_cond_assert(0);