2 * radiusd.h Structures, prototypes and global variables
3 * for the Cistron Radius server.
14 typedef struct auth_req {
15 RADIUS_PACKET *packet;
18 VALUE_PAIR *config_items;
19 char username[MAX_STRING_LEN];
25 struct auth_req *next;
28 typedef struct client {
44 typedef struct realm {
55 typedef struct pair_list {
60 struct pair_list *next;
63 #define DEBUG if(debug_flag)log_debug
64 #define DEBUG2 if (debug_flag > 1)log_debug
66 #define SECONDS_PER_DAY 86400
67 #define MAX_REQUEST_TIME 30
68 #define CLEANUP_DELAY 5
69 #define MAX_REQUESTS 255
85 /* for paircompare_register */
86 typedef int (*COMPARE)(VALUE_PAIR *, VALUE_PAIR *, VALUE_PAIR *, VALUE_PAIR **);
91 extern const char *progname;
92 extern int debug_flag;
93 extern const char *radacct_dir;
94 extern const char *radlog_dir;
95 extern const char *radius_dir;
96 extern const char *radius_libdir;
97 extern UINT4 expiration_seconds;
98 extern int radius_pid;
100 extern int log_stripped_names;
101 extern int cache_passwd;
103 extern int log_auth_detail;
105 extern int log_auth_pass;
106 extern int auth_port;
107 extern int acct_port;
108 extern int proxy_port;
112 * Function prototypes.
116 int rad_accounting(REQUEST *);
119 int radutmp_add(REQUEST *);
120 int radutmp_zap(UINT4 nas, int port, char *user, time_t t);
121 int radutmp_checksimul(char *name, VALUE_PAIR *, int maxsimul);
124 void debug_pair(FILE *, VALUE_PAIR *);
125 int log_err (char *);
126 void sig_cleanup(int);
129 struct passwd *rad_getpwnam(const char *);
130 #if defined (sun) && defined(__svr4__)
131 void (*sun_signal(int signo, void (*func)(int)))(int);
132 #define signal sun_signal
134 void request_free(REQUEST *request);
135 RADIUS_PACKET * build_reply(int code, REQUEST *request,
136 VALUE_PAIR *vps, const char *user_msg);
137 VALUE_PAIR *rad_get_username(REQUEST *request);
138 int rad_put_username(REQUEST *request, const char *username, int length);
141 CLIENT *client_find(UINT4 ipno);
142 char *client_name(UINT4 ipno);
143 int read_clients_file(const char *);
144 REALM *realm_find(const char *);
145 PAIR_LIST *pairlist_read(const char *file, int complain);
146 void pairlist_free(PAIR_LIST **);
147 int read_config_files(void);
150 int read_naslist_file(char *);
151 NAS *nas_find(UINT4 ipno);
152 char *nas_name(UINT4 ipno);
153 char *nas_name2(RADIUS_PACKET *r);
154 NAS *nas_findbyname(char *nasname);
160 int log(int, const char *, ...);
161 int log_debug(const char *, ...);
165 int pam_pass(char *name, char *passwd, const char *pamauth);
166 #define PAM_DEFAULT_TYPE "radius"
170 int proxy_send(REQUEST *request);
171 int proxy_receive(REQUEST *request);
174 char *auth_name(REQUEST *request, int do_cli);
175 int rad_mangle(REQUEST *request);
176 int rad_authenticate (REQUEST *);
179 char *radius_xlate(const char *, VALUE_PAIR *req, VALUE_PAIR *reply);
180 int radius_exec_program(const char *, VALUE_PAIR *, VALUE_PAIR **,
181 int, const char **user_msg);
184 int timestr_match(char *, time_t);
187 int paircompare_register(int attr, int otherattr, COMPARE func);
188 void paircompare_unregister(int attr, COMPARE func);
189 int paircmp(VALUE_PAIR *request, VALUE_PAIR *check,
191 void pair_builtincompare_init(void);
194 int radius_xlat2(char * out, int outlen, char *str,
195 REQUEST * request, VALUE_PAIR *reply);