Mercurial > hg > freeDiameter
annotate extensions/app_diameap/diameap_eappacket.c @ 1521:996823ef481c
Rename 3GPP MBMS-Flag (931) to MBMS-Flags
Note: 3GPP TS 29.061 table 20.5a.1 row MBMS-Flag (931) has
incorrect name and should be "MBMS-Flags" per clause 20.5a.9.
Fix: MBMS-Flag (931) renamed to MBMS-Flags (931).
author | Luke Mewburn <luke@mewburn.net> |
---|---|
date | Fri, 17 Apr 2020 14:21:19 +1000 |
parents | 0117a7746b21 |
children |
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 |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
39 #include "libdiameap.h" |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
40 |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
41 int diameap_eap_get_code(struct eap_packet *eappacket, eap_code * eapcode) |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
42 { |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
43 TRACE_ENTRY("%p %p",eappacket,eapcode); |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
44 |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
45 if (eappacket->data == NULL) |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
46 { |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
47 *eapcode = ERROR; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
48 TRACE_DEBUG(INFO,"%sEmpty data in EAP packet: no EAP Code to return.",DIAMEAP_EXTENSION); |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
49 return EINVAL; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
50 } |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
51 if (eappacket->length < 1) |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
52 { |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
53 *eapcode = ERROR; |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
54 TRACE_DEBUG(INFO,"%sEAP packet length %d : no EAP Code to return.",DIAMEAP_EXTENSION, eappacket->length); |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
55 return EINVAL; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
56 } |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
57 *eapcode = G8(eappacket->data); |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
58 return 0; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
59 } |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
60 |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
61 int diameap_eap_get_identifier(struct eap_packet *eappacket, u8 * identifier) |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
62 { |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
63 TRACE_ENTRY("%p %p",eappacket,identifier); |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
64 *identifier = 0; |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
65 if (eappacket->data == NULL) |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
66 { |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
67 TRACE_DEBUG(INFO,"%sEmpty data in EAP packet: no Identifier field to return.",DIAMEAP_EXTENSION); |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
68 return EINVAL; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
69 } |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
70 if (eappacket->length < 2) |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
71 { |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
72 TRACE_DEBUG(INFO,"%sEAP packet length %d : no Identifier field to return.",DIAMEAP_EXTENSION, eappacket->length); |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
73 return EINVAL; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
74 } |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
75 *identifier = G8(eappacket->data + 1); |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
76 return 0; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
77 } |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
78 |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
79 int diameap_eap_get_length(struct eap_packet *eappacket, u16 *length) |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
80 { |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
81 TRACE_ENTRY("%p %p",eappacket,length); |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
82 *length = 0; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
83 |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
84 if (eappacket->data == NULL) |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
85 { |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
86 TRACE_DEBUG(INFO,"%sEmpty data in EAP packet: no Length field to return.",DIAMEAP_EXTENSION); |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
87 return EINVAL; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
88 } |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
89 if (eappacket->ulength < 4) |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
90 { |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
91 TRACE_DEBUG(INFO,"%sEAP packet length %d : no Length field to return.",DIAMEAP_EXTENSION, eappacket->length); |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
92 return EINVAL; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
93 } |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
94 *length = (u16) G16BIGE((eappacket->data + 2)); |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
95 return 0; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
96 } |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
97 |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
98 int diameap_eap_get_packetlength(struct eap_packet *eappacket, u16 *length) |
425
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_ENTRY("%p %p",eappacket,length); |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
101 if (eappacket->data == NULL) |
425
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 TRACE_DEBUG(INFO,"%sEmpty data in EAP packet: no Length field to return.",DIAMEAP_EXTENSION); |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
104 return EINVAL; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
105 } |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
106 *length = eappacket->ulength; |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
107 return 0; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
108 } |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
109 |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
110 int diameap_eap_get_type(struct eap_packet *eappacket, eap_type * eaptype) |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
111 { |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
112 TRACE_ENTRY("%p %p",eappacket,eaptype); |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
113 *eaptype = 0; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
114 |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
115 if (eappacket->data == NULL) |
425
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 TRACE_DEBUG(INFO,"%sEmpty data in EAP packet: no EAP Type field to return.",DIAMEAP_EXTENSION); |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
118 return EINVAL; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
119 } |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
120 if (eappacket->length < 5) |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
121 { |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
122 TRACE_DEBUG(INFO,"%sEAP packet length %d : no EAP Type field to return.",DIAMEAP_EXTENSION, eappacket->length); |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
123 return EINVAL; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
124 } |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
125 *eaptype = (u32) G8(eappacket->data + 4); |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
126 return 0; |
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 boolean diameap_eap_check_code(eap_code code) |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
130 { |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
131 TRACE_ENTRY("%d",code); |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
132 if (code != EAP_REQUEST && code != EAP_RESPONSE && code != EAP_SUCCESS |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
133 && code != EAP_FAILURE) |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
134 { |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
135 TRACE_DEBUG(FULL,"%sIncorrect EAP Code (%d).",DIAMEAP_EXTENSION,code); |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
136 return FALSE; |
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 return TRUE; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
139 } |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
140 |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
141 int diameap_eap_get_packetdata(struct eap_packet *eappacket, u8 ** data, |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
142 int *len) |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
143 { |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
144 TRACE_ENTRY("%p %p",eappacket,data); |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
145 if (eappacket->length > 0) |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
146 { |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
147 *data = malloc(sizeof(u8) * eappacket->length); |
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
148 U8COPY(*data,0,eappacket->length,eappacket->data); |
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
149 *len = eappacket->length; |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
150 return 0; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
151 } |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
152 TRACE_DEBUG(INFO,"%sEAP packet length=%d: empty or wrong EAP Packet.",DIAMEAP_EXTENSION, eappacket->length); |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
153 *data = NULL; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
154 *len = 0; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
155 return EINVAL; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
156 } |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
157 |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
158 int diameap_eap_get_data(struct eap_packet *eappacket, u8 ** data, int * len) |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
159 { |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
160 TRACE_ENTRY("%p %p",eappacket,data); |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
161 if (eappacket->length > 5) |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
162 { |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
163 CHECK_MALLOC( *data = malloc(sizeof(u8) * (eappacket->length - 5)) ); |
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
164 U8COPY(*data,0,(eappacket->length-5),(eappacket->data+5)); |
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
165 *len = eappacket->length - 5; |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
166 return 0; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
167 } |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
168 TRACE_DEBUG(INFO,"%sEAP packet length=%d: empty or wrong EAP Packet.",DIAMEAP_EXTENSION, eappacket->length); |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
169 *data = NULL; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
170 *len = 0; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
171 |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
172 return EINVAL; |
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 |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
175 void diameap_eap_dump(int level, struct eap_packet *eappacket) |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
176 { |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
177 TRACE_ENTRY("%d %p",level,eappacket); |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
178 if (!TRACE_BOOL(level)) |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
179 return; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
180 |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
181 if (eappacket->data == NULL) |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
182 return; |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
183 if (eappacket->length < 5) |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
184 return; |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
185 if (eappacket->ulength < 5) |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
186 return; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
187 |
974
2091bf698fb1
Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents:
425
diff
changeset
|
188 fd_log_debug("------------- Dump EAP Packet-------------"); |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
189 int i; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
190 fd_log_debug("\t -Code : "); |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
191 eap_code code; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
192 CHECK_FCT_DO(diameap_eap_get_code(eappacket,&code),return); |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
193 switch (code) |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
194 { |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
195 case 1: |
974
2091bf698fb1
Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents:
425
diff
changeset
|
196 fd_log_debug("Request"); |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
197 break; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
198 case 2: |
974
2091bf698fb1
Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents:
425
diff
changeset
|
199 fd_log_debug("Response"); |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
200 break; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
201 case 3: |
974
2091bf698fb1
Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents:
425
diff
changeset
|
202 fd_log_debug("Success"); |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
203 break; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
204 case 4: |
974
2091bf698fb1
Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents:
425
diff
changeset
|
205 fd_log_debug("Failure"); |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
206 break; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
207 default: |
974
2091bf698fb1
Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents:
425
diff
changeset
|
208 fd_log_debug("Error (EAP Code value [%d] not allowed)",code); |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
209 break; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
210 } |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
211 u8 id; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
212 CHECK_FCT_DO(diameap_eap_get_identifier(eappacket,&id),return); |
974
2091bf698fb1
Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents:
425
diff
changeset
|
213 fd_log_debug("\t -Identifier : %x ", id); |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
214 u16 length; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
215 CHECK_FCT_DO(diameap_eap_get_length(eappacket,&length),return); |
974
2091bf698fb1
Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents:
425
diff
changeset
|
216 fd_log_debug("\t -Length : %d ", (unsigned int)length); |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
217 if (eappacket->length > 4) |
425
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 eap_type type; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
220 CHECK_FCT_DO(diameap_eap_get_type(eappacket,&type),return); |
974
2091bf698fb1
Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents:
425
diff
changeset
|
221 fd_log_debug("\t -Type : %d ", type); |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
222 } |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
223 if (eappacket->length > 5) |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
224 { |
974
2091bf698fb1
Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents:
425
diff
changeset
|
225 char buf[1024]; |
2091bf698fb1
Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents:
425
diff
changeset
|
226 snprintf(buf, sizeof(buf), "\t -Data : "); |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
227 for (i = 5; i < eappacket->length && i < 30; i++) |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
228 { |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
229 snprintf(buf+strlen(buf), sizeof(buf)-strlen(buf), "%02x ", G8(eappacket->data + i)); |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
230 } |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
231 if(i+1<eappacket->length) |
974
2091bf698fb1
Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents:
425
diff
changeset
|
232 snprintf(buf+strlen(buf), sizeof(buf)-strlen(buf), "[...] (len=%d)",(unsigned int) length); |
2091bf698fb1
Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents:
425
diff
changeset
|
233 fd_log_debug("%s", buf); |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
234 } |
974
2091bf698fb1
Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents:
425
diff
changeset
|
235 fd_log_debug("-------------End Dump EAP Packet-------------"); |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
236 } |
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 int diameap_eap_new(eap_code code, u8 id, eap_type type, u8 * data, |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
239 u16 dataLength, struct eap_packet *eappacket) |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
240 { |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
241 |
1027
0117a7746b21
Fix a number of errors and warnings introduced/highlighted by recent commits
Sebastien Decugis <sdecugis@freediameter.net>
parents:
974
diff
changeset
|
242 TRACE_ENTRY("%d %hhu %d %p %hu %p", code, id, type, data, dataLength,eappacket); |
425
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
243 |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
244 int length = 0; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
245 |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
246 //Initialize EAP Packet |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
247 eappacket->length = 0; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
248 eappacket->ulength = 0; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
249 eappacket->data = NULL; |
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 if (diameap_eap_check_code(code) == FALSE) |
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 TRACE_DEBUG( |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
254 INFO, |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
255 "%sWrong EAP Code. Only Request, Response, Success or Failure are permitted.",DIAMEAP_EXTENSION); |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
256 return EINVAL; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
257 } |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
258 |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
259 length += EAP_HEADER; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
260 if (code == EAP_REQUEST || code == EAP_RESPONSE) |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
261 { // EAP Packet code is either Request or Response |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
262 if (type == TYPE_NONE) |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
263 { |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
264 TRACE_DEBUG(INFO, |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
265 "%sUnable to create a new EAP Packet (Request or Response) without EAP Type field.",DIAMEAP_EXTENSION); |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
266 return EINVAL; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
267 } |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
268 length += EAP_TYPE; // EAP Packet code |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
269 if (data != 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 length += dataLength; |
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 if (length > (int) MAX_EAP_PACKET) |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
274 { |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
275 |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
276 TRACE_DEBUG(INFO, |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
277 "%sUnable to add Data to EAP Packet. Data field length exceed allowed data size.", DIAMEAP_EXTENSION); |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
278 return EINVAL; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
279 } |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
280 else |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
281 { |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
282 |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
283 CHECK_MALLOC(eappacket->data=malloc(sizeof(u8)*length)); |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
284 memset(eappacket->data, 0, sizeof(u8) * length); |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
285 U8COPY(eappacket->data, 5, dataLength, data); |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
286 } |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
287 } |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
288 else |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
289 { |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
290 CHECK_MALLOC(eappacket->data=malloc(sizeof(u8)*length)); |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
291 memset(eappacket->data, 0, sizeof(u8) * length); |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
292 } |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
293 P8(eappacket->data + 4, type); |
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 else |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
296 { //EAP Packet code is SUCCESS or FAILURE |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
297 CHECK_MALLOC(eappacket->data=malloc(sizeof(u8)*length)); |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
298 memset(eappacket->data, 0, sizeof(u8) * length); |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
299 //No Data filed |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
300 //No Type field |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
301 } |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
302 //Add Code and Identifier fields |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
303 P8(eappacket->data, code); |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
304 P8(eappacket->data + 1, id); |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
305 //Add length field |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
306 P16BIGE(eappacket->data + 2, length); |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
307 eappacket->length = length; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
308 eappacket->ulength = length; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
309 return 0; |
0c6e50a5291d
New app_diameap Diameter EAP Application
Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
parents:
diff
changeset
|
310 } |