diff --git a/openair-cn/SGW-LITE/sgw_lite_context_manager.h b/openair-cn/SGW-LITE/sgw_lite_context_manager.h index 14437c4a9f..2e255eb02f 100644 --- a/openair-cn/SGW-LITE/sgw_lite_context_manager.h +++ b/openair-cn/SGW-LITE/sgw_lite_context_manager.h @@ -45,37 +45,37 @@ * P-GW contexts * *********************************/ typedef struct pgw_eps_bearer_entry_gtp_based_S5_S8_only_s { - ebi_t eps_bearer_id; ///< An EPS bearer identity uniquely identifies an EPS bearer for one UE accessing via E-UTRAN + ebi_t eps_bearer_id; ///< An EPS bearer identity uniquely identifies an EPS bearer for one UE accessing via E-UTRAN // TO DO traffic_flow_template_t tft; ///< Traffic Flow Template - ip_address_t s_gw_address_in_use_up; ///< The IP address of the S-GW currently used for sending user plane traffic. - Teid_t s_gw_teid_for_S5_S8_up; ///< S-GW Tunnel Endpoint Identifier for the S5/S8 interface for the user plane. + ip_address_t s_gw_address_in_use_up; ///< The IP address of the S-GW currently used for sending user plane traffic. + Teid_t s_gw_teid_for_S5_S8_up; ///< S-GW Tunnel Endpoint Identifier for the S5/S8 interface for the user plane. - ip_address_t p_gw_ip_address_for_S5_S8_up; ///< P-GW IP address for user plane data received from PDN GW. - Teid_t p_gw_teid_for_S5_S8_up; ///< P-GW Tunnel Endpoint Identifier for the GTP Based S5/S8 interface for user plane. + ip_address_t p_gw_ip_address_for_S5_S8_up; ///< P-GW IP address for user plane data received from PDN GW. + Teid_t p_gw_teid_for_S5_S8_up; ///< P-GW Tunnel Endpoint Identifier for the GTP Based S5/S8 interface for user plane. - // TO BE CHECKED - BearerQOS_t eps_bearer_qos; ///< ARP, GBR, MBR, QCI. - // NOT NEEDED charging_id ///< Charging identifier, identifies charging records generated by S-GW and PDN GW. + // TO BE CHECKED + BearerQOS_t eps_bearer_qos; ///< ARP, GBR, MBR, QCI. + // NOT NEEDED charging_id ///< Charging identifier, identifies charging records generated by S-GW and PDN GW. } pgw_eps_bearer_entry_t; typedef struct pgw_pdn_connection_s { //ip_addresses; ///< IPv4 address and/or IPv6 prefix - pdn_type_t pdn_type; ///< IPv4, IPv6, or IPv4v6 - ip_address_t s_gw_address_in_use_cp; ///< The IP address of the S-GW currently used for sending control plane signalling. - Teid_t s_gw_teid_for_S5_S8_cp; ///< S-GW Tunnel Endpoint Identifier for the S5/S8 interface for the control plane. (For GTP-based S5/S8 only). - ip_address_t s_gw_address_in_use_up; ///< The IP address of the S-GW currently used for sending user plane traffic. (For PMIP-based S5/S8 only). - // NOT NEEDED s_gw_gre_key_for_dl_traffic_up ///< Serving GW assigned GRE Key for the S5/S8 interface for the user plane for downlink traffic. (For PMIP-based S5/S8 only). - ip_address_t p_gw_ip_address_for_S5_S8_cp; ///< P-GW IP address for the S5/S8 for the control plane signalling. - Teid_t p_gw_teid_for_S5_S8_cp; ///< P-GW Tunnel Endpoint Identifier for the S5/S8 control plane interface. (For GTP-based S5/S8 only). - ip_address_t p_gw_address_in_use_up; ///< The IP address of the P-GW currently used for sending user plane traffic. (For PMIP-based S5/S8 only). - // NOT NEEDED p_gw_gre_key_for_uplink_traffic_up ///< PDN GW assigned GRE Key for the S5/S8 interface for the user plane for uplink traffic. (For PMIP-based S5/S8 only). - // NOT NEEDED MS Info Change Reporting Action ///< Denotes whether the MME and/or the SGSN is/are requested to send changes in User Location Information change for this bearer. - // NOT NEEDED CSG Information Reporting Action ///< Denotes whether the MME and/or the SGSN is/are requested to send changes in User CSG Information change for this bearer. + pdn_type_t pdn_type; ///< IPv4, IPv6, or IPv4v6 + ip_address_t s_gw_address_in_use_cp; ///< The IP address of the S-GW currently used for sending control plane signalling. + Teid_t s_gw_teid_for_S5_S8_cp; ///< S-GW Tunnel Endpoint Identifier for the S5/S8 interface for the control plane. (For GTP-based S5/S8 only). + ip_address_t s_gw_address_in_use_up; ///< The IP address of the S-GW currently used for sending user plane traffic. (For PMIP-based S5/S8 only). + // NOT NEEDED s_gw_gre_key_for_dl_traffic_up ///< Serving GW assigned GRE Key for the S5/S8 interface for the user plane for downlink traffic. (For PMIP-based S5/S8 only). + ip_address_t p_gw_ip_address_for_S5_S8_cp; ///< P-GW IP address for the S5/S8 for the control plane signalling. + Teid_t p_gw_teid_for_S5_S8_cp; ///< P-GW Tunnel Endpoint Identifier for the S5/S8 control plane interface. (For GTP-based S5/S8 only). + ip_address_t p_gw_address_in_use_up; ///< The IP address of the P-GW currently used for sending user plane traffic. (For PMIP-based S5/S8 only). + // NOT NEEDED p_gw_gre_key_for_uplink_traffic_up ///< PDN GW assigned GRE Key for the S5/S8 interface for the user plane for uplink traffic. (For PMIP-based S5/S8 only). + // NOT NEEDED MS Info Change Reporting Action ///< Denotes whether the MME and/or the SGSN is/are requested to send changes in User Location Information change for this bearer. + // NOT NEEDED CSG Information Reporting Action ///< Denotes whether the MME and/or the SGSN is/are requested to send changes in User CSG Information change for this bearer. /// This field denotes separately whether the MME/SGSN are requested to send changes in User CSG Information for (a) CSG cells, /// (b) hybrid cells in which the subscriber is a CSG member, and (c) hybrid cells in which the subscriber is not a CSG member, or any combination of the above. - ebi_t default_bearer; ///< Identifies the default bearer within the PDN connection by its EPS Bearer Id. The default bearer is the one which is established first within the PDN connection. (For GTP based + ebi_t default_bearer; ///< Identifies the default bearer within the PDN connection by its EPS Bearer Id. The default bearer is the one which is established first within the PDN connection. (For GTP based /// S5/S8 or for PMIP based S5/S8 if multiple PDN connections to the same APN are supported). hash_table_t *pgw_eps_bearers; @@ -83,9 +83,9 @@ typedef struct pgw_pdn_connection_s { typedef struct pgw_apn_s { - APN_t apn_in_use; ///< The APN currently used, as received from the S-GW. - ambr_t apn_ambr; ///< The maximum aggregated uplink and downlink MBR values to be shared across all Non-GBR bearers, - /// which are established for this APN. + APN_t apn_in_use; ///< The APN currently used, as received from the S-GW. + ambr_t apn_ambr; ///< The maximum aggregated uplink and downlink MBR values to be shared across all Non-GBR bearers, + /// which are established for this APN. obj_hash_table_t *pdn_connections; ///< For each PDN Connection within the APN } pgw_apn_t; @@ -118,46 +118,49 @@ typedef struct pgw_eps_bearer_context_information_s { // A primary key for a EPS Bearer entry can be a tuple (eps bearer id, imsi) typedef struct sgw_eps_bearer_entry_s { - ebi_t eps_bearer_id; ///< An EPS bearer identity uniquely identifies an EPS bearer for one UE accessing via E-UTRAN +#if defined (ENABLE_USE_GTPU_IN_KERNEL) + PAA_t paa; +#endif + ebi_t eps_bearer_id; ///< An EPS bearer identity uniquely identifies an EPS bearer for one UE accessing via E-UTRAN // TO DO traffic_flow_template_t tft; ///< Traffic Flow Template - ip_address_t p_gw_address_in_use_up; ///< The IP address of the P-GW currently used for sending user plane traffic. (For GTP-based S5/S8 only). - Teid_t p_gw_teid_for_S5_S8_up; ///< P-GW Tunnel Endpoint Identifier for the S5/S8 interface for the user plane. (For GTP-based S5/S8 only). + ip_address_t p_gw_address_in_use_up; ///< The IP address of the P-GW currently used for sending user plane traffic. (For GTP-based S5/S8 only). + Teid_t p_gw_teid_for_S5_S8_up; ///< P-GW Tunnel Endpoint Identifier for the S5/S8 interface for the user plane. (For GTP-based S5/S8 only). - ip_address_t s_gw_ip_address_for_S5_S8_up; ///< S-GW IP address for user plane data received from PDN GW. (For GTP-based S5/S8 only). - Teid_t s_gw_teid_for_S5_S8_up; ///< S-GW Tunnel Endpoint Identifier for the S5/S8 interface for the user plane. (For GTP-based S5/S8 only). + ip_address_t s_gw_ip_address_for_S5_S8_up; ///< S-GW IP address for user plane data received from PDN GW. (For GTP-based S5/S8 only). + Teid_t s_gw_teid_for_S5_S8_up; ///< S-GW Tunnel Endpoint Identifier for the S5/S8 interface for the user plane. (For GTP-based S5/S8 only). - ip_address_t s_gw_ip_address_for_S1u_S12_S4_up; ///< S-GW IP address for the S1-u interface (Used by the eNodeB), for the S12 interface (used by the RNC) and for the S4 interface (used by the SGSN). - Teid_t s_gw_teid_for_S1u_S12_S4_up; ///< S-GW Tunnel Endpoint Identifier for the S1-u interface, for the S12 interface (used by the RNC) and for the S4 interface (used by the SGSN). + ip_address_t s_gw_ip_address_for_S1u_S12_S4_up; ///< S-GW IP address for the S1-u interface (Used by the eNodeB), for the S12 interface (used by the RNC) and for the S4 interface (used by the SGSN). + Teid_t s_gw_teid_for_S1u_S12_S4_up; ///< S-GW Tunnel Endpoint Identifier for the S1-u interface, for the S12 interface (used by the RNC) and for the S4 interface (used by the SGSN). - ip_address_t enb_ip_address_for_S1u; ///< eNodeB IP address for the S1-u interface (Used by the S-GW). - Teid_t enb_teid_for_S1u; ///< eNodeB Tunnel Endpoint Identifier for the S1-u interface. + ip_address_t enb_ip_address_for_S1u; ///< eNodeB IP address for the S1-u interface (Used by the S-GW). + Teid_t enb_teid_for_S1u; ///< eNodeB Tunnel Endpoint Identifier for the S1-u interface. - // TO BE CHECKED - BearerQOS_t eps_bearer_qos; ///< ARP, GBR, MBR, QCI. - // NOT NEEDED charging_id ///< Charging identifier, identifies charging records generated by S-GW and PDN GW. + // TO BE CHECKED + BearerQOS_t eps_bearer_qos; ///< ARP, GBR, MBR, QCI. + // NOT NEEDED charging_id ///< Charging identifier, identifies charging records generated by S-GW and PDN GW. } sgw_eps_bearer_entry_t; typedef struct sgw_pdn_connection_s { - APN_t apn_in_use; ///< The APN currently used, as received from the MME or S4 SGSN. + APN_t apn_in_use; ///< The APN currently used, as received from the MME or S4 SGSN. // NOT NEEDED NOW eps_pdn_charging ///< The charging characteristics of this PDN connection, e.g.normal, prepaid, flat-rate and/or hot billing. - // NOT IMPLEMENTED NOW - ip_address_t p_gw_address_in_use_cp; ///< The IP address of the P-GW currently used for sending control plane signalling. - // NOT IMPLEMENTED NOW - Teid_t p_gw_teid_for_S5_S8_cp; ///< P-GW Tunnel Endpoint Identifier for the S5/S8 interface for the control plane. (For GTP-based S5/S8 only). - // NOT IMPLEMENTED NOW - ip_address_t p_gw_address_in_use_up; ///< The IP address of the P-GW currently used for sending user plane traffic. (For PMIP-based S5/S8 only) - // NOT NEEDED p_gw_gre_key_for_uplink_traffic_up ///< PDN GW assigned GRE Key for the S5/S8 interface for the user plane for uplink traffic. (For PMIP-based S5/S8 only) - ip_address_t s_gw_ip_address_for_S5_S8_cp; ///< S-GW IP address for the S5/S8 for the control plane signalling. - Teid_t s_gw_teid_for_S5_S8_cp; ///< S-GW Tunnel Endpoint Identifier for the S5/S8 control plane interface. (For GTP-based S5/S8 only). - ip_address_t s_gw_address_in_use_up; ///< The IP address of the S-GW currently used for sending user plane traffic. (For PMIP-based S5/S8 only) - // NOT NEEDED s_gw_gre_key_for_dl_traffic_up ///< user plane for downlink traffic. (For PMIP-based S5/S8 only) - ebi_t default_bearer; ///< Identifies the default bearer within the PDN connection by its EPS Bearer Id. (For PMIP based S5/S8.) + // NOT IMPLEMENTED NOW + ip_address_t p_gw_address_in_use_cp; ///< The IP address of the P-GW currently used for sending control plane signalling. + // NOT IMPLEMENTED NOW + Teid_t p_gw_teid_for_S5_S8_cp; ///< P-GW Tunnel Endpoint Identifier for the S5/S8 interface for the control plane. (For GTP-based S5/S8 only). + // NOT IMPLEMENTED NOW + ip_address_t p_gw_address_in_use_up; ///< The IP address of the P-GW currently used for sending user plane traffic. (For PMIP-based S5/S8 only) + // NOT NEEDED p_gw_gre_key_for_uplink_traffic_up ///< PDN GW assigned GRE Key for the S5/S8 interface for the user plane for uplink traffic. (For PMIP-based S5/S8 only) + ip_address_t s_gw_ip_address_for_S5_S8_cp; ///< S-GW IP address for the S5/S8 for the control plane signalling. + Teid_t s_gw_teid_for_S5_S8_cp; ///< S-GW Tunnel Endpoint Identifier for the S5/S8 control plane interface. (For GTP-based S5/S8 only). + ip_address_t s_gw_address_in_use_up; ///< The IP address of the S-GW currently used for sending user plane traffic. (For PMIP-based S5/S8 only) + // NOT NEEDED s_gw_gre_key_for_dl_traffic_up ///< user plane for downlink traffic. (For PMIP-based S5/S8 only) + ebi_t default_bearer; ///< Identifies the default bearer within the PDN connection by its EPS Bearer Id. (For PMIP based S5/S8.) - // eps bearers - hash_table_t *sgw_eps_bearers; + // eps bearers + hash_table_t *sgw_eps_bearers; } sgw_pdn_connection_t; @@ -198,8 +201,8 @@ typedef struct sgw_eps_bearer_context_information_s { // data entry for s11_bearer_context_information_hashtable // like this if needed in future, the split of S and P GW should be easier. typedef struct s_plus_p_gw_eps_bearer_context_information_s { - sgw_eps_bearer_context_information_t sgw_eps_bearer_context_information; - pgw_eps_bearer_context_information_t pgw_eps_bearer_context_information; + sgw_eps_bearer_context_information_t sgw_eps_bearer_context_information; + pgw_eps_bearer_context_information_t pgw_eps_bearer_context_information; } s_plus_p_gw_eps_bearer_context_information_t;