Commit b3829736 authored by gauthier's avatar gauthier

For EPC, tested scenario is IMSI attach with EURECOM NAS UE, (not GUTI)

git-svn-id: http://svn.eurecom.fr/openair4G/trunk@5282 818b1a75-f10b-46b9-bf7c-635c3b92a50f
parent 72fd579b
......@@ -5,7 +5,6 @@
// Messages files used between tasks
#include "gtpv1_u_messages_def.h"
#include "ip_forward_messages_def.h"
#include "mme_app_messages_def.h"
#include "nas_messages_def.h"
#include "s11_messages_def.h"
#include "s1ap_messages_def.h"
......@@ -13,3 +12,4 @@
#include "sctp_messages_def.h"
#include "sgw_lite_def.h"
#include "udp_messages_def.h"
#include "mme_app_messages_def.h"
......@@ -15,7 +15,6 @@
#include "gtpv1_u_messages_types.h"
#include "ip_forward_messages_types.h"
#include "mme_app_messages_types.h"
#include "s11_messages_types.h"
#include "s1ap_messages_types.h"
#include "nas_messages_types.h"
......@@ -23,5 +22,6 @@
#include "sctp_messages_types.h"
#include "sgw_lite_messages_types.h"
#include "udp_messages_types.h"
#include "mme_app_messages_types.h"
#endif /* MESSAGES_TYPES_H_ */
//WARNING: Do not include this header directly. Use intertask_interface.h instead.
MESSAGE_DEF(MME_APP_CONNECTION_ESTABLISHMENT_IND , MESSAGE_PRIORITY_MED, mme_app_connection_establishment_ind_t , mme_app_connection_establishment_ind)
MESSAGE_DEF(MME_APP_CONNECTION_ESTABLISHMENT_CNF , MESSAGE_PRIORITY_MED, mme_app_connection_establishment_cnf_t , mme_app_connection_establishment_cnf)
MESSAGE_DEF(MME_APP_INITIAL_CONTEXT_SETUP_RSP , MESSAGE_PRIORITY_MED, mme_app_initial_context_setup_rsp_t , mme_app_initial_context_setup_rsp)
......@@ -2,5 +2,38 @@
#define MME_APP_MESSAGES_TYPES_H_
#define MME_APP_CONNECTION_ESTABLISHMENT_IND(mSGpTR) (mSGpTR)->ittiMsg.mme_app_connection_establishment_ind
#define MME_APP_CONNECTION_ESTABLISHMENT_CNF(mSGpTR) (mSGpTR)->ittiMsg.mme_app_connection_establishment_cnf
#define MME_APP_INITIAL_CONTEXT_SETUP_RSP(mSGpTR) (mSGpTR)->ittiMsg.mme_app_initial_context_setup_rsp
typedef struct mme_app_connection_establishment_ind_s {
uint32_t mme_ue_s1ap_id;
nas_establish_ind_t nas;
/* Transparent message from s1ap to be forwarded to MME_APP or
* to S1AP if connection establishment is rejected by NAS.
*/
s1ap_initial_ue_message_t transparent;
} mme_app_connection_establishment_ind_t;
typedef struct mme_app_connection_establishment_cnf_s {
ebi_t eps_bearer_id;
FTeid_t bearer_s1u_sgw_fteid;
qci_t bearer_qos_qci;
priority_level_t bearer_qos_prio_level;
pre_emp_vulnerability_t bearer_qos_pre_emp_vulnerability;
pre_emp_capability_t bearer_qos_pre_emp_capability;
ambr_t ambr;
nas_conn_est_cnf_t nas_conn_est_cnf;
} mme_app_connection_establishment_cnf_t;
typedef struct mme_app_initial_context_setup_rsp_s {
uint32_t mme_ue_s1ap_id;
ebi_t eps_bearer_id;
FTeid_t bearer_s1u_enb_fteid;
} mme_app_initial_context_setup_rsp_t;
#endif /* MME_APP_MESSAGES_TYPES_H_ */
......@@ -35,9 +35,10 @@ MESSAGE_DEF(NAS_RAB_RELEASE_REQ, MESSAGE_PRIORITY_MED, nas_rab_
MESSAGE_DEF(NAS_AUTHENTICATION_PARAM_REQ, MESSAGE_PRIORITY_MED, nas_auth_param_req_t, nas_auth_param_req)
/* MME app -> NAS layer messages */
MESSAGE_DEF(NAS_BEARER_PARAM, MESSAGE_PRIORITY_MED, nas_bearer_param_t, nas_bearer_param)
MESSAGE_DEF(NAS_AUTHENTICATION_PARAM_RSP, MESSAGE_PRIORITY_MED, nas_auth_param_rsp_t, nas_auth_param_rsp)
MESSAGE_DEF(NAS_AUTHENTICATION_PARAM_FAIL, MESSAGE_PRIORITY_MED, nas_auth_param_fail_t, nas_auth_param_fail)
MESSAGE_DEF(NAS_PDN_CONNECTIVITY_RSP, MESSAGE_PRIORITY_MED, nas_pdn_connectivity_rsp_t, nas_pdn_connectivity_rsp)
MESSAGE_DEF(NAS_PDN_CONNECTIVITY_FAIL, MESSAGE_PRIORITY_MED, nas_pdn_connectivity_fail_t, nas_pdn_connectivity_fail)
MESSAGE_DEF(NAS_AUTHENTICATION_PARAM_RSP, MESSAGE_PRIORITY_MED, nas_auth_param_rsp_t, nas_auth_param_rsp)
MESSAGE_DEF(NAS_AUTHENTICATION_PARAM_FAIL, MESSAGE_PRIORITY_MED, nas_auth_param_fail_t, nas_auth_param_fail)
#if defined(DISABLE_USE_NAS)
MESSAGE_DEF(NAS_ATTACH_REQ, MESSAGE_PRIORITY_MED, nas_attach_req_t, nas_attach_req)
......
......@@ -24,6 +24,8 @@
#define NAS_DL_DATA_REQ(mSGpTR) (mSGpTR)->ittiMsg.nas_dl_data_req
#define NAS_DL_DATA_CNF(mSGpTR) (mSGpTR)->ittiMsg.nas_dl_data_cnf
#define NAS_PDN_CONNECTIVITY_REQ(mSGpTR) (mSGpTR)->ittiMsg.nas_pdn_connectivity_req
#define NAS_PDN_CONNECTIVITY_RSP(mSGpTR) (mSGpTR)->ittiMsg.nas_pdn_connectivity_rsp
#define NAS_PDN_CONNECTIVITY_FAIL(mSGpTR) (mSGpTR)->ittiMsg.nas_pdn_connectivity_fail
#define NAS_CONN_EST_IND(mSGpTR) (mSGpTR)->ittiMsg.nas_conn_est_ind
#define NAS_CONNECTION_ESTABLISHMENT_CNF(mSGpTR) (mSGpTR)->ittiMsg.nas_conn_est_cnf
#define NAS_BEARER_PARAM(mSGpTR) (mSGpTR)->ittiMsg.nas_bearer_param
......@@ -34,6 +36,8 @@
#define NAS_DATA_LENGHT_MAX 256
typedef enum {
EMM_MSG_HEADER = 1,
EMM_MSG_ATTACH_REQUEST,
......@@ -67,6 +71,8 @@ typedef enum {
EMM_MSG_CS_SERVICE_NOTIFICATION,
} emm_message_ids_t;
typedef enum {
ESM_MSG_HEADER = 1,
ESM_MSG_ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REQUEST,
......@@ -93,50 +99,103 @@ typedef enum {
ESM_MSG_ESM_STATUS,
} esm_message_ids_t;
typedef struct nas_raw_msg_s {
uint32_t lenght;
uint8_t data[NAS_DATA_LENGHT_MAX];
} nas_raw_msg_t;
typedef struct nas_emm_plain_msg_s {
emm_message_ids_t present;
EMM_msg choice;
} nas_emm_plain_msg_t;
typedef struct nas_emm_protected_msg_s {
nas_message_security_header_t header;
emm_message_ids_t present;
EMM_msg choice;
} nas_emm_protected_msg_t;
typedef struct nas_esm_plain_msg_s {
esm_message_ids_t present;
ESM_msg choice;
} nas_esm_plain_msg_t;
typedef struct nas_esm_protected_msg_s {
nas_message_security_header_t header;
esm_message_ids_t present;
ESM_msg choice;
} nas_esm_protected_msg_t;
typedef struct nas_paging_ind_s {
} nas_paging_ind_t;
typedef struct nas_pdn_connectivity_req_s {
char imsi[16];
uint8_t imsi_length;
OctetString apn;
OctetString pdn_addr;
int mme_pdn_index;
network_qos_t esm_qos;
int is_emergency;
int pti; // nas ref Identity of the procedure transaction executed to activate the PDN connection entry
unsigned ue_id; // nas ref
char imsi[16];
uint8_t imsi_length;
network_qos_t qos;
OctetString apn;
OctetString pdn_addr;
int pdn_type;
void *proc_data;
int request_type;
} nas_pdn_connectivity_req_t;
typedef struct nas_pdn_connectivity_rsp_s {
int pti; // nas ref Identity of the procedure transaction executed to activate the PDN connection entry
unsigned ue_id; // nas ref
network_qos_t qos;
OctetString apn;
OctetString pdn_addr;
int pdn_type;
void *proc_data;
int request_type;
unsigned eNB_ue_s1ap_id:24;
uint32_t mme_ue_s1ap_id;
/* Key eNB */
uint8_t keNB[32];
ambr_t ambr;
ambr_t apn_ambr;
/* EPS bearer ID */
unsigned ebi:4;
/* QoS */
qci_t qci;
priority_level_t prio_level;
pre_emp_vulnerability_t pre_emp_vulnerability;
pre_emp_capability_t pre_emp_capability;
/* S-GW TEID for user-plane */
Teid_t sgw_s1u_teid;
/* S-GW IP address for User-Plane */
ip_address_t sgw_s1u_address;
} nas_pdn_connectivity_rsp_t;
typedef struct nas_pdn_connectivity_fail_s {
unsigned ue_id; // nas ref
} nas_pdn_connectivity_fail_t;
typedef struct nas_conn_est_ind_s {
nas_establish_ind_t nas;
......@@ -146,8 +205,10 @@ typedef struct nas_conn_est_ind_s {
s1ap_initial_ue_message_t transparent;
} nas_conn_est_ind_t;
typedef nas_establish_rsp_t nas_conn_est_rej_t;
#if defined(DISABLE_USE_NAS)
typedef struct nas_conn_est_cnf_s {
uint32_t ue_id;
......@@ -160,56 +221,35 @@ typedef struct nas_conn_est_cnf_s {
typedef nas_establish_cnf_t nas_conn_est_cnf_t;
#endif
typedef struct nas_bearer_param_s {
unsigned eNB_ue_s1ap_id:24;
uint32_t mme_ue_s1ap_id;
/* Key eNB */
uint8_t keNB[32];
ambr_t ambr;
ambr_t apn_ambr;
/* EPS bearer ID */
unsigned ebi:4;
/* QoS */
qci_t qci;
priority_level_t prio_level;
pre_emp_vulnerability_t pre_emp_vulnerability;
pre_emp_capability_t pre_emp_capability;
/* S-GW TEID for user-plane */
uint32_t sgw_s1u_teid;
/* S-GW IP address for User-Plane */
ip_address_t sgw_s1u_address;
} nas_bearer_param_t;
typedef struct nas_conn_rel_ind_s {
} nas_conn_rel_ind_t;
typedef ul_info_transfer_ind_t nas_ul_data_ind_t;
typedef dl_info_transfer_req_t nas_dl_data_req_t;
typedef dl_info_transfer_cnf_t nas_dl_data_cnf_t;
typedef struct nas_non_del_ind_s {
} nas_non_del_ind_t;
typedef struct nas_rab_est_req_s {
} nas_rab_est_req_t;
typedef struct nas_rab_est_rsp_s {
} nas_rab_est_rsp_t;
typedef struct nas_rab_rel_req_s {
} nas_rab_rel_req_t;
typedef struct nas_attach_req_s {
/* TODO: Set the correct size */
char apn[100];
......@@ -219,6 +259,7 @@ typedef struct nas_attach_req_s {
s1ap_initial_ue_message_t transparent;
} nas_attach_req_t;
typedef struct nas_auth_req_s {
/* UE imsi */
char imsi[16];
......@@ -229,6 +270,7 @@ typedef struct nas_auth_req_s {
int cause;
} nas_auth_req_t;
typedef struct nas_auth_resp_s {
char imsi[16];
} nas_auth_resp_t;
......@@ -244,10 +286,11 @@ typedef struct nas_auth_param_req_s {
/* Indicates whether the procedure corresponds to a new connection or not */
uint8_t initial_req:1;
uint8_t re_synchronization:1;
uint8_t auts[14];
uint8_t re_synchronization:1;
uint8_t auts[14];
} nas_auth_param_req_t;
typedef struct nas_auth_param_rsp_s {
/* UE identifier */
uint32_t ue_id;
......@@ -267,6 +310,7 @@ typedef struct nas_auth_param_fail_s {
nas_cause_t cause;
} nas_auth_param_fail_t;
#if defined(DISABLE_USE_NAS)
typedef struct nas_attach_accept_s {
s1ap_initial_ctxt_setup_req_t transparent;
......
......@@ -5,23 +5,23 @@
#define S1AP_DEREGISTER_UE_REQ(mSGpTR) (mSGpTR)->ittiMsg.s1ap_deregister_ue_req
typedef struct s1ap_initial_ue_message_s {
unsigned eNB_ue_s1ap_id:24;
uint32_t mme_ue_s1ap_id;
cgi_t e_utran_cgi;
unsigned eNB_ue_s1ap_id:24;
uint32_t mme_ue_s1ap_id;
cgi_t e_utran_cgi;
} s1ap_initial_ue_message_t;
typedef struct s1ap_initial_ctxt_setup_req_s {
unsigned eNB_ue_s1ap_id:24;
uint32_t mme_ue_s1ap_id;
unsigned eNB_ue_s1ap_id:24;
uint32_t mme_ue_s1ap_id;
/* Key eNB */
uint8_t keNB[32];
uint8_t keNB[32];
ambr_t ambr;
ambr_t apn_ambr;
ambr_t ambr;
ambr_t apn_ambr;
/* EPS bearer ID */
unsigned ebi:4;
unsigned ebi:4;
/* QoS */
qci_t qci;
......@@ -30,16 +30,16 @@ typedef struct s1ap_initial_ctxt_setup_req_s {
pre_emp_capability_t pre_emp_capability;
/* S-GW TEID for user-plane */
uint32_t teid;
Teid_t teid;
/* S-GW IP address for User-Plane */
ip_address_t s_gw_address;
ip_address_t s_gw_address;
} s1ap_initial_ctxt_setup_req_t;
typedef struct s1ap_ue_cap_ind_s {
unsigned eNB_ue_s1ap_id:24;
uint32_t mme_ue_s1ap_id;
uint8_t radio_capabilities[100];
uint32_t radio_capabilities_length;
unsigned eNB_ue_s1ap_id:24;
uint32_t mme_ue_s1ap_id;
uint8_t radio_capabilities[100];
uint32_t radio_capabilities_length;
} s1ap_ue_cap_ind_t;
#define S1AP_ITTI_UE_PER_DEREGISTER_MESSAGE 20
......
......@@ -5,23 +5,37 @@
typedef struct s6a_update_location_req_s {
#define SKIP_SUBSCRIBER_DATA (0x1)
unsigned skip_subsriber_data:1;
unsigned skip_subscriber_data:1;
#define INITIAL_ATTACH (0x1)
unsigned initial_attach:1;
char imsi[IMSI_DIGITS_MAX + 1];
uint8_t imsi_length;
plmn_t visited_plmn;
rat_type_t rat_type;
char imsi[IMSI_DIGITS_MAX + 1]; // username
uint8_t imsi_length; // username
plmn_t visited_plmn; // visited plmn id
rat_type_t rat_type; // rat type
// missing // origin host
// missing // origin realm
// missing // destination host
// missing // destination realm
} s6a_update_location_req_t;
typedef struct s6a_update_location_ans_s {
s6a_result_t result; // Result of the update location request procedure
subscription_data_t subscription_data; // subscriber status,
// Maximum Requested Bandwidth Uplink, downlink
// access restriction data
// msisdn
apn_config_profile_t apn_config_profile;// APN configuration profile
network_access_mode_t access_mode;
rau_tau_timer_t rau_tau_timer;
char imsi[IMSI_DIGITS_MAX + 1];
uint8_t imsi_length;
/* Result of the update location request procedure */
s6a_result_t result;
subscription_data_t subscription_data;
} s6a_update_location_ans_t;
typedef struct s6a_auth_info_req_s {
......
......@@ -42,6 +42,14 @@
#ifndef SGW_LITE_MESSAGES_TYPES_H_
#define SGW_LITE_MESSAGES_TYPES_H_
#define SGW_CREATE_SESSION_REQUEST(mSGpTR) (mSGpTR)->ittiMsg.sgwCreateSessionRequest
#define SGW_CREATE_SESSION_RESPONSE(mSGpTR) (mSGpTR)->ittiMsg.sgwCreateSessionResponse
#define SGW_MODIFY_BEARER_REQUEST(mSGpTR) (mSGpTR)->ittiMsg.sgwModifyBearerRequest
#define SGW_MODIFY_BEARER_RESPONSE(mSGpTR) (mSGpTR)->ittiMsg.sgwModifyBearerResponse
#define SGW_DELETE_SESSION_REQUEST(mSGpTR) (mSGpTR)->ittiMsg.sgwDeleteSessionRequest
#define SGW_DELETE_SESSION_RESPONSE(mSGpTR) (mSGpTR)->ittiMsg.sgwDeleteSessionResponse
/** @struct SgwCreateSessionRequest
* @brief Create Session Request
*
......@@ -52,29 +60,266 @@
* - Tracking Area Update procedure with Serving GW change
* - S1/X2-based handover with SGW change
*/
typedef struct {
typedef struct SgwCreateSessionRequest_s{
Teid_t teid; ///< S11- S-GW Tunnel Endpoint Identifier
Imsi_t imsi;
Msisdn_t msisdn;
Mei_t mei;
Uli_t uli;
ServingNetwork_t serving_network;
rat_type_t rat_type;
Imsi_t imsi; ///< The IMSI shall be included in the message on the S4/S11
///< interface, and on S5/S8 interface if provided by the
///< MME/SGSN, except for the case:
///< - If the UE is emergency attached and the UE is UICCless.
///< The IMSI shall be included in the message on the S4/S11
///< interface, and on S5/S8 interface if provided by the
///< MME/SGSN, but not used as an identifier
///< - if UE is emergency attached but IMSI is not authenticated.
///< The IMSI shall be included in the message on the S2b interface.
Msisdn_t msisdn; ///< For an E-UTRAN Initial Attach the IE shall be included
///< when used on the S11 interface, if provided in the
///< subscription data from the HSS.
///< For a PDP Context Activation procedure the IE shall be
///< included when used on the S4 interface, if provided in the
///< subscription data from the HSS.
///< The IE shall be included for the case of a UE Requested
///< PDN Connectivity, if the MME has it stored for that UE.
///< It shall be included when used on the S5/S8 interfaces if
///< provided by the MME/SGSN.
///< The ePDG shall include this IE on the S2b interface during
///< an Attach with GTP on S2b and a UE initiated Connectivity
///< to Additional PDN with GTP on S2b, if provided by the
///< HSS/AAA.
Mei_t mei; ///< The MME/SGSN shall include the ME Identity (MEI) IE on
///< the S11/S4 interface:
///< - If the UE is emergency attached and the UE is UICCless
///< - If the UE is emergency attached and the IMSI is not authenticated
///< For all other cases the MME/SGSN shall include the ME
///< Identity (MEI) IE on the S11/S4 interface if it is available.
///< If the SGW receives this IE, it shall forward it to the PGW
///< on the S5/S8 interface.
Uli_t uli; ///< This IE shall be included on the S11 interface for E-
///< UTRAN Initial Attach and UE-requested PDN Connectivity
///< procedures. It shall include ECGI&TAI. The MME/SGSN
///< shall also include it on the S11/S4 interface for
///< TAU/RAU/X2-Handover/Enhanced SRNS Relocation
///< procedure if the PGW has requested location information
///< change reporting and MME/SGSN support location
///< information change reporting. The SGW shall include this
///< IE on S5/S8 if it receives the ULI from MME/SGSN.
ServingNetwork_t serving_network; ///< This IE shall be included on the S4/S11, S5/S8 and S2b
///< interfaces for an E-UTRAN initial attach, a PDP Context
///< Activation, a UE requested PDN connectivity, an Attach
///< with GTP on S2b, a UE initiated Connectivity to Additional
///< PDN with GTP on S2b and a Handover to Untrusted Non-
///< 3GPP IP Access with GTP on S2b.
rat_type_t rat_type; ///< This IE shall be set to the 3GPP access type or to the
///< value matching the characteristics of the non-3GPP access
///< the UE is using to attach to the EPS.
///< The ePDG may use the access technology type of the
///< untrusted non-3GPP access network if it is able to acquire
///< it; otherwise it shall indicate Virtual as the RAT Type.
///< See NOTE 3, NOTE 4.
indication_flags_t indication_flags; ///< This IE shall be included if any one of the applicable flags
///< is set to 1.
///< Applicable flags are:
///< - S5/S8 Protocol Type: This flag shall be used on
///< the S11/S4 interfaces and set according to the
///< protocol chosen to be used on the S5/S8
///< interfaces.
///<
///< - Dual Address Bearer Flag: This flag shall be used
///< on the S2b, S11/S4 and S5/S8 interfaces and shall
///< be set to 1 when the PDN Type, determined based
///< on UE request and subscription record, is set to
///< IPv4v6 and all SGSNs which the UE may be
///< handed over to support dual addressing. This shall
///< be determined based on node pre-configuration by
///< the operator.
///<
///< - Handover Indication: This flag shall be set to 1 on
///< the S11/S4 and S5/S8 interface during an E-
///< UTRAN Initial Attach or a UE Requested PDN
///< Connectivity or aPDP Context Activation procedure
///< if the PDN connection/PDP Context is handed-over
///< from non-3GPP access.
///< This flag shall be set to 1 on the S2b interface
///< during a Handover to Untrusted Non-3GPP IP
///< Access with GTP on S2b and IP address
///< preservation is requested by the UE.
///<
///< ....
///< - Unauthenticated IMSI: This flag shall be set to 1
///< on the S4/S11 and S5/S8 interfaces if the IMSI
///< present in the message is not authenticated and is
///< for an emergency attached UE.
FTeid_t sender_fteid_for_cp; ///< Sender F-TEID for control plane (MME)
FTeid_t pgw_address_for_cp; ///< PGW S5/S8 address for control plane or PMIP
///< This IE shall be sent on the S11 / S4 interfaces. The TEID
///< or GRE Key is set to "0" in the E-UTRAN initial attach, the
///< PDP Context Activation and the UE requested PDN
///< connectivity procedures.
char apn[APN_MAX_LENGTH + 1]; ///< Access Point Name
SelectionMode_t selection_mode; ///< Selection Mode
///< This IE shall be included on the S4/S11 and S5/S8
///< interfaces for an E-UTRAN initial attach, a PDP Context
///< Activation and a UE requested PDN connectivity.
///< This IE shall be included on the S2b interface for an Initial
///< Attach with GTP on S2b and a UE initiated Connectivity to
///< Additional PDN with GTP on S2b.
///< It shall indicate whether a subscribed APN or a non
///< subscribed APN chosen by the MME/SGSN/ePDG was
///< selected.
///< CO: When available, this IE shall be sent by the MME/SGSN on
///< the S11/S4 interface during TAU/RAU/HO with SGW
///< relocation.
pdn_type_t pdn_type; ///< PDN Type
///< This IE shall be included on the S4/S11 and S5/S8
///< interfaces for an E-UTRAN initial attach, a PDP Context
///< Activation and a UE requested PDN connectivity.
///< This IE shall be set to IPv4, IPv6 or IPv4v6. This is based
///< on the UE request and the subscription record retrieved
///< from the HSS (for MME see 3GPP TS 23.401 [3], clause
///< 5.3.1.1, and for SGSN see 3GPP TS 23.060 [35], clause
///< 9.2.1). See NOTE 1.
PAA_t paa; ///< PDN Address Allocation
/* Shall include APN Restriction but not used in our case */
ambr_t ambr; ///< Aggregate Maximum Bit Rate
/* TODO: add Protocol Configuration options */
FQ_CSID_t mme_fq_csid;
UETimeZone_t ue_time_zone;
UCI_t uci; ///< User CSG Information
///< This IE shall be included the S4/S11, S5/S8 and S2b
///< interfaces for an E-UTRAN initial attach, a PDP Context
///< Activation, a UE requested PDN connectivity, an Attach
///< with GTP on S2b, a UE initiated Connectivity to Additional
///< PDN with GTP on S2b and a Handover to Untrusted Non-
///< 3GPP IP Access with GTP on S2b. For PMIP-based
///< S5/S8, this IE shall also be included on the S4/S11
///< interfaces for TAU/RAU/Handover cases involving SGW
///< relocation.
///< The PDN type field in the PAA shall be set to IPv4, or IPv6
///< or IPv4v6 by MME, based on the UE request and the
///< subscription record retrieved from the HSS.
///< For static IP address assignment (for MME see 3GPP TS
///< 23.401 [3], clause 5.3.1.1, for SGSN see 3GPP TS 23.060
///< [35], clause 9.2.1, and for ePDG see 3GPP TS 23.402 [45]
///< subclause 4.7.3), the MME/SGSN/ePDG shall set the IPv4
///< address and/or IPv6 prefix length and IPv6 prefix and
///< Interface Identifier based on the subscribed values
///< received from HSS, if available. The value of PDN Type
///< field shall be consistent with the value of the PDN Type IE,
///< if present in this message.
///< For a Handover to Untrusted Non-3GPP IP Access with
///< GTP on S2b, the ePDG shall set the IPv4 address and/or
///< IPv6 prefix length and IPv6 prefix and Interface Identifier
///< based on the IP address(es) received from the UE.
///< If static IP address assignment is not used, and for
///< scenarios other than a Handover to Untrusted Non-3GPP
///< IP Access with GTP on S2b, the IPv4 address shall be set
///< to 0.0.0.0, and/or the IPv6 Prefix Length and IPv6 prefix
///< and Interface Identifier shall all be set to zero.
///<
///< CO: This IE shall be sent by the MME/SGSN on S11/S4
///< interface during TAU/RAU/HO with SGW relocation.
// APN Restriction Maximum_APN_Restriction ///< This IE shall be included on the S4/S11 and S5/S8
///< interfaces in the E-UTRAN initial attach, PDP Context
///< Activation and UE Requested PDN connectivity
///< procedures.
///< This IE denotes the most stringent restriction as required
///< by any already active bearer context. If there are no
///< already active bearer contexts, this value is set to the least
///< restrictive type.
ambr_t ambr; ///< Aggregate Maximum Bit Rate (APN-AMBR)
///< This IE represents the APN-AMBR. It shall be included on
///< the S4/S11, S5/S8 and S2b interfaces for an E-UTRAN
///< initial attach, UE requested PDN connectivity, the PDP
///< Context Activation procedure using S4, the PS mobility
///< from the Gn/Gp SGSN to the S4 SGSN/MME procedures,
///< Attach with GTP on S2b and a UE initiated Connectivity to
///< Additional PDN with GTP on S2b.
// EBI Linked EPS Bearer ID ///< This IE shall be included on S4/S11 in RAU/TAU/HO
///< except in the Gn/Gp SGSN to MME/S4-SGSN
///< RAU/TAU/HO procedures with SGW change to identify the
///< default bearer of the PDN Connection
// PCO protocol_configuration_options ///< This IE is not applicable to TAU/RAU/Handover. If
///< MME/SGSN receives PCO from UE (during the attach
///< procedures), the MME/SGSN shall forward the PCO IE to
///< SGW. The SGW shall also forward it to PGW.
bearer_to_create_t bearer_to_create; ///< Bearer Contexts to be created
///< Several IEs with the same type and instance value shall be
///< included on the S4/S11 and S5/S8 interfaces as necessary
///< to represent a list of Bearers. One single IE shall be
///< included on the S2b interface.
///< One bearer shall be included for an E-UTRAN Initial
///< Attach, a PDP Context Activation, a UE requested PDN
///< Connectivity, an Attach with GTP on S2b, a UE initiated