1 /* freeradius sql module
8 #include "sql_module.h"
11 #define QUERYLOG "/var/log/radacct/radius.sql"
12 #define SQLCONFIGFILE "radius.conf"
13 #define SQLBACKUP "/var/log/radacct/sqlbackup.dat"
17 #define PW_VP_USERDATA 1
18 #define PW_VP_GROUPDATA 2
20 #define MAX_TABLE_LEN 20
21 #define MAX_AUTH_QUERY_LEN 256
23 typedef struct sqlrec {
24 char AcctSessionId[SQLBIGREC];
25 char UserName[SQLBIGREC];
26 char Realm[SQLBIGREC];
27 char NASIPAddress[SQLLILREC];
28 unsigned long NASPortId;
29 char NASPortType[SQLBIGREC];
30 char AcctStatusType[SQLBIGREC];
31 unsigned int AcctStatusTypeId;
32 char AcctTimeStamp[20];
33 unsigned long AcctSessionTime;
34 char AcctAuthentic[SQLBIGREC];
35 char ConnectInfo[SQLBIGREC];
36 unsigned long AcctInputOctets;
37 unsigned long AcctOutputOctets;
38 char CalledStationId[SQLLILREC];
39 char CallingStationId[SQLLILREC];
40 char AcctTerminateCause[SQLBIGREC];
41 char ServiceType[SQLBIGREC];
42 char FramedProtocol[SQLBIGREC];
43 char FramedIPAddress[SQLLILREC];
44 unsigned long AcctDelayTime;
47 typedef struct sqlconfig {
52 char sql_password[20];
54 char sql_acct_table[MAX_TABLE_LEN];
55 char sql_authcheck_table[MAX_TABLE_LEN];
56 char sql_authreply_table[MAX_TABLE_LEN];
57 char sql_groupcheck_table[MAX_TABLE_LEN];
58 char sql_groupreply_table[MAX_TABLE_LEN];
59 char sql_usergroup_table[MAX_TABLE_LEN];
60 char sql_realm_table[MAX_TABLE_LEN];
61 char sql_realmgroup_table[MAX_TABLE_LEN];
62 char sql_nas_table[MAX_TABLE_LEN];
63 char sql_dict_table[MAX_TABLE_LEN];
76 #define SQL_LOCK_LEN sizeof(SQLREC)
79 int sql_save_acct(SQLREC *sqlrecord);
80 int sql_userparse(VALUE_PAIR **first_pair, SQL_ROW row);
81 int sql_checksocket(const char *facility);
82 int sql_getvpdata(char *table, VALUE_PAIR **vp, char *user, int mode);
83 int sql_check_multi(char *name, VALUE_PAIR *request, int maxsimul);