33e33f9be1ad0181c8a851ac3729667d6473f2e4
[freeradius.git] / src / modules / rlm_sql / rlm_sql.h
1 /* freeradius sql module
2 *          Mike Machado
3 *          InnerCite
4 *          mike@innercite.com
5 */
6
7 #include "sql_module.h"
8
9 #define QUERYLOG                "/var/log/radacct/radius.sql"
10 #define SQLCONFIGFILE           "rlm_sql.conf"
11 #define SQLBACKUP               "/var/log/radacct/sqlbackup.dat"
12 #define CHECKRAD1               "/usr/sbin/checkrad"
13 #define CHECKRAD2               "/usr/local/sbin/checkrad"
14
15 #define SQLBIGREC               32
16 #define SQLLILREC               16
17 #define PW_VP_USERDATA          1
18 #define PW_VP_GROUPDATA         2
19 #define PW_VP_REALMDATA         3
20
21 #define MAX_TABLE_LEN           20
22 #define MAX_AUTH_QUERY_LEN      256
23
24 typedef struct sqlrec {
25         char            AcctSessionId[SQLBIGREC];
26         char            UserName[SQLBIGREC];
27         char            Realm[SQLBIGREC];
28         char            NASIPAddress[SQLLILREC];
29         unsigned long   NASPortId;
30         char            NASPortType[SQLBIGREC];
31         char            AcctStatusType[SQLBIGREC];
32         unsigned int    AcctStatusTypeId;
33         char            AcctTimeStamp[20];
34         unsigned long   AcctSessionTime;
35         char            AcctAuthentic[SQLBIGREC];
36         char            ConnectInfo[SQLBIGREC];
37         unsigned long   AcctInputOctets;
38         unsigned long   AcctOutputOctets;
39         char            CalledStationId[SQLLILREC];
40         char            CallingStationId[SQLLILREC];
41         char            AcctTerminateCause[SQLBIGREC];
42         char            ServiceType[SQLBIGREC];
43         char            FramedProtocol[SQLBIGREC];
44         char            FramedIPAddress[SQLLILREC];
45         unsigned long   AcctDelayTime;
46 } SQLREC; 
47
48 typedef struct sqlconfig {
49         char            sql_type[40];
50         char            sql_server[40];
51         int             sql_port;
52         char            sql_login[20];
53         char            sql_password[20];
54         char            sql_db[20];
55         char            sql_acct_table[MAX_TABLE_LEN];
56         char            sql_authcheck_table[MAX_TABLE_LEN];
57         char            sql_authreply_table[MAX_TABLE_LEN];
58         char            sql_groupcheck_table[MAX_TABLE_LEN];
59         char            sql_groupreply_table[MAX_TABLE_LEN];
60         char            sql_usergroup_table[MAX_TABLE_LEN];
61         char            sql_realm_table[MAX_TABLE_LEN];
62         char            sql_realmgroup_table[MAX_TABLE_LEN];
63         char            sql_nas_table[MAX_TABLE_LEN];
64         char            sql_dict_table[MAX_TABLE_LEN];
65         int             sql_keepopen;
66         int             sqltrace;
67 } SQLCONFIG;
68
69 typedef struct sql {
70         SQLSOCK         *AuthSock;
71         SQLSOCK         *AcctSock;
72         SQLREC          *sqlrecord;
73         SQLREC          *backuprecord;
74         SQLCONFIG       config;
75 } SQL;
76         
77 #define SQL_LOCK_LEN sizeof(SQLREC)
78
79 int             sql_start();
80 int             sql_save_acct(SQLREC *sqlrecord);
81 int             sql_userparse(VALUE_PAIR **first_pair, SQL_ROW row);
82 int             sql_checksocket(const char *facility);
83 int             sql_getvpdata(char *table, VALUE_PAIR **vp, char *user, int mode);
84 int             sql_check_multi(char *name, VALUE_PAIR *request, int maxsimul);
85
86
87 SQL *sql;
88