annotate extensions/app_diameap/diameap_server.c @ 1088:1d1a20a0779d

Second part of changeset 1083, now the code compiles again. Still missing some functions implementation, though
author Sebastien Decugis <sdecugis@freediameter.net>
date Sat, 04 May 2013 21:25:27 +0200
parents 0117a7746b21
children c473581adff2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1 /*****************************************************************************************************
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2 * Software License Agreement (BSD License)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3 * Author : Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
4 *
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
5 * Copyright (c) 2009-2010, Souheil Ben Ayed, Teraoka Laboratory of Keio University, and the WIDE Project
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
6 * All rights reserved.
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
7 *
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
8 * Redistribution and use of this software in source and binary forms, with or without
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
9 * modification, are permitted provided that the following conditions are met:
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
10 *
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
11 * 1. Redistributions of source code must retain the above copyright
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
12 * notice, this list of conditions and the following disclaimer.
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
13 *
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
14 * 2. Redistributions in binary form must reproduce the above copyright
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
15 * notice, this list of conditions and the following disclaimer in the
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
16 * documentation and/or other materials provided with the distribution.
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
17 *
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
18 * 3. All advertising materials mentioning features or use of this software
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
19 * must display the following acknowledgement:
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
20 * This product includes software developed by Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>.
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
21 *
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
22 * 4. Neither the name of Souheil Ben Ayed, Teraoka Laboratory of Keio University or the WIDE Project nor the
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
23 * names of its contributors may be used to endorse or promote products
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
24 * derived from this software without specific prior written permission.
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
25 *
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
26 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ''AS IS'' AND ANY
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
27 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
28 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
29 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
30 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
31 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
32 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
33 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
34 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
35 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
36 *****************************************************************************************************/
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
37
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
38 #include "diameap_common.h"
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
39
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
40 /* handler for DiamEAP server callback */
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
41 static struct disp_hdl * handle;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
42
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
43 /* session handler for DiamEAP sessions state machine */
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
44 static struct session_handler * diameap_server_reg = NULL;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
45
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
46
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
47 struct avp_max_occurences auth_avps[] =
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
48 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
49 { "Service-Type", 1 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
50 { "Callback-Number", 1 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
51 { "Callback-Id", 1 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
52 { "Idle-Timeout", 1 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
53 { "Port-Limit", 1 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
54 { "NAS-Filter-Rule" - 1 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
55 { "Filter-Id", -1 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
56 { "Configuration-Token", -1 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
57 { "QoS-Filter-Rule", -1 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
58 { "Framed-Protocol", 1 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
59 { "Framed-Routing", 1 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
60 { "Framed-MTU", 1 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
61 { "Framed-Compression", -1 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
62 { "Framed-IP-Address", 1 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
63 { "Framed-IP-Netmask", 1 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
64 { "Framed-Route", -1 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
65 { "Framed-Pool", 1 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
66 { "Framed-Interface-Id", 1 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
67 { "Framed-IPv6-Prefix", -1 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
68 { "Framed-IPv6-Pool", 1 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
69 { "Framed-IPv6-Route", -1 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
70 { "Framed-IPX-Network", 1 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
71 { "Framed-Appletalk-Link", 1 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
72 { "Framed-Appletalk-Network", -1 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
73 { "Framed-Appletalk-Zone", 1 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
74 { "NAS-IPv6-Address", 0 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
75 { "NAS-Identifier", 0 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
76 { "NAS-IP-Address", 0 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
77 { "NAS-Port", 0 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
78 { "NAS-Port-Id", 0 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
79 { "NAS-Port-Type", 0 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
80 { "Called-Station-Id", 0 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
81 { "Calling-Station-Id", 0 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
82 { "Connect-Info", 0 },
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
83 { "Originating-Line-Info", 0 } };
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
84
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
85
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
86
1088
1d1a20a0779d Second part of changeset 1083, now the code compiles again. Still missing some functions implementation, though
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1027
diff changeset
87 void diameap_cli_sess_cleanup(struct sess_state * diameap_sess_data, os0_t sid, void * opaque)
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
88 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
89
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
90 CHECK_PARAMS_DO( diameap_sess_data, return );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
91
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
92 if (diameap_sess_data != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
93 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
94 if (diameap_sess_data->methodData != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
95 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
96 struct plugin * cplugin;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
97 if (diameap_plugin_get(diameap_sess_data->currentVendor,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
98 diameap_sess_data->currentMethod, &cplugin))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
99 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
100 TRACE_DEBUG(INFO,"%sUnable to access EAP Method plugin {Type=%d, Vendor=%d}.",DIAMEAP_EXTENSION,diameap_sess_data->currentMethod,diameap_sess_data->currentVendor);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
101 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
102
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
103 if (cplugin->eap_method_free)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
104 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
105 (*cplugin->eap_method_free)(diameap_sess_data->methodData);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
106 diameap_sess_data->methodData = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
107 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
108 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
109 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
110 TRACE_DEBUG(FULL+1,"%s[%s plugin] datafree function not available.",DIAMEAP_EXTENSION,cplugin->methodname);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
111 if (diameap_sess_data->methodData != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
112 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
113 free(diameap_sess_data->methodData);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
114 diameap_sess_data->methodData = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
115 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
116 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
117 if (diameap_sess_data->methodData)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
118 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
119 TRACE_DEBUG(INFO,"%sSession state was not been freed correctly!!!",DIAMEAP_EXTENSION);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
120 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
121 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
122
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
123 if (diameap_sess_data->user.password != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
124 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
125 free(diameap_sess_data->user.password);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
126 diameap_sess_data->user.password = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
127 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
128
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
129 if (diameap_sess_data->user.userid != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
130 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
131 free(diameap_sess_data->user.userid);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
132 diameap_sess_data->user.userid = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
133 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
134 free(diameap_sess_data);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
135 diameap_sess_data = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
136 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
137 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
138
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
139 static int diameap_initialize_diameap_sm(
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
140 struct diameap_state_machine * diameap_sm,
1088
1d1a20a0779d Second part of changeset 1083, now the code compiles again. Still missing some functions implementation, though
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1027
diff changeset
141 struct sess_state * diameap_sess_data)
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
142 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
143 TRACE_ENTRY("%p %p", diameap_sm, diameap_sess_data);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
144
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
145 int i;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
146
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
147 /* Initialize Long Term Variables */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
148 if (diameap_sess_data != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
149 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
150 diameap_sm->invalid_eappackets = diameap_sess_data->invalid_eappackets;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
151
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
152 /* Initialize eap state machine variables */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
153 /*User*/
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
154 diameap_sm->eap_sm.user.id = diameap_sess_data->user.id;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
155
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
156 if ((diameap_sess_data->user.userid != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
157 && (diameap_sess_data->user.useridLength > 0))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
158 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
159 diameap_sm->eap_sm.user.useridLength
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
160 = diameap_sess_data->user.useridLength;
577
9dae8bc2d04a Fix user name verification in EAP-TLS plugin
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 565
diff changeset
161 CHECK_MALLOC(diameap_sm->eap_sm.user.userid= malloc(diameap_sm->eap_sm.user.useridLength+1));
9dae8bc2d04a Fix user name verification in EAP-TLS plugin
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 565
diff changeset
162 U8COPY(diameap_sm->eap_sm.user.userid,0,diameap_sm->eap_sm.user.useridLength+1,diameap_sess_data->user.userid);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
163 free(diameap_sess_data->user.userid);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
164 diameap_sess_data->user.userid = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
165
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
166 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
167 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
168 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
169 TRACE_DEBUG(INFO,"%s user not identified yet.",DIAMEAP_EXTENSION);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
170 diameap_sm->eap_sm.user.useridLength = 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
171 diameap_sm->eap_sm.user.userid = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
172 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
173
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
174 if ((diameap_sess_data->user.password != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
175 && (diameap_sess_data->user.passwordLength > 0))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
176 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
177 diameap_sm->eap_sm.user.passwordLength
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
178 = diameap_sess_data->user.passwordLength;
577
9dae8bc2d04a Fix user name verification in EAP-TLS plugin
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 565
diff changeset
179 CHECK_MALLOC(diameap_sm->eap_sm.user.password = malloc(diameap_sm->eap_sm.user.passwordLength+1));
9dae8bc2d04a Fix user name verification in EAP-TLS plugin
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 565
diff changeset
180 U8COPY(diameap_sm->eap_sm.user.password,0,diameap_sm->eap_sm.user.passwordLength+1, diameap_sess_data->user.password);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
181 free(diameap_sess_data->user.password);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
182 diameap_sess_data->user.password = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
183 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
184 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
185 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
186 diameap_sm->eap_sm.user.passwordLength = 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
187 diameap_sm->eap_sm.user.password = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
188 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
189
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
190 diameap_sm->eap_sm.user.methodId = diameap_sess_data->user.methodId;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
191 for (i = 0; i < MAXMETHODS; i++)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
192 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
193 diameap_sm->eap_sm.user.methods[i].method
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
194 = diameap_sess_data->user.methods[i].method;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
195 diameap_sm->eap_sm.user.methods[i].vendor
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
196 = diameap_sess_data->user.methods[i].vendor;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
197 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
198 for (i = 0; i < MAXPROPOSEDMETHODS; i++)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
199 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
200 diameap_sm->eap_sm.user.proposedmethods[i].method
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
201 = diameap_sess_data->user.proposedmethods[i].method;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
202 diameap_sm->eap_sm.user.proposedmethods[i].vendor
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
203 = diameap_sess_data->user.proposedmethods[i].vendor;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
204 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
205
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
206 diameap_sm->eap_sm.user.pmethods = diameap_sess_data->user.pmethods;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
207 diameap_sm->eap_sm.user.proposed_eap_method
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
208 = diameap_sess_data->user.proposed_eap_method;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
209 diameap_sm->eap_sm.user.proposed_eap_method_vendor
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
210 = diameap_sess_data->user.proposed_eap_method_vendor;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
211 diameap_sm->eap_sm.user.success = diameap_sess_data->user.success;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
212
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
213 diameap_sm->eap_sm.currentId = diameap_sess_data->currentId;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
214 diameap_sm->eap_sm.currentVendor = diameap_sess_data->currentVendor;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
215 diameap_sm->eap_sm.lastId = diameap_sess_data->lastId;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
216 diameap_sm->eap_sm.methodState = diameap_sess_data->methodState;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
217 diameap_sm->eap_sm.currentMethod = diameap_sess_data->currentMethod;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
218
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
219 diameap_sm->eap_sm.methodData = diameap_sess_data->methodData;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
220 diameap_sess_data->methodData = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
221
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
222 if (diameap_sm->eap_sm.currentMethod != TYPE_NONE)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
223 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
224 diameap_plugin_get(diameap_sm->eap_sm.currentVendor,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
225 diameap_sm->eap_sm.currentMethod,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
226 &diameap_sm->eap_sm.selectedMethod);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
227 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
228
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
229 /* free session data*/
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
230 free(diameap_sess_data);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
231 diameap_sess_data = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
232
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
233 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
234 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
235 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
236 diameap_sm->invalid_eappackets = 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
237
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
238 /* Initialize eap state machine variables */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
239 /*User*/
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
240 diameap_sm->eap_sm.user.id = 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
241 diameap_sm->eap_sm.user.userid = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
242 diameap_sm->eap_sm.user.useridLength = 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
243 diameap_sm->eap_sm.user.password = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
244 diameap_sm->eap_sm.user.passwordLength = 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
245 diameap_sm->eap_sm.user.methodId = -1;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
246 for (i = 0; i < MAXMETHODS; i++)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
247 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
248 diameap_sm->eap_sm.user.methods[i].method = TYPE_NONE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
249 diameap_sm->eap_sm.user.methods[i].vendor = VENDOR_IETF;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
250 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
251 for (i = 0; i < MAXPROPOSEDMETHODS; i++)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
252 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
253 diameap_sm->eap_sm.user.proposedmethods[i].method = TYPE_NONE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
254 diameap_sm->eap_sm.user.proposedmethods[i].vendor = VENDOR_IETF;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
255 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
256
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
257 diameap_sm->eap_sm.user.pmethods = -1;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
258 diameap_sm->eap_sm.user.proposed_eap_method = TYPE_NONE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
259 diameap_sm->eap_sm.user.proposed_eap_method_vendor = VENDOR_IETF;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
260 diameap_sm->eap_sm.user.success = FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
261
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
262 diameap_sm->eap_sm.currentId = -1;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
263 diameap_sm->eap_sm.currentVendor = VENDOR_IETF;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
264 diameap_sm->eap_sm.lastId = -1;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
265 diameap_sm->eap_sm.methodState = EAP_M_PROPOSED;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
266
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
267 diameap_sm->eap_sm.currentMethod = TYPE_NONE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
268
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
269 diameap_sm->eap_sm.methodData = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
270
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
271 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
272
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
273 diameap_sm->result_code = 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
274 fd_list_init(&diameap_sm->attributes, NULL);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
275 fd_list_init(&diameap_sm->req_attributes, NULL);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
276 fd_list_init(&diameap_sm->ans_attributes, NULL);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
277 diameap_sm->failedavp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
278 diameap_sm->auth_request_val = AUTHENTICATE_ONLY;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
279 diameap_sm->verify_authorization = FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
280 diameap_sm->authSuccess = FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
281 diameap_sm->authFailure = FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
282 diameap_sm->lastReqEAPavp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
283 diameap_sm->privateUser = FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
284 diameap_sm->authorized = FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
285
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
286 diameap_sm->eap_sm.rxResp = FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
287 diameap_sm->eap_sm.respId = -1;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
288 diameap_sm->eap_sm.respMethod = TYPE_NONE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
289 diameap_sm->eap_sm.respVendor = VENDOR_IETF;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
290 diameap_sm->eap_sm.respVendorMethod = TYPE_NONE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
291
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
292 return 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
293 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
294
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
295 static int diameap_initialize_diameap_eap_interface(
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
296 struct diameap_eap_interface * eap_i)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
297 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
298 TRACE_ENTRY("%p", eap_i);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
299
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
300 //Initialize AAA-EAP Interface
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
301 eap_i->aaaEapResp = FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
302 eap_i->aaaEapRespData.data = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
303 //Initialize EAP-AAA Interface
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
304 eap_i->aaaEapReq = FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
305 eap_i->aaaEapNoReq = FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
306 eap_i->aaaSuccess = FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
307 eap_i->aaaFail = FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
308 eap_i->aaaEapReqData.data = NULL;
610
a137913d9f88 Added ability to extract the Extended MSK (EMSK) for future use
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 577
diff changeset
309 eap_i->aaaEapMSKData = NULL;
a137913d9f88 Added ability to extract the Extended MSK (EMSK) for future use
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 577
diff changeset
310 eap_i->aaaEapEMSKData = NULL;
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
311 eap_i->aaaEapKeyAvailable = FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
312 eap_i->aaaMethodTimeout = 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
313
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
314 return 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
315 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
316
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
317 static int diameap_failed_avp(struct diameap_state_machine * diameap_sm,
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
318 struct avp * invalidavp)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
319 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
320 TRACE_ENTRY("%p %p",diameap_sm,invalidavp);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
321 if (!invalidavp)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
322 return EINVAL;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
323
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
324 if (!diameap_sm)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
325 return EINVAL;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
326
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
327 if (diameap_sm->failedavp == NULL)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
328 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
329 CHECK_FCT( fd_msg_avp_new( dataobj_failed_avp, 0, &diameap_sm->failedavp) );
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
330
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
331 CHECK_FCT( fd_msg_avp_add( diameap_sm->failedavp, MSG_BRW_LAST_CHILD, invalidavp ) );
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
332
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
333 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
334 else
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
335 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
336 //add multiple AVPs in Failed-AVP
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
337 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
338 return 0;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
339 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
340
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
341 static int diameap_parse_eap_resp(struct eap_state_machine * eap_sm,
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
342 struct eap_packet *eappacket)
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
343 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
344 TRACE_ENTRY("%p %p",eap_sm, eappacket)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
345
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
346 eap_sm->rxResp = FALSE;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
347 eap_sm->respId = -1;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
348 eap_sm->respMethod = TYPE_NONE;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
349 eap_sm->respVendor = VENDOR_IETF;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
350 eap_sm->respVendorMethod = TYPE_NONE;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
351
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
352 if (eappacket->data == NULL)
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
353 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
354 TRACE_DEBUG(INFO,"%s Empty EAP packet",DIAMEAP_EXTENSION);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
355 return 0;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
356 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
357
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
358 u16 plength;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
359 CHECK_FCT(diameap_eap_get_packetlength(eappacket,&plength));
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
360 if ((int) plength < EAP_HEADER)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
361 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
362 TRACE_DEBUG(INFO,"%s EAP packet length less than EAP header.",DIAMEAP_EXTENSION);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
363 return 0;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
364 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
365
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
366 u16 length;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
367 CHECK_FCT(diameap_eap_get_length(eappacket,&length));
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
368 if ((int) length < EAP_HEADER)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
369 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
370 TRACE_DEBUG(INFO,"%sEAP packet length field less than EAP header.",DIAMEAP_EXTENSION);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
371 return 0;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
372 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
373
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
374 if (plength < length)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
375 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
376 TRACE_DEBUG(INFO,"%sLength of received EAP packet is less than the value of the length field.",DIAMEAP_EXTENSION);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
377 return 0;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
378 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
379
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
380 eap_code code;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
381 CHECK_FCT(diameap_eap_get_code(eappacket,&code));
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
382 if (code == EAP_REQUEST || code == EAP_SUCCESS || code == EAP_FAILURE)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
383 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
384 TRACE_DEBUG(INFO,"%sOnly EAP Responses are accepted at EAP server side.",DIAMEAP_EXTENSION);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
385 return 0;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
386 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
387
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
388 u8 id;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
389 CHECK_FCT(diameap_eap_get_identifier(eappacket,&id));
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
390 eap_sm->respId = id;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
391
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
392 CHECK_FCT(diameap_eap_get_type(eappacket,&eap_sm->respMethod));
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
393 if ((eap_sm->methodState != EAP_M_PROPOSED) && (eap_sm->respMethod
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
394 == TYPE_NAK || eap_sm->respMethod == TYPE_EXPANDED_TYPES))
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
395 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
396 TRACE_DEBUG(INFO,"%sNAK or EXPANDED_NAK received after an EAP TYPE been selected",DIAMEAP_EXTENSION);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
397 return 0;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
398 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
399
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
400 if ((eap_sm->respMethod == TYPE_EXPANDED_TYPES) && (length < 20))
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
401 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
402 TRACE_DEBUG(INFO,"%s Truncated EAP Packet received.",DIAMEAP_EXTENSION);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
403 return 0;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
404 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
405
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
406 if ((eap_sm->respMethod == TYPE_NAK) && (eap_sm->currentMethod < 4))
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
407 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
408 TRACE_DEBUG(INFO,"%sNAK response not expected at this step (Only EAP type = 4 and above are accepted).",DIAMEAP_EXTENSION);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
409 return 0;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
410 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
411
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
412 if (eap_sm->respMethod == TYPE_EXPANDED_TYPES)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
413 {
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
414 u8 *data = (u8 *) eappacket->data;
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
415 //int len = 0;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
416 //u32 respVendor, respVendorMethod;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
417 data += 5;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
418 eap_sm->respVendor = G24BIGE(data);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
419 data += 3;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
420 eap_sm->respVendorMethod = G32BIGE(data);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
421 data += 4;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
422 /* while ((length - 12) > (len * 8))
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
423 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
424 if (((eap_type) G8(data)) != TYPE_EXPANDED_TYPES)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
425 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
426 return FALSE;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
427 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
428 data += 1;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
429 respVendor = G24BIGE(data);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
430 data += 3;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
431 respVendorMethod = G32BIGE(data);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
432 eap_sm->user.proposedmethods[len].method = respVendor;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
433 eap_sm->user.proposedmethods[len].vendor = respVendorMethod;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
434 len++;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
435 data += 4;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
436 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
437 eap_sm->user.methodId = 0;*/
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
438 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
439
565
64e55fc10ab3 added configuration parameters for DiamEAP and EAP-TLS
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 444
diff changeset
440 if((eap_sm->respMethod == TYPE_IDENTITY) && (length < 6)){
64e55fc10ab3 added configuration parameters for DiamEAP and EAP-TLS
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 444
diff changeset
441 TRACE_DEBUG(INFO,"%sUser Identity missing",DIAMEAP_EXTENSION);
64e55fc10ab3 added configuration parameters for DiamEAP and EAP-TLS
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 444
diff changeset
442 return 0;
64e55fc10ab3 added configuration parameters for DiamEAP and EAP-TLS
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 444
diff changeset
443 }
64e55fc10ab3 added configuration parameters for DiamEAP and EAP-TLS
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 444
diff changeset
444
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
445 eap_sm->rxResp = TRUE;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
446 return 0;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
447 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
448
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
449 static int diameap_eappacket_new(struct eap_packet * eappacket,
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
450 struct avp_hdr * avpdata)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
451 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
452 TRACE_ENTRY("%p %p",eappacket,avpdata);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
453 eappacket->ulength = (u16) avpdata->avp_value->os.len;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
454 eappacket->data = (u8 *) avpdata->avp_value->os.data;
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
455 diameap_eap_get_packetlength(eappacket, &eappacket->length);
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
456 return 0;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
457 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
458
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
459 static int diameap_parse_avps(struct diameap_state_machine * diameap_sm,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
460 struct msg * req, struct diameap_eap_interface * eap_i)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
461 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
462 TRACE_ENTRY("%p %p %p",diameap_sm,req,eap_i);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
463 struct avp * avp, *avp2;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
464 struct avp_hdr * avpdata;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
465 int ret;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
466 int depth;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
467
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
468 /* EAP-Payload data*/
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
469 avp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
470 CHECK_FCT(fd_msg_search_avp(req, dataobj_eap_payload, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
471 if (avp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
472 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
473 CHECK_FCT(fd_msg_avp_hdr(avp, &avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
474 CHECK_FCT(diameap_eappacket_new(&eap_i->aaaEapRespData, avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
475 eap_i->aaaEapResp = TRUE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
476 u16 length;
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
477 diameap_eap_get_length(&eap_i->aaaEapRespData, &length);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
478 if (length >= 4)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
479 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
480 eap_code code;
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
481 CHECK_FCT(diameap_eap_get_code(&eap_i->aaaEapRespData,&code));
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
482
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
483 if (code != EAP_RESPONSE)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
484 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
485 diameap_sm->result_code = 5004; /* DIAMETER_INVALID_AVP_VALUE 5004 */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
486 struct avp * invalidavp;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
487 union avp_value val;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
488 CHECK_FCT( fd_msg_avp_new ( dataobj_eap_payload, 0, &invalidavp));
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
489 val.os.data = eap_i->aaaEapRespData.data;
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
490 val.os.len = eap_i->aaaEapRespData.length;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
491 CHECK_FCT( fd_msg_avp_setvalue( invalidavp, &val ))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
492 CHECK_FCT( diameap_failed_avp(diameap_sm, invalidavp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
493 TRACE_DEBUG(INFO,"%sIncorrect EAP Packet. EAP Code != Response.",DIAMEAP_EXTENSION);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
494 return 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
495 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
496 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
497 {
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
498 CHECK_FCT(diameap_parse_eap_resp(&diameap_sm->eap_sm, &eap_i->aaaEapRespData));
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
499 if (diameap_sm->eap_sm.rxResp == FALSE)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
500 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
501 diameap_sm->result_code = 1001; /*DIAMETER_MULTI_ROUND_AUTH*/
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
502 eap_i->aaaEapNoReq = TRUE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
503 eap_i->aaaEapResp = FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
504 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
505 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
506 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
507 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
508 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
509 if (diameap_sm->eap_sm.currentMethod != TYPE_NONE)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
510 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
511 diameap_sm->result_code = 5004; /* DIAMETER_INVALID_AVP_VALUE 5004 */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
512 CHECK_FCT(diameap_failed_avp(diameap_sm, avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
513 TRACE_DEBUG(INFO,"%sEAP packet length < Minimum EAP packet length.",DIAMEAP_EXTENSION);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
514 return 1;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
515 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
516 //EAP start received
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
517
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
518 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
519 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
520
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
521 /* User-Name AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
522 avp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
523 CHECK_FCT(fd_msg_search_avp(req, dataobj_user_name, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
524 if (avp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
525 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
526 CHECK_FCT(fd_msg_avp_hdr(avp, &avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
527 struct avp_attribute * attribute;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
528 CHECK_MALLOC(attribute = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
529 memset(attribute, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
530 fd_list_init(&attribute->chain, attribute);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
531 attribute->attrib = "User-Name";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
532 attribute->value.os.data = avpdata->avp_value->os.data;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
533 attribute->value.os.len = avpdata->avp_value->os.len;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
534 fd_list_insert_before(&diameap_sm->req_attributes, &attribute->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
535 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
536
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
537 /* EAP-Key-Name AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
538
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
539 avp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
540 CHECK_FCT(fd_msg_search_avp(req, dataobj_eap_key_name, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
541 if (avp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
542 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
543 CHECK_FCT(fd_msg_avp_hdr(avp, &avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
544 struct avp_attribute * attribute;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
545 CHECK_MALLOC(attribute = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
546 memset(attribute, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
547 fd_list_init(&attribute->chain, attribute);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
548 attribute->attrib = "EAP-Key-Name";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
549 attribute->value.os.data = avpdata->avp_value->os.data;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
550 attribute->value.os.len = avpdata->avp_value->os.len;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
551 fd_list_insert_before(&diameap_sm->req_attributes, &attribute->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
552 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
553
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
554 /* Auth-Request-Type AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
555 avp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
556 CHECK_FCT(fd_msg_search_avp(req, dataobj_auth_request_type, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
557 if (avp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
558 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
559 CHECK_FCT(fd_msg_avp_hdr(avp, &avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
560 diameap_sm->auth_request_val = avpdata->avp_value->i32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
561 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
562
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
563 /* Authorization-Lifetime AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
564 avp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
565 CHECK_FCT(fd_msg_search_avp(req, dataobj_authorization_lifetime, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
566 if (avp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
567 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
568 CHECK_FCT(fd_msg_avp_hdr(avp, &avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
569 struct avp_attribute * attribute;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
570 CHECK_MALLOC(attribute = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
571 memset(attribute, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
572 fd_list_init(&attribute->chain, attribute);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
573 attribute->attrib = "Authorization-Lifetime";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
574 attribute->value.u32 = avpdata->avp_value->u32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
575 fd_list_insert_before(&diameap_sm->req_attributes, &attribute->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
576 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
577
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
578 /* Auth-Grace-Period AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
579 avp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
580 CHECK_FCT(fd_msg_search_avp(req, dataobj_auth_grace_period, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
581 if (avp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
582 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
583 CHECK_FCT(fd_msg_avp_hdr(avp, &avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
584 struct avp_attribute * attribute;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
585 CHECK_MALLOC(attribute = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
586 memset(attribute, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
587 fd_list_init(&attribute->chain, attribute);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
588 attribute->attrib = "Auth-Grace-Period";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
589 attribute->value.u32 = avpdata->avp_value->u32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
590 fd_list_insert_before(&diameap_sm->req_attributes, &attribute->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
591 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
592
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
593 /* Auth-Session-State AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
594 avp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
595 CHECK_FCT(fd_msg_search_avp(req, dataobj_auth_session_state, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
596 if (avp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
597 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
598 CHECK_FCT(fd_msg_avp_hdr(avp, &avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
599 struct avp_attribute * attribute;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
600 CHECK_MALLOC(attribute = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
601 memset(attribute, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
602 fd_list_init(&attribute->chain, attribute);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
603 attribute->attrib = "Auth-Session-State";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
604 attribute->value.i32 = avpdata->avp_value->i32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
605 fd_list_insert_before(&diameap_sm->req_attributes, &attribute->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
606 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
607
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
608 /* Origin-state-Id AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
609 avp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
610 CHECK_FCT(fd_msg_search_avp(req, dataobj_origin_state_id, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
611 if (avp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
612 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
613 CHECK_FCT(fd_msg_avp_hdr(avp, &avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
614 struct avp_attribute * attribute;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
615 CHECK_MALLOC(attribute = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
616 memset(attribute, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
617 fd_list_init(&attribute->chain, attribute);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
618 attribute->attrib = "Origin-state-Id AVP";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
619 attribute->value.u32 = avpdata->avp_value->u32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
620 fd_list_insert_before(&diameap_sm->req_attributes, &attribute->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
621 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
622
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
623 /* NAS-Port AVP*/
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
624 avp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
625 CHECK_FCT(fd_msg_search_avp(req, dataobj_nas_port, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
626 if (avp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
627 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
628 CHECK_FCT(fd_msg_avp_hdr(avp, &avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
629 struct avp_attribute * attribute;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
630 CHECK_MALLOC(attribute = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
631 memset(attribute, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
632 fd_list_init(&attribute->chain, attribute);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
633 attribute->attrib = "NAS-Port";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
634 attribute->value.u32 = avpdata->avp_value->u32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
635 fd_list_insert_before(&diameap_sm->req_attributes, &attribute->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
636 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
637
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
638 /* NAS-Port-Id AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
639 avp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
640 CHECK_FCT(fd_msg_search_avp(req, dataobj_nas_port_id, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
641 if (avp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
642 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
643 CHECK_FCT(fd_msg_avp_hdr(avp, &avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
644 struct avp_attribute * attribute;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
645 CHECK_MALLOC(attribute = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
646 memset(attribute, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
647 fd_list_init(&attribute->chain, attribute);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
648 attribute->attrib = "NAS-Port-Id";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
649 attribute->value.os.data = avpdata->avp_value->os.data;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
650 attribute->value.os.len = avpdata->avp_value->os.len;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
651 fd_list_insert_before(&diameap_sm->req_attributes, &attribute->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
652 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
653
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
654 /* NAS-Port-Type AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
655 avp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
656 CHECK_FCT(fd_msg_search_avp(req, dataobj_nas_port_type, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
657 if (avp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
658 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
659 CHECK_FCT(fd_msg_avp_hdr(avp, &avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
660 struct avp_attribute * attribute;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
661 CHECK_MALLOC(attribute = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
662 memset(attribute, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
663 fd_list_init(&attribute->chain, attribute);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
664 attribute->attrib = "NAS-Port-Type";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
665 attribute->value.u32 = avpdata->avp_value->u32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
666 fd_list_insert_before(&diameap_sm->req_attributes, &attribute->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
667 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
668
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
669 /* Called-Station-Id AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
670 avp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
671 CHECK_FCT(fd_msg_search_avp(req, dataobj_called_station_id, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
672 if (avp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
673 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
674 CHECK_FCT(fd_msg_avp_hdr(avp, &avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
675 struct avp_attribute * attribute;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
676 CHECK_MALLOC(attribute = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
677 memset(attribute, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
678 fd_list_init(&attribute->chain, attribute);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
679 attribute->attrib = "Called-Station-Id";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
680 attribute->value.os.data = avpdata->avp_value->os.data;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
681 attribute->value.os.len = avpdata->avp_value->os.len;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
682 fd_list_insert_before(&diameap_sm->req_attributes, &attribute->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
683 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
684
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
685 /* Calling-Station-Id AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
686 avp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
687 CHECK_FCT(fd_msg_search_avp(req, dataobj_calling_station_id, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
688 if (avp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
689 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
690 CHECK_FCT(fd_msg_avp_hdr(avp, &avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
691 struct avp_attribute * attribute;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
692 CHECK_MALLOC(attribute = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
693 memset(attribute, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
694 fd_list_init(&attribute->chain, attribute);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
695 attribute->attrib = "Calling-Station-Id";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
696 attribute->value.os.data = avpdata->avp_value->os.data;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
697 attribute->value.os.len = avpdata->avp_value->os.len;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
698 fd_list_insert_before(&diameap_sm->req_attributes, &attribute->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
699 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
700
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
701 /* Connect-Info AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
702 avp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
703 CHECK_FCT(fd_msg_search_avp(req, dataobj_connect_info, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
704 if (avp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
705 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
706 CHECK_FCT(fd_msg_avp_hdr(avp, &avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
707 struct avp_attribute * attribute;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
708 CHECK_MALLOC(attribute = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
709 memset(attribute, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
710 fd_list_init(&attribute->chain, attribute);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
711 attribute->attrib = "Connect-Info";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
712 attribute->value.os.data = avpdata->avp_value->os.data;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
713 attribute->value.os.len = avpdata->avp_value->os.len;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
714 fd_list_insert_before(&diameap_sm->req_attributes, &attribute->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
715 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
716
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
717 /* Originating-Line-Info AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
718 avp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
719 CHECK_FCT(fd_msg_search_avp(req, dataobj_originating_line_info, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
720 if (avp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
721 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
722 CHECK_FCT(fd_msg_avp_hdr(avp, &avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
723 struct avp_attribute * attribute;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
724 CHECK_MALLOC(attribute = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
725 memset(attribute, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
726 fd_list_init(&attribute->chain, attribute);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
727 attribute->attrib = "Originating-Line-Info";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
728 attribute->value.os.data = avpdata->avp_value->os.data;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
729 attribute->value.os.len = avpdata->avp_value->os.len;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
730 fd_list_insert_before(&diameap_sm->req_attributes, &attribute->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
731 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
732
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
733 /* Service-Type AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
734 avp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
735 CHECK_FCT(fd_msg_search_avp(req, dataobj_service_type, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
736 if (avp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
737 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
738 CHECK_FCT(fd_msg_avp_hdr(avp, &avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
739 struct avp_attribute * attribute;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
740 CHECK_MALLOC(attribute = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
741 memset(attribute, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
742 fd_list_init(&attribute->chain, attribute);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
743 attribute->attrib = "Service-Type";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
744 attribute->value.u32 = avpdata->avp_value->u32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
745 fd_list_insert_before(&diameap_sm->req_attributes, &attribute->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
746 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
747
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
748 /* Callback-Number AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
749 avp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
750 CHECK_FCT(fd_msg_search_avp(req, dataobj_callback_number, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
751 if (avp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
752 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
753 CHECK_FCT(fd_msg_avp_hdr(avp, &avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
754 struct avp_attribute * attribute;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
755 CHECK_MALLOC(attribute = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
756 memset(attribute, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
757 fd_list_init(&attribute->chain, attribute);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
758 attribute->attrib = "Callback-Number";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
759 attribute->value.os.data = avpdata->avp_value->os.data;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
760 attribute->value.os.len = avpdata->avp_value->os.len;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
761 fd_list_insert_before(&diameap_sm->req_attributes, &attribute->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
762 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
763
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
764 /* Port-Limit AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
765 avp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
766 CHECK_FCT(fd_msg_search_avp(req, dataobj_port_limit, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
767 if (avp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
768 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
769 CHECK_FCT(fd_msg_avp_hdr(avp, &avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
770 struct avp_attribute * attribute;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
771 CHECK_MALLOC(attribute = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
772 memset(attribute, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
773 fd_list_init(&attribute->chain, attribute);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
774 attribute->attrib = "Port-Limit";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
775 attribute->value.u32 = avpdata->avp_value->u32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
776 fd_list_insert_before(&diameap_sm->req_attributes, &attribute->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
777 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
778
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
779 /* Framed-Protocol AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
780 avp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
781 CHECK_FCT(fd_msg_search_avp(req, dataobj_framed_protocol, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
782 if (avp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
783 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
784 CHECK_FCT(fd_msg_avp_hdr(avp, &avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
785 struct avp_attribute * attribute;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
786 CHECK_MALLOC(attribute = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
787 memset(attribute, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
788 fd_list_init(&attribute->chain, attribute);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
789 attribute->attrib = "Framed-Protocol";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
790 attribute->value.u32 = avpdata->avp_value->u32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
791 fd_list_insert_before(&diameap_sm->req_attributes, &attribute->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
792 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
793
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
794 /* Framed-MTU AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
795 avp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
796 CHECK_FCT(fd_msg_search_avp(req, dataobj_framed_mtu, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
797 if (avp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
798 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
799 CHECK_FCT(fd_msg_avp_hdr(avp, &avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
800 struct avp_attribute * attribute;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
801 CHECK_MALLOC(attribute = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
802 memset(attribute, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
803 fd_list_init(&attribute->chain, attribute);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
804 attribute->attrib = "Framed-MTU";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
805 attribute->value.u32 = avpdata->avp_value->u32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
806 fd_list_insert_before(&diameap_sm->req_attributes, &attribute->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
807 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
808
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
809 /* Framed-Compression AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
810 avp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
811 avp2 = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
812 CHECK_FCT(fd_msg_search_avp(req, dataobj_framed_compression, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
813 if (avp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
814 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
815 CHECK_FCT(fd_msg_avp_hdr(avp, &avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
816 u32 Pi_Code = avpdata->avp_code;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
817 int depth;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
818 do
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
819 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
820 struct avp_attribute * attribute;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
821 CHECK_MALLOC(attribute = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
822 memset(attribute, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
823 fd_list_init(&attribute->chain, attribute);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
824 attribute->attrib = "Framed-Compression";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
825 attribute->value.u32 = avpdata->avp_value->u32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
826 fd_list_insert_before(&diameap_sm->req_attributes,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
827 &attribute->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
828 ret = 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
829 depth = 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
830 ret = fd_msg_browse ( avp, MSG_BRW_NEXT, &avp2, &depth);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
831 if (avp2 != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
832 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
833 CHECK_FCT(fd_msg_avp_hdr(avp2, &avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
834 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
835 avp = avp2;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
836 } while ((avp2 != NULL) && (ret == 0) && (ret == 0)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
837 && (avpdata->avp_code == Pi_Code));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
838 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
839
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
840 /* Framed-IP-Address AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
841 avp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
842 CHECK_FCT(fd_msg_search_avp(req, dataobj_framed_ip_address, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
843 if (avp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
844 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
845 CHECK_FCT(fd_msg_avp_hdr(avp, &avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
846 struct avp_attribute * attribute;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
847 CHECK_MALLOC(attribute = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
848 memset(attribute, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
849 fd_list_init(&attribute->chain, attribute);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
850 attribute->attrib = "Framed-IP-Address";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
851 attribute->value.os.data = avpdata->avp_value->os.data;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
852 attribute->value.os.len = avpdata->avp_value->os.len;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
853 fd_list_insert_before(&diameap_sm->req_attributes, &attribute->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
854 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
855
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
856 /* Framed-IP-Netmask AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
857 avp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
858 CHECK_FCT(fd_msg_search_avp(req, dataobj_framed_ip_netmask, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
859 if (avp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
860 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
861 CHECK_FCT(fd_msg_avp_hdr(avp, &avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
862 struct avp_attribute * attribute;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
863 CHECK_MALLOC(attribute = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
864 memset(attribute, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
865 fd_list_init(&attribute->chain, attribute);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
866 attribute->attrib = "Framed-IP-Netmask";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
867 attribute->value.os.data = avpdata->avp_value->os.data;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
868 attribute->value.os.len = avpdata->avp_value->os.len;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
869 fd_list_insert_before(&diameap_sm->req_attributes, &attribute->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
870 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
871
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
872 /* Framed-Interface-Id AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
873 avp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
874 CHECK_FCT(fd_msg_search_avp(req, dataobj_framed_interface_id, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
875 if (avp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
876 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
877 CHECK_FCT(fd_msg_avp_hdr(avp, &avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
878 struct avp_attribute * attribute;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
879 CHECK_MALLOC(attribute = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
880 memset(attribute, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
881 fd_list_init(&attribute->chain, attribute);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
882 attribute->attrib = "Framed-Interface-Id";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
883 attribute->value.u64 = avpdata->avp_value->u64;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
884 fd_list_insert_before(&diameap_sm->req_attributes, &attribute->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
885 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
886
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
887 /* Framed-IPv6-Prefix AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
888 avp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
889 avp2 = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
890 CHECK_FCT(fd_msg_search_avp(req, dataobj_framed_ipv6_prefix, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
891 if (avp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
892 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
893 CHECK_FCT(fd_msg_avp_hdr(avp, &avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
894 u32 Pi_Code = avpdata->avp_code;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
895 do
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
896 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
897 struct avp_attribute * attribute;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
898 CHECK_MALLOC(attribute = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
899 memset(attribute, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
900 fd_list_init(&attribute->chain, attribute);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
901 attribute->attrib = "Framed-IPv6-Prefix";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
902 attribute->value.u32 = avpdata->avp_value->u32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
903 fd_list_insert_before(&diameap_sm->req_attributes,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
904 &attribute->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
905 ret = 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
906 depth = 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
907 ret = fd_msg_browse ( avp, MSG_BRW_NEXT, &avp2, &depth);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
908 if (avp2 != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
909 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
910 CHECK_FCT(fd_msg_avp_hdr(avp2, &avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
911 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
912 avp = avp2;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
913 } while ((avp2 != NULL) && (ret == 0) && (ret == 0)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
914 && (avpdata->avp_code == Pi_Code));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
915 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
916
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
917 /* Tunneling AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
918 avp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
919 avp2 = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
920 CHECK_FCT(fd_msg_search_avp(req, dataobj_tunneling, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
921 if (avp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
922 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
923 CHECK_FCT(fd_msg_avp_hdr(avp, &avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
924 u32 Pi_Code = avpdata->avp_code;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
925 int depth;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
926 do
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
927 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
928 struct avp_attribute * attribute;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
929 CHECK_MALLOC(attribute = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
930 memset(attribute, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
931 fd_list_init(&attribute->chain, attribute);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
932 attribute->attrib = "Tunneling";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
933 //grouped AVP
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
934 fd_list_insert_before(&diameap_sm->req_attributes,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
935 &attribute->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
936 ret = 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
937 depth = 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
938 ret = fd_msg_browse ( avp, MSG_BRW_NEXT, &avp2, &depth);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
939 if (avp2 != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
940 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
941 CHECK_FCT(fd_msg_avp_hdr(avp2, &avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
942 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
943 avp = avp2;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
944 } while ((avp2 != NULL) && (ret == 0) && (ret == 0)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
945 && (avpdata->avp_code == Pi_Code));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
946 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
947
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
948 /* NAS-Identifier AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
949 avp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
950 CHECK_FCT(fd_msg_search_avp(req, dataobj_nas_identifier, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
951 if (avp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
952 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
953 CHECK_FCT(fd_msg_avp_hdr(avp, &avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
954 struct avp_attribute * attribute;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
955 CHECK_MALLOC(attribute = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
956 memset(attribute, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
957 fd_list_init(&attribute->chain, attribute);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
958 attribute->attrib = "NAS-Identifier";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
959 attribute->value.os.data = avpdata->avp_value->os.data;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
960 attribute->value.os.len = avpdata->avp_value->os.len;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
961 fd_list_insert_before(&diameap_sm->req_attributes, &attribute->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
962 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
963
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
964 /* NAS-IP-Address AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
965 avp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
966 CHECK_FCT(fd_msg_search_avp(req, dataobj_nas_ip_address, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
967 if (avp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
968 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
969 CHECK_FCT(fd_msg_avp_hdr(avp, &avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
970 struct avp_attribute * attribute;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
971 CHECK_MALLOC(attribute = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
972 memset(attribute, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
973 fd_list_init(&attribute->chain, attribute);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
974 attribute->attrib = "NAS-IP-Address";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
975 attribute->value.os.data = avpdata->avp_value->os.data;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
976 attribute->value.os.len = avpdata->avp_value->os.len;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
977 fd_list_insert_before(&diameap_sm->req_attributes, &attribute->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
978 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
979
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
980 /* NAS-IPv6-Address AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
981 avp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
982 CHECK_FCT(fd_msg_search_avp(req, dataobj_nas_ipv6_address, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
983 if (avp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
984 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
985 CHECK_FCT(fd_msg_avp_hdr(avp, &avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
986 struct avp_attribute * attribute;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
987 CHECK_MALLOC(attribute = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
988 memset(attribute, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
989 fd_list_init(&attribute->chain, attribute);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
990 attribute->attrib = "NAS-IPv6-Address";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
991 attribute->value.os.data = avpdata->avp_value->os.data;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
992 attribute->value.os.len = avpdata->avp_value->os.len;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
993 fd_list_insert_before(&diameap_sm->req_attributes, &attribute->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
994 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
995
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
996 /* State AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
997 avp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
998 CHECK_FCT(fd_msg_search_avp(req, dataobj_state, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
999 if (avp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1000 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1001 CHECK_FCT(fd_msg_avp_hdr(avp, &avpdata));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1002 struct avp_attribute * attribute;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1003 CHECK_MALLOC(attribute = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1004 memset(attribute, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1005 fd_list_init(&attribute->chain, attribute);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1006 attribute->attrib = "State";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1007 attribute->value.os.data = avpdata->avp_value->os.data;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1008 attribute->value.os.len = avpdata->avp_value->os.len;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1009 fd_list_insert_before(&diameap_sm->req_attributes, &attribute->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1010 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1011
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1012 return 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1013 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1014
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1015
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1016 static int diameap_sess_data_new(
1088
1d1a20a0779d Second part of changeset 1083, now the code compiles again. Still missing some functions implementation, though
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1027
diff changeset
1017 struct sess_state *diameap_sess_data,
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1018 struct diameap_state_machine *diameap_sm)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1019 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1020 if (!diameap_sm)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1021 return EINVAL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1022
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1023 int i;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1024
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1025 diameap_sess_data->invalid_eappackets = diameap_sm->invalid_eappackets;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1026
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1027 diameap_sess_data->user.id = diameap_sm->eap_sm.user.id;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1028
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1029 if ((diameap_sm->eap_sm.user.userid != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1030 && (diameap_sm->eap_sm.user.useridLength > 0))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1031 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1032 diameap_sess_data->user.useridLength
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1033 = diameap_sm->eap_sm.user.useridLength;
577
9dae8bc2d04a Fix user name verification in EAP-TLS plugin
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 565
diff changeset
1034 CHECK_MALLOC(diameap_sess_data->user.userid= malloc(diameap_sess_data->user.useridLength+1));
9dae8bc2d04a Fix user name verification in EAP-TLS plugin
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 565
diff changeset
1035 U8COPY(diameap_sess_data->user.userid,0,diameap_sess_data->user.useridLength+1,diameap_sm->eap_sm.user.userid);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1036 free(diameap_sm->eap_sm.user.userid);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1037 diameap_sm->eap_sm.user.userid = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1038
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1039 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1040 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1041 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1042 diameap_sess_data->user.useridLength = 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1043 diameap_sess_data->user.userid = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1044 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1045
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1046 if ((diameap_sm->eap_sm.user.password != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1047 && (diameap_sm->eap_sm.user.passwordLength > 0))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1048 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1049 diameap_sess_data->user.passwordLength
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1050 = diameap_sm->eap_sm.user.passwordLength;
577
9dae8bc2d04a Fix user name verification in EAP-TLS plugin
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 565
diff changeset
1051 CHECK_MALLOC(diameap_sess_data->user.password = malloc(diameap_sess_data->user.passwordLength+1));
9dae8bc2d04a Fix user name verification in EAP-TLS plugin
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 565
diff changeset
1052 U8COPY(diameap_sess_data->user.password,0,diameap_sess_data->user.passwordLength+1,diameap_sm->eap_sm.user.password);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1053 free(diameap_sm->eap_sm.user.password);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1054 diameap_sm->eap_sm.user.password = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1055 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1056 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1057 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1058 diameap_sess_data->user.passwordLength = 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1059 diameap_sess_data->user.password = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1060 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1061
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1062 diameap_sess_data->user.methodId = diameap_sm->eap_sm.user.methodId;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1063 for (i = 0; i < MAXMETHODS; i++)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1064 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1065 diameap_sess_data->user.methods[i].method
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1066 = diameap_sm->eap_sm.user.methods[i].method;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1067 diameap_sess_data->user.methods[i].vendor
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1068 = diameap_sm->eap_sm.user.methods[i].vendor;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1069 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1070
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1071 for (i = 0; i < MAXPROPOSEDMETHODS; i++)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1072 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1073 diameap_sess_data->user.proposedmethods[i].method
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1074 = diameap_sm->eap_sm.user.proposedmethods[i].method;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1075 diameap_sess_data->user.proposedmethods[i].vendor
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1076 = diameap_sm->eap_sm.user.proposedmethods[i].vendor;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1077 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1078
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1079 diameap_sess_data->user.pmethods = diameap_sm->eap_sm.user.pmethods;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1080 diameap_sess_data->user.proposed_eap_method
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1081 = diameap_sm->eap_sm.user.proposed_eap_method;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1082 diameap_sess_data->user.proposed_eap_method_vendor
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1083 = diameap_sm->eap_sm.user.proposed_eap_method_vendor;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1084 diameap_sess_data->user.success = diameap_sm->eap_sm.user.success;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1085
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1086 diameap_sess_data->currentId = diameap_sm->eap_sm.currentId;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1087 diameap_sess_data->currentMethod = diameap_sm->eap_sm.currentMethod;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1088 diameap_sess_data->currentVendor = diameap_sm->eap_sm.currentVendor;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1089 diameap_sess_data->lastId = diameap_sm->eap_sm.lastId;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1090 diameap_sess_data->methodState = diameap_sm->eap_sm.methodState;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1091
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1092 diameap_sess_data->methodData = diameap_sm->eap_sm.methodData;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1093 diameap_sm->eap_sm.methodData = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1094
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1095 return 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1096 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1097
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1098 static void free_attrib(struct auth_attribute * auth_attrib)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1099 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1100 if (auth_attrib == NULL)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1101 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1102 return;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1103 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1104 if (auth_attrib->attrib != NULL)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1105 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1106 free(auth_attrib->attrib);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1107 auth_attrib->attrib = NULL;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1108 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1109 if (auth_attrib->op != NULL)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1110 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1111 free(auth_attrib->op);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1112 auth_attrib->op = NULL;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1113 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1114 if (auth_attrib->value != NULL)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1115 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1116 free(auth_attrib->value);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1117 auth_attrib->value = NULL;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1118 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1119 free(auth_attrib);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1120 auth_attrib = NULL;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1121 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1122
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1123 static void free_avp_attrib(struct avp_attribute * avp_attrib)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1124 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1125 if(avp_attrib){
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1126 free(avp_attrib);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1127 avp_attrib = NULL;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1128 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1129 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1130
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1131 static void free_ans_attrib(struct avp_attribute * ans_attrib)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1132 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1133 if (ans_attrib->tofree == 1)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1134 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1135 if(ans_attrib->value.os.data){
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1136 free(ans_attrib->value.os.data);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1137 ans_attrib->value.os.data = NULL;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1138 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1139 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1140 if(ans_attrib){
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1141 free(ans_attrib);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1142 ans_attrib = NULL;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1143 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1144 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1145
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1146 static int diameap_unlink_attributes_lists(
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1147 struct diameap_state_machine * diameap_sm)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1148 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1149 TRACE_ENTRY("%p ", diameap_sm);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1150 if (diameap_sm == NULL)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1151 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1152 return EINVAL;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1153 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1154
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1155 while (!FD_IS_LIST_EMPTY(&diameap_sm->attributes))
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1156 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1157 struct fd_list * item = (struct fd_list *) diameap_sm->attributes.next;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1158 struct auth_attribute * auth = (struct auth_attribute *) item;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1159 fd_list_unlink(item);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1160 free_attrib(auth);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1161 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1162
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1163 while (!FD_IS_LIST_EMPTY(&diameap_sm->req_attributes))
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1164 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1165 struct fd_list * item =
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1166 (struct fd_list *) diameap_sm->req_attributes.next;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1167 struct avp_attribute * avp = (struct avp_attribute *) item;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1168 fd_list_unlink(item);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1169 free_avp_attrib(avp);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1170 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1171
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1172 while (!FD_IS_LIST_EMPTY(&diameap_sm->ans_attributes))
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1173 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1174 struct fd_list * item =
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1175 (struct fd_list *) diameap_sm->ans_attributes.next;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1176 struct avp_attribute * avp_ans = (struct avp_attribute *) item;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1177 fd_list_unlink(item);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1178 free_ans_attrib(avp_ans);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1179 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1180
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1181 return 0;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1182 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1183
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1184 static void diameap_free(struct diameap_state_machine * diameap_sm)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1185 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1186
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1187 if (diameap_sm->eap_sm.user.userid != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1188 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1189 free(diameap_sm->eap_sm.user.userid);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1190 diameap_sm->eap_sm.user.userid = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1191 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1192
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1193 if (diameap_sm->eap_sm.user.password != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1194 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1195 free(diameap_sm->eap_sm.user.password);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1196 diameap_sm->eap_sm.user.password = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1197 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1198
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1199 diameap_sm->eap_sm.selectedMethod = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1200
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1201 if (diameap_sm->eap_sm.methodData != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1202 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1203
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1204 struct plugin * cplugin;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1205 if (diameap_plugin_get(diameap_sm->eap_sm.currentVendor,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1206 diameap_sm->eap_sm.currentMethod, &cplugin))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1207 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1208 TRACE_DEBUG(INFO,"%sUnable to access EAP Method plugin {Type=%d, Vendor=%d}.",DIAMEAP_EXTENSION,diameap_sm->eap_sm.currentMethod,diameap_sm->eap_sm.currentVendor);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1209 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1210
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1211 if (cplugin->eap_method_free)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1212 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1213 (*cplugin->eap_method_free)(diameap_sm->eap_sm.methodData);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1214 diameap_sm->eap_sm.methodData = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1215 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1216 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1217 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1218 TRACE_DEBUG(INFO,"%s[%s plugin] datafree function not available.",DIAMEAP_EXTENSION,cplugin->methodname);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1219 if (diameap_sm->eap_sm.methodData != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1220 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1221 free(diameap_sm->eap_sm.methodData);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1222 diameap_sm->eap_sm.methodData = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1223 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1224 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1225 if (diameap_sm->eap_sm.methodData)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1226 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1227 TRACE_DEBUG(INFO,"%sSession state was not been freed correctly!!!",DIAMEAP_EXTENSION);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1228 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1229 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1230
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1231 if (diameap_sm->failedavp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1232 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1233 CHECK_FCT_DO(fd_msg_free(diameap_sm->failedavp), );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1234 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1235
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1236 if (diameap_sm->lastReqEAPavp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1237 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1238 CHECK_FCT_DO(fd_msg_free(diameap_sm->lastReqEAPavp), );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1239 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1240
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1241 CHECK_FCT_DO(diameap_unlink_attributes_lists(diameap_sm), );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1242
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1243 if (diameap_sm != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1244 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1245 free(diameap_sm);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1246 diameap_sm = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1247 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1248
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1249 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1250
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1251 static int diameap_get_avp_attribute(struct fd_list * avp_attributes,
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1252 char * attribute, struct avp_attribute ** avp_attrib, int unlink,
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1253 int *ret)
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1254 {
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1255 TRACE_ENTRY("%p %p %p %d %p", avp_attributes, attribute, avp_attrib, unlink, ret);
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1256 if (avp_attributes == NULL)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1257 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1258 return EINVAL;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1259 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1260 if (attribute == NULL)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1261 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1262 return EINVAL;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1263 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1264 struct fd_list * attrib;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1265 for (attrib = avp_attributes->next; attrib != avp_attributes; attrib
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1266 = attrib->next)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1267 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1268 *avp_attrib = (struct avp_attribute *) attrib;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1269 if (strcmp((*avp_attrib)->attrib, attribute) == 0)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1270 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1271 *ret = 0;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1272 if (unlink == 1)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1273 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1274 fd_list_unlink(&(*avp_attrib)->chain);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1275 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1276 return 0;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1277 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1278 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1279 *avp_attrib = NULL;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1280 *ret = 1;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1281 return 0;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1282 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1283
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1284 static int diameap_get_auth_attribute(struct fd_list * auth_attributes,
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1285 char * attribute, struct auth_attribute ** auth_attrib, int unlink,
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1286 int *ret)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1287 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1288
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1289 TRACE_ENTRY("%p %p %p %d %p", auth_attributes, attribute, auth_attrib, unlink, ret);
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1290
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1291 if (auth_attributes == NULL)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1292 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1293 return EINVAL;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1294 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1295 if (attribute == NULL)
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1296 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1297 return EINVAL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1298 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1299
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1300 struct fd_list * attrib;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1301
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1302 for (attrib = auth_attributes->next; attrib != auth_attributes; attrib
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1303 = attrib->next)
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1304 {
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1305 *auth_attrib = (struct auth_attribute *) attrib;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1306 if (strcmp((*auth_attrib)->attrib, attribute) == 0)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1307 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1308 *ret = 0;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1309 if (unlink == 1)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1310 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1311 fd_list_unlink(&(*auth_attrib)->chain);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1312 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1313 return 0;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1314 }
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1315 }
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1316 *auth_attrib = NULL;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1317 *ret = 1;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1318 return 0;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1319 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1320
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1321 static int diameap_get_ans_attribute(struct fd_list * ans_attributes,
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1322 char * attribute, struct avp_attribute ** ans_attrib, int unlink,
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1323 int *ret)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1324 {
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1325 TRACE_ENTRY("%p %p %p %d %p", ans_attributes, attribute, ans_attrib, unlink, ret);
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1326 if (ans_attributes == NULL)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1327 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1328 return EINVAL;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1329 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1330 if (attribute == NULL)
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1331 {
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1332 return EINVAL;
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1333 }
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1334 struct fd_list * attrib;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1335 for (attrib = ans_attributes->next; attrib != ans_attributes; attrib
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1336 = attrib->next)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1337 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1338 *ans_attrib = (struct avp_attribute *) attrib;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1339 if (strcmp((*ans_attrib)->attrib, attribute) == 0)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1340 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1341 *ret = 0;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1342 if (unlink == 1)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1343 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1344 fd_list_unlink(&(*ans_attrib)->chain);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1345 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1346 return 0;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1347 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1348 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1349 *ans_attrib = NULL;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1350 *ret = 1;
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1351 return 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1352 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1353
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1354 static int diameap_answer_avp_attributes(
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1355 struct diameap_state_machine * diameap_sm)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1356 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1357 TRACE_ENTRY("%p",diameap_sm);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1358
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1359 if (diameap_sm == NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1360 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1361 return EINVAL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1362 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1363 int ret1, ret2;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1364 struct avp_attribute * avp_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1365 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1366 struct auth_attribute * auth_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1367
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1368 /* Authorization-Lifetime */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1369 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1370 CHECK_FCT(diameap_get_avp_attribute(&diameap_sm->req_attributes, "Authorization-Lifetime", &avp_attrib,1, &ret1));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1371
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1372 CHECK_FCT(diameap_get_auth_attribute(&diameap_sm->attributes, "Authorization-Lifetime", &auth_attrib,1, &ret2));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1373
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1374 if ((ret1 == 1) && (ret2 == 0) && (auth_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1375 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1376
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1377 CHECK_MALLOC(ans_attrib = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1378
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1379 memset(ans_attrib, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1380
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1381 fd_list_init(&ans_attrib->chain, NULL);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1382
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1383 ans_attrib->attrib = "Authorization-Lifetime";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1384
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1385 ans_attrib->value.u32 = atoi(auth_attrib->value);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1386
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1387 fd_list_insert_before(&diameap_sm->ans_attributes,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1388 &ans_attrib->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1389
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1390 free_attrib(auth_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1391
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1392 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1393 if ((ret1 == 0) && (ret2 == 1) && (avp_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1394 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1395
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1396 CHECK_MALLOC(ans_attrib = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1397
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1398 memset(ans_attrib, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1399
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1400 fd_list_init(&ans_attrib->chain, NULL);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1401
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1402 ans_attrib->attrib = "Authorization-Lifetime";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1403
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1404 ans_attrib->value.u32 = avp_attrib->value.u32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1405
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1406 fd_list_insert_before(&diameap_sm->ans_attributes,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1407 &ans_attrib->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1408
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1409 free_avp_attrib(avp_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1410
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1411 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1412 if ((ret1 == 0) && (ret2 == 0) && (auth_attrib != NULL) && (avp_attrib
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1413 != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1414 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1415
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1416 CHECK_MALLOC(ans_attrib = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1417
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1418 memset(ans_attrib, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1419 fd_list_init(&ans_attrib->chain, NULL);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1420 ans_attrib->attrib = "Authorization-Lifetime";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1421 if (avp_attrib->value.u32 < atoi(auth_attrib->value))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1422 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1423 ans_attrib->value.u32 = avp_attrib->value.u32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1424 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1425 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1426 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1427 ans_attrib->value.u32 = atoi(auth_attrib->value);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1428 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1429 fd_list_insert_before(&diameap_sm->ans_attributes,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1430 &ans_attrib->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1431 free_avp_attrib(avp_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1432 free_attrib(auth_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1433 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1434 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1435
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1436 /* Auth-Grace-Period */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1437 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1438 CHECK_FCT(diameap_get_avp_attribute(&diameap_sm->req_attributes, "Auth-Grace-Period", &avp_attrib,1, &ret1));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1439
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1440 CHECK_FCT(diameap_get_auth_attribute(&diameap_sm->attributes, "Auth-Grace-Period", &auth_attrib,1, &ret2));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1441
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1442 if ((ret1 == 1) && (ret2 == 0) && (auth_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1443 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1444 CHECK_MALLOC(ans_attrib = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1445 memset(ans_attrib, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1446 fd_list_init(&ans_attrib->chain, NULL);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1447 ans_attrib->attrib = "Auth-Grace-Period";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1448 ans_attrib->value.u32 = atoi(auth_attrib->value);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1449 fd_list_insert_before(&diameap_sm->ans_attributes,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1450 &ans_attrib->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1451 free_attrib(auth_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1452 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1453 if ((ret1 == 0) && (ret2 == 1) && (avp_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1454 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1455 CHECK_MALLOC(ans_attrib = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1456 memset(ans_attrib, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1457 fd_list_init(&ans_attrib->chain, NULL);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1458 ans_attrib->attrib = "Auth-Grace-Period";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1459 ans_attrib->value.u32 = avp_attrib->value.u32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1460 fd_list_insert_before(&diameap_sm->ans_attributes,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1461 &ans_attrib->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1462 free_avp_attrib(avp_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1463 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1464 if ((ret1 == 0) && (ret2 == 0) && (auth_attrib != NULL) && (avp_attrib
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1465 != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1466 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1467 CHECK_MALLOC(ans_attrib = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1468 memset(ans_attrib, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1469 fd_list_init(&ans_attrib->chain, NULL);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1470 ans_attrib->attrib = "Auth-Grace-Period";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1471 if (avp_attrib->value.u32 < atoi(auth_attrib->value))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1472 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1473 ans_attrib->value.u32 = avp_attrib->value.u32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1474 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1475 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1476 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1477 ans_attrib->value.u32 = atoi(auth_attrib->value);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1478 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1479 fd_list_insert_before(&diameap_sm->ans_attributes,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1480 &ans_attrib->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1481 free_attrib(auth_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1482 free_avp_attrib(avp_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1483 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1484 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1485
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1486 /* Auth-Session-State */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1487 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1488 CHECK_FCT(diameap_get_auth_attribute(&diameap_sm->attributes, "Auth-Session-State", &auth_attrib,1, &ret2));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1489 if ((ret2 == 0) && (auth_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1490 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1491 CHECK_MALLOC(ans_attrib = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1492 memset(ans_attrib, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1493 fd_list_init(&ans_attrib->chain, NULL);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1494 ans_attrib->attrib = "Auth-Session-State";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1495 ans_attrib->value.i32 = atoi(auth_attrib->value);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1496 fd_list_insert_before(&diameap_sm->ans_attributes,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1497 &ans_attrib->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1498 free_attrib(auth_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1499 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1500 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1501
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1502 /* Re-Auth-Request-Type */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1503 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1504 CHECK_FCT(diameap_get_auth_attribute(&diameap_sm->attributes, "Re-Auth-Request-Type", &auth_attrib,1, &ret2));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1505 if ((ret2 == 0) && (auth_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1506 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1507 CHECK_MALLOC(ans_attrib = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1508 memset(ans_attrib, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1509 fd_list_init(&ans_attrib->chain, NULL);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1510 ans_attrib->attrib = "Re-Auth-Request-Type";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1511 ans_attrib->value.i32 = atoi(auth_attrib->value);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1512 fd_list_insert_before(&diameap_sm->ans_attributes,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1513 &ans_attrib->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1514 free_attrib(auth_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1515 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1516 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1517 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1518 ans_attrib = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1519 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes, "Authorization-Lifetime", &ans_attrib,0, &ret1));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1520 if ((ret1 == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1521 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1522 CHECK_MALLOC(ans_attrib = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1523 memset(ans_attrib, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1524 fd_list_init(&ans_attrib->chain, NULL);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1525 ans_attrib->attrib = "Re-Auth-Request-Type";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1526 ans_attrib->value.i32 = 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1527 fd_list_insert_before(&diameap_sm->ans_attributes,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1528 &ans_attrib->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1529 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1530 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1531 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1532
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1533 /* Session-Timeout */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1534 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1535 CHECK_FCT(diameap_get_auth_attribute(&diameap_sm->attributes, "Session-Timeout", &auth_attrib,1, &ret2));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1536 if ((ret2 == 0) && (auth_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1537 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1538 CHECK_MALLOC(ans_attrib = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1539 memset(ans_attrib, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1540 fd_list_init(&ans_attrib->chain, NULL);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1541 ans_attrib->attrib = "Session-Timeout";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1542 ans_attrib->value.u32 = atoi(auth_attrib->value);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1543 fd_list_insert_before(&diameap_sm->ans_attributes,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1544 &ans_attrib->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1545 free_attrib(auth_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1546 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1547 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1548
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1549 /* Multi-Round-Time-Out */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1550 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1551 CHECK_FCT(diameap_get_auth_attribute(&diameap_sm->attributes, "Multi-Round-Time-Out", &auth_attrib,1, &ret2));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1552 if ((ret2 == 0) && (auth_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1553 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1554 CHECK_MALLOC(ans_attrib = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1555 memset(ans_attrib, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1556 fd_list_init(&ans_attrib->chain, NULL);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1557 ans_attrib->attrib = "Multi-Round-Time-Out";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1558 ans_attrib->value.u32 = atoi(auth_attrib->value);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1559 fd_list_insert_before(&diameap_sm->ans_attributes,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1560 &ans_attrib->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1561 free_attrib(auth_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1562 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1563 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1564
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1565 /* Acct-Interim-Interval */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1566 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1567 CHECK_FCT(diameap_get_auth_attribute(&diameap_sm->attributes, "Acct-Interim-Interval", &auth_attrib,1, &ret2));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1568 if ((ret2 == 0) && (auth_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1569 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1570 CHECK_MALLOC(ans_attrib = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1571 memset(ans_attrib, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1572 fd_list_init(&ans_attrib->chain, NULL);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1573 ans_attrib->attrib = "Acct-Interim-Interval";
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1574 ans_attrib->value.u32 = atoi(auth_attrib->value);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1575 fd_list_insert_before(&diameap_sm->ans_attributes,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1576 &ans_attrib->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1577 free_attrib(auth_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1578 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1579 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1580
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1581 return 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1582 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1583
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1584 #define DIAMEAP_STR 1
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1585 #define DIAMEAP_NUM 2
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1586
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1587 #define DIAMEAP_OP_NO 0 //Not supported operator
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1588 #define DIAMEAP_OP_EQ 1 //==
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1589 #define DIAMEAP_OP_GT 2 //>
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1590 #define DIAMEAP_OP_LT 3 //<
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1591 #define DIAMEAP_OP_GE 4 //>=
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1592 #define DIAMEAP_OP_LE 5 //<=
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1593 #define DIAMEAP_OP_NE 6 //!=
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1594 #define DIAMEAP_OP_EX 7 //~=
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1595 #define EQ(A,B) A==B ? TRUE : FALSE
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1596 #define GT(A,B) A>B ? TRUE : FALSE
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1597 #define GE(A,B) A>=B ? TRUE : FALSE
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1598 #define LT(A,B) A<B ? TRUE : FALSE
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1599 #define LE(A,B) A<=B ? TRUE : FALSE
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1600 #define NE(A,B) A!=B ? TRUE : FALSE
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1601
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1602 int diameap_get_operator(char *operator)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1603 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1604 TRACE_ENTRY("%p",operator);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1605 if (strcmp(operator, "==") == 0)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1606 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1607 return DIAMEAP_OP_EQ;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1608 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1609 if (strcmp(operator, ">") == 0)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1610 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1611 return DIAMEAP_OP_GT;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1612 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1613 if (strcmp(operator, "<") == 0)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1614 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1615 return DIAMEAP_OP_LT;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1616 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1617 if (strcmp(operator, ">=") == 0)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1618 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1619 return DIAMEAP_OP_GE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1620 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1621 if (strcmp(operator, "<=") == 0)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1622 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1623 return DIAMEAP_OP_LE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1624 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1625 if (strcmp(operator, "!=") == 0)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1626 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1627 return DIAMEAP_OP_NE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1628 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1629 if (strcmp(operator, "~=") == 0)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1630 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1631 return DIAMEAP_OP_EX;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1632 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1633 return DIAMEAP_OP_NO;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1634 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1635
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1636 boolean is_operator(int format_type, char * operator)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1637 {
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1638 TRACE_ENTRY("%d %p",format_type,operator);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1639 if ((format_type == DIAMEAP_STR) && (strcmp(operator, "==") == 0 || strcmp(
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1640 operator, "~=") == 0 || strcmp(operator, "!=") == 0))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1641 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1642 return TRUE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1643 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1644 if ((format_type == DIAMEAP_NUM) && (strcmp(operator, "~=") != 0))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1645 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1646 return TRUE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1647 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1648 return FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1649 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1650
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1651 union avp_value diameap_get_num(char * num, enum dict_avp_basetype datatype)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1652 {
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1653 TRACE_ENTRY("%p %d",num,datatype);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1654 union avp_value val;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1655 switch (datatype)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1656 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1657 case AVP_TYPE_INTEGER32://i32
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1658 val.i32 = atoi(num);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1659 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1660 case AVP_TYPE_INTEGER64://i64
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1661 val.i64 = atoll(num);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1662 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1663 case AVP_TYPE_UNSIGNED32://u32
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1664 val.u32 = strtoul(num, NULL, 10);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1665 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1666 case AVP_TYPE_UNSIGNED64://u64
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1667 val.u64 = strtoull(num, NULL, 10);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1668 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1669 case AVP_TYPE_FLOAT32://f32
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1670 val.f32 = atof(num);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1671 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1672 case AVP_TYPE_FLOAT64://f64
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1673 val.f64 = strtod(num, NULL);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1674 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1675 default:
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1676 TRACE_DEBUG(INFO, "%sUnknown AVP Base Type.",DIAMEAP_EXTENSION)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1677 ;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1678 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1679 return val;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1680 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1681
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1682 boolean diameap_check(union avp_value *A, char * B, char * operator,
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1683 enum dict_avp_basetype datatype)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1684 {
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1685 TRACE_ENTRY("%p %p %p %d",A,B,operator,datatype);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1686 if (((datatype == AVP_TYPE_OCTETSTRING) && (is_operator(DIAMEAP_STR,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1687 operator) == TRUE)) || ((datatype != AVP_TYPE_OCTETSTRING)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1688 && (datatype != AVP_TYPE_GROUPED) && (is_operator(DIAMEAP_NUM,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1689 operator) == TRUE)))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1690 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1691 switch (diameap_get_operator(operator))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1692 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1693 case DIAMEAP_OP_EQ:
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1694 if ((datatype == AVP_TYPE_OCTETSTRING) && (is_operator(DIAMEAP_STR,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1695 operator) == TRUE))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1696 {
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1697 if (strcmp((char *)A->os.data, B) == 0)
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1698 return TRUE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1699 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1700 return FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1701 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1702 else if ((datatype != AVP_TYPE_OCTETSTRING) && (datatype
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1703 != AVP_TYPE_GROUPED) && (is_operator(DIAMEAP_NUM, operator)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1704 == TRUE))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1705 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1706
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1707 switch (datatype)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1708 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1709 case AVP_TYPE_INTEGER32://i32
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1710 return EQ(A->i32,diameap_get_num(B, datatype).i32);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1711 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1712 case AVP_TYPE_INTEGER64://i64
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1713 return EQ(A->i64,diameap_get_num(B, datatype).i64);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1714 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1715 case AVP_TYPE_UNSIGNED32://u32
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1716 return EQ(A->u32,diameap_get_num(B, datatype).u32);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1717 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1718 case AVP_TYPE_UNSIGNED64://u64
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1719 return EQ(A->u64,diameap_get_num(B, datatype).u64);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1720 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1721 case AVP_TYPE_FLOAT32://f32
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1722 return EQ(A->f32,diameap_get_num(B, datatype).f32);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1723 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1724 case AVP_TYPE_FLOAT64://f64
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1725 return EQ(A->f64,diameap_get_num(B, datatype).f64);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1726 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1727 default:
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1728 return FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1729 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1730 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1731 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1732 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1733 return FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1734 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1735 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1736 case DIAMEAP_OP_EX:
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1737 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1738 //string only
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1739 boolean authorized = FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1740 if ((datatype == AVP_TYPE_OCTETSTRING) && (is_operator(DIAMEAP_STR,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1741 operator) == TRUE))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1742 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1743 regex_t rule_regexp;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1744 regcomp(&rule_regexp, B, REG_EXTENDED | REG_NOSUB | REG_ICASE);
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1745 if (regexec(&rule_regexp, (char *)A->os.data, 0, NULL, 0) != 0)
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1746 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1747 authorized = FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1748 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1749 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1750 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1751 authorized = TRUE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1752 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1753 regfree(&rule_regexp);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1754 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1755 return authorized;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1756 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1757 case DIAMEAP_OP_GT:
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1758
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1759 if ((datatype != AVP_TYPE_OCTETSTRING) && (datatype
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1760 != AVP_TYPE_GROUPED) && (is_operator(DIAMEAP_NUM, operator)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1761 == TRUE))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1762 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1763 switch (datatype)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1764 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1765 case AVP_TYPE_INTEGER32://i32
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1766 return GT(A->i32, diameap_get_num(B, datatype).i32);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1767 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1768 case AVP_TYPE_INTEGER64://i64
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1769 return GT(A->i64, diameap_get_num(B, datatype).i64);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1770 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1771 case AVP_TYPE_UNSIGNED32://u32
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1772 return GT(A->u32, diameap_get_num(B, datatype).u32);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1773 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1774 case AVP_TYPE_UNSIGNED64://u64
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1775 return GT(A->u64, diameap_get_num(B, datatype).u64);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1776 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1777 case AVP_TYPE_FLOAT32://f32
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1778 return GT(A->f32, diameap_get_num(B, datatype).f32);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1779 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1780 case AVP_TYPE_FLOAT64://f64
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1781 return GT(A->f64, diameap_get_num(B, datatype).f64);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1782 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1783 default:
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1784 return FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1785 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1786 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1787 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1788 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1789 return FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1790 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1791 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1792 case DIAMEAP_OP_GE:
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1793 if ((datatype != AVP_TYPE_OCTETSTRING) && (datatype
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1794 != AVP_TYPE_GROUPED) && (is_operator(DIAMEAP_NUM, operator)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1795 == TRUE))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1796 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1797 switch (datatype)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1798 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1799 case AVP_TYPE_INTEGER32://i32
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1800 return GE(A->i32,diameap_get_num(B, datatype).i32);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1801 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1802 case AVP_TYPE_INTEGER64://i64
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1803 return GE(A->i64,diameap_get_num(B, datatype).i64);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1804 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1805 case AVP_TYPE_UNSIGNED32://u32
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1806 return GE(A->u32,diameap_get_num(B, datatype).u32);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1807 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1808 case AVP_TYPE_UNSIGNED64://u64
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1809 return GE(A->u64,diameap_get_num(B, datatype).u64);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1810 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1811 case AVP_TYPE_FLOAT32://f32
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1812 return GE(A->f32,diameap_get_num(B, datatype).f32);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1813 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1814 case AVP_TYPE_FLOAT64://f64
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1815 return GE(A->f64,diameap_get_num(B, datatype).f64);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1816 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1817 default:
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1818 return FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1819 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1820 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1821 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1822 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1823 return FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1824 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1825 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1826 case DIAMEAP_OP_LT:
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1827 if ((datatype != AVP_TYPE_OCTETSTRING) && (datatype
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1828 != AVP_TYPE_GROUPED) && (is_operator(DIAMEAP_NUM, operator)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1829 == TRUE))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1830 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1831 switch (datatype)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1832 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1833 case AVP_TYPE_INTEGER32://i32
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1834 return LT(A->i32, diameap_get_num(B, datatype).i32);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1835 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1836 case AVP_TYPE_INTEGER64://i64
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1837 return LT(A->i64, diameap_get_num(B, datatype).i64);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1838 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1839 case AVP_TYPE_UNSIGNED32://u32
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1840 return LT(A->u32, diameap_get_num(B, datatype).u32);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1841 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1842 case AVP_TYPE_UNSIGNED64://u64
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1843 return LT(A->u64, diameap_get_num(B, datatype).u64);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1844 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1845 case AVP_TYPE_FLOAT32://f32
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1846 return LT(A->f32, diameap_get_num(B, datatype).f32);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1847 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1848 case AVP_TYPE_FLOAT64://f64
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1849 return LT(A->f64, diameap_get_num(B, datatype).f64);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1850 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1851 default:
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1852 return FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1853 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1854 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1855 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1856 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1857 return FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1858 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1859 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1860 case DIAMEAP_OP_LE:
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1861 if ((datatype != AVP_TYPE_OCTETSTRING) && (datatype
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1862 != AVP_TYPE_GROUPED) && (is_operator(DIAMEAP_NUM, operator)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1863 == TRUE))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1864 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1865 switch (datatype)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1866 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1867 case AVP_TYPE_INTEGER32://i32
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1868 return LE(A->i32, diameap_get_num(B, datatype).i32);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1869 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1870 case AVP_TYPE_INTEGER64://i64
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1871 return LE(A->i64, diameap_get_num(B, datatype).i64);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1872 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1873 case AVP_TYPE_UNSIGNED32://u32
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1874 return LE(A->u32, diameap_get_num(B, datatype).u32);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1875 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1876 case AVP_TYPE_UNSIGNED64://u64
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1877 return LE(A->u64, diameap_get_num(B, datatype).u64);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1878 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1879 case AVP_TYPE_FLOAT32://f32
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1880 return LE(A->f32, diameap_get_num(B, datatype).f32);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1881 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1882 case AVP_TYPE_FLOAT64://f64
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1883 return LE(A->f64, diameap_get_num(B, datatype).f64);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1884 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1885 default:
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1886 return FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1887 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1888 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1889 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1890 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1891 return FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1892 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1893 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1894 case DIAMEAP_OP_NE:
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1895 if ((datatype == AVP_TYPE_OCTETSTRING) && (is_operator(DIAMEAP_STR,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1896 operator) == TRUE))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1897 {
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1898 if (strcmp((char *)A->os.data, B) != 0)
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1899 return TRUE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1900 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1901 return FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1902 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1903 else if ((datatype != AVP_TYPE_OCTETSTRING) && (datatype
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1904 != AVP_TYPE_GROUPED) && (is_operator(DIAMEAP_NUM, operator)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1905 == TRUE))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1906 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1907 switch (datatype)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1908 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1909 case AVP_TYPE_INTEGER32://i32
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1910 return NE(A->i32, diameap_get_num(B, datatype).i32);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1911 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1912 case AVP_TYPE_INTEGER64://i64
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1913 return NE(A->i64, diameap_get_num(B, datatype).i64);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1914 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1915 case AVP_TYPE_UNSIGNED32://u32
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1916 return NE(A->u32, diameap_get_num(B, datatype).u32);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1917 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1918 case AVP_TYPE_UNSIGNED64://u64
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1919 return NE(A->u64, diameap_get_num(B, datatype).u64);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1920 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1921 case AVP_TYPE_FLOAT32://f32
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1922 return NE(A->f32, diameap_get_num(B, datatype).f32);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1923 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1924 case AVP_TYPE_FLOAT64://f64
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1925 return NE(A->f64, diameap_get_num(B, datatype).f64);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1926 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1927 default:
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1928 return FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1929 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1930 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1931 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1932 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1933 return FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1934 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1935 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1936 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1937 }
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
1938 return FALSE;
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1939 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1940
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1941 char * diameap_attribute_operator(char * op, int * toadd, boolean *isrule)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1942 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1943 TRACE_ENTRY("%p %p %p",op,toadd,isrule);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1944 char * attribute_op;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1945
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1946 if (op[0] == '+')
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1947 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1948 *toadd = 1;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1949 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1950 else if (op[strlen(op) - 1] == '+')
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1951 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1952 *toadd = 2;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1953 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1954 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1955 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1956 *toadd = 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1957 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1958
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1959 switch (*toadd)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1960 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1961 case 1:
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1962 attribute_op = malloc(strlen(op));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1963 memset(attribute_op, 0, strlen(op));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1964 strncpy(attribute_op, op + 1, strlen(op) - 1);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1965 attribute_op[strlen(op)] = '\0';
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1966 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1967 case 2:
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1968 attribute_op = malloc(strlen(op));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1969 memset(attribute_op, 0, strlen(op));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1970 strncpy(attribute_op, op, strlen(op) - 1);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1971 attribute_op[strlen(op)] = '\0';
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1972 break;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1973 default:
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1974 attribute_op = malloc(strlen(op) + 1);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1975 memset(attribute_op, 0, strlen(op) + 1);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1976 strcpy(attribute_op, op);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1977 attribute_op[strlen(op) + 1] = '\0';
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1978 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1979 if (strcmp(attribute_op, "=") == 0)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1980 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1981 *isrule = FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1982 *toadd = 2;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1983 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1984 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1985 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1986 *isrule = TRUE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1987 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1988
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1989 return attribute_op;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1990 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1991
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1992 int diameap_answer_set_attribute_valueA(union avp_value *A, int *tofree,
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1993 enum dict_avp_basetype datatype, union avp_value * rval)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1994 {
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1995 TRACE_ENTRY("%p %p %d %p",A,tofree,datatype,rval);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1996 if (datatype == AVP_TYPE_OCTETSTRING)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
1997 {
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1998 CHECK_MALLOC(rval->os.data=malloc(A->os.len));
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
1999 memcpy(rval->os.data,A->os.data,A->os.len);
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
2000 rval->os.len = A->os.len;
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2001 *tofree = 1;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2002 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2003 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2004 {
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
2005 *rval = *A;
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2006 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2007 return 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2008 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2009 int diameap_answer_set_attribute_valueB(char * B, int *tofree,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2010 enum dict_avp_basetype datatype, union avp_value * rval)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2011 {
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
2012 TRACE_ENTRY("%p %p %d %p",B,tofree,datatype,rval);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2013 if (datatype == AVP_TYPE_OCTETSTRING)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2014 {
444
25c111bec522 Fix small issue on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 438
diff changeset
2015 CHECK_MALLOC(rval->os.data=malloc(strlen(B)));
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
2016 memcpy(rval->os.data,B,strlen(B));
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2017 rval->os.len = strlen(B);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2018
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2019 *tofree = 1;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2020 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2021 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2022 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2023
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2024 *rval = diameap_get_num(B, datatype);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2025 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2026
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2027 return 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2028 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2029
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2030 static int diameap_attribute_limits(char * attrib, int * max, int *ret)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2031 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2032 TRACE_ENTRY("%p %p %p",attrib,max,ret);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2033 if (attrib == NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2034 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2035 return EINVAL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2036 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2037 int i;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2038 for (i = 0; i < sizeof(auth_avps); i++)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2039 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2040 if (strcmp(auth_avps[i].avp_attribute, attrib) == 0)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2041 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2042 *max = auth_avps[i].max;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2043 *ret = 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2044 return 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2045 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2046 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2047 *max = 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2048 *ret = 1;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2049 return 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2050 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2051
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2052 static int diameap_answer_authorization_attributes(
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2053 struct diameap_state_machine * diameap_sm)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2054 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2055 TRACE_ENTRY("%p",diameap_sm);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2056
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2057 if (diameap_sm == NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2058 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2059 return EINVAL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2060 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2061 boolean checked = TRUE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2062
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2063 struct fd_list * attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2064 struct auth_attribute * auth_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2065 struct avp_attribute * avp_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2066 int ret;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2067
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2068 for (attrib = (&diameap_sm->attributes)->next; attrib
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2069 != (&diameap_sm->attributes); attrib = attrib->next)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2070 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2071 avp_attrib = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2072 auth_attrib = (struct auth_attribute *) attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2073
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2074 int toadd = 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2075 boolean isrule = FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2076 char * op;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2077
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2078 op = diameap_attribute_operator(auth_attrib->op, &toadd, &isrule);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2079
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2080 struct dict_object * dobj;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2081 struct dict_avp_data avpdata;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2082 fd_dict_search(fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2083 auth_attrib->attrib, &dobj, ENOENT);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2084 fd_dict_getval(dobj, &avpdata);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2085
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2086 checked = TRUE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2087 if (isrule == TRUE)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2088 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2089 CHECK_FCT(diameap_get_avp_attribute(&diameap_sm->req_attributes,auth_attrib->attrib,&avp_attrib,0,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2090 if (ret == 0)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2091 {
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
2092 checked = diameap_check(&avp_attrib->value, auth_attrib->value,
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2093 op, avpdata.avp_basetype);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2094 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2095 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2096 if (checked == TRUE && toadd != 0)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2097 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2098
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2099 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2100 int max = 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2101 diameap_attribute_limits(auth_attrib->attrib, &max, &ret);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2102 if ((ret == 0) && (max != 0))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2103 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2104 if (max == 1)//only one
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2105 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2106 int ret = 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2107 diameap_get_ans_attribute(&diameap_sm->ans_attributes,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2108 auth_attrib->attrib, &ans_attrib, 0, &ret);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2109 if (ret == 1)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2110 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2111 ans_attrib = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2112 CHECK_MALLOC(ans_attrib = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2113 memset(ans_attrib, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2114 fd_list_init(&ans_attrib->chain, NULL);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2115 ans_attrib->attrib = strdup(auth_attrib->attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2116 if (toadd == 1)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2117 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2118 diameap_answer_set_attribute_valueA(
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
2119 &avp_attrib->value, &ans_attrib->tofree,
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2120 avpdata.avp_basetype, &ans_attrib->value);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2121 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2122 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2123 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2124 diameap_answer_set_attribute_valueB(
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2125 auth_attrib->value, &ans_attrib->tofree,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2126 avpdata.avp_basetype, &ans_attrib->value);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2127 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2128 fd_list_insert_before(&diameap_sm->ans_attributes,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2129 &ans_attrib->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2130
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2131 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2132 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2133 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2134 //an answer avp is already added
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2135 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2136 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2137 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2138 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2139 ans_attrib = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2140 CHECK_MALLOC(ans_attrib = malloc(sizeof(struct avp_attribute)));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2141 memset(ans_attrib, 0, sizeof(struct avp_attribute));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2142 fd_list_init(&ans_attrib->chain, NULL);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2143 ans_attrib->attrib = auth_attrib->attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2144 if (toadd == 1)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2145 {
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
2146 diameap_answer_set_attribute_valueA(&avp_attrib->value,
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2147 &ans_attrib->tofree, avpdata.avp_basetype,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2148 &ans_attrib->value);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2149 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2150 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2151 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2152 diameap_answer_set_attribute_valueB(auth_attrib->value,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2153 &ans_attrib->tofree, avpdata.avp_basetype,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2154 &ans_attrib->value);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2155 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2156 fd_list_insert_before(&diameap_sm->ans_attributes,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2157 &ans_attrib->chain);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2158 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2159 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2160 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2161 if (checked == FALSE)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2162 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2163
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2164 diameap_sm->authorized = FALSE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2165 return 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2166 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2167 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2168 diameap_sm->authorized = checked;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2169 return 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2170
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2171 return 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2172 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2173
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
2174
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2175
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2176 static int diameap_policy_decision(struct diameap_state_machine * diameap_sm,
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
2177 struct diameap_eap_interface *eap_i)
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2178 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2179 TRACE_ENTRY("%p %p",diameap_sm,eap_i);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2180
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
2181 if ((eap_i->aaaFail == TRUE) && (eap_i->aaaSuccess == TRUE))
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2182 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2183 TRACE_DEBUG(INFO,"%s Incorrect EAP decision. EAP process should not return both success and failure for the same session.(please report this problem.)",DIAMEAP_EXTENSION);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2184 return -1;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2185 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2186
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
2187 if (eap_i->aaaFail == TRUE)
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2188 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2189 diameap_sm->result_code = 4001; /* DIAMETER_AUTHENTICATION_REJECTED 4001 */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2190 diameap_sm->authFailure = TRUE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2191 TRACE_DEBUG(FULL+1,"%s Auth failure: Authentication Rejected ",DIAMEAP_EXTENSION);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2192 return 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2193 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2194
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
2195 if (eap_i->aaaSuccess == FALSE)
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2196 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2197 diameap_sm->result_code = 1001; /* DIAMETER_MULTI_ROUND_AUTH 1001 */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2198 return 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2199 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2200
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
2201 if (eap_i->aaaSuccess == TRUE)
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2202 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2203 if (diameap_sm->auth_request_val == AUTHORIZE_AUTHENTICATE)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2204 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2205 if ((diameap_sm->verify_authorization == TRUE)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2206 && (diameap_sm->result_code == 0))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2207 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2208 diameap_sm->result_code = 2001; /* DIAMETER_SUCCESS 2001 */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2209 diameap_sm->authSuccess = TRUE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2210 TRACE_DEBUG(FULL+1,"%s Auth success: Authorization and Authentication ",DIAMEAP_EXTENSION);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2211 return 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2212 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2213 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2214 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2215 //
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2216 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2217 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2218 if (diameap_sm->auth_request_val == AUTHENTICATE_ONLY)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2219 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2220 diameap_sm->result_code = 2001; /* DIAMETER_SUCCESS 2001 */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2221 diameap_sm->authSuccess = TRUE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2222 TRACE_DEBUG(FULL+1,"%s Auth success: Authentication Only ",DIAMEAP_EXTENSION);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2223 return 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2224 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2225 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2226
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2227 return 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2228 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2229
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2230 static int diameap_add_avps(struct diameap_state_machine * diameap_sm,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2231 struct msg * ans, struct msg * req)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2232 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2233 TRACE_ENTRY("%p %p %p",diameap_sm,ans,req);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2234
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2235 struct avp * avp, *avp2;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2236 struct avp_hdr * avpdata;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2237 union avp_value avp_val;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2238 int ret = 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2239
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2240 /* Origin-Host AVP and Origin-Realm AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2241 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2242 CHECK_FCT( fd_msg_add_origin ( ans, 0 ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2243 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2244
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2245 /* Auth-Application-Id AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2246 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2247 CHECK_FCT(fd_msg_avp_new(dataobj_auth_application_id, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2248 avp_val.u32 = diameap_config->application_id;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2249 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2250 CHECK_FCT(fd_msg_avp_add(ans, MSG_BRW_LAST_CHILD, avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2251 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2252
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2253 /* Auth-Request-Type AVP
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2254 * Enumerated values:
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2255 * AUTHENTICATE_ONLY 1
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2256 * AUTHORIZE_ONLY 2
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2257 * AUTHORIZE_AUTHENTICATE 3 */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2258 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2259 CHECK_FCT(fd_msg_avp_new(dataobj_auth_request_type, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2260 if (!diameap_config->authorize)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2261 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2262 //AUTHENTICATE ONLY
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2263 avp_val.i32 = AUTHENTICATE_ONLY;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2264 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2265 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2266 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2267 if (diameap_sm->auth_request_val == 3)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2268 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2269 //AUTHORIZE_AUTHENTICATE
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2270 avp_val.i32 = AUTHORIZE_AUTHENTICATE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2271 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2272 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2273 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2274 //AUTHENTICATE_ONLY
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2275 avp_val.i32 = AUTHENTICATE_ONLY;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2276 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2277 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2278 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2279 CHECK_FCT(fd_msg_avp_add(ans, MSG_BRW_LAST_CHILD, avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2280 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2281
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2282 /* Proxy-Info AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2283 CHECK_FCT(fd_msg_search_avp(req, dataobj_proxy_info, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2284 if (avp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2285 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2286 CHECK_FCT(fd_msg_avp_hdr ( avp, &avpdata ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2287 u32 proxy_info_code = avpdata->avp_code;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2288 int depth;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2289 do
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2290 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2291 ret = 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2292 depth = 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2293 CHECK_FCT(fd_msg_avp_hdr ( avp, &avpdata ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2294 if (avpdata->avp_code == proxy_info_code)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2295 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2296 CHECK_FCT(fd_msg_avp_add(ans, MSG_BRW_LAST_CHILD, avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2297 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2298 ret = fd_msg_browse ( avp, MSG_BRW_NEXT, &avp2, &depth);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2299 avp = avp2;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2300 } while ((avp != NULL) && (ret == 0) && (ret == 0));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2301 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2302
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2303 if (diameap_sm->eap_sm.user.userid)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2304 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2305 /* User-Name AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2306 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2307 CHECK_FCT(fd_msg_avp_new(dataobj_user_name, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2308
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2309 if (diameap_sm->privateUser == FALSE)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2310 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2311
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2312 avp_val.os.data = diameap_sm->eap_sm.user.userid;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2313 avp_val.os.len = diameap_sm->eap_sm.user.useridLength;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2314 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2315 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2316 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2317 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2318 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2319
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2320 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2321
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2322 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2323 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2324 return 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2325 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2326
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2327 static int diameap_add_user_sessions_avps(
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2328 struct diameap_state_machine * diameap_sm, struct msg * ans)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2329 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2330 TRACE_ENTRY("%p %p",diameap_sm,ans);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2331
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2332 struct avp * avp;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2333 union avp_value avp_val;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2334 int ret;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2335
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2336 /* Authorization-Lifetime AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2337 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2338 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2339 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Authorization-Lifetime",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2340 if ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2341 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2342 CHECK_FCT(fd_msg_avp_new(dataobj_authorization_lifetime, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2343 avp_val.u32 = ans_attrib->value.u32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2344 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2345 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2346 free_ans_attrib(ans_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2347 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2348 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2349
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2350 /* Auth-Grace-Period AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2351 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2352 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2353 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Auth-Grace-Period",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2354 if ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2355 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2356 CHECK_FCT(fd_msg_avp_new(dataobj_auth_grace_period, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2357 avp_val.u32 = ans_attrib->value.u32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2358 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2359 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2360 free_ans_attrib(ans_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2361 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2362 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2363
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2364 /* Auth-Session-State AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2365 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2366 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2367 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Auth-Session-State",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2368 if ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2369 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2370 CHECK_FCT(fd_msg_avp_new(dataobj_auth_session_state, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2371 avp_val.i32 = ans_attrib->value.i32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2372 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2373 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2374 free_ans_attrib(ans_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2375 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2376 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2377
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2378 /* Re-Auth-Request-Type AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2379 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2380 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2381 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Re-Auth-Request-Type",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2382 if ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2383 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2384 CHECK_FCT(fd_msg_avp_new(dataobj_re_auth_request_type, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2385 avp_val.i32 = ans_attrib->value.i32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2386 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2387 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2388 free_ans_attrib(ans_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2389 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2390 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2391
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2392 /* Session-Timeout AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2393 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2394 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2395 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Session-Timeout",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2396 if ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2397 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2398 CHECK_FCT(fd_msg_avp_new(dataobj_session_timeout, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2399 avp_val.u32 = ans_attrib->value.u32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2400 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2401 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2402 free_ans_attrib(ans_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2403 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2404 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2405
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2406 /* Acct-Interim-Interval AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2407 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2408 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2409 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Acct-Interim-Interval",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2410 if ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2411 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2412 CHECK_FCT(fd_msg_avp_new(dataobj_acct_interim_interval, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2413 avp_val.u32 = ans_attrib->value.u32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2414 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2415 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2416 free_ans_attrib(ans_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2417 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2418 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2419 return 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2420 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2421
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2422 static int diameap_add_authorization_avps(
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2423 struct diameap_state_machine * diameap_sm, struct msg * ans)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2424 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2426 TRACE_ENTRY("%p %p",diameap_sm, ans);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2427
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2428 struct avp * avp;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2429 union avp_value avp_val;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2430 int ret;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2431
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2432 if (diameap_sm == NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2433 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2434 return EINVAL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2435 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2436 if (ans == NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2437 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2438 return EINVAL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2439 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2440
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2441 /* Reply-Message */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2442 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2443 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2444 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Reply-Message",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2445 while ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2446 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2447 CHECK_FCT(fd_msg_avp_new(dataobj_reply_message, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2448 avp_val.os.data = ans_attrib->value.os.data;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2449 avp_val.os.len = ans_attrib->value.os.len;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2450 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2451 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2452 free_ans_attrib(ans_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2453 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Reply-Message",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2454 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2455
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2456 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2457
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2458 /* Service-Type */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2459 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2460 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2461 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Service-Type",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2462 if ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2463 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2464 CHECK_FCT(fd_msg_avp_new(dataobj_service_type, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2465 avp_val.i32 = ans_attrib->value.i32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2466 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2467 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2468 free_ans_attrib(ans_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2469 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2470 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2471
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2472 /* Callback-Number */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2473 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2474 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2475 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Callback-Number",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2476 if ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2477 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2478 CHECK_FCT(fd_msg_avp_new(dataobj_callback_number, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2479 avp_val.os.data = ans_attrib->value.os.data;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2480 avp_val.os.len = ans_attrib->value.os.len;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2481 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2482 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2483 free_ans_attrib(ans_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2484 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2485 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2486
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2487 /* Callback-Id */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2488 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2489 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2490 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Callback-Id",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2491 if ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2492 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2493 CHECK_FCT(fd_msg_avp_new(dataobj_callback_id, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2494 avp_val.os.data = ans_attrib->value.os.data;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2495 avp_val.os.len = ans_attrib->value.os.len;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2496 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2497 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2498 free_ans_attrib(ans_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2499 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2500 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2501
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2502 /* Idle-Timeout */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2503 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2504 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2505 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Idle-Timeout",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2506 if ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2507 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2508 CHECK_FCT(fd_msg_avp_new(dataobj_idle_timeout, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2509 avp_val.u32 = ans_attrib->value.u32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2510 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2511 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2512 free_ans_attrib(ans_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2513 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2514 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2515
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2516 /* NAS-Filter-Rule */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2517 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2518 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2519 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"NAS-Filter-Rule",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2520 if ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2521 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2522 CHECK_FCT(fd_msg_avp_new(dataobj_nas_filter_rule, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2523 avp_val.u32 = ans_attrib->value.u32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2524 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2525 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2526 free_ans_attrib(ans_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2527 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2528 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2529
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2530 /* Filter-Id */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2531 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2532 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2533 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Filter-Id",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2534 while ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2535 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2536 CHECK_FCT(fd_msg_avp_new(dataobj_filter_id, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2537 avp_val.os.data = ans_attrib->value.os.data;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2538 avp_val.os.len = ans_attrib->value.os.len;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2539 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2540 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2541 free_ans_attrib(ans_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2542 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Filter-Id",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2543 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2544
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2545 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2546
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2547 /* Configuration-Token */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2548 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2549 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2550 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Configuration-Token",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2551 while ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2552 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2553 CHECK_FCT(fd_msg_avp_new(dataobj_configuration_token, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2554 avp_val.os.data = ans_attrib->value.os.data;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2555 avp_val.os.len = ans_attrib->value.os.len;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2556 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2557 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2558 free_ans_attrib(ans_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2559 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Configuration-Token",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2560 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2561 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2562
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2563 /* QoS-Filter-Rule */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2564 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2565 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2566 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"QoS-Filter-Rule",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2567 while ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2568 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2569 CHECK_FCT(fd_msg_avp_new(dataobj_qos_filter_rule, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2570 avp_val.os.data = ans_attrib->value.os.data;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2571 avp_val.os.len = ans_attrib->value.os.len;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2572 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2573 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2574 free_ans_attrib(ans_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2575 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"QoS-Filter-Rule",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2576 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2577
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2578 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2579
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2580 /* Framed-Protocol */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2581 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2582 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2583 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Framed-Protocol",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2584 if ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2585 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2586 CHECK_FCT(fd_msg_avp_new(dataobj_framed_protocol, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2587 avp_val.i32 = ans_attrib->value.i32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2588 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2589 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2590 free_ans_attrib(ans_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2591 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2592 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2593
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2594 /* Framed-Routing */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2595 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2596 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2597 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Framed-Routing",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2598 if ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2599 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2600 CHECK_FCT(fd_msg_avp_new(dataobj_framed_routing, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2601 avp_val.i32 = ans_attrib->value.i32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2602 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2603 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2604 free_ans_attrib(ans_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2605 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2606
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2607 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2608
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2609 /* Framed-MTU */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2610 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2611 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2612 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Framed-MTU",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2613 if ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2614 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2615 CHECK_FCT(fd_msg_avp_new(dataobj_framed_mtu, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2616 avp_val.u32 = ans_attrib->value.u32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2617 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2618 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2619 free_ans_attrib(ans_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2620 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2621 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2622
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2623 /* Framed-Compression */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2624 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2625 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2626 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Framed-Compression",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2627 while ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2628 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2629 CHECK_FCT(fd_msg_avp_new(dataobj_framed_compression, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2630 avp_val.i32 = ans_attrib->value.i32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2631 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2632 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2633 free_ans_attrib(ans_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2634 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Framed-Compression",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2635 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2636
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2637 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2638 /* Framed-IP-Address */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2639 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2640 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2641 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Framed-IP-Address",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2642 if ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2643 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2644 CHECK_FCT(fd_msg_avp_new(dataobj_framed_ip_address, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2645 avp_val.os.data = ans_attrib->value.os.data;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2646 avp_val.os.len = ans_attrib->value.os.len;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2647 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2648 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2649 free_ans_attrib(ans_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2650 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2651 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2652
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2653 /* Framed-IP-Netmask */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2654 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2655 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2656 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Framed-IP-Netmask",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2657 if ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2658 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2659 CHECK_FCT(fd_msg_avp_new(dataobj_framed_ip_netmask, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2660 avp_val.os.data = ans_attrib->value.os.data;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2661 avp_val.os.len = ans_attrib->value.os.len;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2662 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2663 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2664 free_ans_attrib(ans_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2665 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2666 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2667
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2668 /* Framed-Route */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2669 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2670 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2671 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Framed-Route",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2672 while ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2673 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2674 CHECK_FCT(fd_msg_avp_new(dataobj_framed_route, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2675 avp_val.os.data = ans_attrib->value.os.data;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2676 avp_val.os.len = ans_attrib->value.os.len;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2677 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2678 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2679 free_ans_attrib(ans_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2680 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Framed-Route",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2681 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2682 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2683
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2684 /* Framed-Pool */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2685 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2686 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2687 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Framed-Pool",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2688 if ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2689 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2690 CHECK_FCT(fd_msg_avp_new(dataobj_framed_pool, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2691 avp_val.os.data = ans_attrib->value.os.data;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2692 avp_val.os.len = ans_attrib->value.os.len;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2693 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2694 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2695 free_ans_attrib(ans_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2696 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2697 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2698
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2699 /* Framed-Interface-Id */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2700 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2701 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2702 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Framed-Interface-Id",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2703 if ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2704 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2705 CHECK_FCT(fd_msg_avp_new(dataobj_framed_interface_id, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2706 avp_val.u64 = ans_attrib->value.u64;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2707 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2708 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2709 free_ans_attrib(ans_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2710 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2711 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2712
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2713 /* Framed-IPv6-Prefix */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2714 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2715 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2716 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Framed-IPv6-Prefix",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2717 while ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2718 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2719 CHECK_FCT(fd_msg_avp_new(dataobj_framed_ipv6_prefix, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2720 avp_val.os.data = ans_attrib->value.os.data;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2721 avp_val.os.len = ans_attrib->value.os.len;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2722 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2723 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2724 free_ans_attrib(ans_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2725 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Framed-IPv6-Prefix",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2726 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2727 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2728
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2729 /* Framed-IPv6-Route */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2730 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2731 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2732 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Framed-IPv6-Route",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2733 while ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2734 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2735 CHECK_FCT(fd_msg_avp_new(dataobj_framed_ipv6_route, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2736 avp_val.os.data = ans_attrib->value.os.data;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2737 avp_val.os.len = ans_attrib->value.os.len;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2738 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2739 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2740 free_ans_attrib(ans_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2741 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Framed-IPv6-Route",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2742 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2743 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2744
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2745 /* Framed-IPv6-Pool */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2746 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2747 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2748 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Framed-IPv6-Pool",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2749 if ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2750 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2751 CHECK_FCT(fd_msg_avp_new(dataobj_framed_ipv6_pool, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2752 avp_val.os.data = ans_attrib->value.os.data;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2753 avp_val.os.len = ans_attrib->value.os.len;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2754 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2755 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2756 free_ans_attrib(ans_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2757 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2758 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2759
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2760 /* Framed-IPX-Network */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2761 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2762 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2763 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Framed-IPX-Network",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2764 if ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2765 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2766 CHECK_FCT(fd_msg_avp_new(dataobj_framed_ipx_network, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2767 avp_val.u32 = ans_attrib->value.u32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2768 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2769 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2770 free_ans_attrib(ans_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2771 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2772
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2773 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2774 /* Framed-AppleTalk-Link */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2775 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2776 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2777 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Framed-AppleTalk-Link",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2778 if ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2779 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2780 CHECK_FCT(fd_msg_avp_new(dataobj_framed_appletalk_link, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2781 avp_val.u32 = ans_attrib->value.u32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2782 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2783 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2784 free_ans_attrib(ans_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2785 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2786
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2787 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2788
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2789 /* Framed-AppleTalk-Network */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2790 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2791 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2792 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Framed-AppleTalk-Network",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2793 while ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2794 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2795 CHECK_FCT(fd_msg_avp_new(dataobj_framed_appletalk_network, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2796 avp_val.u32 = ans_attrib->value.u32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2797 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2798 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2799 free_ans_attrib(ans_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2800 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Framed-AppleTalk-Network",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2801 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2802
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2803 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2804
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2805 /* Framed-AppleTalk-Zone */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2806 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2807 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2808 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Framed-AppleTalk-Zone",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2809 if ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2810 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2811 CHECK_FCT(fd_msg_avp_new(dataobj_framed_appletalk_zone, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2812 avp_val.os.data = ans_attrib->value.os.data;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2813 avp_val.os.len = ans_attrib->value.os.len;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2814 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2815 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2816 free_ans_attrib(ans_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2817 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2818 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2819
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2820 /* Tunneling */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2821 //
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2822
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2823 /* State */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2824 //
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2825 return 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2826 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2827
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2828 static int diameap_add_result_code(struct diameap_state_machine * diameap_sm,
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2829 struct msg * ans, struct session * sess)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2830 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2831 TRACE_ENTRY("%p %p",diameap_sm,ans);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2832 struct avp * avp;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2833 union avp_value avp_val;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2834 int ret;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2835
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2836 /* Result-Code AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2837 CHECK_FCT(fd_msg_avp_new(dataobj_result_code, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2838 avp_val.u32 = diameap_sm->result_code;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2839 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2840 /* Add Result-Code AVP to the message */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2841 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2842
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2843 /* Multi_Round_Time_Out AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2844 if (diameap_sm->result_code == 1001)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2845 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2846 struct timespec sess_timeout;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2847 CHECK_FCT(fd_msg_avp_new(dataobj_multi_round_time_out, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2848 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2849 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Multi-Round-Time-Out",&ans_attrib,1,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2850 if ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2851 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2852 avp_val.u32 = ans_attrib->value.u32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2853 /* Update the session timeout with multi-round-time-out value */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2854 CHECK_SYS(clock_gettime(CLOCK_REALTIME,&sess_timeout));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2855 sess_timeout.tv_sec += diameap_config->multi_round_time_out;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2856 CHECK_FCT(fd_sess_settimeout(sess, &sess_timeout));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2857 free_ans_attrib(ans_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2858 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2859 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2860 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2861 avp_val.u32 = diameap_config->multi_round_time_out;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2862 /* Update the session timeout with multi-round-time-out value */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2863 CHECK_SYS(clock_gettime(CLOCK_REALTIME,&sess_timeout));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2864 sess_timeout.tv_sec += diameap_config->multi_round_time_out;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2865 CHECK_FCT(fd_sess_settimeout(sess, &sess_timeout));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2866 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2867 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2868 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2869 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2870 return 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2871 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2872
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2873 static int diameap_add_eap_payload(struct diameap_state_machine * diameap_sm,
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
2874 struct msg * ans, struct diameap_eap_interface *eap_i)
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2875 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2876 TRACE_ENTRY("%p %p",diameap_sm,ans);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2877 struct avp * avp;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2878 union avp_value avp_val;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2879 int ret;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2880 u32 Framed_MTU = 1500; //1500 default value
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2881 u32 NAS_Port_Type_HeaderLength = 4;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2882 int EAP_Max_Length = 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2883
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2884 /* get Framed-MTU AVP value */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2885 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2886 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2887 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"Framed-MTU",&ans_attrib,0,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2888 if ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2889 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2890 Framed_MTU = ans_attrib->value.u32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2891 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2892 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2893
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2894 /* get NAS-Port-Type AVP value */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2895 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2896 struct avp_attribute * ans_attrib;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2897 CHECK_FCT(diameap_get_ans_attribute(&diameap_sm->ans_attributes,"NAS-Port-Type",&ans_attrib,0,&ret));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2898 if ((ret == 0) && (ans_attrib != NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2899 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2900 // = ans_attrib->value.i32;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2901 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2902 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2903
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2904 //TD take the link type into consideration when calculating EAP_MAX_Length
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2905 EAP_Max_Length = Framed_MTU - NAS_Port_Type_HeaderLength;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2906
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
2907 if (eap_i->aaaEapReqData.length <= EAP_Max_Length)
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2908 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2909
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2910 /* EAP-Payload AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2911 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2912 CHECK_FCT(fd_msg_avp_new(dataobj_eap_payload, 0, &avp));
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
2913 avp_val.os.data = eap_i->aaaEapReqData.data;
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
2914 avp_val.os.len = eap_i->aaaEapReqData.length;
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2915 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2916 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2917
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2918 if (diameap_sm->lastReqEAPavp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2919 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2920 fd_msg_free(diameap_sm->lastReqEAPavp);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2921 diameap_sm->lastReqEAPavp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2922 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2923
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2924 CHECK_FCT(fd_msg_avp_new(dataobj_eap_payload, 0, &diameap_sm->lastReqEAPavp));
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
2925 avp_val.os.data = eap_i->aaaEapReqData.data;
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
2926 avp_val.os.len = eap_i->aaaEapReqData.length;
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2927 CHECK_FCT(fd_msg_avp_setvalue(diameap_sm->lastReqEAPavp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2928
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2929 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2930 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2931 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2932 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2933 //if EAP Packet length > EAP_Max_Length
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2934 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2935 return 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2936 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2937
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2938 static int diameap_send(struct msg ** rmsg)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2939 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2940 TRACE_ENTRY("%p",rmsg);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2941 CHECK_FCT( fd_msg_send( rmsg, NULL, NULL));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2942 return 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2943 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2944
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2945 static int diameap_add_eap_success_avps(
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2946 struct diameap_state_machine * diameap_sm, struct msg * ans,
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
2947 struct diameap_eap_interface *eap_i)
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2948 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2949 TRACE_ENTRY("%p %p %p",diameap_sm,ans,eap_i);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2950 struct avp * avp;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2951 union avp_value avp_val;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2952 int ret;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2953
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2954 /* EAP-Master-Session-Key AVP */
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
2955 if (eap_i->aaaEapKeyAvailable == TRUE)
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2956 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2957 CHECK_FCT(fd_msg_avp_new(dataobj_eap_master_session_key, 0, &avp));
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
2958 avp_val.os.data = eap_i->aaaEapMSKData;
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
2959 avp_val.os.len = eap_i->aaaEapMSKLength;
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2960 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2961 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2962
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2963 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2964
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2965 /* EAP-Key-Name AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2966 struct avp_attribute * avp_attrib = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2967
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2968 CHECK_FCT(diameap_get_avp_attribute(&diameap_sm->req_attributes,"EAP-Key-Name",&avp_attrib,1,&ret))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2969 if ((avp_attrib != NULL) && (ret != 1))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2970 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2971 if (avp_attrib->value.os.len == 0)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2972 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2973 CHECK_FCT(fd_msg_avp_new(dataobj_eap_key_name, 0, &avp));
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
2974 avp_val.os.data = NULL;//
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
2975 avp_val.os.len = 0;//
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2976 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2977 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2978 free_avp_attrib(avp_attrib);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2979 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2980 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2981
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2982 return 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2983 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2984
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2985 int diameap_authorize(struct diameap_state_machine * diameap_sm)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2986 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2987 TRACE_ENTRY("%p",diameap_sm);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2988
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
2989 CHECK_FCT(diameap_authorization_get_attribs(&diameap_sm->eap_sm.user, &diameap_sm->attributes));
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2990
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2991 diameap_sm->authorized = TRUE;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2992
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2993 CHECK_FCT_DO(diameap_answer_authorization_attributes(diameap_sm),
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2994 );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2995 if (diameap_sm->authorized == FALSE)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2996 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2997 diameap_sm->result_code = 4001; /* DIAMETER_AUTHENTICATION_REJECTED 4001 */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2998 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
2999 return 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3000 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3001
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3002 static int diameap_add_accounting_eap_auth_method(
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3003 struct diameap_state_machine * diameap_sm, struct msg * ans)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3004 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3005 TRACE_ENTRY("%p %p",diameap_sm,ans);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3006 int i = 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3007 struct avp * avp;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3008 union avp_value avp_val;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3009 /* Accounting-EAP-Auth-Method AVP */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3010 while (i < diameap_sm->eap_sm.user.methodId)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3011 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3012 CHECK_FCT(fd_msg_avp_new(dataobj_accounting_eap_auth_method, 0, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3013
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3014 avp_val.u64 = (u64) (((diameap_sm->eap_sm.user.methods[i].vendor)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3015 * pow((double) 2, (double) 32))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3016 + diameap_sm->eap_sm.user.methods[i].method);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3017 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3018 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3019 i++;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3020 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3021 return 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3022 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3023
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3024 static int diameap_add_eap_reissued_payload(struct msg * ans, struct msg * req)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3025 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3026 TRACE_ENTRY("%p %p", ans, req);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3027 struct avp * avp, *re_avp;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3028 union avp_value avp_val;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3029 struct avp_hdr * avphdr;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3030
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3031 if ((ans == NULL) || (req == NULL))
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3032 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3033 return EINVAL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3034 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3035 avp = NULL;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3036 CHECK_FCT(fd_msg_search_avp(req, dataobj_eap_payload, &avp));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3037 if (avp != NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3038 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3039 CHECK_FCT( fd_msg_avp_hdr(avp, &avphdr));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3040 CHECK_FCT( fd_msg_avp_new(dataobj_eap_reissued_payload, 0, &re_avp));
444
25c111bec522 Fix small issue on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 438
diff changeset
3041 CHECK_MALLOC(avp_val.os.data=malloc(avphdr->avp_value->os.len));
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3042 memcpy(avp_val.os.data,avphdr->avp_value->os.data,avphdr->avp_value->os.len);
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3043 avp_val.os.len = avphdr->avp_value->os.len;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3044 CHECK_FCT(fd_msg_avp_setvalue(re_avp, &avp_val));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3045 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, re_avp ) );
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3046 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3047 else
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3048 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3049 TRACE_DEBUG(INFO,"%sUnable to find EAP-Payload AVP in received Diameter-EAP-Request.",DIAMEAP_EXTENSION);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3050 return 1;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3051 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3052
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3053 return 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3054 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3055
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3056
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3057
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3058
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3059 static int diameap_server_callback(struct msg ** rmsg, struct avp * ravp,
639
95a784729cac Added new opaque pointer to fd_sess_handler_create and fd_disp_register for usability. Bumped API version number.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 610
diff changeset
3060 struct session * sess, void * opaque, enum disp_action * action)
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3061 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3062 TRACE_ENTRY("%p %p %p %p", rmsg, ravp, sess, action);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3063
1088
1d1a20a0779d Second part of changeset 1083, now the code compiles again. Still missing some functions implementation, though
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1027
diff changeset
3064 struct sess_state * diameap_sess_data = NULL;
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3065 struct diameap_state_machine * diameap_sm = NULL;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3066 struct diameap_eap_interface eap_i;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3067 struct msg *req, *ans;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3068 boolean non_fatal_error = FALSE;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3069
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3070 if (rmsg == NULL)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3071 return EINVAL;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3072
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3073 req = *rmsg;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3074
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3075 CHECK_FCT_DO(fd_sess_state_retrieve(diameap_server_reg, sess, &diameap_sess_data),
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3076 { TRACE_DEBUG(INFO,"%s retrieving session state failed.",DIAMEAP_EXTENSION); goto s_end;});
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3077
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3078 CHECK_MALLOC_DO(diameap_sm = malloc(sizeof(struct diameap_state_machine)),
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3079 goto s_end);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3080 memset(diameap_sm, 0, sizeof(struct diameap_state_machine));
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3081
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3082 if (diameap_sess_data)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3083 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3084 diameap_sm->state = DIAMEAP_RECEIVED;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3085 diameap_sm->eap_sm.eap_state = EAP_IDLE;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3086 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3087 else
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3088 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3089 diameap_sm->state = DIAMEAP_DISABLED;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3090 diameap_sm->eap_sm.eap_state = EAP_INITIALIZE;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3091 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3092
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3093 while (diameap_sm->state != DIAMEAP_IDLE && diameap_sm->state
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3094 != DIAMEAP_END)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3095 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3096 switch (diameap_sm->state)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3097 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3098 case DIAMEAP_DISABLED:
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3099 if (rmsg)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3100 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3101 diameap_sm->state = DIAMEAP_INITIALIZE;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3102 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3103 else
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3104 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3105 TRACE_DEBUG(INFO,"%sReceived empty Diameter EAP Request message.",DIAMEAP_EXTENSION);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3106 goto s_end;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3107 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3108 break;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3109
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3110 case DIAMEAP_INITIALIZE:
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3111
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3112 CHECK_FCT_DO(diameap_initialize_diameap_sm(diameap_sm,diameap_sess_data),
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3113 { TRACE_DEBUG(INFO,"%s Initializing DiamEAP state machine failed.",DIAMEAP_EXTENSION); goto s_end;})
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3114 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3115 CHECK_FCT_DO(diameap_initialize_diameap_eap_interface(&eap_i),
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3116 { TRACE_DEBUG(INFO,"%s Initializing DiamEAP-EAP Interface failed.",DIAMEAP_EXTENSION); goto s_end;})
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3117 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3118 TRACE_DEBUG(FULL+1,"%sParsing AVPs",DIAMEAP_EXTENSION)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3119 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3120 CHECK_FCT_DO(diameap_parse_avps(diameap_sm, req, &eap_i), TRACE_DEBUG(INFO,"%s Unable to parse Diameter-EAP-Request AVPs.",DIAMEAP_EXTENSION))
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3121 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3122
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3123 if ((diameap_sm->result_code != 0))
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3124 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3125 diameap_sm->state = DIAMEAP_SEND_ERROR_MSG;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3126 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3127 else
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3128 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3129 diameap_sm->state = DIAMEAP_AUTHENTICATION_VERIFY;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3130 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3131 break;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3132
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3133 case DIAMEAP_RECEIVED:
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3134
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3135 CHECK_FCT_DO(diameap_initialize_diameap_sm(diameap_sm,diameap_sess_data),
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3136 { TRACE_DEBUG(INFO,"%s Initializing DiamEAP state machine failed.",DIAMEAP_EXTENSION); goto s_end;})
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3137 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3138 CHECK_FCT_DO(diameap_initialize_diameap_eap_interface(&eap_i),
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3139 { TRACE_DEBUG(INFO,"%s Initializing DiamEAP-EAP Interface failed.",DIAMEAP_EXTENSION); goto s_end;})
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3140 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3141 TRACE_DEBUG(FULL+1,"%sParsing AVPs",DIAMEAP_EXTENSION)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3142 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3143 CHECK_FCT_DO(diameap_parse_avps(diameap_sm, req, &eap_i), TRACE_DEBUG(INFO,"%s Unable to parse Diameter-EAP-Request AVPs.",DIAMEAP_EXTENSION))
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3144 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3145
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3146 if (diameap_sm->result_code != 0)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3147 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3148 diameap_sm->state = DIAMEAP_SEND_ERROR_MSG;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3149 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3150 else
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3151 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3152 diameap_sm->state = DIAMEAP_AUTHENTICATION_VERIFY;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3153 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3154 break;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3155
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3156 case DIAMEAP_AUTHENTICATION_VERIFY:
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3157 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3158
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3159 TRACE_DEBUG(FULL+1,"%sVerify authentication",DIAMEAP_EXTENSION);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3160 CHECK_FCT_DO(diameap_eap_statemachine(&diameap_sm->eap_sm, &eap_i,&non_fatal_error),
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3161 { TRACE_DEBUG(INFO,"%s EAP process failed.",DIAMEAP_EXTENSION); goto s_end;});
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3162
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3163 if (non_fatal_error == TRUE)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3164 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3165 TRACE_DEBUG(FULL+1,"%sAuthentication verify finished with a non-fatal-error.",DIAMEAP_EXTENSION);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3166 diameap_sm->state = DIAMEAP_SEND_ERROR_MSG;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3167 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3168 else
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3169 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3170 diameap_sm->state = DIAMEAP_SELECT_DECISION;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3171
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3172 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3173 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3174 break;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3175
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3176 case DIAMEAP_SELECT_DECISION:
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3177
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
3178 CHECK_FCT_DO( diameap_policy_decision(diameap_sm,&eap_i),
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3179 goto s_end)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3180 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3181
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3182 if ((eap_i.aaaSuccess == TRUE) && (diameap_sm->auth_request_val
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3183 == AUTHORIZE_AUTHENTICATE)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3184 && (diameap_sm->verify_authorization == FALSE))
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3185 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3186 diameap_sm->state = DIAMEAP_AUTHORIZATION_VERIFY;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3187 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3188 else
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3189 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3190 diameap_sm->state = DIAMEAP_DIAMETER_EAP_ANSWER;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3191 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3192 break;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3193
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3194 case DIAMEAP_AUTHORIZATION_VERIFY:
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3195 diameap_sm->verify_authorization = TRUE;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3196 TRACE_DEBUG(FULL+1,"%sVerify authorization",DIAMEAP_EXTENSION)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3197 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3198 CHECK_FCT_DO(diameap_authorize(diameap_sm),
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3199 { TRACE_DEBUG(INFO,"%s Authorization check process failed.",DIAMEAP_EXTENSION); goto s_end;})
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3200 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3201 diameap_sm->state = DIAMEAP_SELECT_DECISION;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3202
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3203 break;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3204
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3205 case DIAMEAP_DIAMETER_EAP_ANSWER:
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3206 TRACE_DEBUG(FULL+1,"%screate Diameter EAP Answer",DIAMEAP_EXTENSION)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3207 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3208 CHECK_FCT_DO(fd_msg_new_answer_from_req(fd_g_config->cnf_dict, rmsg, 0),
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3209 goto s_end)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3210 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3211 ans = *rmsg;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3212 TRACE_DEBUG(FULL+1,"%sAdding AVPs to Diameter EAP Answer.",DIAMEAP_EXTENSION)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3213 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3214 CHECK_FCT_DO( diameap_add_avps(diameap_sm, ans,req),
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3215 { TRACE_DEBUG(INFO,"%s Unable to add AVPs to Diameter-EAP-Answer message.",DIAMEAP_EXTENSION);goto s_end;})
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3216 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3217 if (diameap_sm->authFailure == FALSE)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3218 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3219 if (diameap_sm->eap_sm.user.id != 0)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3220 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3221 TRACE_DEBUG(FULL+1,"%sSelect authentication attributes.",DIAMEAP_EXTENSION);
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
3222 CHECK_FCT_DO(diameap_authentication_get_attribs(&diameap_sm->eap_sm.user, &diameap_sm->attributes),
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3223 { TRACE_DEBUG(INFO,"%s Unable to get user's session attributes.",DIAMEAP_EXTENSION); goto s_end;});
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3224 TRACE_DEBUG(FULL+1,"%sCreate answer authentication attributes.",DIAMEAP_EXTENSION);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3225 CHECK_FCT_DO(diameap_answer_avp_attributes(diameap_sm),
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
3226 { TRACE_DEBUG(INFO,"%s Unable to generate answer attributes.",DIAMEAP_EXTENSION); goto s_end;});
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3227 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3228
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3229 if (diameap_sm->authSuccess == FALSE)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3230 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3231 diameap_sm->state = DIAMEAP_SEND_REQUEST;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3232 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3233 else
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3234 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3235
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3236 diameap_sm->state = DIAMEAP_SEND_SUCCESS;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3237 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3238 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3239 else
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3240 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3241 diameap_sm->state = DIAMEAP_SEND_FAILURE;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3242 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3243 break;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3244
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3245 case DIAMEAP_SEND_REQUEST:
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3246 TRACE_DEBUG(FULL+1,"%sAdding Result Code AVP to Diameter-EAP-Answer.",DIAMEAP_EXTENSION)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3247 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3248 CHECK_FCT_DO( diameap_add_result_code(diameap_sm, ans, sess),
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3249 { TRACE_DEBUG(INFO,"%s Adding Result-Code AVP failed.",DIAMEAP_EXTENSION); goto s_end;})
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3250 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3251 TRACE_DEBUG(FULL+1,"%sAdding EAP-Payload to Diameter-EAP-Answer.",DIAMEAP_EXTENSION)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3252 ;
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
3253 CHECK_FCT_DO( diameap_add_eap_payload(diameap_sm, ans,&eap_i),
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3254 { TRACE_DEBUG(INFO,"%s Adding EAP-Payload AVP failed.",DIAMEAP_EXTENSION); goto s_end;})
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3255 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3256 TRACE_DEBUG(FULL+1,"%sStoring DiamEAP session data.",DIAMEAP_EXTENSION)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3257 ;
1088
1d1a20a0779d Second part of changeset 1083, now the code compiles again. Still missing some functions implementation, though
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1027
diff changeset
3258 CHECK_MALLOC(diameap_sess_data = malloc(sizeof(struct sess_state)))
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3259 ;
1088
1d1a20a0779d Second part of changeset 1083, now the code compiles again. Still missing some functions implementation, though
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1027
diff changeset
3260 memset(diameap_sess_data, 0, sizeof(struct sess_state));
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3261 diameap_sess_data_new(diameap_sess_data, diameap_sm);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3262
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3263 CHECK_FCT_DO(fd_sess_state_store(diameap_server_reg, sess, &diameap_sess_data),
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3264 { TRACE_DEBUG(INFO,"%s Storing session state failed.",DIAMEAP_EXTENSION); goto s_end;})
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3265 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3266
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3267 CHECK_FCT_DO( diameap_send(rmsg),
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3268 goto s_end)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3269 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3270
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3271 diameap_sm->state = DIAMEAP_IDLE;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3272 break;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3273
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3274 case DIAMEAP_SEND_FAILURE:
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3275 TRACE_DEBUG(FULL+1,"%sAdding Result Code AVP to Diameter-EAP-Answer.",DIAMEAP_EXTENSION)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3276 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3277 CHECK_FCT_DO( diameap_add_result_code(diameap_sm, ans, sess),
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3278 { TRACE_DEBUG(INFO,"%s Adding Result-Code AVP failed.",DIAMEAP_EXTENSION); goto s_end;})
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3279 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3280 TRACE_DEBUG(FULL+1,"%sAdding EAP-Payload to Diameter-EAP-Answer.",DIAMEAP_EXTENSION)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3281 ;
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
3282 CHECK_FCT_DO( diameap_add_eap_payload(diameap_sm, ans,&eap_i),
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3283 { TRACE_DEBUG(INFO,"%s Adding EAP-Payload AVP failed.",DIAMEAP_EXTENSION); goto s_end;})
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3284 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3285
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3286 CHECK_FCT_DO( diameap_send(rmsg),
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3287 goto s_end)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3288 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3289 diameap_sm->state = DIAMEAP_END;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3290 break;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3291
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3292 case DIAMEAP_SEND_SUCCESS:
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3293 TRACE_DEBUG(FULL+1,"%sAdding User session AVPs to Diameter-EAP-Answer.",DIAMEAP_EXTENSION)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3294 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3295 CHECK_FCT_DO(diameap_add_user_sessions_avps(diameap_sm,ans),
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3296 { TRACE_DEBUG(INFO,"%s Adding user's session AVPs failed.",DIAMEAP_EXTENSION); goto s_end;})
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3297 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3298
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3299 if (diameap_sm->auth_request_val == AUTHORIZE_AUTHENTICATE)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3300 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3301 TRACE_DEBUG(FULL+1,"%sAdding Authorization AVPs to Diameter-EAP-Answer.",DIAMEAP_EXTENSION);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3302 CHECK_FCT_DO(diameap_add_authorization_avps(diameap_sm,ans),
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3303 { TRACE_DEBUG(INFO,"%s Adding Authorization AVPs failed.",DIAMEAP_EXTENSION); goto s_end;});
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3304 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3305 TRACE_DEBUG(FULL+1,"%sAdding Result Code AVP to Diameter-EAP-Answer.",DIAMEAP_EXTENSION)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3306 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3307 CHECK_FCT_DO( diameap_add_result_code(diameap_sm, ans, sess),
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3308 { TRACE_DEBUG(INFO,"%s Adding Result-Code AVP failed.",DIAMEAP_EXTENSION); goto s_end;})
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3309 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3310 TRACE_DEBUG(FULL+1,"%sAdding EAP-Payload to Diameter-EAP-Answer.",DIAMEAP_EXTENSION)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3311 ;
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
3312 CHECK_FCT_DO( diameap_add_eap_payload(diameap_sm, ans,&eap_i),
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3313 { TRACE_DEBUG(INFO,"%s Adding EAP-Payload AVP failed.",DIAMEAP_EXTENSION); goto s_end;})
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3314 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3315 TRACE_DEBUG(FULL+1,"%sAdding EAP success AVPs AVPs to Diameter-EAP-Answer.",DIAMEAP_EXTENSION)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3316 ;
1027
0117a7746b21 Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents: 639
diff changeset
3317 CHECK_FCT_DO( diameap_add_eap_success_avps(diameap_sm, ans, &eap_i),
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3318 goto s_end)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3319 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3320 TRACE_DEBUG(FULL+1,"%sAdding Accounting-EAP-Auth-Method AVPs to Diameter-EAP-Answer.",DIAMEAP_EXTENSION)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3321 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3322 CHECK_FCT_DO(diameap_add_accounting_eap_auth_method(diameap_sm, ans),
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3323 { TRACE_DEBUG(INFO,"%s Adding accounting AVP failed",DIAMEAP_EXTENSION); goto s_end;})
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3324 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3325 CHECK_FCT_DO( diameap_send(rmsg),
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3326 goto s_end)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3327 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3328 diameap_sm->state = DIAMEAP_END;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3329 break;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3330
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3331 case DIAMEAP_SEND_ERROR_MSG:
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3332 diameap_sm->invalid_eappackets++;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3333 if (diameap_sm->invalid_eappackets
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3334 == diameap_config->max_invalid_eap_packet)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3335 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3336 diameap_sm->result_code = 4001;//DIAMETER_AUTHENTICATION_REJECTED
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3337 TRACE_DEBUG(FULL,"%s Maximum permitted invalid EAP Packet reached. Diameter Authentication Rejected.",DIAMEAP_EXTENSION);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3338 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3339
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3340 CHECK_FCT_DO(fd_msg_new_answer_from_req(fd_g_config->cnf_dict, rmsg, 0),
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3341 goto s_end)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3342 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3343
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3344 ans = *rmsg;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3345 CHECK_FCT_DO( diameap_add_avps(diameap_sm, ans,req),
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3346 { TRACE_DEBUG(INFO,"%s Adding AVPs to Diameter-EAP-Answer message failed.",DIAMEAP_EXTENSION);goto s_end;})
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3347 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3348 if ((non_fatal_error == TRUE) && (diameap_sm->result_code == 0))
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3349 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3350 diameap_sm->result_code = 1001;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3351 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3352
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3353 if (diameap_sm->result_code == 1001)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3354 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3355 CHECK_FCT_DO( diameap_add_eap_reissued_payload(ans,req), goto s_end);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3356 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3357
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3358 if (diameap_sm->result_code == 5004)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3359 {
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3360 CHECK_FCT_DO( fd_msg_avp_add( ans , MSG_BRW_LAST_CHILD, diameap_sm->failedavp ),goto s_end );
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3361 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3362
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3363 CHECK_FCT_DO( diameap_add_result_code(diameap_sm, ans, sess), goto s_end)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3364 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3365
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3366 CHECK_FCT_DO( diameap_send(rmsg), goto s_end)
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3367 ;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3368 diameap_sm->state = DIAMEAP_IDLE;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3369 break;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3370
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3371 case DIAMEAP_END:
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3372 break;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3373
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3374 case DIAMEAP_IDLE:
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3375 break;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3376 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3377 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3378
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3379 diameap_free(diameap_sm);
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3380
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3381 s_end: return 0;
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3382 }
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3383
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3384 int diameap_start_server(void)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3385 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3386 struct disp_when when;
438
e7814e24e57b Corrected compilation warnings on app_diameap
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents: 425
diff changeset
3387
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3388 /*create handler for sessions */
1088
1d1a20a0779d Second part of changeset 1083, now the code compiles again. Still missing some functions implementation, though
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1027
diff changeset
3389 CHECK_FCT(fd_sess_handler_create(&diameap_server_reg, diameap_cli_sess_cleanup, NULL, NULL));
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3390
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3391 /* Register the callback */
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3392 memset(&when, 0, sizeof(when));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3393 when.command = dataobj_diameap_cmd;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3394 when.app = dataobj_diameap_app;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3395
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3396 /* Register the callback for EAP Application */
639
95a784729cac Added new opaque pointer to fd_sess_handler_create and fd_disp_register for usability. Bumped API version number.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 610
diff changeset
3397 CHECK_FCT(fd_disp_register(diameap_server_callback, DISP_HOW_CC, &when, NULL,
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3398 &handle));
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3399
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3400 if (handle == NULL)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3401 {
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3402 TRACE_DEBUG(INFO, "%sCannot register the callback !!!",DIAMEAP_EXTENSION);
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3403 return 1;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3404 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3405 return 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3406 }
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3407
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3408 int diameap_stop_server(void)
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3409 {
639
95a784729cac Added new opaque pointer to fd_sess_handler_create and fd_disp_register for usability. Bumped API version number.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 610
diff changeset
3410 CHECK_FCT(fd_sess_handler_destroy(&diameap_server_reg, NULL));
95a784729cac Added new opaque pointer to fd_sess_handler_create and fd_disp_register for usability. Bumped API version number.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 610
diff changeset
3411 CHECK_FCT(fd_disp_unregister(&handle, NULL));
425
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3412
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3413 return 0;
0c6e50a5291d New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff changeset
3414 }
"Welcome to our mercurial repository"