Mercurial > hg > freeDiameter
comparison extensions/app_radgw/radius.h @ 550:4c935aecee6c
Hide and automate the Proxy-State attributes management in RADIUS gateway
author | Sebastien Decugis <sdecugis@nict.go.jp> |
---|---|
date | Wed, 15 Sep 2010 14:24:45 +0900 |
parents | 1c2f5ee38039 |
children | 4a9f08d6b6ba |
comparison
equal
deleted
inserted
replaced
549:1b8809c7d7cc | 550:4c935aecee6c |
---|---|
1 /********************************************************************************************************* | |
2 * Software License Agreement (BSD License) * | |
3 * Author: Sebastien Decugis <sdecugis@nict.go.jp> * | |
4 * * | |
5 * Copyright (c) 2010, WIDE Project and NICT * | |
6 * All rights reserved. * | |
7 * * | |
8 * Redistribution and use of this software in source and binary forms, with or without modification, are * | |
9 * permitted provided that the following conditions are met: * | |
10 * * | |
11 * * Redistributions of source code must retain the above * | |
12 * copyright notice, this list of conditions and the * | |
13 * following disclaimer. * | |
14 * * | |
15 * * Redistributions in binary form must reproduce the above * | |
16 * copyright notice, this list of conditions and the * | |
17 * following disclaimer in the documentation and/or other * | |
18 * materials provided with the distribution. * | |
19 * * | |
20 * * Neither the name of the WIDE Project or NICT nor the * | |
21 * names of its contributors may be used to endorse or * | |
22 * promote products derived from this software without * | |
23 * specific prior written permission of WIDE Project and * | |
24 * NICT. * | |
25 * * | |
26 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED * | |
27 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * | |
28 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR * | |
29 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * | |
30 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * | |
31 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR * | |
32 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * | |
33 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * | |
34 *********************************************************************************************************/ | |
35 | |
1 /*********************************************************************************/ | 36 /*********************************************************************************/ |
2 /* freeDiameter author note: | 37 /* freeDiameter author note: |
3 * The content from this file comes directly from the hostap project. | 38 * The content from this file comes mostly from the hostap project. |
4 * It is redistributed under the terms of the BSD license, as allowed | 39 * It is redistributed under the terms of the BSD license, as allowed |
5 * by the original copyright reproduced bellow. | 40 * by the original copyright reproduced bellow. |
6 * The file has not been modified, except for this notice and | 41 * The changes to this file are placed under the copyright of the freeDiameter project. |
7 * declaration of: | |
8 * void radius_msg_dump_attr_val(struct radius_attr_hdr *hdr); | |
9 */ | 42 */ |
10 | |
11 /*********************************************************************************/ | |
12 | 43 |
13 /* | 44 /* |
14 * hostapd / RADIUS message processing | 45 * hostapd / RADIUS message processing |
15 * Copyright (c) 2002-2007, Jouni Malinen <j@w1.fi> | 46 * Copyright (c) 2002-2007, Jouni Malinen <j@w1.fi> |
16 * | 47 * |
21 * Alternatively, this software may be distributed under the terms of BSD | 52 * Alternatively, this software may be distributed under the terms of BSD |
22 * license. | 53 * license. |
23 * | 54 * |
24 * See README and COPYING for more details. | 55 * See README and COPYING for more details. |
25 */ | 56 */ |
57 /*********************************************************************************/ | |
58 | |
26 | 59 |
27 #ifndef RADIUS_H | 60 #ifndef RADIUS_H |
28 #define RADIUS_H | 61 #define RADIUS_H |
29 | 62 |
30 /* RFC 2865 - RADIUS */ | 63 /* RFC 2865 - RADIUS */ |
216 | 249 |
217 struct radius_msg *radius_msg_new(u8 code, u8 identifier); | 250 struct radius_msg *radius_msg_new(u8 code, u8 identifier); |
218 int radius_msg_initialize(struct radius_msg *msg, size_t init_len); | 251 int radius_msg_initialize(struct radius_msg *msg, size_t init_len); |
219 void radius_msg_set_hdr(struct radius_msg *msg, u8 code, u8 identifier); | 252 void radius_msg_set_hdr(struct radius_msg *msg, u8 code, u8 identifier); |
220 void radius_msg_free(struct radius_msg *msg); | 253 void radius_msg_free(struct radius_msg *msg); |
221 void radius_msg_dump_attr_val(struct radius_attr_hdr *hdr); | |
222 void radius_msg_dump(struct radius_msg *msg); | |
223 int radius_msg_finish(struct radius_msg *msg, const u8 *secret, | 254 int radius_msg_finish(struct radius_msg *msg, const u8 *secret, |
224 size_t secret_len); | 255 size_t secret_len); |
225 int radius_msg_finish_srv(struct radius_msg *msg, const u8 *secret, | 256 int radius_msg_finish_srv(struct radius_msg *msg, const u8 *secret, |
226 size_t secret_len, const u8 *req_authenticator); | 257 size_t secret_len, const u8 *req_authenticator); |
227 void radius_msg_finish_acct(struct radius_msg *msg, const u8 *secret, | 258 void radius_msg_finish_acct(struct radius_msg *msg, const u8 *secret, |
228 size_t secret_len); | 259 size_t secret_len); |
229 struct radius_attr_hdr *radius_msg_add_attr(struct radius_msg *msg, u8 type, | 260 struct radius_attr_hdr *radius_msg_add_attr(struct radius_msg *msg, u8 type, |
230 const u8 *data, size_t data_len); | 261 const u8 *data, size_t data_len); |
231 struct radius_msg *radius_msg_parse(const u8 *data, size_t len); | |
232 int radius_msg_add_eap(struct radius_msg *msg, const u8 *data, | 262 int radius_msg_add_eap(struct radius_msg *msg, const u8 *data, |
233 size_t data_len); | 263 size_t data_len); |
234 u8 *radius_msg_get_eap(struct radius_msg *msg, size_t *len); | 264 u8 *radius_msg_get_eap(struct radius_msg *msg, size_t *len); |
235 int radius_msg_verify(struct radius_msg *msg, const u8 *secret, | 265 int radius_msg_verify(struct radius_msg *msg, const u8 *secret, |
236 size_t secret_len, struct radius_msg *sent_msg, | 266 size_t secret_len, struct radius_msg *sent_msg, |
264 { | 294 { |
265 u32 val = htonl(value); | 295 u32 val = htonl(value); |
266 return radius_msg_add_attr(msg, type, (u8 *) &val, 4) != NULL; | 296 return radius_msg_add_attr(msg, type, (u8 *) &val, 4) != NULL; |
267 } | 297 } |
268 | 298 |
299 int radius_msg_add_attr_to_array(struct radius_msg *msg, struct radius_attr_hdr *attr); | |
269 static inline int radius_msg_get_attr_int32(struct radius_msg *msg, u8 type, | 300 static inline int radius_msg_get_attr_int32(struct radius_msg *msg, u8 type, |
270 u32 *value) | 301 u32 *value) |
271 { | 302 { |
272 u32 val; | 303 u32 val; |
273 int res; | 304 int res; |