From: Nick Porter Date: Tue, 28 Mar 2023 13:06:43 +0000 (+0100) Subject: Add context for resolving group membership from user object X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4b6b8ee51a2312009aceabf26dd940ca18bdb0c8;p=thirdparty%2Ffreeradius-server.git Add context for resolving group membership from user object --- diff --git a/src/modules/rlm_ldap/groups.c b/src/modules/rlm_ldap/groups.c index 4c157c2cb2..fd6276e751 100644 --- a/src/modules/rlm_ldap/groups.c +++ b/src/modules/rlm_ldap/groups.c @@ -35,6 +35,23 @@ USES_APPLE_DEPRECATED_API #include "rlm_ldap.h" +/** Context to use when resolving group membership from the user object. + * + */ +typedef struct { + rlm_ldap_t const *inst; //!< Module instance. + fr_value_box_t *base_dn; //!< The base DN to search for groups in. + fr_ldap_thread_trunk_t *ttrunk; //!< Trunk on which to perform additional queries. + fr_pair_list_t groups; //!< Temporary list to hold pairs. + TALLOC_CTX *list_ctx; //!< In which to allocate pairs. + char *group_name[LDAP_MAX_CACHEABLE + 1]; //!< List of group names which need resolving. + unsigned int name_cnt; //!< How many names need resolving. + char *group_dn[LDAP_MAX_CACHEABLE + 1]; //!< List of group DNs which need resolving. + char **dn; //!< Current DN being resolved. + char const *attrs[2]; //!< For resolving name from DN. + fr_ldap_query_t *query; //!< Current query performing group resolution. +} ldap_group_userobj_ctx_t; + /** Convert multiple group names into a DNs * * Given an array of group names, builds a filter matching all names, then retrieves all group objects