1 /***************************************************************************
2 * rlm_sql.h rlm_sql - FreeRADIUS SQL Module *
4 * Header for main SQL module file *
6 * Mike Machado <mike@innercite.com> *
7 ***************************************************************************/
19 #define SQLSOCK_LOCKED 0
20 #define SQLSOCK_UNLOCKED 1
22 #define PW_ITEM_CHECK 0
23 #define PW_ITEM_REPLY 1
25 typedef char** SQL_ROW;
27 typedef struct sql_socket {
30 pthread_mutex_t mutex;
32 struct sql_socket *next;
33 enum { sockconnected, sockunconnected } state;
39 typedef struct rlm_sql_module_t {
41 int (*sql_init_socket)(SQLSOCK *sqlsocket, SQL_CONFIG *config);
42 int (*sql_destroy_socket)(SQLSOCK *sqlsocket, SQL_CONFIG *config);
43 int (*sql_query)(SQLSOCK *sqlsocket, SQL_CONFIG *config, char *query);
44 int (*sql_select_query)(SQLSOCK *sqlsocket, SQL_CONFIG *config, char *query);
45 int (*sql_store_result)(SQLSOCK *sqlsocket, SQL_CONFIG *config);
46 int (*sql_num_fields)(SQLSOCK *sqlsocket, SQL_CONFIG *config);
47 int (*sql_num_rows)(SQLSOCK *sqlsocket, SQL_CONFIG *config);
48 int (*sql_fetch_row)(SQLSOCK *sqlsocket, SQL_CONFIG *config);
49 int (*sql_free_result)(SQLSOCK *sqlsocket, SQL_CONFIG *config);
50 char *(*sql_error)(SQLSOCK *sqlsocket, SQL_CONFIG *config);
51 int (*sql_close)(SQLSOCK *sqlsocket, SQL_CONFIG *config);
52 int (*sql_finish_query)(SQLSOCK *sqlsocket, SQL_CONFIG *config);
53 int (*sql_finish_select_query)(SQLSOCK *sqlsocket, SQL_CONFIG *config);
54 int (*sql_affected_rows)(SQLSOCK *sqlsocket, SQL_CONFIG *config);
57 typedef struct sql_inst {
64 rlm_sql_module_t *module;
67 typedef struct sql_grouplist {
68 char groupname[MAX_STRING_LEN];
69 struct sql_grouplist *next;
73 int sql_init_socketpool(SQL_INST * inst);
74 void sql_poolfree(SQL_INST * inst);
75 int sql_close_socket(SQL_INST *inst, SQLSOCK * sqlsocket);
76 SQLSOCK *sql_get_socket(SQL_INST * inst);
77 int sql_release_socket(SQL_INST * inst, SQLSOCK * sqlsocket);
78 int sql_userparse(VALUE_PAIR ** first_pair, SQL_ROW row);
79 int sql_read_realms(SQLSOCK * sqlsocket);
80 int sql_getvpdata(SQL_INST * inst, SQLSOCK * sqlsocket, VALUE_PAIR **pair, char *query);
81 int sql_read_naslist(SQLSOCK * sqlsocket);
82 int sql_read_clients(SQLSOCK * sqlsocket);
83 int sql_dict_init(SQLSOCK * sqlsocket);
84 void query_log(REQUEST *request, SQL_INST * inst, char *querystr);
85 int rlm_sql_select_query(SQLSOCK *sqlsocket, SQL_INST *inst, char *query);
86 int rlm_sql_query(SQLSOCK *sqlsocket, SQL_INST *inst, char *query);
87 int rlm_sql_fetch_row(SQLSOCK *sqlsocket, SQL_INST *inst);