break;
case TMPL_ATTR_TYPE_UNKNOWN:
- dst_ar->ar_unknown = fr_dict_unknown_afrom_da(dst_ar, src_ar->ar_unknown);
+ dst_ar->ar_unknown = fr_dict_unknown_copy(dst_ar, src_ar->ar_unknown);
break;
case TMPL_ATTR_TYPE_UNRESOLVED:
*/
if (da->flags.is_unknown) {
ref = tmpl_attr_add(vpt, TMPL_ATTR_TYPE_UNKNOWN);
- ref->da = ref->ar_unknown = fr_dict_unknown_afrom_da(vpt, da);
+ ref->da = ref->ar_unknown = fr_dict_unknown_copy(vpt, da);
} else {
ref = tmpl_attr_add(vpt, TMPL_ATTR_TYPE_NORMAL);
ref->da = da;
*/
if (da->flags.is_unknown) {
ref->type = TMPL_ATTR_TYPE_UNKNOWN;
- ref->da = ref->ar_unknown = fr_dict_unknown_afrom_da(vpt, da);
+ ref->da = ref->ar_unknown = fr_dict_unknown_copy(vpt, da);
} else {
ref->type = TMPL_ATTR_TYPE_NORMAL;
ref->da = da;
fr_dict_attr_t *fr_dict_unknown_afrom_da(TALLOC_CTX *ctx, fr_dict_attr_t const *da);
+static inline fr_dict_attr_t *fr_dict_unknown_copy(TALLOC_CTX *ctx, fr_dict_attr_t const *da)
+{
+ fr_assert(da->flags.is_unknown);
+
+ return fr_dict_unknown_afrom_da(ctx, da);
+}
+
fr_dict_attr_t *fr_dict_unknown_vendor_afrom_num(TALLOC_CTX *ctx,
fr_dict_attr_t const *parent, unsigned int vendor)
CC_HINT(nonnull(2));
* the parent from the 'da'.
*/
if (da->parent && da->parent->flags.is_unknown) {
- parent = fr_dict_unknown_afrom_da(n, da->parent);
+ parent = fr_dict_unknown_copy(n, da->parent);
if (!parent) {
talloc_free(n);
return NULL;
if (da->flags.is_unknown) {
fr_dict_attr_t const *unknown;
- unknown = fr_dict_unknown_afrom_da(vp, da);
+ unknown = fr_dict_unknown_copy(vp, da);
da = unknown;
}
if (da->flags.is_unknown) {
fr_dict_attr_t const *unknown;
- unknown = fr_dict_unknown_afrom_da(vp, da);
+ unknown = fr_dict_unknown_copy(vp, da);
da = unknown;
}
* Copy the unknown attribute hierarchy
*/
if (n->da->flags.is_unknown) {
- n->da = fr_dict_unknown_afrom_da(n, n->da);
+ n->da = fr_dict_unknown_copy(n, n->da);
if (!n->da) {
talloc_free(n);
return NULL;