28 RCSIDH(rlm_sql_h,
"$Id: e8d0a575fae4fabdeacb133ba7892fec823cf7ae $")
30 #include <freeradius-devel/server/base.h>
31 #include <freeradius-devel/server/pool.h>
32 #include <freeradius-devel/server/modpriv.h>
33 #include <freeradius-devel/server/exfile.h>
35 #define FR_ITEM_CHECK 0
36 #define FR_ITEM_REPLY 1
116 #define RLM_SQL_RCODE_FLAGS_ALT_QUERY 1
A section grouping multiple CONF_PAIR.
static fr_time_delta_t timeout
size_t(* xlat_escape_legacy_t)(request_t *request, char *out, size_t outlen, char const *in, void *arg)
static const conf_parser_t config[]
char const * msg
Log message.
rlm_sql_t const * inst
The rlm_sql instance this connection belongs to.
int sql_state_entries_from_table(fr_trie_t *states, sql_state_entry_t const table[])
Insert the contents of a state table into the state trie.
sql_rcode_t rcode
What should happen if we receive this error.
char const * sql_db
Database to run queries against.
fr_log_type_t type
Type of log entry L_ERR, L_WARN, L_INFO, L_DBG etc.
TALLOC_CTX * log_ctx
Talloc pool used to avoid allocing memory when log strings need to be copied.
size_t sql_rcode_table_len
void * conn
Database specific connection handle.
void rlm_sql_query_log(rlm_sql_t const *inst, char const *filename, char const *query)
char const * meaning
Verbose description.
sql_rcode_t rlm_sql_fetch_row(rlm_sql_row_t *out, rlm_sql_t const *inst, request_t *request, rlm_sql_handle_t **handle)
Call the driver's sql_fetch_row function.
int sql_get_map_list(TALLOC_CTX *ctx, rlm_sql_t const *inst, request_t *request, rlm_sql_handle_t **handle, map_list_t *out, char const *query, fr_dict_attr_t const *list)
rlm_sql_handle_t * handle
fr_table_num_sorted_t const sql_rcode_table[]
char const * group_attribute
Name of the group attribute.
fr_trie_t * sql_state_trie_alloc(TALLOC_CTX *ctx)
Allocate a sql_state trie, and insert the initial set of entries.
char const * allowed_chars
Chars which done need escaping..
sql_rcode_t
Action to take at end of an SQL query.
@ RLM_SQL_QUERY_INVALID
Query syntax error.
@ RLM_SQL_ALT_QUERY
Key constraint violation, use an alternative query.
@ RLM_SQL_RECONNECT
Stale connection, should reconnect.
@ RLM_SQL_ERROR
General connection/server error.
@ RLM_SQL_NO_MORE_ROWS
No more rows available.
size_t(* sql_error_t)(TALLOC_CTX *ctx, sql_log_entry_t out[], size_t outlen, rlm_sql_handle_t *handle, rlm_sql_config_t const *config)
Retrieve errors from the last query operation.
fr_time_delta_t query_timeout
How long to allow queries to run for.
bool cache_groups
cache group names in &control.SQL-Group
char const * sql_server
Server to connect to.
sql_rcode_t rlm_sql_select_query(rlm_sql_t const *inst, request_t *request, rlm_sql_handle_t **handle, char const *query))
Call the driver's sql_select_query method, reconnecting if necessary.
char const * sql_state
2-5 char error code.
char const * sql_login
Login credentials to use.
sql_state_entry_t const * sql_state_entry_find(fr_trie_t const *states, char const *sql_state)
Lookup an SQL state based on an error code returned from the SQL server or client library.
int sql_state_entries_from_cs(fr_trie_t *states, CONF_SECTION *overrides)
Insert the contents of a CONF_SECTION into the state trie.
char const * sql_password
Login password to use.
void * sql_mod_conn_create(TALLOC_CTX *ctx, void *instance, fr_time_delta_t timeout)
bool read_profiles
Read user profiles by default.
uint32_t sql_port
Port to connect to.
size_t sql_rcode_description_table_len
sql_rcode_t rlm_sql_query(rlm_sql_t const *inst, request_t *request, rlm_sql_handle_t **handle, char const *query))
Call the driver's sql_query method, reconnecting if necessary.
char const * connect_query
Query executed after establishing new connection.
fr_table_num_sorted_t const sql_rcode_description_table[]
void rlm_sql_print_error(rlm_sql_t const *inst, request_t *request, rlm_sql_handle_t *handle, bool force_debug)
Retrieve any errors from the SQL driver.
rlm_sql_row_t row
Row data from the last query.
bool read_groups
Read user groups by default.
static sql_rcode_t sql_socket_init(rlm_sql_handle_t *handle, rlm_sql_config_t const *config, fr_time_delta_t timeout)
static sql_rcode_t sql_fetch_row(rlm_sql_row_t *out, rlm_sql_handle_t *handle, rlm_sql_config_t const *config)
static sql_rcode_t sql_finish_query(rlm_sql_handle_t *handle, rlm_sql_config_t const *config)
static int sql_affected_rows(UNUSED rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
static sql_rcode_t sql_free_result(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
static int sql_num_rows(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
static sql_rcode_t sql_fields(char const **out[], rlm_sql_handle_t *handle, rlm_sql_config_t const *config)
static sql_rcode_t sql_query(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config, char const *query)
static int sql_num_fields(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
static sql_rcode_t sql_select_query(rlm_sql_handle_t *handle, rlm_sql_config_t const *config, char const *query)
static sql_rcode_t sql_finish_select_query(rlm_sql_handle_t *handle, rlm_sql_config_t const *config)
static sql_rcode_t sql_store_result(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
Struct exported by a rlm_* module.
eap_aka_sim_process_conf_t * inst
module_t common
Common fields for all loadable modules.
sql_error_t sql_error
Get any errors from the previous query.
xlat_escape_legacy_t sql_escape_func
sql_rcode_t(* select)(rlm_sql_t const *inst, request_t *request, rlm_sql_handle_t **handle, char const *query)
module_instance_t * driver_submodule
Driver's submodule.
char const * name
Module instance name.
fr_dict_attr_t const * group_da
Group dictionary attribute.
sql_rcode_t(* fetch_row)(rlm_sql_row_t *out, rlm_sql_t const *inst, request_t *request, rlm_sql_handle_t **handle)
fr_dict_attr_t const * sql_user
Cached pointer to SQL-User-Name dictionary attribute.
fr_value_box_escape_t box_escape_func
rlm_sql_driver_t const * driver
Driver's exported interface.
sql_rcode_t(* query)(rlm_sql_t const *inst, request_t *request, rlm_sql_handle_t **handle, char const *query)
xlat_escape_legacy_t sql_escape_func
An element in a lexicographically sorted array of name to num mappings.
A time delta, a difference in time measured in nanoseconds.
int(* fr_value_box_escape_t)(fr_value_box_t *vb, void *uctx)
Escape a value box.
static size_t char ** out