From: Arran Cudbard-Bell Date: Thu, 9 Feb 2023 17:01:08 +0000 (-0600) Subject: Add tmpl_attr_tail_da_is_leaf() and tmpl_attr_tail_da_is_structural() X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f29788bbd8b2d93d6913df8bcbba7e0894083d19;p=thirdparty%2Ffreeradius-server.git Add tmpl_attr_tail_da_is_leaf() and tmpl_attr_tail_da_is_structural() --- diff --git a/src/lib/server/tmpl.h b/src/lib/server/tmpl.h index d0b14e7a516..534f190dcf8 100644 --- a/src/lib/server/tmpl.h +++ b/src/lib/server/tmpl.h @@ -818,6 +818,42 @@ static inline fr_dict_attr_t const *tmpl_attr_tail_da(tmpl_t const *vpt) return ar->ar_da; } +/** Return true if the the last attribute reference is a leaf attribute + * + * @hidecallergraph + */ +static inline bool tmpl_attr_tail_da_is_leaf(tmpl_t const *vpt) +{ + tmpl_attr_t *ar; + + tmpl_assert_type(tmpl_contains_attr(vpt)); + + ar = tmpl_attr_list_tail(tmpl_attr(vpt)); + if (!ar) return false; + + fr_assert(ar_is_normal(ar) || ar_is_unknown(ar) || ar_is_unspecified(ar)); + + return fr_type_is_leaf(ar->ar_da->type); +} + +/** Return true if the the last attribute reference is a structural attribute + * + * @hidecallergraph + */ +static inline bool tmpl_attr_tail_da_is_structural(tmpl_t const *vpt) +{ + tmpl_attr_t *ar; + + tmpl_assert_type(tmpl_contains_attr(vpt)); + + ar = tmpl_attr_list_tail(tmpl_attr(vpt)); + if (!ar) return false; + + fr_assert(ar_is_normal(ar) || ar_is_unknown(ar) || ar_is_unspecified(ar)); + + return fr_type_is_structural(ar->ar_da->type); +} + /** Return the last attribute reference unknown da * * @hidecallergraph