From: Nick Porter Date: Mon, 20 May 2024 11:11:56 +0000 (+0100) Subject: Define contexts for SQL pair and group retrieval X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a9bcd50a35f5e79b00e024f246f95128b68b22f6;p=thirdparty%2Ffreeradius-server.git Define contexts for SQL pair and group retrieval --- diff --git a/src/modules/rlm_sql/rlm_sql.c b/src/modules/rlm_sql/rlm_sql.c index 714d1a4ec9f..2a009999b05 100644 --- a/src/modules/rlm_sql/rlm_sql.c +++ b/src/modules/rlm_sql/rlm_sql.c @@ -162,6 +162,16 @@ typedef enum { #define SQL_AUTZ_STAGE_GROUP 0x20 #define SQL_AUTZ_STAGE_PROFILE 0x40 +/** Context for group membership query evaluation + */ +typedef struct { + rlm_sql_t const *inst; //!< Module instance. + fr_value_box_t *query; //!< Query string used for evaluating group membership. + fr_sql_query_t *query_ctx; //!< Query context. + rlm_sql_grouplist_t *groups; //!< List of groups retrieved. + int num_groups; //!< How many groups have been retrieved. +} sql_group_ctx_t; + /** Context for SQL authorization */ typedef struct { @@ -180,6 +190,8 @@ typedef struct { rlm_sql_grouplist_t *group; //!< Current group being processed. fr_pair_t *sql_group; //!< Pair to update with group being processed. fr_pair_t *profile; //!< Current profile being processed. + fr_sql_map_ctx_t *map_ctx; //!< Context used for retrieving attribute value pairs as a map list. + sql_group_ctx_t *group_ctx; //!< Context used for retrieving user group membership. } sql_autz_ctx_t; typedef struct { diff --git a/src/modules/rlm_sql/rlm_sql.h b/src/modules/rlm_sql/rlm_sql.h index 28d9fed1fdd..6eea82ef331 100644 --- a/src/modules/rlm_sql/rlm_sql.h +++ b/src/modules/rlm_sql/rlm_sql.h @@ -145,6 +145,18 @@ typedef struct { rlm_sql_row_t row; //!< Row data from the last query. } fr_sql_query_t; +/** Context used when fetching attribute value pairs as a map list + */ +typedef struct { + TALLOC_CTX *ctx; //!< To allocate map entries in. + rlm_sql_t const *inst; //!< Module instance data. + fr_value_box_t *query; //!< Query string used for fetching pairs. + fr_sql_query_t *query_ctx; //!< Query context. + fr_dict_attr_t const *list; //!< Default list for pair evaluation. + map_list_t *out; //!< List to append entries to. + int rows; //!< How many rows the query returned. +} fr_sql_map_ctx_t; + extern fr_table_num_sorted_t const sql_rcode_description_table[]; extern size_t sql_rcode_description_table_len; extern fr_table_num_sorted_t const sql_rcode_table[];