]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Define context and call env for LDAP group membership xlat
authorNick Porter <nick@portercomputing.co.uk>
Fri, 28 Apr 2023 13:18:34 +0000 (14:18 +0100)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Fri, 19 May 2023 19:35:55 +0000 (15:35 -0400)
src/modules/rlm_ldap/rlm_ldap.h

index 9b520c8ea788fb48b21c49f08cd21f6f4236d29b..e02ec04a5ed2c93b2b831e245ea4b62d20663314 100644 (file)
@@ -139,6 +139,15 @@ typedef struct {
        fr_value_box_t  profile_filter;                 //!< Filter to use when searching for profiles.
 } ldap_autz_call_env_t;
 
+/** Call environment used in group membership xlat
+ *
+ */
+typedef struct {
+       fr_value_box_t  user_base;                      //!< Base DN in which to search for users.
+       fr_value_box_t  user_filter;                    //!< Filter to use when searching for users.
+       fr_value_box_t  group_base;                     //!< Base DN in which to search for groups.
+} ldap_memberof_call_env_t;
+
 /** State list for resumption of authorization
  *
  */
@@ -173,6 +182,32 @@ typedef struct {
        char const              *dn;
 } ldap_autz_ctx_t;
 
+/** State list for xlat evaluation of LDAP group membership
+ */
+typedef enum {
+       GROUP_XLAT_FIND_USER = 0,
+       GROUP_XLAT_MEMB_FILTER,
+       GROUP_XLAT_MEMB_ATTR
+} ldap_group_xlat_status_t;
+
+/** Holds state of in progress group membership check xlat
+ *
+ */
+typedef struct {
+       rlm_ldap_t const                *inst;
+       fr_value_box_t                  *group;
+       ldap_memberof_call_env_t        *env_data;
+       bool                            group_is_dn;
+       char const                      *dn;
+       char const                      *attrs[2];
+       fr_value_box_t                  *filter;
+       fr_value_box_t                  *basedn;
+       fr_ldap_thread_trunk_t          *ttrunk;
+       fr_ldap_query_t                 *query;
+       ldap_group_xlat_status_t        status;
+       bool                            found;
+} ldap_memberof_xlat_ctx_t;
+
 extern HIDDEN fr_dict_attr_t const *attr_cleartext_password;
 extern HIDDEN fr_dict_attr_t const *attr_crypt_password;
 extern HIDDEN fr_dict_attr_t const *attr_ldap_userdn;