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;
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 const char *radacct_dir;
93 extern const char *radlog_dir;
94 extern const char *radius_dir;
95 extern const char *radius_libdir;
96 extern UINT4 expiration_seconds;
97 extern int radius_pid;
99 extern int log_stripped_names;
100 extern int cache_passwd;
102 extern int log_auth_detail;
104 extern int log_auth_pass;
105 extern int auth_port;
106 extern int acct_port;
109 * Function prototypes.
113 int rad_accounting(REQUEST *);
116 int radutmp_add(REQUEST *);
117 int radutmp_zap(UINT4 nas, int port, char *user, time_t t);
118 int radutmp_checksimul(char *name, VALUE_PAIR *, int maxsimul);
121 void debug_pair(FILE *, VALUE_PAIR *);
122 int log_err (char *);
123 void sig_cleanup(int);
126 struct passwd *rad_getpwnam(char *);
127 #if defined (sun) && defined(__svr4__)
128 void (*sun_signal(int signo, void (*func)(int)))(int);
129 #define signal sun_signal
131 void request_free(REQUEST *request);
132 RADIUS_PACKET * build_reply(int code, REQUEST *request,
133 VALUE_PAIR *vps, char *user_msg);
134 VALUE_PAIR *rad_get_username(REQUEST *request);
135 int rad_put_username(REQUEST *request, char *username, int length);
138 CLIENT *client_find(UINT4 ipno);
139 char *client_name(UINT4 ipno);
140 int read_clients_file(char *);
141 REALM *realm_find(char *);
142 PAIR_LIST *pairlist_read(const char *file, int complain);
143 void pairlist_free(PAIR_LIST **);
144 int read_config_files(void);
147 int read_naslist_file(char *);
148 NAS *nas_find(UINT4 ipno);
149 char *nas_name(UINT4 ipno);
150 char *nas_name2(RADIUS_PACKET *r);
151 NAS *nas_findbyname(char *nasname);
157 int log(int, const char *, ...);
158 int log_debug(const char *, ...);
162 int pam_pass(char *name, char *passwd, const char *pamauth);
163 #define PAM_DEFAULT_TYPE "radius"
167 int proxy_send(REQUEST *request);
168 int proxy_receive(REQUEST *request);
171 char *auth_name(REQUEST *request, int do_cli);
172 int rad_mangle(REQUEST *request);
173 int rad_authenticate (REQUEST *);
176 char *radius_xlate(char *, VALUE_PAIR *req, VALUE_PAIR *reply);
177 int radius_exec_program(char *, VALUE_PAIR *, VALUE_PAIR **,
178 int, char **user_msg);
181 int timestr_match(char *, time_t);
184 int paircompare_register(int attr, int otherattr, COMPARE func);
185 void paircompare_unregister(int attr, COMPARE func);
186 int paircmp(VALUE_PAIR *request, VALUE_PAIR *check,
188 void pair_builtincompare_init(void);
191 int radius_xlat2(char * out, int outlen, char *str,
192 REQUEST * request, VALUE_PAIR *reply);