Change a couple of Makefile.ins to plain Makefiles
[freeradius.git] / src / include / radiusd.h
1 /*
2  * radiusd.h    Structures, prototypes and global variables
3  *              for the Cistron Radius server.
4  *
5  * Version:     $Id$
6  *
7  */
8
9 #include "libradius.h"
10 #include "radpaths.h"
11 #include "conf.h"
12 #include "missing.h"
13
14 #define CHAP_VALUE_LENGTH               16
15
16 typedef struct auth_req {
17         RADIUS_PACKET           *packet;
18         RADIUS_PACKET           *proxy;
19         char                    username[MAX_STRING_LEN];
20         char                    secret[32];
21         int                     child_pid;
22         time_t                  timestamp;
23         int                     finished;
24         struct auth_req         *next;
25 } REQUEST;
26
27 typedef struct client {
28         UINT4                   ipaddr;
29         char                    longname[256];
30         u_char                  secret[32];
31         char                    shortname[32];
32         struct client           *next;
33 } CLIENT;
34
35 typedef struct nas {
36         UINT4                   ipaddr;
37         char                    longname[256];
38         char                    shortname[32];
39         char                    nastype[32];
40         struct nas              *next;
41 } NAS;
42
43 typedef struct realm {
44         char                    realm[64];
45         char                    server[64];
46         UINT4                   ipaddr;
47         int                     auth_port;
48         int                     acct_port;
49         int                     striprealm;
50         struct realm            *next;
51 } REALM;
52
53 typedef struct pair_list {
54         char                    *name;
55         VALUE_PAIR              *check;
56         VALUE_PAIR              *reply;
57         int                     lineno;
58         struct pair_list        *next;
59 } PAIR_LIST;
60
61 #define DEBUG   if(debug_flag)log_debug
62 #define DEBUG2  if (debug_flag > 1)log_debug
63
64 #define SECONDS_PER_DAY         86400
65 #define MAX_REQUEST_TIME        30
66 #define CLEANUP_DELAY           5
67 #define MAX_REQUESTS            255
68
69 #define L_DBG                   1
70 #define L_AUTH                  2
71 #define L_INFO                  3
72 #define L_ERR                   4
73 #define L_PROXY                 5
74 #define L_CONS                  128
75
76 #ifndef FALSE
77 #  define FALSE 0
78 #endif
79 #ifndef TRUE
80 #  define TRUE 1
81 #endif
82
83 /* for paircompare_register */
84 typedef int (*COMPARE)(VALUE_PAIR *, VALUE_PAIR *, VALUE_PAIR *, VALUE_PAIR **);
85
86 /*
87  *      Global variables.
88  */
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;
96 extern int              use_dbm;
97 extern int              log_stripped_names;
98 extern int              cache_passwd;
99 extern UINT4            myip;
100 extern int              log_auth_detail;
101 extern int              log_auth;
102 extern int              log_auth_pass;
103 extern int              auth_port;
104 extern int              acct_port;
105
106 /*
107  *      Function prototypes.
108  */
109
110 /* acct.c */
111 int             rad_accounting(REQUEST *, int);
112
113 /* radutmp.c */
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);
117
118 /* radiusd.c */
119 void            debug_pair(FILE *, VALUE_PAIR *);
120 int             log_err (char *);
121 void            sig_cleanup(int);
122
123 /* util.c */
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
128 #endif
129 void            request_free(REQUEST *request);
130 RADIUS_PACKET * build_reply(int code, REQUEST *request,
131                         VALUE_PAIR *vps, char *user_msg);
132
133 /* files.c */
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);
141
142 /* nas.c */
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);
148
149 /* version.c */
150 void            version();
151
152 /* log.c */
153 int             log(int, char *, ...);
154 int             log_debug(char *, ...);
155
156 /* pam.c */
157 #ifdef WITH_PAM
158 int             pam_pass(char *name, char *passwd, const char *pamauth);
159 #define PAM_DEFAULT_TYPE    "radius"
160 #endif
161
162 /* proxy.c */
163 int proxy_send(REQUEST *request, int activefd);
164 int proxy_receive(REQUEST *request, int activefd);
165
166 /* auth.c */
167 char            *auth_name(REQUEST *request, int do_cli);
168 int             rad_mangle(REQUEST *request);
169 int             rad_authenticate (REQUEST *, int);
170
171 /* exec.c */
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);
175
176 /* timestr.c */
177 int             timestr_match(char *, time_t);
178
179 /* valuepair.c */
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,
183                         VALUE_PAIR **reply);
184 void            pair_builtincompare_init(void);
185