To track progress through multiple async LDAP queries
autz_ctx->dlinst = mctx->inst;
autz_ctx->inst = inst;
autz_ctx->mod_env = mod_env;
+ autz_ctx->status = LDAP_AUTZ_FIND;
if (unlang_function_push(request, mod_authorize_start, mod_authorize_resume, mod_authorize_cancel,
~FR_SIGNAL_CANCEL, UNLANG_SUB_FRAME, autz_ctx) < 0) RETURN_MODULE_FAIL;
fr_value_box_t profile_filter; //!< Filter to use when searching for profiles.
} ldap_autz_mod_env_t;
+/** State list for resumption of authorization
+ *
+ */
+typedef enum {
+ LDAP_AUTZ_FIND = 0,
+ LDAP_AUTZ_GROUP,
+ LDAP_AUTZ_POST_GROUP,
+#ifdef WITH_EDIR
+ LDAP_AUTZ_POST_EDIR,
+#endif
+ LDAP_AUTZ_POST_DEFAULT_PROFILE,
+ LDAP_AUTZ_USER_PROFILE,
+ LDAP_AUTZ_MAP
+} ldap_autz_status_t;
+
/** Holds state of in progress async authorization
*
*/
fr_ldap_thread_trunk_t *ttrunk;
ldap_autz_mod_env_t *mod_env;
LDAPMessage *entry;
+ ldap_autz_status_t status;
} ldap_autz_ctx_t;
extern HIDDEN fr_dict_attr_t const *attr_cleartext_password;