xref: /openbsd/usr.sbin/tcpdump/radius.h (revision 29643adc)
1 /*	$OpenBSD: radius.h,v 1.3 2001/08/21 06:21:29 jakob Exp $	*/
2 
3 /* RADIUS support for tcpdump, Thomas Ptacek <tqbf@enteract.com> */
4 
5 /*
6  * Copyright (c) 1997 Thomas H. Ptacek. All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  *
12  * 1. Redistributions of source code must retain the above copyright
13  *    notice, this list of conditions and the following disclaimer.
14  *
15  * 2. Redistributions in binary form must reproduce the above copyright
16  *    notice, this list of conditions and the following disclaimer in the
17  *    documentation and/or other materials provided with the distribution.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
20  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
21  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
23  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
24  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
28  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  *
30  */
31 
32 /* ------------------------------------------------------------ */
33 
34 /* RADIUS attribute encoding types */
35 
36 #define RD_INT				1
37 #define RD_DATE				2
38 #define RD_ADDRESS			3
39 #define RD_STRING			4
40 #define RD_HEX				5
41 
42 /* ------------------------------------------------------------ */
43 
44 /* RADIUS packet opcodes */
45 
46 #define RADIUS_CODE_ACCESS_REQUEST		1
47 #define RADIUS_CODE_ACCESS_ACCEPT		2
48 #define RADIUS_CODE_ACCESS_REJECT		3
49 #define RADIUS_CODE_ACCOUNT_REQUEST		4
50 #define RADIUS_CODE_ACCOUNT_RESPONSE		5
51 #define RADIUS_CODE_ACCOUNT_STATUS		6
52 #define RADIUS_CODE_PASSCHG_REQUEST		7
53 #define RADIUS_CODE_PASSCHG_ACCEPT		8
54 #define RADIUS_CODE_PASSCHG_REJECT		9
55 #define RADIUS_CODE_ACCOUNT_MESSAGE		10
56 #define RADIUS_CODE_ACCESS_CHALLENGE		11
57 
58 /* ------------------------------------------------------------ */
59 
60 /* slew o' attributes */
61 
62 #define RADIUS_ATT_USER_NAME			1
63 #define RADIUS_ATT_PASSWORD			2
64 #define RADIUS_ATT_CHAP_PASS			3
65 #define RADIUS_ATT_NAS_IP			4
66 #define RADIUS_ATT_NAS_PORT			5
67 #define RADIUS_ATT_USER_SERVICE			6
68 #define RADIUS_ATT_PROTOCOL			7
69 #define RADIUS_ATT_FRAMED_ADDRESS		8
70 #define RADIUS_ATT_NETMASK			9
71 #define RADIUS_ATT_ROUTING			10
72 #define RADIUS_ATT_FILTER			11
73 #define RADIUS_ATT_MTU				12
74 #define RADIUS_ATT_COMPRESSION			13
75 #define RADIUS_ATT_LOGIN_HOST			14
76 #define RADIUS_ATT_LOGIN_SERVICE		15
77 #define RADIUS_ATT_LOGIN_TCP_PORT		16
78 #define RADIUS_ATT_OLD_PASSWORD			17
79 #define RADIUS_ATT_PORT_MESSAGE			18
80 #define RADIUS_ATT_DIALBACK_NO			19
81 #define RADIUS_ATT_DIALBACK_NAME		20
82 #define RADIUS_ATT_EXPIRATION			21
83 #define RADIUS_ATT_FRAMED_ROUTE			22
84 #define RADIUS_ATT_FRAMED_IPX			23
85 #define RADIUS_ATT_CHALLENGE_STATE		24
86 #define RADIUS_ATT_CLASS			25
87 #define RADIUS_ATT_VENDOR_SPECIFIC		26
88 #define RADIUS_ATT_SESSION_TIMEOUT		27
89 #define RADIUS_ATT_IDLE_TIMEOUT			28
90 #define RADIUS_ATT_TERMINATE_ACTION		29
91 #define RADIUS_ATT_CALLED_ID			30
92 #define RADIUS_ATT_CALLER_ID			31
93 
94 #define RADIUS_ATT_STATUS_TYPE			40
95 
96 /* the accounting attributes change way too much
97  * for me to want to hardcode them in.
98  */
99 
100 /* ------------------------------------------------------------ */
101 
102 /* RADIUS packet header */
103 
104 #define RADFIXEDSZ		20
105 
106 struct radius_header {
107 	u_char	code;
108 	u_char 	id;
109 	u_short len;
110 	u_char 	auth[16];
111 };
112 
113 /* ------------------------------------------------------------ */
114