parent
b35febd9c4
commit
9ba4b317d2
|
@ -20,7 +20,7 @@
|
|||
/*******************************************************************************
|
||||
* This file had been created by gtp-tlv.py script v0.1.0
|
||||
* Please do not modify this file but regenerate it via script.
|
||||
* Created on: 2021-06-15 11:28:13.532535 by acetcom
|
||||
* Created on: 2021-10-16 16:32:20.655097 by acetcom
|
||||
* from 29274-g30.docx
|
||||
******************************************************************************/
|
||||
|
||||
|
@ -479,10 +479,10 @@ ogs_tlv_desc_t ogs_gtp_tlv_desc_s1udf_0 =
|
|||
|
||||
ogs_tlv_desc_t ogs_gtp_tlv_desc_delay_value_0 =
|
||||
{
|
||||
OGS_TLV_VAR_STR,
|
||||
OGS_TLV_UINT8,
|
||||
"Delay Value",
|
||||
OGS_GTP_DELAY_VALUE_TYPE,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
sizeof(ogs_gtp_tlv_delay_value_t),
|
||||
{ NULL }
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
/*******************************************************************************
|
||||
* This file had been created by gtp-tlv.py script v0.1.0
|
||||
* Please do not modify this file but regenerate it via script.
|
||||
* Created on: 2021-06-15 11:28:13.527903 by acetcom
|
||||
* Created on: 2021-10-16 16:32:20.650061 by acetcom
|
||||
* from 29274-g30.docx
|
||||
******************************************************************************/
|
||||
|
||||
|
@ -524,7 +524,7 @@ typedef ogs_tlv_octet_t ogs_gtp_tlv_tmsi_t;
|
|||
typedef ogs_tlv_octet_t ogs_gtp_tlv_global_cn_id_t;
|
||||
typedef ogs_tlv_octet_t ogs_gtp_tlv_s103pdf_t;
|
||||
typedef ogs_tlv_octet_t ogs_gtp_tlv_s1udf_t;
|
||||
typedef ogs_tlv_octet_t ogs_gtp_tlv_delay_value_t;
|
||||
typedef ogs_tlv_uint8_t ogs_gtp_tlv_delay_value_t;
|
||||
typedef ogs_tlv_uint32_t ogs_gtp_tlv_charging_id_t;
|
||||
typedef ogs_tlv_octet_t ogs_gtp_tlv_charging_characteristics_t;
|
||||
typedef ogs_tlv_octet_t ogs_gtp_tlv_trace_information_t;
|
||||
|
|
|
@ -375,6 +375,7 @@ for key in msg_list.keys():
|
|||
type_list["Recovery"]["size"] = 1 # Type : 3
|
||||
type_list["EBI"]["size"] = 1 # Type : 73
|
||||
type_list["RAT Type"]["size"] = 1 # Type : 82
|
||||
type_list["Delay Value"]["size"] = 1 # Type : 92
|
||||
type_list["Charging ID"]["size"] = 4 # Type : 94
|
||||
type_list["PDN Type"]["size"] = 1 # Type : 99
|
||||
type_list["PTI"]["size"] = 1 # Type : 100
|
||||
|
|
101
lib/gtp/types.h
101
lib/gtp/types.h
|
@ -164,41 +164,86 @@ typedef struct ogs_gtp_ambr_s {
|
|||
|
||||
/* 8.12 Indication */
|
||||
typedef struct ogs_gtp_indication_s {
|
||||
ED8(uint8_t daf:1;,
|
||||
uint8_t dtf:1;,
|
||||
uint8_t hi:1;,
|
||||
uint8_t dfi:1;,
|
||||
uint8_t oi:1;,
|
||||
uint8_t isrsi:1;,
|
||||
uint8_t israi:1;,
|
||||
uint8_t sgwci:1;)
|
||||
ED8(uint8_t dual_address_bearer_flag:1;,
|
||||
uint8_t direct_tunnel_flag:1;,
|
||||
uint8_t handover_indication:1;,
|
||||
uint8_t direct_forwarding_indication:1;,
|
||||
uint8_t operation_indication:1;,
|
||||
uint8_t idle_mode_signalling_reduction_supported_indication:1;,
|
||||
uint8_t idle_mode_signalling_reduction_activation_indication:1;,
|
||||
uint8_t sgw_change_indication:1;)
|
||||
|
||||
ED8(uint8_t sqci:1;,
|
||||
uint8_t uimsi:1;,
|
||||
uint8_t cfsi:1;,
|
||||
uint8_t crsi:1;,
|
||||
uint8_t p:1;,
|
||||
uint8_t pt:1;,
|
||||
uint8_t si:1;,
|
||||
uint8_t msv:1;)
|
||||
ED8(uint8_t subscribed_qos_change_indication:1;,
|
||||
uint8_t unauthenticated_imsi:1;,
|
||||
uint8_t change_f_teid_support_indication:1;,
|
||||
uint8_t change_reporting_support_indication:1;,
|
||||
uint8_t piggybacking_supported:1;,
|
||||
uint8_t s5_s8_protocol_type:1;,
|
||||
uint8_t scope_indication:1;,
|
||||
uint8_t ms_validated:1;)
|
||||
|
||||
ED8(uint8_t retloc:1;,
|
||||
uint8_t pbic:1;,
|
||||
uint8_t srni:1;,
|
||||
uint8_t s6af:1;,
|
||||
uint8_t s4af:1;,
|
||||
uint8_t mbmdt:1;,
|
||||
uint8_t israu:1;,
|
||||
uint8_t ccrsi:1;)
|
||||
ED8(uint8_t retrieve_location_indication_flag:1;,
|
||||
uint8_t propagate_bbai_information_change:1;,
|
||||
uint8_t sgw_restoration_needed_indication:1;,
|
||||
uint8_t static_ipv6_address_flag:1;,
|
||||
uint8_t static_ipv4_address_flag:1;,
|
||||
uint8_t management_based_mdt_allowed_flag:1;,
|
||||
uint8_t isr_is_activated_for_the_ue:1;,
|
||||
uint8_t csg_change_reporting_support_indication:1;)
|
||||
|
||||
ED8(uint8_t change_of_presence_reporting_area_information_indication:1;,
|
||||
uint8_t abnormal_release_of_radio_link:1;,
|
||||
uint8_t pdn_pause_off_indication:1;,
|
||||
uint8_t pdn_pause_on_indication:1;,
|
||||
uint8_t pdn_pause_support_indication:1;,
|
||||
uint8_t csfb_indication:1;,
|
||||
uint8_t change_of_location_information_indication:1;,
|
||||
uint8_t cs_to_ps_srvcc_indication:1;)
|
||||
|
||||
ED8(uint8_t nbifom_support_indication:1;,
|
||||
uint8_t ue_available_for_signalling_indication:1;,
|
||||
uint8_t delay_tolerant_connection_indication:1;,
|
||||
uint8_t buffered_dl_data_waiting_indication:1;,
|
||||
uint8_t pending_subscription_change_indication:1;,
|
||||
uint8_t p_cscf_restoration_indication:1;,
|
||||
uint8_t associate_oci_with_sgw_node_s_identity:1;,
|
||||
uint8_t associate_oci_with_pgw_node_s_identity:1;)
|
||||
|
||||
ED8(uint8_t release_over_any_access_indication:1;,
|
||||
uint8_t extended_pco_support_indication:1;,
|
||||
uint8_t control_plane_only:1;,
|
||||
uint8_t pending_mt_short_message_indication:1;,
|
||||
uint8_t s11_u_tunnel_flag:1;,
|
||||
uint8_t pending_network_initiated_pdn_connection_signalling_indication:1;,
|
||||
uint8_t ue_not_authorised_cause_code_support_indication:1;,
|
||||
uint8_t wlcp_pdn_connection_modification_support_indication:1;)
|
||||
|
||||
ED8(uint8_t _5gs_interworking_without_n26_indication:1;,
|
||||
uint8_t return_preferred_indication:1;,
|
||||
uint8_t _5gs_interworking_indication:1;,
|
||||
uint8_t extended_ebi_value_range_support_indication:1;,
|
||||
uint8_t lte_m_ue_indication:1;,
|
||||
uint8_t lte_m_rat_type_reporting_to_pgw_indication:1;,
|
||||
uint8_t enb_change_reporting_support_indication:1;,
|
||||
uint8_t triggering_sgsn_initiated_pdp_context_creation_modification_indication:1;)
|
||||
|
||||
ED8(uint8_t create_session_request_message_forwarded_indication:1;,
|
||||
uint8_t mt_edt_not_applicable:1;,
|
||||
uint8_t mt_edt_applicable:1;,
|
||||
uint8_t no_5gs_n26_mobility_indication:1;,
|
||||
uint8_t _5gc_not_restricted_support:1;,
|
||||
uint8_t _5gc_not_restricted_indication:1;,
|
||||
uint8_t _5g_srvcc_ho_indication:1;,
|
||||
uint8_t ethernet_pdn_support_indication:1;)
|
||||
|
||||
ED8(uint8_t spare1:1;,
|
||||
uint8_t spare2:1;,
|
||||
uint8_t spare3:1;,
|
||||
uint8_t spare4:1;,
|
||||
uint8_t spare5:1;,
|
||||
uint8_t csfbi:1;,
|
||||
uint8_t clii:1;,
|
||||
uint8_t cpsr:1;)
|
||||
uint8_t same_iwk_scef_selected_for_monitoring_event_indication:1;,
|
||||
uint8_t notify_source_enodeb_indication:1;,
|
||||
uint8_t indirect_data_forwarding_with_upf_indication:1;,
|
||||
uint8_t emergency_pdu_session_indication:1;)
|
||||
} __attribute__ ((packed)) ogs_gtp_indication_t;
|
||||
|
||||
/* 8.13 Protocol Configuration Options (PCO)
|
||||
|
|
|
@ -194,18 +194,20 @@ ogs_pkbuf_t *mme_s11_build_create_session_request(
|
|||
}
|
||||
|
||||
memset(&indication, 0, sizeof(ogs_gtp_indication_t));
|
||||
req->indication_flags.presence = 1;
|
||||
req->indication_flags.data = &indication;
|
||||
req->indication_flags.len = sizeof(ogs_gtp_indication_t);
|
||||
|
||||
indication.change_reporting_support_indication = 1;
|
||||
indication.enb_change_reporting_support_indication = 1;
|
||||
|
||||
if (req->pdn_type.u8 == OGS_PDU_SESSION_TYPE_IPV4V6) {
|
||||
indication.daf = 1;
|
||||
indication.dual_address_bearer_flag = 1;
|
||||
}
|
||||
|
||||
if (sess->request_type.value == OGS_NAS_EPS_REQUEST_TYPE_HANDOVER) {
|
||||
indication.hi = 1;
|
||||
}
|
||||
|
||||
if (indication.daf || indication.hi) {
|
||||
indication.handover_indication = 1;
|
||||
req->indication_flags.presence = 1;
|
||||
req->indication_flags.data = &indication;
|
||||
req->indication_flags.len = sizeof(ogs_gtp_indication_t);
|
||||
}
|
||||
|
||||
session->paa.session_type = req->pdn_type.u8;
|
||||
|
@ -318,7 +320,7 @@ ogs_pkbuf_t *mme_s11_build_modify_bearer_request(
|
|||
|
||||
if (sess->request_type.value == OGS_NAS_EPS_REQUEST_TYPE_HANDOVER) {
|
||||
memset(&indication, 0, sizeof(ogs_gtp_indication_t));
|
||||
indication.hi = 1;
|
||||
indication.handover_indication = 1;
|
||||
req->indication_flags.presence = 1;
|
||||
req->indication_flags.data = &indication;
|
||||
req->indication_flags.len = sizeof(ogs_gtp_indication_t);
|
||||
|
@ -353,6 +355,25 @@ ogs_pkbuf_t *mme_s11_build_modify_bearer_request(
|
|||
uli_buf, OGS_GTP_MAX_ULI_LEN);
|
||||
}
|
||||
|
||||
/*
|
||||
* 7.2.7 Modify Bearer Request
|
||||
*
|
||||
* Table 7.2.7-1: Information Elements in a Modify Bearer Request
|
||||
*
|
||||
* Delay Downlink Packet Nofication Request : Delay Value
|
||||
*
|
||||
* This IE shall be sent on the S11 interface for a UE triggered
|
||||
* Packet Notification Service Request and UE initiated Connection
|
||||
* Resume Request procedures. It shall contain the delay the SGW
|
||||
* shall apply between receiving downlink data and sending Downlink
|
||||
* Data Notification for all UEs served by that MME
|
||||
* (see clause 5.3.4.2 of 3GPP TS 23.401 [3]).
|
||||
*/
|
||||
if (mme_ue->nas_eps.type == MME_EPS_TYPE_SERVICE_REQUEST) {
|
||||
req->delay_downlink_packet_notification_request.presence = 1;
|
||||
req->delay_downlink_packet_notification_request.u8 = 0;
|
||||
}
|
||||
|
||||
gtp_message.h.type = type;
|
||||
return ogs_gtp_build_msg(>p_message);
|
||||
}
|
||||
|
@ -398,7 +419,7 @@ ogs_pkbuf_t *mme_s11_build_delete_session_request(
|
|||
uli_buf, OGS_GTP_MAX_ULI_LEN);
|
||||
|
||||
memset(&indication, 0, sizeof(ogs_gtp_indication_t));
|
||||
indication.oi = 1;
|
||||
indication.operation_indication = 1;
|
||||
req->indication_flags.presence = 1;
|
||||
req->indication_flags.data = &indication;
|
||||
req->indication_flags.len = sizeof(ogs_gtp_indication_t);
|
||||
|
@ -726,6 +747,9 @@ ogs_pkbuf_t *mme_s11_build_downlink_data_notification_ack(
|
|||
ack->cause.data = &cause;
|
||||
ack->cause.len = sizeof(cause);
|
||||
|
||||
ack->data_notification_delay.presence = 1;
|
||||
ack->data_notification_delay.u8 = 0;
|
||||
|
||||
gtp_message.h.type = type;
|
||||
return ogs_gtp_build_msg(>p_message);
|
||||
}
|
||||
|
|
|
@ -902,7 +902,7 @@ void sgwc_sxa_handle_session_modification_response(
|
|||
indication = gtp_req->indication_flags.data;
|
||||
}
|
||||
|
||||
if (indication && indication->hi) {
|
||||
if (indication && indication->handover_indication) {
|
||||
recv_message->h.type = OGS_GTP_MODIFY_BEARER_REQUEST_TYPE;
|
||||
recv_message->h.teid = sess->pgw_s5c_teid;
|
||||
|
||||
|
|
|
@ -440,7 +440,7 @@ void smf_s5c_handle_modify_bearer_request(
|
|||
indication = req->indication_flags.data;
|
||||
}
|
||||
|
||||
if (indication && indication->hi) {
|
||||
if (indication && indication->handover_indication) {
|
||||
ogs_assert(sess->session.name);
|
||||
wlan_sess = smf_sess_find_by_apn(
|
||||
smf_ue, sess->session.name, OGS_GTP_RAT_TYPE_WLAN);
|
||||
|
|
|
@ -59,7 +59,7 @@ ogs_pkbuf_t *test_s2b_build_create_session_request(
|
|||
|
||||
if (handover_ind == true) {
|
||||
memset(&indication, 0, sizeof(ogs_gtp_indication_t));
|
||||
indication.hi = 1;
|
||||
indication.handover_indication = 1;
|
||||
req->indication_flags.presence = 1;
|
||||
req->indication_flags.data = &indication;
|
||||
req->indication_flags.len = sizeof(ogs_gtp_indication_t);
|
||||
|
|
Loading…
Reference in New Issue