File: radlib.h

package info (click to toggle)
php-radius 1.4.0~b1-9
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 480 kB
  • sloc: ansic: 3,010; php: 897; xml: 382; makefile: 7
file content (246 lines) | stat: -rw-r--r-- 9,473 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
/*-
 * Copyright 1998 Juniper Networks, Inc.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	$FreeBSD: src/lib/libradius/radlib.h,v 1.3.2.1 2002/06/17 02:24:57 brian Exp $
 */

#ifndef _RADLIB_H_
#define _RADLIB_H_

#ifndef PHP_WIN32
#include <sys/socket.h>
#include <netinet/in.h>
#endif

#include "radlib_compat.h"

/* Message types */
#define RAD_ACCESS_REQUEST		1
#define RAD_ACCESS_ACCEPT		2
#define RAD_ACCESS_REJECT		3
#define RAD_ACCOUNTING_REQUEST		4
#define RAD_ACCOUNTING_RESPONSE		5
#define RAD_ACCESS_CHALLENGE		11
#define RAD_DISCONNECT_REQUEST		40
#define RAD_DISCONNECT_ACK		41
#define RAD_DISCONNECT_NAK		42
#define RAD_COA_REQUEST			43
#define RAD_COA_ACK			44
#define RAD_COA_NAK			45

/* Attribute types and values */
#define RAD_USER_NAME			1	/* String */
#define RAD_USER_PASSWORD		2	/* String */
#define RAD_CHAP_PASSWORD		3	/* String */
#define RAD_NAS_IP_ADDRESS		4	/* IP address */
#define RAD_NAS_PORT			5	/* Integer */
#define RAD_SERVICE_TYPE		6	/* Integer */
	#define RAD_LOGIN			1
	#define RAD_FRAMED			2
	#define RAD_CALLBACK_LOGIN		3
	#define RAD_CALLBACK_FRAMED		4
	#define RAD_OUTBOUND			5
	#define RAD_ADMINISTRATIVE		6
	#define RAD_NAS_PROMPT			7
	#define RAD_AUTHENTICATE_ONLY		8
	#define RAD_CALLBACK_NAS_PROMPT		9
#define RAD_FRAMED_PROTOCOL		7	/* Integer */
	#define RAD_PPP				1
	#define RAD_SLIP			2
	#define RAD_ARAP			3	/* Appletalk */
	#define RAD_GANDALF			4
	#define RAD_XYLOGICS			5
#define RAD_FRAMED_IP_ADDRESS		8	/* IP address */
#define RAD_FRAMED_IP_NETMASK		9	/* IP address */
#define RAD_FRAMED_ROUTING		10	/* Integer */
#define RAD_FILTER_ID			11	/* String */
#define RAD_FRAMED_MTU			12	/* Integer */
#define RAD_FRAMED_COMPRESSION		13	/* Integer */
	#define RAD_COMP_NONE			0
	#define RAD_COMP_VJ			1
	#define RAD_COMP_IPXHDR			2
#define RAD_LOGIN_IP_HOST		14	/* IP address */
#define RAD_LOGIN_SERVICE		15	/* Integer */
#define RAD_LOGIN_TCP_PORT		16	/* Integer */
	/* unassiged			17 */
#define RAD_REPLY_MESSAGE		18	/* String */
#define RAD_CALLBACK_NUMBER		19	/* String */
#define RAD_CALLBACK_ID			20	/* String */
	/* unassiged			21 */
#define RAD_FRAMED_ROUTE		22	/* String */
#define RAD_FRAMED_IPX_NETWORK		23	/* IP address */
#define RAD_STATE			24	/* String */
#define RAD_CLASS			25	/* Integer */
#define RAD_VENDOR_SPECIFIC		26	/* Integer */
#define RAD_SESSION_TIMEOUT		27	/* Integer */
#define RAD_IDLE_TIMEOUT		28	/* Integer */
#define RAD_TERMINATION_ACTION		29	/* Integer */
#define RAD_CALLED_STATION_ID		30	/* String */
#define RAD_CALLING_STATION_ID		31	/* String */
#define RAD_NAS_IDENTIFIER		32	/* Integer */
#define RAD_PROXY_STATE			33	/* Integer */
#define RAD_LOGIN_LAT_SERVICE		34	/* Integer */
#define RAD_LOGIN_LAT_NODE		35	/* Integer */
#define RAD_LOGIN_LAT_GROUP		36	/* Integer */
#define RAD_FRAMED_APPLETALK_LINK	37	/* Integer */
#define RAD_FRAMED_APPLETALK_NETWORK	38	/* Integer */
#define RAD_FRAMED_APPLETALK_ZONE	39	/* Integer */
	/* reserved for accounting		40-59 */
#define RAD_CHAP_CHALLENGE		60	/* String */
#define RAD_NAS_PORT_TYPE		61	/* Integer */
	#define RAD_ASYNC			0
	#define RAD_SYNC			1
	#define RAD_ISDN_SYNC			2
	#define RAD_ISDN_ASYNC_V120		3
	#define RAD_ISDN_ASYNC_V110		4
	#define RAD_VIRTUAL			5
	#define RAD_PIAFS			6
	#define RAD_HDLC_CLEAR_CHANNEL		7
	#define RAD_X_25			8
	#define RAD_X_75			9
	#define RAD_G_3_FAX			10
	#define RAD_SDSL			11
	#define RAD_ADSL_CAP			12
	#define RAD_ADSL_DMT			13
	#define RAD_IDSL			14
	#define RAD_ETHERNET			15
	#define RAD_XDSL			16
	#define RAD_CABLE			17
	#define RAD_WIRELESS_OTHER		18
	#define RAD_WIRELESS_IEEE_802_11	19
#define RAD_PORT_LIMIT			62	/* Integer */
#define RAD_LOGIN_LAT_PORT		63	/* Integer */
#define RAD_CONNECT_INFO		77	/* String */

#define RAD_NAS_IPV6_ADDRESS		95      /* IPv6 address */
#define RAD_FRAMED_INTERFACE_ID		96      /* 8 octets */
#define RAD_FRAMED_IPV6_PREFIX		97      /* Octets */
#define RAD_LOGIN_IPV6_HOST		98      /* IPv6 address */
#define RAD_FRAMED_IPV6_ROUTE		99      /* String */
#define RAD_FRAMED_IPV6_POOL		100     /* String */

/* Accounting attribute types and values */
#define RAD_ACCT_STATUS_TYPE		40	/* Integer */
	#define RAD_START			1
	#define RAD_STOP			2
	#define RAD_ACCOUNTING_ON		7
	#define RAD_ACCOUNTING_OFF		8
#define RAD_ACCT_DELAY_TIME		41	/* Integer */
#define RAD_ACCT_INPUT_OCTETS		42	/* Integer */
#define RAD_ACCT_OUTPUT_OCTETS		43	/* Integer */
#define RAD_ACCT_SESSION_ID		44	/* String */
#define RAD_ACCT_AUTHENTIC		45	/* Integer */
	#define RAD_AUTH_RADIUS			1
	#define RAD_AUTH_LOCAL			2
	#define RAD_AUTH_REMOTE			3
#define RAD_ACCT_SESSION_TIME		46	/* Integer */
#define RAD_ACCT_INPUT_PACKETS		47	/* Integer */
#define RAD_ACCT_OUTPUT_PACKETS		48	/* Integer */
#define RAD_ACCT_TERMINATE_CAUSE	49	/* Integer */
	#define RAD_TERM_USER_REQUEST		1
	#define RAD_TERM_LOST_CARRIER		2
	#define RAD_TERM_LOST_SERVICE		3
	#define RAD_TERM_IDLE_TIMEOUT		4
	#define RAD_TERM_SESSION_TIMEOUT	5
	#define RAD_TERM_ADMIN_RESET		6
	#define RAD_TERM_ADMIN_REBOOT		7
	#define RAD_TERM_PORT_ERROR		8
	#define RAD_TERM_NAS_ERROR		9
	#define RAD_TERM_NAS_REQUEST		10
	#define RAD_TERM_NAS_REBOOT		11
	#define RAD_TERM_PORT_UNNEEDED		12
	#define RAD_TERM_PORT_PREEMPTED		13
	#define RAD_TERM_PORT_SUSPENDED		14
	#define RAD_TERM_SERVICE_UNAVAILABLE    15
	#define RAD_TERM_CALLBACK		16
	#define RAD_TERM_USER_ERROR		17
	#define RAD_TERM_HOST_REQUEST		18
#define	RAD_ACCT_MULTI_SESSION_ID	50	/* String */
#define	RAD_ACCT_LINK_COUNT		51	/* Integer */

/* Disconnect and CoA attributes */
#define RAD_ERROR_CAUSE			101	/* Integer */
	#define RAD_ERROR_CAUSE_RESIDUAL_SESSION_CONTEXT_REMOVED	201
	#define RAD_ERROR_CAUSE_INVALID_EAP_PACKET			202
	#define RAD_ERROR_CAUSE_UNSUPPORTED_ATTRIBUTE			401
	#define RAD_ERROR_CAUSE_MISSING_ATTRIBUTE			402
	#define RAD_ERROR_CAUSE_NAS_IDENTIFICATION_MISMATCH		403
	#define RAD_ERROR_CAUSE_INVALID_REQUEST				404
	#define RAD_ERROR_CAUSE_UNSUPPORTED_SERVICE			405
	#define RAD_ERROR_CAUSE_UNSUPPORTED_EXCEPTION			406
	#define RAD_ERROR_CAUSE_ADMINISTRATIVELY_PROHIBITED		501
	#define RAD_ERROR_CAUSE_REQUEST_NOT_ROUTABLE			502
	#define RAD_ERROR_CAUSE_SESSION_CONTEXT_NOT_FOUND		503
	#define RAD_ERROR_CAUSE_SESSION_CONTEXT_NOT_REMOVABLE		504
	#define RAD_ERROR_CAUSE_OTHER_PROXY_PROCESSING_ERROR		505
	#define RAD_ERROR_CAUSE_RESOURCES_UNAVAILABLE			506
	#define RAD_ERROR_CAUSE_REQUEST_INITIATED			507

#define RAD_OPTION_NONE			0
#define RAD_OPTION_TAG			(1 << 0)
#define RAD_OPTION_SALT			(1 << 1)

struct rad_handle;
struct timeval;

struct rad_attr_options {
	int options;
	unsigned char tag;
};

struct rad_salted_value {
	size_t len;
	char *data;
};

struct rad_handle	*rad_acct_open(void);
int			 rad_add_server(struct rad_handle *, 
				const char *, int, const char *, int, int);
struct rad_handle	*rad_auth_open(void);
void			 rad_close(struct rad_handle *);
int			 rad_config(struct rad_handle *, const char *);
int			 rad_continue_send_request(struct rad_handle *, 
				int, int *, struct timeval *);
int			 rad_create_request(struct rad_handle *, int);
struct in_addr		 rad_cvt_addr(const void *);
u_int32_t		 rad_cvt_int(const void *);
char			*rad_cvt_string(const void *, size_t);
int			 rad_get_attr(struct rad_handle *, const void **, size_t *);
int			 rad_init_send_request(struct rad_handle *, int *, struct timeval *);
struct rad_handle	*rad_open(void);  /* Deprecated, == rad_auth_open */
int			 rad_put_addr(struct rad_handle *, int, struct in_addr, const struct rad_attr_options *);
int			 rad_put_attr(struct rad_handle *, int, const void *, size_t, const struct rad_attr_options *);
int			 rad_put_int(struct rad_handle *, int, u_int32_t, const struct rad_attr_options *);
int			 rad_put_string(struct rad_handle *, int, const char *, const struct rad_attr_options *);
ssize_t			 rad_request_authenticator(struct rad_handle *, char *, size_t);
int			 rad_send_request(struct rad_handle *);
const char		*rad_server_secret(struct rad_handle *);
const char		*rad_strerror(struct rad_handle *);
int			 rad_demangle(struct rad_handle *, const void *, size_t, u_char *);
int	 		 rad_salt_value(struct rad_handle *, const char *, size_t, struct rad_salted_value *);

#endif /* _RADLIB_H_ */

/* vim: set ts=8 sw=8 noet: */