OSDN Git Service

2013.10.24
[uclinux-h8/uClinux-dist.git] / user / pam_radius / radius.h
1 /*
2  *
3  *      RADIUS
4  *      Remote Authentication Dial In User Service
5  *
6  *
7  *      Livingston Enterprises, Inc.
8  *      6920 Koll Center Parkway
9  *      Pleasanton, CA   94566
10  *
11  *      Copyright 1992 Livingston Enterprises, Inc.
12  *
13  *      Permission to use, copy, modify, and distribute this software for any
14  *      purpose and without fee is hereby granted, provided that this
15  *      copyright and permission notice appear on all copies and supporting
16  *      documentation, the name of Livingston Enterprises, Inc. not be used
17  *      in advertising or publicity pertaining to distribution of the
18  *      program without specific prior permission, and notice be given
19  *      in supporting documentation that copying and distribution is by
20  *      permission of Livingston Enterprises, Inc.   
21  *
22  *      Livingston Enterprises, Inc. makes no representations about
23  *      the suitability of this software for any purpose.  It is
24  *      provided "as is" without express or implied warranty.
25  *
26  */
27
28 /*
29  *      @(#)radius.h    1.9 11/14/94 
30  */
31 #ifndef RADIUS_H
32 #define RADIUS_H
33
34 #define AUTH_VECTOR_LEN         16
35 #define AUTH_PASS_LEN           16
36 #define AUTH_STRING_LEN         128     /* maximum of 254 */
37
38 #ifndef UINT4
39 typedef unsigned long UINT4;
40 #endif
41
42 typedef struct pw_auth_hdr {
43         u_char          code;
44         u_char          id;
45         u_short         length;
46         u_char          vector[AUTH_VECTOR_LEN];
47         u_char          data[2];
48 } AUTH_HDR;
49
50 #define AUTH_HDR_LEN                    20
51 #define CHAP_VALUE_LENGTH               16
52
53 #define PW_AUTH_UDP_PORT                1645
54 #define PW_ACCT_UDP_PORT                1646
55
56 #define PW_TYPE_STRING                  0
57 #define PW_TYPE_INTEGER                 1
58 #define PW_TYPE_IPADDR                  2
59 #define PW_TYPE_DATE                    3
60
61
62 #define PW_AUTHENTICATION_REQUEST       1
63 #define PW_AUTHENTICATION_ACK           2
64 #define PW_AUTHENTICATION_REJECT        3
65 #define PW_ACCOUNTING_REQUEST           4
66 #define PW_ACCOUNTING_RESPONSE          5
67 #define PW_ACCOUNTING_STATUS            6
68 #define PW_PASSWORD_REQUEST             7
69 #define PW_PASSWORD_ACK                 8
70 #define PW_PASSWORD_REJECT              9
71 #define PW_ACCOUNTING_MESSAGE           10
72 #define PW_ACCESS_CHALLENGE             11
73
74 #define PW_USER_NAME                    1
75 #define PW_PASSWORD                     2
76 #define PW_CHAP_PASSWORD                3
77 #define PW_NAS_IP_ADDRESS               4
78 #define PW_NAS_PORT_ID                  5
79 #define PW_USER_SERVICE_TYPE            6
80 #define PW_FRAMED_PROTOCOL              7
81 #define PW_FRAMED_ADDRESS               8
82 #define PW_FRAMED_NETMASK               9
83 #define PW_FRAMED_ROUTING               10
84 #define PW_FRAMED_FILTER_ID             11
85 #define PW_FRAMED_MTU                   12
86 #define PW_FRAMED_COMPRESSION           13
87 #define PW_LOGIN_HOST                   14
88 #define PW_LOGIN_SERVICE                15
89 #define PW_LOGIN_TCP_PORT               16
90 #define PW_OLD_PASSWORD                 17
91 #define PW_REPLY_MESSAGE                18
92 #define PW_CALLBACK_NUMBER              19
93 #define PW_CALLBACK_ID                  20
94 #define PW_EXPIRATION                   21
95 #define PW_FRAMED_ROUTE                 22
96 #define PW_FRAMED_IPXNET                23
97 #define PW_STATE                        24
98 #define PW_CLASS                        25      /* string */
99 #define PW_VENDOR_SPECIFIC              26      /* vendor */
100 #define PW_SESSION_TIMEOUT              27      /* integer */
101 #define PW_IDLE_TIMEOUT                 28      /* integer */
102 #define PW_TERMINATION_ACTION           29      /* integer */
103 #define PW_CALLED_STATION_ID            30      /* string */
104 #define PW_CALLING_STATION_ID           31      /* string */
105 #define PW_NAS_IDENTIFIER               32      /* string */
106 #define PW_PROXY_STATE                  33      /* string */
107 #define PW_LOGIN_LAT_SERVICE            34      /* string */
108 #define PW_LOGIN_LAT_NODE               35      /* string */
109 #define PW_LOGIN_LAT_GROUP              36      /* string */
110 #define PW_FRAMED_APPLETALK_LINK        37      /* integer */
111 #define PW_FRAMED_APPLETALK_NETWORK     38      /* integer */
112 #define PW_FRAMED_APPLETALK_ZONE        39      /* string */
113
114 #define PW_ACCT_STATUS_TYPE             40
115 #define PW_ACCT_DELAY_TIME              41
116 #define PW_ACCT_INPUT_OCTETS            42
117 #define PW_ACCT_OUTPUT_OCTETS           43
118 #define PW_ACCT_SESSION_ID              44
119 #define PW_ACCT_AUTHENTIC               45
120 #define PW_ACCT_SESSION_TIME            46
121
122 #define PW_CHAP_CHALLENGE               60      /* string */
123 #define PW_NAS_PORT_TYPE                61      /* integer */
124 #define PW_PORT_LIMIT                   62      /* integer */
125 #define PW_LOGIN_LAT_PORT               63      /* string */
126 #define PW_PROMPT                       64      /* integer */
127
128 /*
129  *      INTEGER TRANSLATIONS
130  */
131
132 /*      USER TYPES      */
133
134 #define PW_LOGIN_USER                   1
135 #define PW_FRAMED_USER                  2
136 #define PW_DIALBACK_LOGIN_USER  3
137 #define PW_DIALBACK_FRAMED_USER 4
138 #define PW_OUTBOUND_USER                5
139 #define PW_SHELL_USER                   6
140
141 /*      FRAMED PROTOCOLS        */
142
143 #define PW_PPP                          1
144 #define PW_SLIP                         2
145
146 /*      FRAMED ROUTING VALUES   */
147
148 #define PW_NONE                         0
149 #define PW_BROADCAST                    1
150 #define PW_LISTEN                       2
151 #define PW_BROADCAST_LISTEN             3
152
153 /*      NAS PORT TYPES */
154 #define PW_NAS_PORT_TYPE_VIRTUAL        5
155
156 /*      FRAMED COMPRESSION TYPES        */
157
158 #define PW_VAN_JACOBSEN_TCP_IP          1
159
160 /*      LOGIN SERVICES  */
161
162 #define PW_TELNET                       0
163 #define PW_RLOGIN                       1
164 #define PW_TCP_CLEAR                    2
165 #define PW_PORTMASTER                   3
166 #define PW_AUTHENTICATE_ONLY            8
167
168 /*      AUTHENTICATION LEVEL    */
169
170 #define PW_AUTH_NONE                    0
171 #define PW_AUTH_RADIUS                  1
172 #define PW_AUTH_LOCAL                   2
173
174 /*      STATUS TYPES    */
175
176 #define PW_STATUS_START                 1
177 #define PW_STATUS_STOP                  2
178 #define PW_STATUS_ALIVE                 3
179
180
181 /*      Vendor Specific Attribute stuff */
182 #define VENDOR_SECURE                   1573 /* Secure Computing */
183 #define PW_SG_GROUP                     1
184
185 #define PAM_ENV_SG_GROUP                "SG-GROUP"
186 #define PAM_ENV_IDLE_TIMEOUT            "SG-IDLETIME"
187
188 /* Default Database File Names */
189
190 #define RADIUS_DIR              "/etc/raddb"
191 #define RADACCT_DIR             "/usr/adm/radacct"
192
193 #define RADIUS_DICTIONARY       "dictionary"
194 #define RADIUS_CLIENTS          "clients"
195 #define RADIUS_USERS            "users"
196 #define RADIUS_HOLD             "holdusers"
197 #define RADIUS_LOG              "logfile"
198
199 /* Server data structures */
200
201 typedef struct dict_attr {
202         char                    name[32];
203         int                     value;
204         int                     type;
205         struct dict_attr        *next;
206 } DICT_ATTR;
207
208 typedef struct dict_value {
209         char                    attrname[32];
210         char                    name[32];
211         int                     value;
212         struct dict_value       *next;
213 } DICT_VALUE;
214
215 typedef struct value_pair {
216         char                    name[32];
217         int                     attribute;
218         int                     type;
219         UINT4                   lvalue;
220         char                    strvalue[AUTH_STRING_LEN];
221         struct value_pair       *next;
222 } VALUE_PAIR;
223
224 typedef struct auth_req {
225         UINT4                   ipaddr;
226         u_short                 udp_port;
227         u_char                  id;
228         u_char                  code;
229         u_char                  vector[16];
230         u_char                  secret[16];
231         VALUE_PAIR              *request;
232         int                     child_pid;      /* Process ID of child */
233         UINT4                   timestamp;
234         struct auth_req         *next;          /* Next active request */
235 } AUTH_REQ;
236
237 #define SECONDS_PER_DAY         86400
238 #define MAX_REQUEST_TIME        30
239 #define CLEANUP_DELAY           5
240 #define MAX_REQUESTS            100
241
242 #endif /* RADIUS_H */