} fr_dict_attr_err_t;
typedef bool (*fr_dict_attr_valid_func_t)(fr_dict_attr_t *da);
-typedef bool (*fr_dict_attr_type_parse_t)(fr_type_t *type, fr_dict_attr_flags_t *flags, char const *name);
+typedef bool (*fr_dict_attr_type_parse_t)(fr_dict_attr_t *da, char const *name);
/*
* Forward declarations to avoid circular references.
*/
type = fr_type_from_str(name);
if (fr_type_is_null(type)) {
- fr_dict_attr_t *da = *da_p;
-
if (!dctx->dict->proto->attr.type_parse) {
fr_strerror_printf("Unknown data type '%s'", name);
return -1;
}
- if (!dctx->dict->proto->attr.type_parse(&type, &da->flags, name)) {
+ if (!dctx->dict->proto->attr.type_parse(da_p, name);
return -1;
}
+
+ type = (*da_p)->type;
+
+ fr_assert(!fr_type_is_null(type));
}
return dict_attr_type_init(da_p, type);