2 * radiusd.h Structures, prototypes and global variables
3 * for the Cistron Radius server.
14 #define CHAP_VALUE_LENGTH 16
16 typedef struct auth_req {
17 RADIUS_PACKET *packet;
19 char username[MAX_STRING_LEN];
24 struct auth_req *next;
27 typedef struct client {
43 typedef struct realm {
53 typedef struct pair_list {
58 struct pair_list *next;
61 #define DEBUG if(debug_flag)log_debug
62 #define DEBUG2 if (debug_flag > 1)log_debug
64 #define SECONDS_PER_DAY 86400
65 #define MAX_REQUEST_TIME 30
66 #define CLEANUP_DELAY 5
67 #define MAX_REQUESTS 255
83 /* for paircompare_register */
84 typedef int (*COMPARE)(VALUE_PAIR *, VALUE_PAIR *, VALUE_PAIR *, VALUE_PAIR **);
89 extern char *progname;
90 extern int debug_flag;
91 extern char *radacct_dir;
92 extern char *radius_dir;
93 extern char *radius_libdir;
94 extern UINT4 expiration_seconds;
95 extern int radius_pid;
97 extern int log_stripped_names;
98 extern int cache_passwd;
100 extern int log_auth_detail;
102 extern int log_auth_pass;
103 extern int auth_port;
104 extern int acct_port;
107 * Function prototypes.
111 int rad_accounting(REQUEST *, int);
114 int radutmp_add(REQUEST *);
115 int radutmp_zap(UINT4 nas, int port, char *user, time_t t);
116 int radutmp_checksimul(char *name, VALUE_PAIR *, int maxsimul);
119 void debug_pair(FILE *, VALUE_PAIR *);
120 int log_err (char *);
121 void sig_cleanup(int);
124 struct passwd *rad_getpwnam(char *);
125 #if defined (sun) && defined(__svr4__)
126 void (*sun_signal(int signo, void (*func)(int)))(int);
127 #define signal sun_signal
129 void request_free(REQUEST *request);
130 RADIUS_PACKET * build_reply(int code, REQUEST *request,
131 VALUE_PAIR *vps, char *user_msg);
134 CLIENT *client_find(UINT4 ipno);
135 char *client_name(UINT4 ipno);
136 int read_clients_file(char *);
137 REALM *realm_find(char *);
138 PAIR_LIST *pairlist_read(char *file, int complain);
139 void pairlist_free(PAIR_LIST **);
140 int read_config_files(void);
143 int read_naslist_file(char *);
144 NAS *nas_find(UINT4 ipno);
145 char *nas_name(UINT4 ipno);
146 char *nas_name2(RADIUS_PACKET *r);
147 NAS *nas_findbyname(char *nasname);
153 int log(int, char *, ...);
154 int log_debug(char *, ...);
158 int pam_pass(char *name, char *passwd, const char *pamauth);
159 #define PAM_DEFAULT_TYPE "radius"
163 int proxy_send(REQUEST *request, int activefd);
164 int proxy_receive(REQUEST *request, int activefd);
167 char *auth_name(REQUEST *request, int do_cli);
168 int rad_mangle(REQUEST *request);
169 int rad_authenticate (REQUEST *, int);
172 char *radius_xlate(char *, VALUE_PAIR *req, VALUE_PAIR *reply);
173 int radius_exec_program(char *, VALUE_PAIR *, VALUE_PAIR **,
174 int, char **user_msg);
177 int timestr_match(char *, time_t);
180 int paircompare_register(int attr, int otherattr, COMPARE func);
181 void paircompare_unregister(int attr, COMPARE func);
182 int paircmp(VALUE_PAIR *request, VALUE_PAIR *check,
184 void pair_builtincompare_init(void);