1 /***************************************************************************
2 * rlm_sql.h rlm_sql - FreeRADIUS SQL Module *
4 * Header for main SQL module file *
6 * Mike Machado <mike@innercite.com> *
7 ***************************************************************************/
16 #include <semaphore.h>
24 #define SQLSOCK_LOCKED 0
25 #define SQLSOCK_UNLOCKED 1
27 #define PW_VP_USERDATA 1
28 #define PW_VP_GROUPDATA 2
29 #define PW_VP_REALMDATA 3
31 #define PW_ITEM_CHECK 0
32 #define PW_ITEM_REPLY 1
34 typedef char** SQL_ROW;
36 typedef struct sql_socket {
43 struct sql_socket *next;
44 enum { sockconnected, sockunconnected } state;
50 typedef struct rlm_sql_module_t {
52 int (*sql_init_socket)(SQLSOCK *sqlsocket, SQL_CONFIG *config);
53 int (*sql_destroy_socket)(SQLSOCK *sqlsocket, SQL_CONFIG *config);
54 int (*sql_query)(SQLSOCK *sqlsocket, SQL_CONFIG *config, char *query);
55 int (*sql_select_query)(SQLSOCK *sqlsocket, SQL_CONFIG *config, char *query);
56 int (*sql_store_result)(SQLSOCK *sqlsocket, SQL_CONFIG *config);
57 int (*sql_num_fields)(SQLSOCK *sqlsocket, SQL_CONFIG *config);
58 int (*sql_num_rows)(SQLSOCK *sqlsocket, SQL_CONFIG *config);
59 int (*sql_fetch_row)(SQLSOCK *sqlsocket, SQL_CONFIG *config);
60 int (*sql_free_result)(SQLSOCK *sqlsocket, SQL_CONFIG *config);
61 char *(*sql_error)(SQLSOCK *sqlsocket, SQL_CONFIG *config);
62 int (*sql_close)(SQLSOCK *sqlsocket, SQL_CONFIG *config);
63 int (*sql_finish_query)(SQLSOCK *sqlsocket, SQL_CONFIG *config);
64 int (*sql_finish_select_query)(SQLSOCK *sqlsocket, SQL_CONFIG *config);
65 int (*sql_affected_rows)(SQLSOCK *sqlsocket, SQL_CONFIG *config);
68 typedef struct sql_inst {
74 rlm_sql_module_t *module;
78 pthread_mutex_t mutex;
83 int sql_init_socketpool(SQL_INST * inst);
84 void sql_poolfree(SQL_INST * inst);
85 int sql_close_socket(SQL_INST *inst, SQLSOCK * sqlsocket);
86 SQLSOCK *sql_get_socket(SQL_INST * inst);
87 int sql_release_socket(SQL_INST * inst, SQLSOCK * sqlsocket);
88 int sql_userparse(VALUE_PAIR ** first_pair, SQL_ROW row, int mode);
89 int sql_read_realms(SQLSOCK * sqlsocket);
90 int sql_getvpdata(SQL_INST * inst, SQLSOCK * sqlsocket, VALUE_PAIR **pair, char *query, int mode);
91 int sql_check_multi(SQL_INST * inst, SQLSOCK * sqlsocket, char *name, VALUE_PAIR * request, int maxsimul);
92 int sql_read_naslist(SQLSOCK * sqlsocket);
93 int sql_read_clients(SQLSOCK * sqlsocket);
94 int sql_dict_init(SQLSOCK * sqlsocket);
95 void query_log(SQL_INST * inst, char *querystr);
96 int rlm_sql_select_query(SQLSOCK *sqlsocket, SQL_INST *inst, char *query);
97 int rlm_sql_query(SQLSOCK *sqlsocket, SQL_INST *inst, char *query);
98 int rlm_sql_fetch_row(SQLSOCK *sqlsocket, SQL_INST *inst);