Mercurial > hg > freeDiameter
view extensions/app_diameap/libdiameap.h @ 1513:73e563165594
Add 3GPP TS 29.468 V15.8.0 (2019-12)
Add AVPs:
- BMSC-Address, Address, code 3500, section 6.4.2
- BMSC-Port, Unsigned32, code 3501, section 6.4.3
- Common-Tunnel-Endpoint-Identifier, OctetString, code 3524, section 6.4.26
- FEC-Request, OctetString, code 3525, section 6.4.27
- FEC-Result, Unsigned32, code 3531, section 6.4.33
- Local-M1-Information, Grouped, code 3518, section 6.4.20
- Local-MB2-U-Information, Grouped, code 3519, section 6.4.21
- MB2U-Security, Unsigned32, code 3517, section 6.4.19
- MBMS-Bearer-Event, Unsigned32, code 3502, section 6.4.4
- MBMS-Bearer-Event-Notification, Grouped, code 3503, section 6.4.5
- MBMS-Bearer-Request, Grouped, code 3504, section 6.4.6
- MBMS-Bearer-Response, Grouped, code 3505, section 6.4.7
- MBMS-Bearer-Result, Unsigned32, code 3506, section 6.4.8
- MBMS-eNB-IP-Multicast-Address, Address, code 3520, section 6.4.22
- MBMS-eNB-IPv6-Multicast-Address, Address, code 3521, section 6.4.23
- MBMS-GW-SSM-IP-Address-29.468, Address, code 3522, section 6.4.24
- MBMS-GW-SSM-IPv6-Address-29.468, Address, code 3523, section 6.4.25
- MBMS-Start-Time, Time, code 3507, section 6.4.9
- Radio-Frequency-29.468, Unsigned32, code 3508, section 6.4.10
- ROHC-Full-Header-Periodicity, Float32, code 3527, section 6.4.29
- ROHC-Max-CID, Unsigned32, code 3532, section 6.4.34
- ROHC-Profile, Unsigned32, code 3528, section 6.4.30
- ROHC-Request, Grouped, code 3526, section 6.4.28
- ROHC-Result, Unsigned32, code 3530, section 6.4.32
- TMGI-Allocation-Request, Grouped, code 3509, section 6.4.11
- TMGI-Allocation-Response, Grouped, code 3510, section 6.4.12
- TMGI-Allocation-Result, Unsigned32, code 3511, section 6.4.13
- TMGI-Deallocation-Request, Grouped, code 3512, section 6.4.14
- TMGI-Deallocation-Response, Grouped, code 3513, section 6.4.15
- TMGI-Deallocation-Result, Unsigned32, code 3514, section 6.4.16
- TMGI-Expiry, Grouped, code 3515, section 6.4.17
- TMGI-Number, Unsigned32, code 3516, section 6.4.18
- Userplane-Protocol-Result, Grouped, code 3529, section 6.4.31
Note: Name conflict with 3GPP TS 29.061 MBMS-GW-SSM-IP-Address (924).
3GPP TS 29.061 V10.4.0 (2011-09) CR 0355 added MBMS-GW-SSM-IP-Address (924).
3GPP TS 29.468 V14.0.0 (2016-12) CR 0021 added MBMS-GW-SSM-IP-Address (3522).
Fix: MBMS-GW-SSM-IP-Address (3522) renamed to MBMS-GW-SSM-IP-Address-29.468 (3522).
Note: Name conflict with 3GPP TS 29.061 MBMS-GW-SSM-IPv6-Address (925).
3GPP TS 29.061 V10.4.0 (2011-09) CR 0355 added MBMS-GW-SSM-IPv6-Address (925).
3GPP TS 29.468 V14.0.0 (2016-12) CR 0021 added MBMS-GW-SSM-IPv6-Address (3523).
Fix: MBMS-GW-SSM-IPv6-Address (3523) renamed to MBMS-GW-SSM-IPv6-Address-29.468 (3523).
Note: Name conflict with 3GPP TS 32.299 Radio-Frequency (3462).
3GPP TS 29.468 V12.0.0 (2014-09) added Radio-Frequency (3508).
3GPP TS 32.299 V13.1.0 (2015-06) CR 0638 added Radio-Frequency (3462).
Fix: Radio-Frequency (3508) renamed to Radio-Frequency-29.468 (3508).
author | Luke Mewburn <luke@mewburn.net> |
---|---|
date | Tue, 07 Apr 2020 19:38:33 +1000 |
parents | 54d1cb00331a |
children |
line wrap: on
line source
/***************************************************************************************************** * Software License Agreement (BSD License) * Author : Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp> * * Copyright (c) 2009-2010, Souheil Ben Ayed, Teraoka Laboratory of Keio University, and the WIDE Project * All rights reserved. * * Redistribution and use of this software in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * This product includes software developed by Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>. * * 4. Neither the name of Souheil Ben Ayed, Teraoka Laboratory of Keio University or the WIDE Project nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************************************/ #ifndef LIBDIAMEAP_H_ #define LIBDIAMEAP_H_ #include <freeDiameter/extension.h> #define DIAMEAP_EXTENSION "[DiamEAP extension] " #include "diameap_defs.h" #include "diameap_eappacket.h" #include "diameap_user.h" #include "diameap_mysql.h" #include <math.h> #include <dlfcn.h> /* authentication and authorization attributes */ struct auth_attribute { struct fd_list chain; char * attrib; char * op; char * value; }; struct avp_attribute { struct fd_list chain; char * attrib; union avp_value value; int tofree; }; /************************************************/ /* EAP Methods plugins */ /************************************************/ /* The register functions of an EAP method */ struct register_plugin { char * configure; char * init; char * initPickUp; char * buildReq; char * isDone; char * process; char * check; char * getTimeout; char * getKey; char * unregister; char * datafree; }; struct eap_state_machine; /* List of plugins to load ( only EAP methods declared in the configuration file will be loaded) */ struct plugin { struct fd_list chain; /* link in the list */ u32 vendor; /* vendor*/ const char *methodname; /* name of the EAP method*/ eap_type methodtype; /* type number of the EAP method */ char *pluginfile; /* plugin filename */ char *conffile; /* optional configuration file name for the method */ void *handler; /* object returned by dlopen() */ int (*eap_method_configure)(char * configfile); /* (Optional) address of the eap_method_configure method */ int (*eap_method_init)(struct eap_state_machine *smd); /* address of the eap_method_init method */ int (*eap_method_initPickUp)(struct eap_state_machine *smd); /* address of the eap_method_initPickUp method */ int (*eap_method_buildReq)(struct eap_state_machine *smd, u8 identifier,struct eap_packet * eapPacket); /* address of the eap_method_buildReq method */ int (*eap_method_getTimeout)(struct eap_state_machine *smd, int * timeout); /* address of the eap_method_getTimeout method */ boolean (*eap_method_check)(struct eap_state_machine *smd, struct eap_packet * eapRespData); /* address of the eap_method_check method */ int (*eap_method_process)(struct eap_state_machine *smd, struct eap_packet * eapRespData); /* address of the eap_method_process method */ boolean (*eap_method_isDone)(struct eap_state_machine *smd); /* address of the eap_method_isDone method */ int (*eap_method_getKey)(struct eap_state_machine *smd, u8 ** msk,int *msklength, u8 ** emsk,int *emsklength); /* address of the eap_method_getKey method */ void (*eap_method_unregister)(void); /* (Optional) address of the eap_method_unregister method */ void (*eap_method_free)(void *); /* (Optional) address of the eap_method_datafree method */ }; /************************************************/ /* EAP State Machine */ /************************************************/ /* EAP Policy Decision */ typedef enum { DECISION_FAILURE = 0, DECISION_SUCCESS = 1, DECISION_CONTINUE = 2 } decision; typedef enum { EAP_M_END, EAP_M_CONTINUE, EAP_M_PROPOSED } eap_method_state; /* EAP Backend Authenticator State Machine (RFC4137) */ /* Most of variables are described in the part 6 of the RFC 4137 */ /* */ struct eap_state_machine { /*Local state Machine Variables*/ /* Long-Term (Maintained between Packets) */ eap_type currentMethod; u32 currentVendor; int currentId; int lastId; void * methodData; struct plugin *selectedMethod; u8 NAKproposedMethods[251]; eap_method_state methodState; struct eap_user user; /* Short-Term (Not Maintained between exchanged Diameter EAP messages)*/ boolean rxResp; int respId; eap_type respMethod; int respVendorMethod; u32 respVendor; decision sm_decision; enum { EAP_INITIALIZE, EAP_PICK_UP_METHOD, EAP_IDLE, EAP_RECEIVED, EAP_SEND_REQUEST, EAP_INTEGRITY_CHECK, EAP_METHOD_REQUEST, EAP_METHOD_RESPONSE, EAP_PROPOSE_METHOD, EAP_NAK, EAP_SELECT_ACTION, EAP_END, EAP_DISCARD } eap_state; }; #endif /* LIBDIAMEAP_H_ */