From: Alan T. DeKok Date: Tue, 16 Aug 2022 13:12:36 +0000 (-0400) Subject: add API to get parent VP from list. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=72c47cb7a2d1e6ef40b163e15aec5517a2f30a21;p=thirdparty%2Ffreeradius-server.git add API to get parent VP from list. --- diff --git a/src/lib/util/pair.c b/src/lib/util/pair.c index fc16a23f251..09c45e8553f 100644 --- a/src/lib/util/pair.c +++ b/src/lib/util/pair.c @@ -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. diff --git a/src/lib/util/pair.h b/src/lib/util/pair.h index 194c519a72b..ae295d4bd04 100644 --- a/src/lib/util/pair.h +++ b/src/lib/util/pair.h @@ -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);