1 /* freeradius sql module
7 #include "sql_module.h"
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"
17 #define PW_VP_USERDATA 1
18 #define PW_VP_GROUPDATA 2
19 #define PW_VP_REALMDATA 3
21 #define MAX_TABLE_LEN 20
22 #define MAX_AUTH_QUERY_LEN 256
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;
48 typedef struct sqlconfig {
53 char sql_password[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];
77 #define SQL_LOCK_LEN sizeof(SQLREC)
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);