2 * radiusd.h Structures, prototypes and global variables
3 * for the Cistron Radius server.
5 * Version: @(#)radiusd.h 2.00 19-Jul-1999 miquels@cistron.nl
12 #define CHAP_VALUE_LENGTH 16
14 #define PW_AUTH_UDP_PORT 1645
15 #define PW_ACCT_UDP_PORT 1646
17 typedef struct auth_req {
18 RADIUS_PACKET *packet;
20 char username[MAX_STRING_LEN];
25 struct auth_req *next;
28 typedef struct client {
44 typedef struct realm {
54 typedef struct pair_list {
59 struct pair_list *next;
62 #define DEBUG if(debug_flag)log_debug
63 #define DEBUG2 if (debug_flag > 1)log_debug
65 #define SECONDS_PER_DAY 86400
66 #define MAX_REQUEST_TIME 30
67 #define CLEANUP_DELAY 5
68 #define MAX_REQUESTS 255
84 /* for paircompare_register */
85 typedef int (*COMPARE)(VALUE_PAIR *, VALUE_PAIR *, VALUE_PAIR *, VALUE_PAIR **);
90 extern char *progname;
91 extern int debug_flag;
92 extern char *radacct_dir;
93 extern char *radius_dir;
94 extern char *radius_libdir;
95 extern UINT4 expiration_seconds;
96 extern int radius_pid;
98 extern int log_stripped_names;
99 extern int cache_passwd;
101 extern int log_auth_detail;
103 extern int log_auth_pass;
104 extern int auth_port;
105 extern int acct_port;
108 * Function prototypes.
112 int rad_accounting(REQUEST *, int);
115 int radutmp_add(REQUEST *);
116 int radutmp_zap(UINT4 nas, int port, char *user, time_t t);
117 int radutmp_checksimul(char *name, VALUE_PAIR *, int maxsimul);
120 void debug_pair(FILE *, VALUE_PAIR *);
121 int log_err (char *);
122 void sig_cleanup(int);
125 struct passwd *rad_getpwnam(char *);
126 #if defined (sun) && defined(__svr4__)
127 void (*sun_signal(int signo, void (*func)(int)))(int);
128 #define signal sun_signal
130 void request_free(REQUEST *request);
131 RADIUS_PACKET * build_reply(int code, REQUEST *request,
132 VALUE_PAIR *vps, char *user_msg);
135 CLIENT *client_find(UINT4 ipno);
136 char *client_name(UINT4 ipno);
137 int read_clients_file(char *);
138 REALM *realm_find(char *);
139 PAIR_LIST *pairlist_read(char *file, int complain);
140 void pairlist_free(PAIR_LIST **);
141 int read_config_files(void);
144 int read_naslist_file(char *);
145 NAS *nas_find(UINT4 ipno);
146 char *nas_name(UINT4 ipno);
147 char *nas_name2(RADIUS_PACKET *r);
148 NAS *nas_findbyname(char *nasname);
154 int log(int, char *, ...);
155 int log_debug(char *, ...);
159 int pam_pass(char *name, char *passwd, const char *pamauth);
160 #define PAM_DEFAULT_TYPE "radius"
164 int proxy_send(REQUEST *request, int activefd);
165 int proxy_receive(REQUEST *request, int activefd);
168 char *auth_name(REQUEST *request, int do_cli);
169 int rad_mangle(REQUEST *request);
170 int rad_authenticate (REQUEST *, int);
173 char *radius_xlate(char *, VALUE_PAIR *req, VALUE_PAIR *reply);
174 int radius_exec_program(char *, VALUE_PAIR *, VALUE_PAIR **,
175 int, char **user_msg);
178 int timestr_match(char *, time_t);
181 int paircompare_register(int attr, int otherattr, COMPARE func);
182 void paircompare_unregister(int attr, COMPARE func);
183 int paircmp(VALUE_PAIR *request, VALUE_PAIR *check,
185 void pair_builtincompare_init(void);