]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
add API to get parent VP from list.
authorAlan T. DeKok <aland@freeradius.org>
Tue, 16 Aug 2022 13:12:36 +0000 (09:12 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Tue, 16 Aug 2022 13:12:52 +0000 (09:12 -0400)
src/lib/util/pair.c
src/lib/util/pair.h

index fc16a23f2510b77a737dbb55fefa233dc0618244..09c45e8553f56fbf53479f7351ce5777b1bc23e1 100644 (file)
@@ -843,6 +843,18 @@ fr_pair_t *fr_pair_parent(fr_pair_t const *vp)
        return (fr_pair_t *) (UNCONST(uint8_t *, list) - offsetof(fr_pair_t, vp_group));
 }
 
+/** Return a pointer to the parent pair which contains this list.
+ *
+ */
+fr_pair_t *fr_pair_list_parent(fr_pair_list_t const *list)
+{
+       if (!list) return NULL;
+
+       if (!list->is_child) return NULL;
+
+       return (fr_pair_t *) (UNCONST(uint8_t *, list) - offsetof(fr_pair_t, vp_group));
+}
+
 /** Keep attr tree and sublists synced on cursor insert
  *
  * @param[in] list     Underlying order list from the fr_pair_list_t.
index 194c519a72bec400d98d9aa8a89723ffbf789609..ae295d4bd0488ecda67a3dc2ae2061e783670a8d 100644 (file)
@@ -454,6 +454,8 @@ fr_pair_list_t      *fr_pair_parent_list(fr_pair_t const *vp);
 
 fr_pair_t      *fr_pair_parent(fr_pair_t const *vp);
 
+fr_pair_t      *fr_pair_list_parent(fr_pair_list_t const *list);
+
 void           fr_pair_flatten(fr_pair_t *vp)  CC_HINT(nonnull);
 
 int            fr_pair_unflatten(fr_pair_t *vp)  CC_HINT(nonnull);