Allow DHCP NAKs to be delayed
[freeradius.git] / src / include / radius.h
1 /*
2  * radius.h  Constants of the radius protocol.
3  *
4  * Version:  $Id$
5  *
6  */
7
8 typedef enum {
9         PW_TYPE_INVALID = 0,    //!< Invalid (uninitialised) attribute type.
10         PW_TYPE_STRING,         //!< String of printable characters.
11         PW_TYPE_INTEGER,        //!< 32 Bit unsigned integer.
12         PW_TYPE_IPADDR,         //!< 32 Bit IPv4 Address.
13         PW_TYPE_DATE,           //!< 32 Bit Unix timestamp.
14         PW_TYPE_ABINARY,        //!< Ascend binary format a packed data
15                                 //!< structure.
16         PW_TYPE_OCTETS,         //!< Raw octets.
17         PW_TYPE_IFID,           //!< Interface ID.
18         PW_TYPE_IPV6ADDR,       //!< 128 Bit IPv6 Address.
19         PW_TYPE_IPV6PREFIX,     //!< IPv6 Prefix.
20         PW_TYPE_BYTE,           //!< 8 Bit unsigned integer.
21         PW_TYPE_SHORT,          //!< 16 Bit unsigned integer.
22         PW_TYPE_ETHERNET,       //!< 48 Bit Mac-Address.
23         PW_TYPE_SIGNED,         //!< 32 Bit signed integer.
24         PW_TYPE_COMBO_IP,       //!< WiMAX IPv4 or IPv6 address depending
25                                 //!< on length.
26         PW_TYPE_TLV,            //!< Contains nested attributes.
27         PW_TYPE_EXTENDED,       //!< Extended attribute space attribute.
28         PW_TYPE_LONG_EXTENDED,  //!< Long extended attribute space attribute.
29         PW_TYPE_EVS,            //!< Extended attribute, vendor specific.
30         PW_TYPE_INTEGER64,      //!< 64 Bit unsigned integer.
31         PW_TYPE_IPV4PREFIX,     //!< IPv4 Prefix.
32         PW_TYPE_VSA,            //!< Vendor-Specific, for attribute 26
33         PW_TYPE_MAX             //!< Number of defined data types.
34 } PW_TYPE;
35
36 typedef enum {
37         PW_CODE_INVALID                 = 0,    //!< Packet code is invalid
38         PW_CODE_AUTHENTICATION_REQUEST  = 1,    //!< RFC2865 - Access-Request
39         PW_CODE_AUTHENTICATION_ACK      = 2,    //!< RFC2865 - Access-Accept
40         PW_CODE_AUTHENTICATION_REJECT   = 3,    //!< RFC2865 - Access-Reject
41         PW_CODE_ACCOUNTING_REQUEST      = 4,    //!< RFC2866 - Accounting-Request
42         PW_CODE_ACCOUNTING_RESPONSE     = 5,    //!< RFC2866 - Accounting-Response
43         PW_CODE_ACCOUNTING_STATUS       = 6,    //!< RFC3575 - Reserved
44         PW_CODE_PASSWORD_REQUEST        = 7,    //!< RFC3575 - Reserved
45         PW_CODE_PASSWORD_ACK            = 8,    //!< RFC3575 - Reserved
46         PW_CODE_PASSWORD_REJECT         = 9,    //!< RFC3575 - Reserved
47         PW_CODE_ACCOUNTING_MESSAGE      = 10,   //!< RFC3575 - Reserved
48         PW_CODE_ACCESS_CHALLENGE        = 11,   //!< RFC2865 - Access-Challenge
49         PW_CODE_STATUS_SERVER           = 12,   //!< RFC2865/RFC5997 - Status Server (request)
50         PW_CODE_STATUS_CLIENT           = 13,   //!< RFC2865/RFC5997 - Status Server (response)
51         PW_CODE_DISCONNECT_REQUEST      = 40,   //!< RFC3575/RFC5176 - Disconnect-Request
52         PW_CODE_DISCONNECT_ACK          = 41,   //!< RFC3575/RFC5176 - Disconnect-Ack (positive)
53         PW_CODE_DISCONNECT_NAK          = 42,   //!< RFC3575/RFC5176 - Disconnect-Nak (not willing to perform)
54         PW_CODE_COA_REQUEST             = 43,   //!< RFC3575/RFC5176 - CoA-Request
55         PW_CODE_COA_ACK                 = 44,   //!< RFC3575/RFC5176 - CoA-Ack (positive)
56         PW_CODE_COA_NAK                 = 45,   //!< RFC3575/RFC5176 - CoA-Nak (not willing to perform)
57         PW_CODE_MAX                     = 255,  //!< Maximum possible code
58 } PW_CODE;
59
60 #define PW_AUTH_UDP_PORT                1812
61 #define PW_ACCT_UDP_PORT                1813
62 #define PW_POD_UDP_PORT                 1700
63 #define PW_RADIUS_TLS_PORT              2083
64 #define PW_COA_UDP_PORT                 3799
65
66 #define PW_USER_NAME                    1
67 #define PW_USER_PASSWORD                2
68 #define PW_PASSWORD                     2
69 #define PW_CHAP_PASSWORD                3
70 #define PW_NAS_IP_ADDRESS               4
71 #define PW_NAS_PORT                     5
72 #define PW_SERVICE_TYPE                 6
73 #define PW_FRAMED_PROTOCOL              7
74 #define PW_FRAMED_IP_ADDRESS            8
75 #define PW_FRAMED_IP_NETMASK            9
76 #define PW_FRAMED_ROUTING               10
77 #define PW_FILTER_ID                    11
78 #define PW_FRAMED_MTU                   12
79 #define PW_FRAMED_COMPRESSION           13
80 #define PW_LOGIN_IP_HOST                14
81 #define PW_LOGIN_SERVICE                15
82 #define PW_LOGIN_TCP_PORT               16
83 #define PW_OLD_PASSWORD                 17
84 #define PW_REPLY_MESSAGE                18
85 #define PW_CALLBACK_NUMBER              19
86 #define PW_CALLBACK_ID                  20
87 #if 0
88 /*
89  *      Deprecated, and no longer used.
90  */
91 #define PW_EXPIRATION                   21
92 #endif
93 #define PW_FRAMED_ROUTE                 22
94 #define PW_FRAMED_IPXNET                23
95 #define PW_STATE                        24
96 #define PW_CLASS                        25
97 #define PW_VENDOR_SPECIFIC              26
98 #define PW_SESSION_TIMEOUT              27
99 #define PW_IDLE_TIMEOUT                 28
100 #define PW_CALLED_STATION_ID            30
101 #define PW_CALLING_STATION_ID           31
102 #define PW_NAS_IDENTIFIER               32
103 #define PW_PROXY_STATE                  33
104
105 #define PW_ACCT_STATUS_TYPE             40
106 #define PW_ACCT_DELAY_TIME              41
107 #define PW_ACCT_INPUT_OCTETS            42
108 #define PW_ACCT_OUTPUT_OCTETS           43
109 #define PW_ACCT_SESSION_ID              44
110 #define PW_ACCT_AUTHENTIC               45
111 #define PW_ACCT_SESSION_TIME            46
112 #define PW_ACCT_INPUT_PACKETS           47
113 #define PW_ACCT_OUTPUT_PACKETS          48
114 #define PW_ACCT_TERMINATE_CAUSE         49
115
116 #define PW_EVENT_TIMESTAMP              55
117
118 #define PW_CHAP_CHALLENGE               60
119 #define PW_NAS_PORT_TYPE                61
120 #define PW_PORT_LIMIT                   62
121
122 #define PW_ARAP_PASSWORD                70
123 #define PW_ARAP_FEATURES                71
124 #define PW_ARAP_ZONE_ACCESS             72
125 #define PW_ARAP_SECURITY                73
126 #define PW_ARAP_SECURITY_DATA           74
127 #define PW_PASSWORD_RETRY               75
128 #define PW_PROMPT                       76
129 #define PW_CONNECT_INFO                 77
130 #define PW_CONFIGURATION_TOKEN          78
131 #define PW_EAP_MESSAGE                  79
132 #define PW_MESSAGE_AUTHENTICATOR        80
133
134 #define PW_ARAP_CHALLENGE_RESPONSE      84
135 #define PW_NAS_PORT_ID_STRING           87
136 #define PW_FRAMED_POOL                  88
137 #define PW_CHARGEABLE_USER_IDENTITY     89
138 #define PW_NAS_IPV6_ADDRESS             95
139 #define PW_OPERATOR_NAME                126
140
141 #define PW_EXTENDED_ATTRIBUTE           192
142
143 #define PW_DIGEST_RESPONSE              206
144 #define PW_DIGEST_ATTRIBUTES            207
145
146 #define PW_FALL_THROUGH                 500
147 #define PW_RELAX_FILTER                 501
148 #define PW_EXEC_PROGRAM                 502
149 #define PW_EXEC_PROGRAM_WAIT            503
150
151 #define PW_AUTH_TYPE                    1000
152 #define PW_PREFIX                       1003
153 #define PW_SUFFIX                       1004
154 #define PW_GROUP                        1005
155 #define PW_CRYPT_PASSWORD               1006
156 #define PW_CONNECT_RATE                 1007
157 #define PW_ADD_PREFIX                   1008
158 #define PW_ADD_SUFFIX                   1009
159 #define PW_EXPIRATION                   1010
160 #define PW_AUTZ_TYPE                    1011
161 #define PW_ACCT_TYPE                    1012
162 #define PW_SESSION_TYPE                 1013
163 #define PW_POST_AUTH_TYPE               1014
164 #define PW_PRE_PROXY_TYPE               1015
165 #define PW_POST_PROXY_TYPE              1016
166 #define PW_PRE_ACCT_TYPE                1017
167 #define PW_EAP_TYPE                     1018
168 #define PW_EAP_TLS_REQUIRE_CLIENT_CERT  1019
169 #define PW_EAP_MD5_PASSWORD             1022
170 #define PW_CLIENT_SHORTNAME             1024
171 #define PW_LOAD_BALANCE_KEY             1025
172 #define PW_RAW_ATTRIBUTE                1026
173 #define PW_TNC_VLAN_ACCESS              1027
174 #define PW_TNC_VLAN_ISOLATE             1028
175 #define PW_USER_CATEGORY                1029
176 #define PW_GROUP_NAME                   1030
177 #define PW_HUNTGROUP_NAME               1031
178 #define PW_SIMULTANEOUS_USE             1034
179 #define PW_STRIP_USER_NAME              1035
180 #define PW_HINT                         1040
181 #define PAM_AUTH_ATTR                   1041
182 #define PW_LOGIN_TIME                   1042
183 #define PW_STRIPPED_USER_NAME           1043
184 #define PW_CURRENT_TIME                 1044
185 #define PW_REALM                        1045
186 #define PW_NO_SUCH_ATTRIBUTE            1046
187 #define PW_PACKET_TYPE                  1047
188 #define PW_PROXY_TO_REALM               1048
189 #define PW_REPLICATE_TO_REALM           1049
190 #define PW_ACCT_SESSION_START_TIME      1050
191 #define PW_ACCT_UNIQUE_SESSION_ID       1051
192 #define PW_CLIENT_IP_ADDRESS            1052
193 #define PW_LDAP_USERDN                  1053
194 #define PW_NS_MTA_MD5_PASSWORD          1054
195 #define PW_SQL_USER_NAME                1055
196 #define PW_LM_PASSWORD                  1057
197 #define PW_NT_PASSWORD                  1058
198 #define PW_SMB_ACCOUNT_CTRL             1059
199 #define PW_SMB_ACCOUNT_CTRL_TEXT        1061
200 #define PW_USER_PROFILE                 1062
201 #define PW_DIGEST_REALM                 1063
202 #define PW_DIGEST_NONCE                 1064
203 #define PW_DIGEST_METHOD                1065
204 #define PW_DIGEST_URI                   1066
205 #define PW_DIGEST_QOP                   1067
206 #define PW_DIGEST_ALGORITHM             1068
207 #define PW_DIGEST_BODY_DIGEST           1069
208 #define PW_DIGEST_CNONCE                1070
209 #define PW_DIGEST_NONCE_COUNT           1071
210 #define PW_DIGEST_USER_NAME             1072
211 #define PW_POOL_NAME                    1073
212 #define PW_LDAP_GROUP                   1074
213 #define PW_MODULE_SUCCESS_MESSAGE       1075
214 #define PW_MODULE_FAILURE_MESSAGE       1076
215 #if 0 /* no longer used */
216 #define PW_X99_FAST                     1077
217 #endif
218 #define PW_REWRITE_RULE                 1078
219 #define PW_SQL_GROUP                    1079
220 #define PW_RESPONSE_PACKET_TYPE         1080
221 #define PW_DIGEST_HA1                   1081
222 #define PW_MS_CHAP_USE_NTLM_AUTH        1082
223 #define PW_MS_CHAP_USER_NAME            1083
224 #define PW_PACKET_SRC_IP_ADDRESS        1084
225 #define PW_PACKET_DST_IP_ADDRESS        1085
226 #define PW_PACKET_SRC_PORT              1086
227 #define PW_PACKET_DST_PORT              1087
228 #define PW_PACKET_AUTHENTICATION_VECTOR 1088
229 #define PW_TIME_OF_DAY                  1089
230 #define PW_REQUEST_PROCESSING_STAGE     1090
231
232 #define PW_SHA2_PASSWORD                1092
233 #define PW_SHA_PASSWORD                 1093
234 #define PW_SSHA_PASSWORD                1094
235 #define PW_MD5_PASSWORD                 1095
236 #define PW_SMD5_PASSWORD                1096
237
238 #define PW_PACKET_SRC_IPV6_ADDRESS      1097
239 #define PW_PACKET_DST_IPV6_ADDRESS      1098
240 #define PW_VIRTUAL_SERVER               1099
241 #define PW_CLEARTEXT_PASSWORD           1100
242 #define PW_PASSWORD_WITH_HEADER         1101
243 #define PW_SEND_COA_REQUEST             1107
244 #define PW_MODULE_RETURN_CODE           1108
245 #define PW_PACKET_ORIGINAL_TIMESTAMP    1109
246 #define PW_HOME_SERVER_POOL             1111
247 #define PW_FREERADIUS_CLIENT_IP_ADDRESS         1120
248 #define PW_FREERADIUS_CLIENT_IPV6_ADDRESS       1121
249 #define PW_FREERADIUS_CLIENT_IP_PREFIX          1150
250 #define PW_FREERADIUS_CLIENT_IPV6_PREFIX        1151
251 #define PW_RECV_COA_TYPE                1131
252 #define PW_SEND_COA_TYPE                1132
253 #define PW_MSCHAP_PASSWORD              1133
254 #define PW_PACKET_TRANSMIT_COUNTER      1134
255 #define PW_CACHED_SESSION_POLICY        1135
256 #define PW_FREERADIUS_CLIENT_SRC_IP_ADDRESS     1143
257 #define PW_FREERADIUS_CLIENT_SRC_IPV6_ADDRESS   1144
258
259 #define PW_OTP_CHALLENGE                1145
260 #define PW_EAP_SESSION_ID               1146
261
262 #define PW_FREERADIUS_RESPONSE_DELAY    1152
263
264 /*
265  *      Integer Translations
266  */
267
268 /*      User Types      */
269
270 #define PW_LOGIN_USER                   1
271 #define PW_FRAMED_USER                  2
272 #define PW_CALLBACK_LOGIN_USER          3
273 #define PW_CALLBACK_FRAMED_USER         4
274 #define PW_OUTBOUND_USER                5
275 #define PW_ADMINISTRATIVE_USER          6
276 #define PW_NAS_PROMPT_USER              7
277 #define PW_AUTHENTICATE_ONLY            8
278 #define PW_CALLBACK_NAS_PROMPT          9
279
280 /*      Framed Protocols        */
281
282 #define PW_PPP                          1
283 #define PW_SLIP                         2
284
285 /*      Framed Routing Values   */
286
287 #define PW_NONE                         0
288 #define PW_BROADCAST                    1
289 #define PW_LISTEN                       2
290 #define PW_BROADCAST_LISTEN             3
291
292 /*      Framed Compression Types        */
293
294 #define PW_VAN_JACOBSEN_TCP_IP          1
295
296 /*      Login Services  */
297
298 #define PW_TELNET                       0
299 #define PW_RLOGIN                       1
300 #define PW_TCP_CLEAR                    2
301 #define PW_PORTMASTER                   3
302
303 /*      Authentication Level    */
304
305 #define PW_AUTHTYPE_LOCAL               0
306 #define PW_AUTHTYPE_SYSTEM              1
307 #define PW_AUTHTYPE_SECURID             2
308 #define PW_AUTHTYPE_CRYPT               3
309 #define PW_AUTHTYPE_REJECT              4
310 #define PW_AUTHTYPE_ACTIVCARD           5
311 #define PW_AUTHTYPE_EAP                 6
312 #define PW_AUTHTYPE_ACCEPT              254
313 #define PW_AUTHTYPE_MS_CHAP             1028
314
315 /* Post-auth types */
316 #define PW_POSTAUTHTYPE_LOCAL           0
317 #define PW_POSTAUTHTYPE_REJECT          1
318
319 /*      Port Types              */
320
321 #define PW_NAS_PORT_ASYNC               0
322 #define PW_NAS_PORT_SYNC                1
323 #define PW_NAS_PORT_ISDN                2
324 #define PW_NAS_PORT_ISDN_V120           3
325 #define PW_NAS_PORT_ISDN_V110           4
326
327 /*      Status Types    */
328
329 #define PW_STATUS_START                 1
330 #define PW_STATUS_STOP                  2
331 #define PW_STATUS_ALIVE                 3
332 #define PW_STATUS_ACCOUNTING_ON         7
333 #define PW_STATUS_ACCOUNTING_OFF        8
334
335 /*
336  *      Vendor Private Enterprise Codes
337  */
338 #define VENDORPEC_MICROSOFT             311
339 #define VENDORPEC_FREERADIUS            11344
340 #define VENDORPEC_WIMAX                 24757
341
342 /*
343  * Vendor specific attributes
344  */
345 #define PW_FREERADIUS_PROXIED_TO        1
346
347 /*
348  *      Microsoft has vendor code 311.
349  */
350 #define PW_MSCHAP_RESPONSE              1
351 #define PW_MSCHAP_ERROR                 2
352 #define PW_MSCHAP_CPW_1                 3
353 #define PW_MSCHAP_CPW_2                 4
354 #define PW_MSCHAP_NT_ENC_PW             6
355 #define PW_MSCHAP_CHALLENGE             11
356 #define PW_MSCHAP2_RESPONSE             25
357 #define PW_MSCHAP2_SUCCESS              26
358 #define PW_MSCHAP2_CPW                  27
359
360 /*
361  *      Old nonsense.   Will be deleted ASAP
362  */
363 #define PW_AUTHTYPE                     1000
364 #define PW_AUTZTYPE                     1011
365 #define PW_ACCTTYPE                     1012
366 #define PW_SESSTYPE                     1013
367 #define PW_POSTAUTHTYPE                 1014
368
369 /*
370  *      Cisco's VLAN Query Protocol.
371  */
372 #define PW_VQP_PACKET_TYPE              0x2b00
373 #define PW_VQP_ERROR_CODE               0x2b01
374 #define PW_VQP_SEQUENCE_NUMBER          0x2b02
375
376 #define PW_VQP_CLIENT_IP_ADDRESS        0x2c01
377 #define PW_VQP_PORT_NAME                0x2c02
378 #define PW_VQP_VLAN_NAME                0x2c03
379 #define PW_VQP_DOMAIN_NAME              0x2c04
380 #define PW_VQP_ETHERNET_FRAME           0x2c05
381 #define PW_VQP_MAC                      0x2c06
382 #define PW_VQP_UNKNOWN                  0x2c07
383 #define PW_VQP_COOKIE                   0x2c08