]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
add fr_pair_find_or_append_by_da()
authorAlan T. DeKok <aland@freeradius.org>
Fri, 1 Sep 2023 14:49:32 +0000 (10:49 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Fri, 1 Sep 2023 17:10:25 +0000 (13:10 -0400)
it's used a lot more with nested attributes

src/lib/util/pair.h

index 0f863298362b712e98f53a140e8651d69dc9f98e..50bcf3135ee44776a4692064676a8738b69a7a50 100644 (file)
@@ -503,6 +503,21 @@ int                fr_pair_append_by_da_parent(TALLOC_CTX *ctx, fr_pair_t **out, fr_pair_list_
 int            fr_pair_update_by_da_parent(fr_pair_t *parent, fr_pair_t **out,
                                            fr_dict_attr_t const *da) CC_HINT(nonnull(1,3));
 
+static inline CC_HINT(nonnull(3,4)) int fr_pair_find_or_append_by_da(TALLOC_CTX *ctx, fr_pair_t **out, fr_pair_list_t *list,
+                                                                    fr_dict_attr_t const *da)
+{
+       fr_pair_t *vp;
+
+       vp = fr_pair_find_by_da(list, NULL, da);
+       if (vp) {
+               *out = vp;
+               return 0;
+       }
+
+       return fr_pair_append_by_da(ctx, out, list, da);
+}
+
+
 int            fr_pair_delete_by_da(fr_pair_list_t *head, fr_dict_attr_t const *da) CC_HINT(nonnull);
 
 fr_pair_t      *fr_pair_delete(fr_pair_list_t *list, fr_pair_t *vp) CC_HINT(nonnull);