From: Alan T. DeKok Date: Sun, 17 Jun 2018 12:38:39 +0000 (-0400) Subject: define and parse "group" attribute X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=142a0aa4d1ee8ea09c409084fa626ef380bc9c48;p=thirdparty%2Ffreeradius-server.git define and parse "group" attribute so that we can do arbitrary grouping --- diff --git a/src/include/types.h b/src/include/types.h index 37582b505fa..00e76ce2205 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -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 diff --git a/src/lib/util/dict.c b/src/lib/util/dict.c index e7fb0aed7ec..aa90a3acbe2 100644 --- a/src/lib/util/dict.c +++ b/src/lib/util/dict.c @@ -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 diff --git a/src/lib/util/value.c b/src/lib/util/value.c index 9074348109a..4bb712a77c3 100644 --- a/src/lib/util/value.c +++ b/src/lib/util/value.c @@ -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);