so that we can do arbitrary grouping
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.
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
{ "vsa", FR_TYPE_VSA },
{ "evs", FR_TYPE_EVS },
{ "vendor", FR_TYPE_VENDOR },
+ { "group", FR_TYPE_GROUP },
/*
* Alternative names
*/
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;
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;
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);
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);