/* * Copyright (C) 2019 by Sukchan Lee * * This file is part of Open5GS. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ /******************************************************************************* * 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 * from 29274-g30.docx ******************************************************************************/ #include "ogs-gtp.h" ogs_tlv_desc_t ogs_gtp_tlv_desc_imsi_0 = { OGS_TLV_VAR_STR, "IMSI", OGS_GTP_IMSI_TYPE, 0, 0, sizeof(ogs_gtp_tlv_imsi_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_cause_0 = { OGS_TLV_VAR_STR, "Cause", OGS_GTP_CAUSE_TYPE, 0, 0, sizeof(ogs_gtp_tlv_cause_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_recovery_0 = { OGS_TLV_UINT8, "Recovery", OGS_GTP_RECOVERY_TYPE, 1, 0, sizeof(ogs_gtp_tlv_recovery_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_stn_sr_0 = { OGS_TLV_VAR_STR, "STN-SR", OGS_GTP_STN_SR_TYPE, 0, 0, sizeof(ogs_gtp_tlv_stn_sr_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_apn_0 = { OGS_TLV_VAR_STR, "APN", OGS_GTP_APN_TYPE, 0, 0, sizeof(ogs_gtp_tlv_apn_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_ambr_0 = { OGS_TLV_VAR_STR, "AMBR", OGS_GTP_AMBR_TYPE, 0, 0, sizeof(ogs_gtp_tlv_ambr_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_ebi_0 = { OGS_TLV_UINT8, "EBI", OGS_GTP_EBI_TYPE, 1, 0, sizeof(ogs_gtp_tlv_ebi_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_ebi_1 = { OGS_TLV_UINT8, "EBI", OGS_GTP_EBI_TYPE, 1, 1, sizeof(ogs_gtp_tlv_ebi_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_ip_address_0 = { OGS_TLV_VAR_STR, "IP Address", OGS_GTP_IP_ADDRESS_TYPE, 0, 0, sizeof(ogs_gtp_tlv_ip_address_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_ip_address_1 = { OGS_TLV_VAR_STR, "IP Address", OGS_GTP_IP_ADDRESS_TYPE, 0, 1, sizeof(ogs_gtp_tlv_ip_address_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_ip_address_2 = { OGS_TLV_VAR_STR, "IP Address", OGS_GTP_IP_ADDRESS_TYPE, 0, 2, sizeof(ogs_gtp_tlv_ip_address_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_ip_address_3 = { OGS_TLV_VAR_STR, "IP Address", OGS_GTP_IP_ADDRESS_TYPE, 0, 3, sizeof(ogs_gtp_tlv_ip_address_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_mei_0 = { OGS_TLV_VAR_STR, "MEI", OGS_GTP_MEI_TYPE, 0, 0, sizeof(ogs_gtp_tlv_mei_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_msisdn_0 = { OGS_TLV_VAR_STR, "MSISDN", OGS_GTP_MSISDN_TYPE, 0, 0, sizeof(ogs_gtp_tlv_msisdn_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_indication_0 = { OGS_TLV_VAR_STR, "Indication", OGS_GTP_INDICATION_TYPE, 0, 0, sizeof(ogs_gtp_tlv_indication_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_pco_0 = { OGS_TLV_VAR_STR, "PCO", OGS_GTP_PCO_TYPE, 0, 0, sizeof(ogs_gtp_tlv_pco_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_paa_0 = { OGS_TLV_VAR_STR, "PAA", OGS_GTP_PAA_TYPE, 0, 0, sizeof(ogs_gtp_tlv_paa_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_bearer_qos_0 = { OGS_TLV_VAR_STR, "Bearer QoS", OGS_GTP_BEARER_QOS_TYPE, 0, 0, sizeof(ogs_gtp_tlv_bearer_qos_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_flow_qos_0 = { OGS_TLV_VAR_STR, "Flow QoS", OGS_GTP_FLOW_QOS_TYPE, 0, 0, sizeof(ogs_gtp_tlv_flow_qos_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_rat_type_0 = { OGS_TLV_UINT8, "RAT Type", OGS_GTP_RAT_TYPE_TYPE, 1, 0, sizeof(ogs_gtp_tlv_rat_type_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_serving_network_0 = { OGS_TLV_VAR_STR, "Serving Network", OGS_GTP_SERVING_NETWORK_TYPE, 0, 0, sizeof(ogs_gtp_tlv_serving_network_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_bearer_tft_0 = { OGS_TLV_VAR_STR, "Bearer TFT", OGS_GTP_BEARER_TFT_TYPE, 0, 0, sizeof(ogs_gtp_tlv_bearer_tft_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_tad_0 = { OGS_TLV_VAR_STR, "TAD", OGS_GTP_TAD_TYPE, 0, 0, sizeof(ogs_gtp_tlv_tad_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_uli_0 = { OGS_TLV_VAR_STR, "ULI", OGS_GTP_ULI_TYPE, 0, 0, sizeof(ogs_gtp_tlv_uli_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_uli_1 = { OGS_TLV_VAR_STR, "ULI", OGS_GTP_ULI_TYPE, 0, 1, sizeof(ogs_gtp_tlv_uli_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_f_teid_0 = { OGS_TLV_VAR_STR, "F-TEID", OGS_GTP_F_TEID_TYPE, 0, 0, sizeof(ogs_gtp_tlv_f_teid_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_f_teid_1 = { OGS_TLV_VAR_STR, "F-TEID", OGS_GTP_F_TEID_TYPE, 0, 1, sizeof(ogs_gtp_tlv_f_teid_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_f_teid_2 = { OGS_TLV_VAR_STR, "F-TEID", OGS_GTP_F_TEID_TYPE, 0, 2, sizeof(ogs_gtp_tlv_f_teid_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_f_teid_3 = { OGS_TLV_VAR_STR, "F-TEID", OGS_GTP_F_TEID_TYPE, 0, 3, sizeof(ogs_gtp_tlv_f_teid_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_f_teid_4 = { OGS_TLV_VAR_STR, "F-TEID", OGS_GTP_F_TEID_TYPE, 0, 4, sizeof(ogs_gtp_tlv_f_teid_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_f_teid_5 = { OGS_TLV_VAR_STR, "F-TEID", OGS_GTP_F_TEID_TYPE, 0, 5, sizeof(ogs_gtp_tlv_f_teid_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_f_teid_6 = { OGS_TLV_VAR_STR, "F-TEID", OGS_GTP_F_TEID_TYPE, 0, 6, sizeof(ogs_gtp_tlv_f_teid_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_f_teid_7 = { OGS_TLV_VAR_STR, "F-TEID", OGS_GTP_F_TEID_TYPE, 0, 7, sizeof(ogs_gtp_tlv_f_teid_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_f_teid_8 = { OGS_TLV_VAR_STR, "F-TEID", OGS_GTP_F_TEID_TYPE, 0, 8, sizeof(ogs_gtp_tlv_f_teid_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_f_teid_9 = { OGS_TLV_VAR_STR, "F-TEID", OGS_GTP_F_TEID_TYPE, 0, 9, sizeof(ogs_gtp_tlv_f_teid_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_f_teid_10 = { OGS_TLV_VAR_STR, "F-TEID", OGS_GTP_F_TEID_TYPE, 0, 10, sizeof(ogs_gtp_tlv_f_teid_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_f_teid_11 = { OGS_TLV_VAR_STR, "F-TEID", OGS_GTP_F_TEID_TYPE, 0, 11, sizeof(ogs_gtp_tlv_f_teid_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_tmsi_0 = { OGS_TLV_VAR_STR, "TMSI", OGS_GTP_TMSI_TYPE, 0, 0, sizeof(ogs_gtp_tlv_tmsi_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_global_cn_id_0 = { OGS_TLV_VAR_STR, "Global CN-Id", OGS_GTP_GLOBAL_CN_ID_TYPE, 0, 0, sizeof(ogs_gtp_tlv_global_cn_id_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_s103pdf_0 = { OGS_TLV_VAR_STR, "S103PDF", OGS_GTP_S103PDF_TYPE, 0, 0, sizeof(ogs_gtp_tlv_s103pdf_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_s1udf_0 = { OGS_TLV_VAR_STR, "S1UDF", OGS_GTP_S1UDF_TYPE, 0, 0, sizeof(ogs_gtp_tlv_s1udf_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_delay_value_0 = { OGS_TLV_VAR_STR, "Delay Value", OGS_GTP_DELAY_VALUE_TYPE, 0, 0, sizeof(ogs_gtp_tlv_delay_value_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_charging_id_0 = { OGS_TLV_UINT32, "Charging ID", OGS_GTP_CHARGING_ID_TYPE, 4, 0, sizeof(ogs_gtp_tlv_charging_id_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_charging_characteristics_0 = { OGS_TLV_VAR_STR, "Charging Characteristics", OGS_GTP_CHARGING_CHARACTERISTICS_TYPE, 0, 0, sizeof(ogs_gtp_tlv_charging_characteristics_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_trace_information_0 = { OGS_TLV_VAR_STR, "Trace Information", OGS_GTP_TRACE_INFORMATION_TYPE, 0, 0, sizeof(ogs_gtp_tlv_trace_information_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_bearer_flags_0 = { OGS_TLV_VAR_STR, "Bearer Flags", OGS_GTP_BEARER_FLAGS_TYPE, 0, 0, sizeof(ogs_gtp_tlv_bearer_flags_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_pdn_type_0 = { OGS_TLV_UINT8, "PDN Type", OGS_GTP_PDN_TYPE_TYPE, 1, 0, sizeof(ogs_gtp_tlv_pdn_type_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_pti_0 = { OGS_TLV_UINT8, "PTI", OGS_GTP_PTI_TYPE, 1, 0, sizeof(ogs_gtp_tlv_pti_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_mm_context_0 = { OGS_TLV_VAR_STR, "MM Context", OGS_GTP_MM_CONTEXT_TYPE, 0, 0, sizeof(ogs_gtp_tlv_mm_context_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_pdu_numbers_0 = { OGS_TLV_VAR_STR, "PDU Numbers", OGS_GTP_PDU_NUMBERS_TYPE, 0, 0, sizeof(ogs_gtp_tlv_pdu_numbers_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_p_tmsi_0 = { OGS_TLV_VAR_STR, "P-TMSI", OGS_GTP_P_TMSI_TYPE, 0, 0, sizeof(ogs_gtp_tlv_p_tmsi_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_p_tmsi_signature_0 = { OGS_TLV_VAR_STR, "P-TMSI Signature", OGS_GTP_P_TMSI_SIGNATURE_TYPE, 0, 0, sizeof(ogs_gtp_tlv_p_tmsi_signature_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_hop_counter_0 = { OGS_TLV_VAR_STR, "Hop Counter", OGS_GTP_HOP_COUNTER_TYPE, 0, 0, sizeof(ogs_gtp_tlv_hop_counter_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_ue_time_zone_0 = { OGS_TLV_VAR_STR, "UE Time Zone", OGS_GTP_UE_TIME_ZONE_TYPE, 0, 0, sizeof(ogs_gtp_tlv_ue_time_zone_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_trace_reference_0 = { OGS_TLV_VAR_STR, "Trace Reference", OGS_GTP_TRACE_REFERENCE_TYPE, 0, 0, sizeof(ogs_gtp_tlv_trace_reference_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_complete_request_message_0 = { OGS_TLV_VAR_STR, "Complete Request Message", OGS_GTP_COMPLETE_REQUEST_MESSAGE_TYPE, 0, 0, sizeof(ogs_gtp_tlv_complete_request_message_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_guti_0 = { OGS_TLV_VAR_STR, "GUTI", OGS_GTP_GUTI_TYPE, 0, 0, sizeof(ogs_gtp_tlv_guti_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_f_container_0 = { OGS_TLV_VAR_STR, "F-Container", OGS_GTP_F_CONTAINER_TYPE, 0, 0, sizeof(ogs_gtp_tlv_f_container_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_f_cause_0 = { OGS_TLV_VAR_STR, "F-Cause", OGS_GTP_F_CAUSE_TYPE, 0, 0, sizeof(ogs_gtp_tlv_f_cause_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_plmn_id_0 = { OGS_TLV_VAR_STR, "PLMN ID", OGS_GTP_PLMN_ID_TYPE, 0, 0, sizeof(ogs_gtp_tlv_plmn_id_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_target_identification_0 = { OGS_TLV_VAR_STR, "Target Identification", OGS_GTP_TARGET_IDENTIFICATION_TYPE, 0, 0, sizeof(ogs_gtp_tlv_target_identification_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_packet_flow_id_0 = { OGS_TLV_VAR_STR, "Packet Flow ID", OGS_GTP_PACKET_FLOW_ID_TYPE, 0, 0, sizeof(ogs_gtp_tlv_packet_flow_id_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_rab_context_0 = { OGS_TLV_VAR_STR, "RAB Context", OGS_GTP_RAB_CONTEXT_TYPE, 0, 0, sizeof(ogs_gtp_tlv_rab_context_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_source_rnc_pdcp_context_info_0 = { OGS_TLV_VAR_STR, "Source RNC PDCP Context Info", OGS_GTP_SOURCE_RNC_PDCP_CONTEXT_INFO_TYPE, 0, 0, sizeof(ogs_gtp_tlv_source_rnc_pdcp_context_info_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_port_number_0 = { OGS_TLV_UINT16, "Port Number", OGS_GTP_PORT_NUMBER_TYPE, 2, 0, sizeof(ogs_gtp_tlv_port_number_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_port_number_1 = { OGS_TLV_UINT16, "Port Number", OGS_GTP_PORT_NUMBER_TYPE, 2, 1, sizeof(ogs_gtp_tlv_port_number_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_port_number_2 = { OGS_TLV_UINT16, "Port Number", OGS_GTP_PORT_NUMBER_TYPE, 2, 2, sizeof(ogs_gtp_tlv_port_number_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_apn_restriction_0 = { OGS_TLV_UINT8, "APN Restriction", OGS_GTP_APN_RESTRICTION_TYPE, 1, 0, sizeof(ogs_gtp_tlv_apn_restriction_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_selection_mode_0 = { OGS_TLV_UINT8, "Selection Mode", OGS_GTP_SELECTION_MODE_TYPE, 1, 0, sizeof(ogs_gtp_tlv_selection_mode_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_source_identification_0 = { OGS_TLV_VAR_STR, "Source Identification", OGS_GTP_SOURCE_IDENTIFICATION_TYPE, 0, 0, sizeof(ogs_gtp_tlv_source_identification_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_change_reporting_action_0 = { OGS_TLV_VAR_STR, "Change Reporting Action", OGS_GTP_CHANGE_REPORTING_ACTION_TYPE, 0, 0, sizeof(ogs_gtp_tlv_change_reporting_action_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_fq_csid_0 = { OGS_TLV_VAR_STR, "FQ-CSID", OGS_GTP_FQ_CSID_TYPE, 0, 0, sizeof(ogs_gtp_tlv_fq_csid_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_fq_csid_1 = { OGS_TLV_VAR_STR, "FQ-CSID", OGS_GTP_FQ_CSID_TYPE, 0, 1, sizeof(ogs_gtp_tlv_fq_csid_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_fq_csid_2 = { OGS_TLV_VAR_STR, "FQ-CSID", OGS_GTP_FQ_CSID_TYPE, 0, 2, sizeof(ogs_gtp_tlv_fq_csid_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_fq_csid_3 = { OGS_TLV_VAR_STR, "FQ-CSID", OGS_GTP_FQ_CSID_TYPE, 0, 3, sizeof(ogs_gtp_tlv_fq_csid_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_channel_needed_0 = { OGS_TLV_VAR_STR, "Channel needed", OGS_GTP_CHANNEL_NEEDED_TYPE, 0, 0, sizeof(ogs_gtp_tlv_channel_needed_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_emlpp_priority_0 = { OGS_TLV_VAR_STR, "eMLPP Priority", OGS_GTP_EMLPP_PRIORITY_TYPE, 0, 0, sizeof(ogs_gtp_tlv_emlpp_priority_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_node_type_0 = { OGS_TLV_UINT8, "Node Type", OGS_GTP_NODE_TYPE_TYPE, 1, 0, sizeof(ogs_gtp_tlv_node_type_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_fqdn_0 = { OGS_TLV_VAR_STR, "FQDN", OGS_GTP_FQDN_TYPE, 0, 0, sizeof(ogs_gtp_tlv_fqdn_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_fqdn_1 = { OGS_TLV_VAR_STR, "FQDN", OGS_GTP_FQDN_TYPE, 0, 1, sizeof(ogs_gtp_tlv_fqdn_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_ti_0 = { OGS_TLV_VAR_STR, "TI", OGS_GTP_TI_TYPE, 0, 0, sizeof(ogs_gtp_tlv_ti_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_mbms_session_duration_0 = { OGS_TLV_VAR_STR, "MBMS Session Duration", OGS_GTP_MBMS_SESSION_DURATION_TYPE, 0, 0, sizeof(ogs_gtp_tlv_mbms_session_duration_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_mbms_service_area_0 = { OGS_TLV_VAR_STR, "MBMS Service Area", OGS_GTP_MBMS_SERVICE_AREA_TYPE, 0, 0, sizeof(ogs_gtp_tlv_mbms_service_area_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_mbms_session_identifier_0 = { OGS_TLV_VAR_STR, "MBMS Session Identifier", OGS_GTP_MBMS_SESSION_IDENTIFIER_TYPE, 0, 0, sizeof(ogs_gtp_tlv_mbms_session_identifier_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_mbms_flow_identifier_0 = { OGS_TLV_VAR_STR, "MBMS Flow Identifier", OGS_GTP_MBMS_FLOW_IDENTIFIER_TYPE, 0, 0, sizeof(ogs_gtp_tlv_mbms_flow_identifier_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_mbms_ip_multicast_distribution_0 = { OGS_TLV_VAR_STR, "MBMS IP Multicast Distribution", OGS_GTP_MBMS_IP_MULTICAST_DISTRIBUTION_TYPE, 0, 0, sizeof(ogs_gtp_tlv_mbms_ip_multicast_distribution_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_mbms_distribution_acknowledge_0 = { OGS_TLV_VAR_STR, "MBMS Distribution Acknowledge", OGS_GTP_MBMS_DISTRIBUTION_ACKNOWLEDGE_TYPE, 0, 0, sizeof(ogs_gtp_tlv_mbms_distribution_acknowledge_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_rfsp_index_0 = { OGS_TLV_VAR_STR, "RFSP Index", OGS_GTP_RFSP_INDEX_TYPE, 0, 0, sizeof(ogs_gtp_tlv_rfsp_index_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_uci_0 = { OGS_TLV_VAR_STR, "UCI", OGS_GTP_UCI_TYPE, 0, 0, sizeof(ogs_gtp_tlv_uci_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_csg_information_reporting_action_0 = { OGS_TLV_VAR_STR, "CSG Information Reporting Action", OGS_GTP_CSG_INFORMATION_REPORTING_ACTION_TYPE, 0, 0, sizeof(ogs_gtp_tlv_csg_information_reporting_action_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_csg_id_0 = { OGS_TLV_VAR_STR, "CSG ID", OGS_GTP_CSG_ID_TYPE, 0, 0, sizeof(ogs_gtp_tlv_csg_id_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_cmi_0 = { OGS_TLV_VAR_STR, "CMI", OGS_GTP_CMI_TYPE, 0, 0, sizeof(ogs_gtp_tlv_cmi_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_service_indicator_0 = { OGS_TLV_VAR_STR, "Service indicator", OGS_GTP_SERVICE_INDICATOR_TYPE, 0, 0, sizeof(ogs_gtp_tlv_service_indicator_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_detach_type_0 = { OGS_TLV_VAR_STR, "Detach Type", OGS_GTP_DETACH_TYPE_TYPE, 0, 0, sizeof(ogs_gtp_tlv_detach_type_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_ldn_0 = { OGS_TLV_VAR_STR, "LDN", OGS_GTP_LDN_TYPE, 0, 0, sizeof(ogs_gtp_tlv_ldn_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_ldn_1 = { OGS_TLV_VAR_STR, "LDN", OGS_GTP_LDN_TYPE, 0, 1, sizeof(ogs_gtp_tlv_ldn_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_ldn_2 = { OGS_TLV_VAR_STR, "LDN", OGS_GTP_LDN_TYPE, 0, 2, sizeof(ogs_gtp_tlv_ldn_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_ldn_3 = { OGS_TLV_VAR_STR, "LDN", OGS_GTP_LDN_TYPE, 0, 3, sizeof(ogs_gtp_tlv_ldn_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_node_features_0 = { OGS_TLV_UINT8, "Node Features", OGS_GTP_NODE_FEATURES_TYPE, 1, 0, sizeof(ogs_gtp_tlv_node_features_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_mbms_time_to_data_transfer_0 = { OGS_TLV_VAR_STR, "MBMS Time to Data Transfer", OGS_GTP_MBMS_TIME_TO_DATA_TRANSFER_TYPE, 0, 0, sizeof(ogs_gtp_tlv_mbms_time_to_data_transfer_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_throttling_0 = { OGS_TLV_VAR_STR, "Throttling", OGS_GTP_THROTTLING_TYPE, 0, 0, sizeof(ogs_gtp_tlv_throttling_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_arp_0 = { OGS_TLV_VAR_STR, "ARP", OGS_GTP_ARP_TYPE, 0, 0, sizeof(ogs_gtp_tlv_arp_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_epc_timer_0 = { OGS_TLV_VAR_STR, "EPC Timer", OGS_GTP_EPC_TIMER_TYPE, 0, 0, sizeof(ogs_gtp_tlv_epc_timer_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_signalling_priority_indication_0 = { OGS_TLV_VAR_STR, "Signalling Priority Indication", OGS_GTP_SIGNALLING_PRIORITY_INDICATION_TYPE, 0, 0, sizeof(ogs_gtp_tlv_signalling_priority_indication_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_tmgi_0 = { OGS_TLV_VAR_STR, "TMGI", OGS_GTP_TMGI_TYPE, 0, 0, sizeof(ogs_gtp_tlv_tmgi_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_additional_mm_context_for_srvcc_0 = { OGS_TLV_VAR_STR, "Additional MM context for SRVCC", OGS_GTP_ADDITIONAL_MM_CONTEXT_FOR_SRVCC_TYPE, 0, 0, sizeof(ogs_gtp_tlv_additional_mm_context_for_srvcc_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_additional_flags_for_srvcc_0 = { OGS_TLV_VAR_STR, "Additional flags for SRVCC", OGS_GTP_ADDITIONAL_FLAGS_FOR_SRVCC_TYPE, 0, 0, sizeof(ogs_gtp_tlv_additional_flags_for_srvcc_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_mdt_configuration_0 = { OGS_TLV_VAR_STR, "MDT Configuration", OGS_GTP_MDT_CONFIGURATION_TYPE, 0, 0, sizeof(ogs_gtp_tlv_mdt_configuration_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_apco_0 = { OGS_TLV_VAR_STR, "APCO", OGS_GTP_APCO_TYPE, 0, 0, sizeof(ogs_gtp_tlv_apco_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_absolute_time_of_mbms_data_transfer_0 = { OGS_TLV_VAR_STR, "Absolute Time of MBMS Data Transfer", OGS_GTP_ABSOLUTE_TIME_OF_MBMS_DATA_TRANSFER_TYPE, 0, 0, sizeof(ogs_gtp_tlv_absolute_time_of_mbms_data_transfer_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_enb_information_reporting_0 = { OGS_TLV_VAR_STR, "eNB Information Reporting", OGS_GTP_ENB_INFORMATION_REPORTING_TYPE, 0, 0, sizeof(ogs_gtp_tlv_enb_information_reporting_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_ip4cp_0 = { OGS_TLV_VAR_STR, "IP4CP", OGS_GTP_IP4CP_TYPE, 0, 0, sizeof(ogs_gtp_tlv_ip4cp_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_change_to_report_flags_0 = { OGS_TLV_VAR_STR, "Change to Report Flags", OGS_GTP_CHANGE_TO_REPORT_FLAGS_TYPE, 0, 0, sizeof(ogs_gtp_tlv_change_to_report_flags_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_action_indication_0 = { OGS_TLV_VAR_STR, "Action Indication", OGS_GTP_ACTION_INDICATION_TYPE, 0, 0, sizeof(ogs_gtp_tlv_action_indication_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_twan_identifier_0 = { OGS_TLV_VAR_STR, "TWAN Identifier", OGS_GTP_TWAN_IDENTIFIER_TYPE, 0, 0, sizeof(ogs_gtp_tlv_twan_identifier_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_twan_identifier_1 = { OGS_TLV_VAR_STR, "TWAN Identifier", OGS_GTP_TWAN_IDENTIFIER_TYPE, 0, 1, sizeof(ogs_gtp_tlv_twan_identifier_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_uli_timestamp_0 = { OGS_TLV_VAR_STR, "ULI Timestamp", OGS_GTP_ULI_TIMESTAMP_TYPE, 0, 0, sizeof(ogs_gtp_tlv_uli_timestamp_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_mbms_flags_0 = { OGS_TLV_VAR_STR, "MBMS Flags", OGS_GTP_MBMS_FLAGS_TYPE, 0, 0, sizeof(ogs_gtp_tlv_mbms_flags_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_ran_nas_cause_0 = { OGS_TLV_VAR_STR, "RAN/NAS Cause", OGS_GTP_RAN_NAS_CAUSE_TYPE, 0, 0, sizeof(ogs_gtp_tlv_ran_nas_cause_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_cn_operator_selection_entity_0 = { OGS_TLV_VAR_STR, "CN Operator Selection Entity", OGS_GTP_CN_OPERATOR_SELECTION_ENTITY_TYPE, 0, 0, sizeof(ogs_gtp_tlv_cn_operator_selection_entity_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_twmi_0 = { OGS_TLV_VAR_STR, "TWMI", OGS_GTP_TWMI_TYPE, 0, 0, sizeof(ogs_gtp_tlv_twmi_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_node_number_0 = { OGS_TLV_VAR_STR, "Node Number", OGS_GTP_NODE_NUMBER_TYPE, 0, 0, sizeof(ogs_gtp_tlv_node_number_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_node_identifier_0 = { OGS_TLV_VAR_STR, "Node Identifier", OGS_GTP_NODE_IDENTIFIER_TYPE, 0, 0, sizeof(ogs_gtp_tlv_node_identifier_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_presence_reporting_area_action_0 = { OGS_TLV_VAR_STR, "Presence Reporting Area Action", OGS_GTP_PRESENCE_REPORTING_AREA_ACTION_TYPE, 0, 0, sizeof(ogs_gtp_tlv_presence_reporting_area_action_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_presence_reporting_area_information_0 = { OGS_TLV_VAR_STR, "Presence Reporting Area Information", OGS_GTP_PRESENCE_REPORTING_AREA_INFORMATION_TYPE, 0, 0, sizeof(ogs_gtp_tlv_presence_reporting_area_information_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_twan_identifier_timestamp_0 = { OGS_TLV_VAR_STR, "TWAN Identifier Timestamp", OGS_GTP_TWAN_IDENTIFIER_TIMESTAMP_TYPE, 0, 0, sizeof(ogs_gtp_tlv_twan_identifier_timestamp_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_twan_identifier_timestamp_1 = { OGS_TLV_VAR_STR, "TWAN Identifier Timestamp", OGS_GTP_TWAN_IDENTIFIER_TIMESTAMP_TYPE, 0, 1, sizeof(ogs_gtp_tlv_twan_identifier_timestamp_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_metric_0 = { OGS_TLV_VAR_STR, "Metric", OGS_GTP_METRIC_TYPE, 0, 0, sizeof(ogs_gtp_tlv_metric_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_sequence_number_0 = { OGS_TLV_VAR_STR, "Sequence Number", OGS_GTP_SEQUENCE_NUMBER_TYPE, 0, 0, sizeof(ogs_gtp_tlv_sequence_number_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_apn_and_relative_capacity_0 = { OGS_TLV_VAR_STR, "APN and Relative Capacity", OGS_GTP_APN_AND_RELATIVE_CAPACITY_TYPE, 0, 0, sizeof(ogs_gtp_tlv_apn_and_relative_capacity_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_wlan_offloadability_indication_0 = { OGS_TLV_VAR_STR, "WLAN Offloadability Indication", OGS_GTP_WLAN_OFFLOADABILITY_INDICATION_TYPE, 0, 0, sizeof(ogs_gtp_tlv_wlan_offloadability_indication_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_paging_and_service_information_0 = { OGS_TLV_VAR_STR, "Paging and Service Information", OGS_GTP_PAGING_AND_SERVICE_INFORMATION_TYPE, 0, 0, sizeof(ogs_gtp_tlv_paging_and_service_information_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_integer_number_0 = { OGS_TLV_VAR_STR, "Integer Number", OGS_GTP_INTEGER_NUMBER_TYPE, 0, 0, sizeof(ogs_gtp_tlv_integer_number_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_millisecond_time_stamp_0 = { OGS_TLV_VAR_STR, "Millisecond Time Stamp", OGS_GTP_MILLISECOND_TIME_STAMP_TYPE, 0, 0, sizeof(ogs_gtp_tlv_millisecond_time_stamp_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_monitoring_event_information_0 = { OGS_TLV_VAR_STR, "Monitoring Event Information", OGS_GTP_MONITORING_EVENT_INFORMATION_TYPE, 0, 0, sizeof(ogs_gtp_tlv_monitoring_event_information_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_ecgi_list_0 = { OGS_TLV_VAR_STR, "ECGI List", OGS_GTP_ECGI_LIST_TYPE, 0, 0, sizeof(ogs_gtp_tlv_ecgi_list_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_remote_user_id_0 = { OGS_TLV_VAR_STR, "Remote User ID", OGS_GTP_REMOTE_USER_ID_TYPE, 0, 0, sizeof(ogs_gtp_tlv_remote_user_id_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_remote_ue_ip_information_0 = { OGS_TLV_VAR_STR, "Remote UE IP Information", OGS_GTP_REMOTE_UE_IP_INFORMATION_TYPE, 0, 0, sizeof(ogs_gtp_tlv_remote_ue_ip_information_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_ciot_optimizations_support_indication_0 = { OGS_TLV_VAR_STR, "CIoT Optimizations Support Indication", OGS_GTP_CIOT_OPTIMIZATIONS_SUPPORT_INDICATION_TYPE, 0, 0, sizeof(ogs_gtp_tlv_ciot_optimizations_support_indication_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_header_compression_configuration_0 = { OGS_TLV_VAR_STR, "Header Compression Configuration", OGS_GTP_HEADER_COMPRESSION_CONFIGURATION_TYPE, 0, 0, sizeof(ogs_gtp_tlv_header_compression_configuration_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_epco_0 = { OGS_TLV_VAR_STR, "ePCO", OGS_GTP_EPCO_TYPE, 0, 0, sizeof(ogs_gtp_tlv_epco_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_serving_plmn_rate_control_0 = { OGS_TLV_VAR_STR, "Serving PLMN Rate Control", OGS_GTP_SERVING_PLMN_RATE_CONTROL_TYPE, 0, 0, sizeof(ogs_gtp_tlv_serving_plmn_rate_control_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_counter_0 = { OGS_TLV_VAR_STR, "Counter", OGS_GTP_COUNTER_TYPE, 0, 0, sizeof(ogs_gtp_tlv_counter_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_mapped_ue_usage_type_0 = { OGS_TLV_VAR_STR, "Mapped UE Usage Type", OGS_GTP_MAPPED_UE_USAGE_TYPE_TYPE, 0, 0, sizeof(ogs_gtp_tlv_mapped_ue_usage_type_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_secondary_rat_usage_data_report_0 = { OGS_TLV_VAR_STR, "Secondary RAT Usage Data Report", OGS_GTP_SECONDARY_RAT_USAGE_DATA_REPORT_TYPE, 0, 0, sizeof(ogs_gtp_tlv_secondary_rat_usage_data_report_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_up_function_selection_indication_flags_0 = { OGS_TLV_VAR_STR, "UP Function Selection Indication Flags", OGS_GTP_UP_FUNCTION_SELECTION_INDICATION_FLAGS_TYPE, 0, 0, sizeof(ogs_gtp_tlv_up_function_selection_indication_flags_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_maximum_packet_loss_rate_0 = { OGS_TLV_VAR_STR, "Maximum Packet Loss Rate", OGS_GTP_MAXIMUM_PACKET_LOSS_RATE_TYPE, 0, 0, sizeof(ogs_gtp_tlv_maximum_packet_loss_rate_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_apn_rate_control_status_0 = { OGS_TLV_VAR_STR, "APN Rate Control Status", OGS_GTP_APN_RATE_CONTROL_STATUS_TYPE, 0, 0, sizeof(ogs_gtp_tlv_apn_rate_control_status_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_extended_trace_information_0 = { OGS_TLV_VAR_STR, "Extended Trace Information", OGS_GTP_EXTENDED_TRACE_INFORMATION_TYPE, 0, 0, sizeof(ogs_gtp_tlv_extended_trace_information_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_monitoring_event_extension_information_0 = { OGS_TLV_VAR_STR, "Monitoring Event Extension Information", OGS_GTP_MONITORING_EVENT_EXTENSION_INFORMATION_TYPE, 0, 0, sizeof(ogs_gtp_tlv_monitoring_event_extension_information_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_additional_rrm_policy_index_0 = { OGS_TLV_VAR_STR, "Additional RRM Policy Index", OGS_GTP_ADDITIONAL_RRM_POLICY_INDEX_TYPE, 0, 0, sizeof(ogs_gtp_tlv_additional_rrm_policy_index_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_services_authorized_0 = { OGS_TLV_VAR_STR, "Services Authorized", OGS_GTP_SERVICES_AUTHORIZED_TYPE, 0, 0, sizeof(ogs_gtp_tlv_services_authorized_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_services_authorized_1 = { OGS_TLV_VAR_STR, "Services Authorized", OGS_GTP_SERVICES_AUTHORIZED_TYPE, 0, 1, sizeof(ogs_gtp_tlv_services_authorized_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_bit_rate_0 = { OGS_TLV_VAR_STR, "Bit Rate", OGS_GTP_BIT_RATE_TYPE, 0, 0, sizeof(ogs_gtp_tlv_bit_rate_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_bit_rate_1 = { OGS_TLV_VAR_STR, "Bit Rate", OGS_GTP_BIT_RATE_TYPE, 0, 1, sizeof(ogs_gtp_tlv_bit_rate_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_pc5_qos_flow_0 = { OGS_TLV_VAR_STR, "PC5 QoS Flow", OGS_GTP_PC5_QOS_FLOW_TYPE, 0, 0, sizeof(ogs_gtp_tlv_pc5_qos_flow_t), { NULL } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_pc5_qos_parameters_0 = { OGS_TLV_COMPOUND, "PC5 QoS Parameters", OGS_GTP_PC5_QOS_PARAMETERS_TYPE, 0, 0, sizeof(ogs_gtp_tlv_pc5_qos_parameters_t), { &ogs_gtp_tlv_desc_pc5_qos_flow_0, &ogs_gtp_tlv_desc_bit_rate_0, NULL, } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_remote_ue_context_0 = { OGS_TLV_COMPOUND, "Remote UE Context", OGS_GTP_REMOTE_UE_CONTEXT_TYPE, 0, 0, sizeof(ogs_gtp_tlv_remote_ue_context_t), { &ogs_gtp_tlv_desc_remote_user_id_0, &ogs_gtp_tlv_desc_remote_ue_ip_information_0, NULL, } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_v2x_context_0 = { OGS_TLV_COMPOUND, "V2X Context", OGS_GTP_V2X_CONTEXT_TYPE, 0, 0, sizeof(ogs_gtp_tlv_v2x_context_t), { &ogs_gtp_tlv_desc_services_authorized_0, &ogs_gtp_tlv_desc_services_authorized_1, &ogs_gtp_tlv_desc_bit_rate_0, &ogs_gtp_tlv_desc_bit_rate_1, &ogs_gtp_tlv_desc_pc5_qos_parameters_0, NULL, } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_bearer_context_0 = { OGS_TLV_COMPOUND, "Bearer Context", OGS_GTP_BEARER_CONTEXT_TYPE, 0, 0, sizeof(ogs_gtp_tlv_bearer_context_t), { &ogs_gtp_tlv_desc_ebi_0, &ogs_gtp_tlv_desc_bearer_tft_0, &ogs_gtp_tlv_desc_f_teid_0, &ogs_gtp_tlv_desc_f_teid_1, &ogs_gtp_tlv_desc_f_teid_2, &ogs_gtp_tlv_desc_f_teid_3, &ogs_gtp_tlv_desc_f_teid_4, &ogs_gtp_tlv_desc_f_teid_5, &ogs_gtp_tlv_desc_f_teid_6, &ogs_gtp_tlv_desc_bearer_qos_0, &ogs_gtp_tlv_desc_f_teid_7, &ogs_gtp_tlv_desc_cause_0, &ogs_gtp_tlv_desc_charging_id_0, &ogs_gtp_tlv_desc_bearer_flags_0, &ogs_gtp_tlv_desc_pco_0, &ogs_gtp_tlv_desc_epco_0, &ogs_gtp_tlv_desc_maximum_packet_loss_rate_0, &ogs_gtp_tlv_desc_f_teid_8, &ogs_gtp_tlv_desc_f_teid_9, &ogs_gtp_tlv_desc_f_teid_10, &ogs_gtp_tlv_desc_f_teid_11, &ogs_gtp_tlv_desc_ran_nas_cause_0, &ogs_gtp_tlv_desc_apco_0, &ogs_gtp_tlv_desc_f_container_0, &ogs_gtp_tlv_desc_ti_0, &ogs_gtp_tlv_desc_packet_flow_id_0, NULL, } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_bearer_context_1 = { OGS_TLV_COMPOUND, "Bearer Context", OGS_GTP_BEARER_CONTEXT_TYPE, 0, 1, sizeof(ogs_gtp_tlv_bearer_context_t), { &ogs_gtp_tlv_desc_ebi_0, &ogs_gtp_tlv_desc_bearer_tft_0, &ogs_gtp_tlv_desc_f_teid_0, &ogs_gtp_tlv_desc_f_teid_1, &ogs_gtp_tlv_desc_f_teid_2, &ogs_gtp_tlv_desc_f_teid_3, &ogs_gtp_tlv_desc_f_teid_4, &ogs_gtp_tlv_desc_f_teid_5, &ogs_gtp_tlv_desc_f_teid_6, &ogs_gtp_tlv_desc_bearer_qos_0, &ogs_gtp_tlv_desc_f_teid_7, &ogs_gtp_tlv_desc_cause_0, &ogs_gtp_tlv_desc_charging_id_0, &ogs_gtp_tlv_desc_bearer_flags_0, &ogs_gtp_tlv_desc_pco_0, &ogs_gtp_tlv_desc_epco_0, &ogs_gtp_tlv_desc_maximum_packet_loss_rate_0, &ogs_gtp_tlv_desc_f_teid_8, &ogs_gtp_tlv_desc_f_teid_9, &ogs_gtp_tlv_desc_f_teid_10, &ogs_gtp_tlv_desc_f_teid_11, &ogs_gtp_tlv_desc_ran_nas_cause_0, &ogs_gtp_tlv_desc_apco_0, &ogs_gtp_tlv_desc_f_container_0, &ogs_gtp_tlv_desc_ti_0, &ogs_gtp_tlv_desc_packet_flow_id_0, NULL, } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_pdn_connection_0 = { OGS_TLV_COMPOUND, "PDN Connection", OGS_GTP_PDN_CONNECTION_TYPE, 0, 0, sizeof(ogs_gtp_tlv_pdn_connection_t), { &ogs_gtp_tlv_desc_apn_0, &ogs_gtp_tlv_desc_apn_restriction_0, &ogs_gtp_tlv_desc_selection_mode_0, &ogs_gtp_tlv_desc_ip_address_0, &ogs_gtp_tlv_desc_ip_address_1, &ogs_gtp_tlv_desc_ebi_0, &ogs_gtp_tlv_desc_f_teid_0, &ogs_gtp_tlv_desc_fqdn_0, &ogs_gtp_tlv_desc_bearer_context_0, &ogs_gtp_tlv_desc_ambr_0, &ogs_gtp_tlv_desc_charging_characteristics_0, &ogs_gtp_tlv_desc_change_reporting_action_0, &ogs_gtp_tlv_desc_csg_information_reporting_action_0, &ogs_gtp_tlv_desc_enb_information_reporting_0, &ogs_gtp_tlv_desc_indication_0, &ogs_gtp_tlv_desc_signalling_priority_indication_0, &ogs_gtp_tlv_desc_change_to_report_flags_0, &ogs_gtp_tlv_desc_fqdn_1, &ogs_gtp_tlv_desc_presence_reporting_area_action_0, &ogs_gtp_tlv_desc_wlan_offloadability_indication_0, &ogs_gtp_tlv_desc_remote_ue_context_0, &ogs_gtp_tlv_desc_pdn_type_0, &ogs_gtp_tlv_desc_header_compression_configuration_0, NULL, } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_overload_control_information_0 = { OGS_TLV_COMPOUND, "Overload Control Information", OGS_GTP_OVERLOAD_CONTROL_INFORMATION_TYPE, 0, 0, sizeof(ogs_gtp_tlv_overload_control_information_t), { &ogs_gtp_tlv_desc_sequence_number_0, &ogs_gtp_tlv_desc_metric_0, &ogs_gtp_tlv_desc_epc_timer_0, &ogs_gtp_tlv_desc_apn_0, NULL, } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_overload_control_information_1 = { OGS_TLV_COMPOUND, "Overload Control Information", OGS_GTP_OVERLOAD_CONTROL_INFORMATION_TYPE, 0, 1, sizeof(ogs_gtp_tlv_overload_control_information_t), { &ogs_gtp_tlv_desc_sequence_number_0, &ogs_gtp_tlv_desc_metric_0, &ogs_gtp_tlv_desc_epc_timer_0, &ogs_gtp_tlv_desc_apn_0, NULL, } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_overload_control_information_2 = { OGS_TLV_COMPOUND, "Overload Control Information", OGS_GTP_OVERLOAD_CONTROL_INFORMATION_TYPE, 0, 2, sizeof(ogs_gtp_tlv_overload_control_information_t), { &ogs_gtp_tlv_desc_sequence_number_0, &ogs_gtp_tlv_desc_metric_0, &ogs_gtp_tlv_desc_epc_timer_0, &ogs_gtp_tlv_desc_apn_0, NULL, } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_load_control_information_0 = { OGS_TLV_COMPOUND, "Load Control Information", OGS_GTP_LOAD_CONTROL_INFORMATION_TYPE, 0, 0, sizeof(ogs_gtp_tlv_load_control_information_t), { &ogs_gtp_tlv_desc_sequence_number_0, &ogs_gtp_tlv_desc_metric_0, &ogs_gtp_tlv_desc_apn_and_relative_capacity_0, NULL, } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_load_control_information_1 = { OGS_TLV_COMPOUND, "Load Control Information", OGS_GTP_LOAD_CONTROL_INFORMATION_TYPE, 0, 1, sizeof(ogs_gtp_tlv_load_control_information_t), { &ogs_gtp_tlv_desc_sequence_number_0, &ogs_gtp_tlv_desc_metric_0, &ogs_gtp_tlv_desc_apn_and_relative_capacity_0, NULL, } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_load_control_information_2 = { OGS_TLV_COMPOUND, "Load Control Information", OGS_GTP_LOAD_CONTROL_INFORMATION_TYPE, 0, 2, sizeof(ogs_gtp_tlv_load_control_information_t), { &ogs_gtp_tlv_desc_sequence_number_0, &ogs_gtp_tlv_desc_metric_0, &ogs_gtp_tlv_desc_apn_and_relative_capacity_0, NULL, } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_scef_pdn_connection_0 = { OGS_TLV_COMPOUND, "SCEF PDN Connection", OGS_GTP_SCEF_PDN_CONNECTION_TYPE, 0, 0, sizeof(ogs_gtp_tlv_scef_pdn_connection_t), { &ogs_gtp_tlv_desc_apn_0, &ogs_gtp_tlv_desc_ebi_0, &ogs_gtp_tlv_desc_node_identifier_0, NULL, } }; ogs_tlv_desc_t ogs_gtp_tlv_desc_echo_request = { OGS_TLV_MESSAGE, "Echo Request", 0, 0, 0, 0, { &ogs_gtp_tlv_desc_recovery_0, &ogs_gtp_tlv_desc_node_features_0, NULL, }}; ogs_tlv_desc_t ogs_gtp_tlv_desc_echo_response = { OGS_TLV_MESSAGE, "Echo Response", 0, 0, 0, 0, { &ogs_gtp_tlv_desc_recovery_0, &ogs_gtp_tlv_desc_node_features_0, NULL, }}; ogs_tlv_desc_t ogs_gtp_tlv_desc_create_session_request = { OGS_TLV_MESSAGE, "Create Session Request", 0, 0, 0, 0, { &ogs_gtp_tlv_desc_imsi_0, &ogs_gtp_tlv_desc_msisdn_0, &ogs_gtp_tlv_desc_mei_0, &ogs_gtp_tlv_desc_uli_0, &ogs_gtp_tlv_desc_serving_network_0, &ogs_gtp_tlv_desc_rat_type_0, &ogs_gtp_tlv_desc_indication_0, &ogs_gtp_tlv_desc_f_teid_0, &ogs_gtp_tlv_desc_f_teid_1, &ogs_gtp_tlv_desc_apn_0, &ogs_gtp_tlv_desc_selection_mode_0, &ogs_gtp_tlv_desc_pdn_type_0, &ogs_gtp_tlv_desc_paa_0, &ogs_gtp_tlv_desc_apn_restriction_0, &ogs_gtp_tlv_desc_ambr_0, &ogs_gtp_tlv_desc_ebi_0, &ogs_gtp_tlv_desc_twmi_0, &ogs_gtp_tlv_desc_pco_0, &ogs_gtp_tlv_desc_bearer_context_0, &ogs_gtp_tlv_desc_bearer_context_1, &ogs_gtp_tlv_desc_trace_information_0, &ogs_gtp_tlv_desc_recovery_0, &ogs_gtp_tlv_desc_fq_csid_0, &ogs_gtp_tlv_desc_fq_csid_1, &ogs_gtp_tlv_desc_fq_csid_2, &ogs_gtp_tlv_desc_fq_csid_3, &ogs_gtp_tlv_desc_ue_time_zone_0, &ogs_gtp_tlv_desc_uci_0, &ogs_gtp_tlv_desc_charging_characteristics_0, &ogs_gtp_tlv_desc_ldn_0, &ogs_gtp_tlv_desc_ldn_1, &ogs_gtp_tlv_desc_ldn_2, &ogs_gtp_tlv_desc_ldn_3, &ogs_gtp_tlv_desc_signalling_priority_indication_0, &ogs_gtp_tlv_desc_ip_address_0, &ogs_gtp_tlv_desc_port_number_0, &ogs_gtp_tlv_desc_apco_0, &ogs_gtp_tlv_desc_ip_address_1, &ogs_gtp_tlv_desc_port_number_1, &ogs_gtp_tlv_desc_ip_address_2, &ogs_gtp_tlv_desc_twan_identifier_0, &ogs_gtp_tlv_desc_ip_address_3, &ogs_gtp_tlv_desc_cn_operator_selection_entity_0, &ogs_gtp_tlv_desc_presence_reporting_area_information_0, &ogs_gtp_tlv_desc_overload_control_information_0, &ogs_gtp_tlv_desc_overload_control_information_1, &ogs_gtp_tlv_desc_overload_control_information_2, &ogs_gtp_tlv_desc_millisecond_time_stamp_0, &ogs_gtp_tlv_desc_integer_number_0, &ogs_gtp_tlv_desc_twan_identifier_1, &ogs_gtp_tlv_desc_twan_identifier_timestamp_0, &ogs_gtp_tlv_desc_f_container_0, &ogs_gtp_tlv_desc_remote_ue_context_0, &ogs_gtp_tlv_desc_node_identifier_0, &ogs_gtp_tlv_desc_epco_0, &ogs_gtp_tlv_desc_serving_plmn_rate_control_0, &ogs_gtp_tlv_desc_counter_0, &ogs_gtp_tlv_desc_port_number_2, &ogs_gtp_tlv_desc_mapped_ue_usage_type_0, &ogs_gtp_tlv_desc_uli_1, &ogs_gtp_tlv_desc_fqdn_0, &ogs_gtp_tlv_desc_secondary_rat_usage_data_report_0, &ogs_gtp_tlv_desc_up_function_selection_indication_flags_0, &ogs_gtp_tlv_desc_apn_rate_control_status_0, NULL, }}; ogs_tlv_desc_t ogs_gtp_tlv_desc_create_session_response = { OGS_TLV_MESSAGE, "Create Session Response", 0, 0, 0, 0, { &ogs_gtp_tlv_desc_cause_0, &ogs_gtp_tlv_desc_change_reporting_action_0, &ogs_gtp_tlv_desc_csg_information_reporting_action_0, &ogs_gtp_tlv_desc_enb_information_reporting_0, &ogs_gtp_tlv_desc_f_teid_0, &ogs_gtp_tlv_desc_f_teid_1, &ogs_gtp_tlv_desc_paa_0, &ogs_gtp_tlv_desc_apn_restriction_0, &ogs_gtp_tlv_desc_ambr_0, &ogs_gtp_tlv_desc_ebi_0, &ogs_gtp_tlv_desc_pco_0, &ogs_gtp_tlv_desc_bearer_context_0, &ogs_gtp_tlv_desc_bearer_context_1, &ogs_gtp_tlv_desc_recovery_0, &ogs_gtp_tlv_desc_fqdn_0, &ogs_gtp_tlv_desc_ip_address_0, &ogs_gtp_tlv_desc_fq_csid_0, &ogs_gtp_tlv_desc_fq_csid_1, &ogs_gtp_tlv_desc_ldn_0, &ogs_gtp_tlv_desc_ldn_1, &ogs_gtp_tlv_desc_epc_timer_0, &ogs_gtp_tlv_desc_apco_0, &ogs_gtp_tlv_desc_ip4cp_0, &ogs_gtp_tlv_desc_indication_0, &ogs_gtp_tlv_desc_presence_reporting_area_action_0, &ogs_gtp_tlv_desc_load_control_information_0, &ogs_gtp_tlv_desc_load_control_information_1, &ogs_gtp_tlv_desc_load_control_information_2, &ogs_gtp_tlv_desc_overload_control_information_0, &ogs_gtp_tlv_desc_overload_control_information_1, &ogs_gtp_tlv_desc_f_container_0, &ogs_gtp_tlv_desc_charging_id_0, &ogs_gtp_tlv_desc_epco_0, NULL, }}; ogs_tlv_desc_t ogs_gtp_tlv_desc_modify_bearer_request = { OGS_TLV_MESSAGE, "Modify Bearer Request", 0, 0, 0, 0, { &ogs_gtp_tlv_desc_mei_0, &ogs_gtp_tlv_desc_uli_0, &ogs_gtp_tlv_desc_serving_network_0, &ogs_gtp_tlv_desc_rat_type_0, &ogs_gtp_tlv_desc_indication_0, &ogs_gtp_tlv_desc_f_teid_0, &ogs_gtp_tlv_desc_ambr_0, &ogs_gtp_tlv_desc_delay_value_0, &ogs_gtp_tlv_desc_bearer_context_0, &ogs_gtp_tlv_desc_bearer_context_1, &ogs_gtp_tlv_desc_recovery_0, &ogs_gtp_tlv_desc_ue_time_zone_0, &ogs_gtp_tlv_desc_fq_csid_0, &ogs_gtp_tlv_desc_uci_0, &ogs_gtp_tlv_desc_ip_address_1, &ogs_gtp_tlv_desc_port_number_1, &ogs_gtp_tlv_desc_ldn_0, &ogs_gtp_tlv_desc_ldn_1, &ogs_gtp_tlv_desc_ip_address_0, &ogs_gtp_tlv_desc_port_number_0, &ogs_gtp_tlv_desc_ip_address_2, &ogs_gtp_tlv_desc_cn_operator_selection_entity_0, &ogs_gtp_tlv_desc_presence_reporting_area_information_0, &ogs_gtp_tlv_desc_overload_control_information_0, &ogs_gtp_tlv_desc_overload_control_information_1, &ogs_gtp_tlv_desc_overload_control_information_2, &ogs_gtp_tlv_desc_serving_plmn_rate_control_0, &ogs_gtp_tlv_desc_counter_0, &ogs_gtp_tlv_desc_imsi_0, &ogs_gtp_tlv_desc_uli_1, &ogs_gtp_tlv_desc_twan_identifier_0, &ogs_gtp_tlv_desc_twan_identifier_timestamp_0, &ogs_gtp_tlv_desc_secondary_rat_usage_data_report_0, NULL, }}; ogs_tlv_desc_t ogs_gtp_tlv_desc_modify_bearer_response = { OGS_TLV_MESSAGE, "Modify Bearer Response", 0, 0, 0, 0, { &ogs_gtp_tlv_desc_cause_0, &ogs_gtp_tlv_desc_msisdn_0, &ogs_gtp_tlv_desc_ebi_0, &ogs_gtp_tlv_desc_apn_restriction_0, &ogs_gtp_tlv_desc_pco_0, &ogs_gtp_tlv_desc_bearer_context_0, &ogs_gtp_tlv_desc_bearer_context_1, &ogs_gtp_tlv_desc_change_reporting_action_0, &ogs_gtp_tlv_desc_csg_information_reporting_action_0, &ogs_gtp_tlv_desc_enb_information_reporting_0, &ogs_gtp_tlv_desc_fqdn_0, &ogs_gtp_tlv_desc_ip_address_0, &ogs_gtp_tlv_desc_fq_csid_0, &ogs_gtp_tlv_desc_fq_csid_1, &ogs_gtp_tlv_desc_recovery_0, &ogs_gtp_tlv_desc_ldn_0, &ogs_gtp_tlv_desc_ldn_1, &ogs_gtp_tlv_desc_indication_0, &ogs_gtp_tlv_desc_presence_reporting_area_action_0, &ogs_gtp_tlv_desc_load_control_information_0, &ogs_gtp_tlv_desc_load_control_information_1, &ogs_gtp_tlv_desc_load_control_information_2, &ogs_gtp_tlv_desc_overload_control_information_0, &ogs_gtp_tlv_desc_overload_control_information_1, &ogs_gtp_tlv_desc_charging_id_0, NULL, }}; ogs_tlv_desc_t ogs_gtp_tlv_desc_delete_session_request = { OGS_TLV_MESSAGE, "Delete Session Request", 0, 0, 0, 0, { &ogs_gtp_tlv_desc_cause_0, &ogs_gtp_tlv_desc_ebi_0, &ogs_gtp_tlv_desc_uli_0, &ogs_gtp_tlv_desc_indication_0, &ogs_gtp_tlv_desc_pco_0, &ogs_gtp_tlv_desc_node_type_0, &ogs_gtp_tlv_desc_f_teid_0, &ogs_gtp_tlv_desc_ue_time_zone_0, &ogs_gtp_tlv_desc_uli_timestamp_0, &ogs_gtp_tlv_desc_ran_nas_cause_0, &ogs_gtp_tlv_desc_twan_identifier_0, &ogs_gtp_tlv_desc_twan_identifier_timestamp_0, &ogs_gtp_tlv_desc_overload_control_information_0, &ogs_gtp_tlv_desc_overload_control_information_1, &ogs_gtp_tlv_desc_overload_control_information_2, &ogs_gtp_tlv_desc_twan_identifier_1, &ogs_gtp_tlv_desc_twan_identifier_timestamp_1, &ogs_gtp_tlv_desc_ip_address_0, &ogs_gtp_tlv_desc_port_number_0, &ogs_gtp_tlv_desc_epco_0, &ogs_gtp_tlv_desc_port_number_1, &ogs_gtp_tlv_desc_secondary_rat_usage_data_report_0, NULL, }}; ogs_tlv_desc_t ogs_gtp_tlv_desc_delete_session_response = { OGS_TLV_MESSAGE, "Delete Session Response", 0, 0, 0, 0, { &ogs_gtp_tlv_desc_cause_0, &ogs_gtp_tlv_desc_recovery_0, &ogs_gtp_tlv_desc_pco_0, &ogs_gtp_tlv_desc_indication_0, &ogs_gtp_tlv_desc_load_control_information_0, &ogs_gtp_tlv_desc_load_control_information_1, &ogs_gtp_tlv_desc_load_control_information_2, &ogs_gtp_tlv_desc_overload_control_information_0, &ogs_gtp_tlv_desc_overload_control_information_1, &ogs_gtp_tlv_desc_epco_0, &ogs_gtp_tlv_desc_apn_rate_control_status_0, NULL, }}; ogs_tlv_desc_t ogs_gtp_tlv_desc_modify_bearer_command = { OGS_TLV_MESSAGE, "Modify Bearer Command", 0, 0, 0, 0, { &ogs_gtp_tlv_desc_ambr_0, &ogs_gtp_tlv_desc_bearer_context_0, &ogs_gtp_tlv_desc_overload_control_information_0, &ogs_gtp_tlv_desc_overload_control_information_1, &ogs_gtp_tlv_desc_overload_control_information_2, &ogs_gtp_tlv_desc_f_teid_0, NULL, }}; ogs_tlv_desc_t ogs_gtp_tlv_desc_modify_bearer_failure_indication = { OGS_TLV_MESSAGE, "Modify Bearer Failure Indication", 0, 0, 0, 0, { &ogs_gtp_tlv_desc_cause_0, &ogs_gtp_tlv_desc_recovery_0, &ogs_gtp_tlv_desc_indication_0, &ogs_gtp_tlv_desc_overload_control_information_0, &ogs_gtp_tlv_desc_overload_control_information_1, NULL, }}; ogs_tlv_desc_t ogs_gtp_tlv_desc_delete_bearer_command = { OGS_TLV_MESSAGE, "Delete Bearer Command", 0, 0, 0, 0, { &ogs_gtp_tlv_desc_bearer_context_0, &ogs_gtp_tlv_desc_uli_0, &ogs_gtp_tlv_desc_uli_timestamp_0, &ogs_gtp_tlv_desc_ue_time_zone_0, &ogs_gtp_tlv_desc_overload_control_information_0, &ogs_gtp_tlv_desc_overload_control_information_1, &ogs_gtp_tlv_desc_f_teid_0, &ogs_gtp_tlv_desc_secondary_rat_usage_data_report_0, NULL, }}; ogs_tlv_desc_t ogs_gtp_tlv_desc_delete_bearer_failure_indication = { OGS_TLV_MESSAGE, "Delete Bearer Failure Indication", 0, 0, 0, 0, { &ogs_gtp_tlv_desc_cause_0, &ogs_gtp_tlv_desc_bearer_context_0, &ogs_gtp_tlv_desc_recovery_0, &ogs_gtp_tlv_desc_indication_0, &ogs_gtp_tlv_desc_overload_control_information_0, &ogs_gtp_tlv_desc_overload_control_information_1, NULL, }}; ogs_tlv_desc_t ogs_gtp_tlv_desc_bearer_resource_command = { OGS_TLV_MESSAGE, "Bearer Resource Command", 0, 0, 0, 0, { &ogs_gtp_tlv_desc_ebi_0, &ogs_gtp_tlv_desc_pti_0, &ogs_gtp_tlv_desc_flow_qos_0, &ogs_gtp_tlv_desc_tad_0, &ogs_gtp_tlv_desc_rat_type_0, &ogs_gtp_tlv_desc_serving_network_0, &ogs_gtp_tlv_desc_uli_0, &ogs_gtp_tlv_desc_ebi_1, &ogs_gtp_tlv_desc_indication_0, &ogs_gtp_tlv_desc_f_teid_0, &ogs_gtp_tlv_desc_f_teid_1, &ogs_gtp_tlv_desc_pco_0, &ogs_gtp_tlv_desc_signalling_priority_indication_0, &ogs_gtp_tlv_desc_overload_control_information_0, &ogs_gtp_tlv_desc_overload_control_information_1, &ogs_gtp_tlv_desc_f_container_0, &ogs_gtp_tlv_desc_epco_0, &ogs_gtp_tlv_desc_f_teid_2, NULL, }}; ogs_tlv_desc_t ogs_gtp_tlv_desc_bearer_resource_failure_indication = { OGS_TLV_MESSAGE, "Bearer Resource Failure Indication", 0, 0, 0, 0, { &ogs_gtp_tlv_desc_cause_0, &ogs_gtp_tlv_desc_ebi_0, &ogs_gtp_tlv_desc_pti_0, &ogs_gtp_tlv_desc_indication_0, &ogs_gtp_tlv_desc_overload_control_information_0, &ogs_gtp_tlv_desc_overload_control_information_1, &ogs_gtp_tlv_desc_recovery_0, &ogs_gtp_tlv_desc_f_container_0, NULL, }}; ogs_tlv_desc_t ogs_gtp_tlv_desc_downlink_data_notification_failure_indication = { OGS_TLV_MESSAGE, "Downlink Data Notification Failure Indication", 0, 0, 0, 0, { &ogs_gtp_tlv_desc_cause_0, &ogs_gtp_tlv_desc_node_type_0, &ogs_gtp_tlv_desc_imsi_0, NULL, }}; ogs_tlv_desc_t ogs_gtp_tlv_desc_create_bearer_request = { OGS_TLV_MESSAGE, "Create Bearer Request", 0, 0, 0, 0, { &ogs_gtp_tlv_desc_pti_0, &ogs_gtp_tlv_desc_ebi_0, &ogs_gtp_tlv_desc_pco_0, &ogs_gtp_tlv_desc_bearer_context_0, &ogs_gtp_tlv_desc_fq_csid_0, &ogs_gtp_tlv_desc_fq_csid_1, &ogs_gtp_tlv_desc_change_reporting_action_0, &ogs_gtp_tlv_desc_csg_information_reporting_action_0, &ogs_gtp_tlv_desc_enb_information_reporting_0, &ogs_gtp_tlv_desc_presence_reporting_area_action_0, &ogs_gtp_tlv_desc_indication_0, &ogs_gtp_tlv_desc_load_control_information_0, &ogs_gtp_tlv_desc_load_control_information_1, &ogs_gtp_tlv_desc_load_control_information_2, &ogs_gtp_tlv_desc_overload_control_information_0, &ogs_gtp_tlv_desc_overload_control_information_1, &ogs_gtp_tlv_desc_f_container_0, NULL, }}; ogs_tlv_desc_t ogs_gtp_tlv_desc_create_bearer_response = { OGS_TLV_MESSAGE, "Create Bearer Response", 0, 0, 0, 0, { &ogs_gtp_tlv_desc_cause_0, &ogs_gtp_tlv_desc_bearer_context_0, &ogs_gtp_tlv_desc_recovery_0, &ogs_gtp_tlv_desc_fq_csid_0, &ogs_gtp_tlv_desc_fq_csid_2, &ogs_gtp_tlv_desc_fq_csid_3, &ogs_gtp_tlv_desc_pco_0, &ogs_gtp_tlv_desc_ue_time_zone_0, &ogs_gtp_tlv_desc_uli_0, &ogs_gtp_tlv_desc_twan_identifier_0, &ogs_gtp_tlv_desc_overload_control_information_0, &ogs_gtp_tlv_desc_overload_control_information_1, &ogs_gtp_tlv_desc_presence_reporting_area_information_0, &ogs_gtp_tlv_desc_ip_address_0, &ogs_gtp_tlv_desc_overload_control_information_2, &ogs_gtp_tlv_desc_twan_identifier_1, &ogs_gtp_tlv_desc_twan_identifier_timestamp_1, &ogs_gtp_tlv_desc_port_number_0, &ogs_gtp_tlv_desc_f_container_0, &ogs_gtp_tlv_desc_port_number_1, NULL, }}; ogs_tlv_desc_t ogs_gtp_tlv_desc_update_bearer_request = { OGS_TLV_MESSAGE, "Update Bearer Request", 0, 0, 0, 0, { &ogs_gtp_tlv_desc_bearer_context_0, &ogs_gtp_tlv_desc_pti_0, &ogs_gtp_tlv_desc_pco_0, &ogs_gtp_tlv_desc_ambr_0, &ogs_gtp_tlv_desc_change_reporting_action_0, &ogs_gtp_tlv_desc_csg_information_reporting_action_0, &ogs_gtp_tlv_desc_enb_information_reporting_0, &ogs_gtp_tlv_desc_indication_0, &ogs_gtp_tlv_desc_fq_csid_0, &ogs_gtp_tlv_desc_fq_csid_1, &ogs_gtp_tlv_desc_presence_reporting_area_action_0, &ogs_gtp_tlv_desc_load_control_information_0, &ogs_gtp_tlv_desc_load_control_information_1, &ogs_gtp_tlv_desc_load_control_information_2, &ogs_gtp_tlv_desc_overload_control_information_0, &ogs_gtp_tlv_desc_overload_control_information_1, &ogs_gtp_tlv_desc_f_container_0, NULL, }}; ogs_tlv_desc_t ogs_gtp_tlv_desc_update_bearer_response = { OGS_TLV_MESSAGE, "Update Bearer Response", 0, 0, 0, 0, { &ogs_gtp_tlv_desc_cause_0, &ogs_gtp_tlv_desc_bearer_context_0, &ogs_gtp_tlv_desc_pco_0, &ogs_gtp_tlv_desc_recovery_0, &ogs_gtp_tlv_desc_fq_csid_0, &ogs_gtp_tlv_desc_fq_csid_1, &ogs_gtp_tlv_desc_fq_csid_2, &ogs_gtp_tlv_desc_fq_csid_3, &ogs_gtp_tlv_desc_indication_0, &ogs_gtp_tlv_desc_ue_time_zone_0, &ogs_gtp_tlv_desc_uli_0, &ogs_gtp_tlv_desc_twan_identifier_0, &ogs_gtp_tlv_desc_overload_control_information_0, &ogs_gtp_tlv_desc_overload_control_information_1, &ogs_gtp_tlv_desc_presence_reporting_area_information_0, &ogs_gtp_tlv_desc_ip_address_0, &ogs_gtp_tlv_desc_overload_control_information_2, &ogs_gtp_tlv_desc_twan_identifier_1, &ogs_gtp_tlv_desc_twan_identifier_timestamp_1, &ogs_gtp_tlv_desc_port_number_0, &ogs_gtp_tlv_desc_f_container_0, &ogs_gtp_tlv_desc_port_number_1, NULL, }}; ogs_tlv_desc_t ogs_gtp_tlv_desc_delete_bearer_request = { OGS_TLV_MESSAGE, "Delete Bearer Request", 0, 0, 0, 0, { &ogs_gtp_tlv_desc_ebi_0, &ogs_gtp_tlv_desc_ebi_1, &ogs_gtp_tlv_desc_bearer_context_0, &ogs_gtp_tlv_desc_pti_0, &ogs_gtp_tlv_desc_pco_0, &ogs_gtp_tlv_desc_fq_csid_0, &ogs_gtp_tlv_desc_fq_csid_1, &ogs_gtp_tlv_desc_cause_0, &ogs_gtp_tlv_desc_indication_0, &ogs_gtp_tlv_desc_load_control_information_0, &ogs_gtp_tlv_desc_load_control_information_1, &ogs_gtp_tlv_desc_load_control_information_2, &ogs_gtp_tlv_desc_overload_control_information_0, &ogs_gtp_tlv_desc_overload_control_information_1, &ogs_gtp_tlv_desc_f_container_0, &ogs_gtp_tlv_desc_apn_rate_control_status_0, &ogs_gtp_tlv_desc_epco_0, NULL, }}; ogs_tlv_desc_t ogs_gtp_tlv_desc_delete_bearer_response = { OGS_TLV_MESSAGE, "Delete Bearer Response", 0, 0, 0, 0, { &ogs_gtp_tlv_desc_cause_0, &ogs_gtp_tlv_desc_ebi_0, &ogs_gtp_tlv_desc_bearer_context_0, &ogs_gtp_tlv_desc_recovery_0, &ogs_gtp_tlv_desc_fq_csid_0, &ogs_gtp_tlv_desc_fq_csid_1, &ogs_gtp_tlv_desc_fq_csid_2, &ogs_gtp_tlv_desc_fq_csid_3, &ogs_gtp_tlv_desc_pco_0, &ogs_gtp_tlv_desc_ue_time_zone_0, &ogs_gtp_tlv_desc_uli_0, &ogs_gtp_tlv_desc_uli_timestamp_0, &ogs_gtp_tlv_desc_twan_identifier_0, &ogs_gtp_tlv_desc_twan_identifier_timestamp_0, &ogs_gtp_tlv_desc_overload_control_information_0, &ogs_gtp_tlv_desc_overload_control_information_1, &ogs_gtp_tlv_desc_ip_address_0, &ogs_gtp_tlv_desc_overload_control_information_2, &ogs_gtp_tlv_desc_twan_identifier_1, &ogs_gtp_tlv_desc_twan_identifier_timestamp_1, &ogs_gtp_tlv_desc_port_number_0, &ogs_gtp_tlv_desc_f_container_0, &ogs_gtp_tlv_desc_port_number_1, &ogs_gtp_tlv_desc_secondary_rat_usage_data_report_0, NULL, }}; ogs_tlv_desc_t ogs_gtp_tlv_desc_create_indirect_data_forwarding_tunnel_request = { OGS_TLV_MESSAGE, "Create Indirect Data Forwarding Tunnel Request", 0, 0, 0, 0, { &ogs_gtp_tlv_desc_imsi_0, &ogs_gtp_tlv_desc_mei_0, &ogs_gtp_tlv_desc_indication_0, &ogs_gtp_tlv_desc_f_teid_0, &ogs_gtp_tlv_desc_bearer_context_0, &ogs_tlv_desc_more8, &ogs_gtp_tlv_desc_recovery_0, NULL, }}; ogs_tlv_desc_t ogs_gtp_tlv_desc_create_indirect_data_forwarding_tunnel_response = { OGS_TLV_MESSAGE, "Create Indirect Data Forwarding Tunnel Response", 0, 0, 0, 0, { &ogs_gtp_tlv_desc_cause_0, &ogs_gtp_tlv_desc_f_teid_0, &ogs_gtp_tlv_desc_bearer_context_0, &ogs_tlv_desc_more8, &ogs_gtp_tlv_desc_recovery_0, NULL, }}; ogs_tlv_desc_t ogs_gtp_tlv_desc_delete_indirect_data_forwarding_tunnel_request = { OGS_TLV_MESSAGE, "Delete Indirect Data Forwarding Tunnel Request", 0, 0, 0, 0, { NULL, }}; ogs_tlv_desc_t ogs_gtp_tlv_desc_delete_indirect_data_forwarding_tunnel_response = { OGS_TLV_MESSAGE, "Delete Indirect Data Forwarding Tunnel Response", 0, 0, 0, 0, { &ogs_gtp_tlv_desc_cause_0, &ogs_gtp_tlv_desc_recovery_0, NULL, }}; ogs_tlv_desc_t ogs_gtp_tlv_desc_release_access_bearers_request = { OGS_TLV_MESSAGE, "Release Access Bearers Request", 0, 0, 0, 0, { &ogs_gtp_tlv_desc_ebi_0, &ogs_gtp_tlv_desc_node_type_0, &ogs_gtp_tlv_desc_indication_0, &ogs_gtp_tlv_desc_secondary_rat_usage_data_report_0, NULL, }}; ogs_tlv_desc_t ogs_gtp_tlv_desc_release_access_bearers_response = { OGS_TLV_MESSAGE, "Release Access Bearers Response", 0, 0, 0, 0, { &ogs_gtp_tlv_desc_cause_0, &ogs_gtp_tlv_desc_recovery_0, &ogs_gtp_tlv_desc_indication_0, &ogs_gtp_tlv_desc_load_control_information_0, &ogs_gtp_tlv_desc_overload_control_information_0, NULL, }}; ogs_tlv_desc_t ogs_gtp_tlv_desc_downlink_data_notification = { OGS_TLV_MESSAGE, "Downlink Data Notification", 0, 0, 0, 0, { &ogs_gtp_tlv_desc_cause_0, &ogs_gtp_tlv_desc_ebi_0, &ogs_gtp_tlv_desc_arp_0, &ogs_gtp_tlv_desc_imsi_0, &ogs_gtp_tlv_desc_f_teid_0, &ogs_gtp_tlv_desc_indication_0, &ogs_gtp_tlv_desc_load_control_information_0, &ogs_gtp_tlv_desc_overload_control_information_0, &ogs_gtp_tlv_desc_paging_and_service_information_0, &ogs_gtp_tlv_desc_integer_number_0, NULL, }}; ogs_tlv_desc_t ogs_gtp_tlv_desc_downlink_data_notification_acknowledge = { OGS_TLV_MESSAGE, "Downlink Data Notification Acknowledge", 0, 0, 0, 0, { &ogs_gtp_tlv_desc_cause_0, &ogs_gtp_tlv_desc_delay_value_0, &ogs_gtp_tlv_desc_recovery_0, &ogs_gtp_tlv_desc_throttling_0, &ogs_gtp_tlv_desc_imsi_0, &ogs_gtp_tlv_desc_epc_timer_0, &ogs_gtp_tlv_desc_integer_number_0, NULL, }}; ogs_tlv_desc_t ogs_gtp_tlv_desc_modify_access_bearers_request = { OGS_TLV_MESSAGE, "Modify Access Bearers Request", 0, 0, 0, 0, { &ogs_gtp_tlv_desc_indication_0, &ogs_gtp_tlv_desc_f_teid_0, &ogs_gtp_tlv_desc_delay_value_0, &ogs_gtp_tlv_desc_bearer_context_0, &ogs_gtp_tlv_desc_bearer_context_1, &ogs_gtp_tlv_desc_recovery_0, &ogs_gtp_tlv_desc_secondary_rat_usage_data_report_0, NULL, }}; ogs_tlv_desc_t ogs_gtp_tlv_desc_modify_access_bearers_response = { OGS_TLV_MESSAGE, "Modify Access Bearers Response", 0, 0, 0, 0, { &ogs_gtp_tlv_desc_cause_0, &ogs_gtp_tlv_desc_bearer_context_0, &ogs_gtp_tlv_desc_bearer_context_1, &ogs_gtp_tlv_desc_recovery_0, &ogs_gtp_tlv_desc_indication_0, &ogs_gtp_tlv_desc_load_control_information_0, &ogs_gtp_tlv_desc_overload_control_information_0, NULL, }}; int ogs_gtp_parse_msg(ogs_gtp_message_t *gtp_message, ogs_pkbuf_t *pkbuf) { int rv = OGS_ERROR; ogs_gtp_header_t *h = NULL; uint16_t size = 0; ogs_assert(gtp_message); ogs_assert(pkbuf); ogs_assert(pkbuf->len); h = (ogs_gtp_header_t *)pkbuf->data; ogs_assert(h); memset(gtp_message, 0, sizeof(ogs_gtp_message_t)); if (h->teid_presence) size = OGS_GTPV2C_HEADER_LEN; else size = OGS_GTPV2C_HEADER_LEN-OGS_GTP_TEID_LEN; ogs_assert(ogs_pkbuf_pull(pkbuf, size)); memcpy(>p_message->h, pkbuf->data - size, size); if (h->teid_presence) gtp_message->h.teid = be32toh(gtp_message->h.teid); if (pkbuf->len == 0) { ogs_assert(ogs_pkbuf_push(pkbuf, size)); return OGS_OK; } switch(gtp_message->h.type) { case OGS_GTP_ECHO_REQUEST_TYPE: rv = ogs_tlv_parse_msg(>p_message->echo_request, &ogs_gtp_tlv_desc_echo_request, pkbuf, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_ECHO_RESPONSE_TYPE: rv = ogs_tlv_parse_msg(>p_message->echo_response, &ogs_gtp_tlv_desc_echo_response, pkbuf, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_CREATE_SESSION_REQUEST_TYPE: rv = ogs_tlv_parse_msg(>p_message->create_session_request, &ogs_gtp_tlv_desc_create_session_request, pkbuf, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_CREATE_SESSION_RESPONSE_TYPE: rv = ogs_tlv_parse_msg(>p_message->create_session_response, &ogs_gtp_tlv_desc_create_session_response, pkbuf, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_MODIFY_BEARER_REQUEST_TYPE: rv = ogs_tlv_parse_msg(>p_message->modify_bearer_request, &ogs_gtp_tlv_desc_modify_bearer_request, pkbuf, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_MODIFY_BEARER_RESPONSE_TYPE: rv = ogs_tlv_parse_msg(>p_message->modify_bearer_response, &ogs_gtp_tlv_desc_modify_bearer_response, pkbuf, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_DELETE_SESSION_REQUEST_TYPE: rv = ogs_tlv_parse_msg(>p_message->delete_session_request, &ogs_gtp_tlv_desc_delete_session_request, pkbuf, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_DELETE_SESSION_RESPONSE_TYPE: rv = ogs_tlv_parse_msg(>p_message->delete_session_response, &ogs_gtp_tlv_desc_delete_session_response, pkbuf, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_MODIFY_BEARER_COMMAND_TYPE: rv = ogs_tlv_parse_msg(>p_message->modify_bearer_command, &ogs_gtp_tlv_desc_modify_bearer_command, pkbuf, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_MODIFY_BEARER_FAILURE_INDICATION_TYPE: rv = ogs_tlv_parse_msg(>p_message->modify_bearer_failure_indication, &ogs_gtp_tlv_desc_modify_bearer_failure_indication, pkbuf, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_DELETE_BEARER_COMMAND_TYPE: rv = ogs_tlv_parse_msg(>p_message->delete_bearer_command, &ogs_gtp_tlv_desc_delete_bearer_command, pkbuf, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_DELETE_BEARER_FAILURE_INDICATION_TYPE: rv = ogs_tlv_parse_msg(>p_message->delete_bearer_failure_indication, &ogs_gtp_tlv_desc_delete_bearer_failure_indication, pkbuf, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_BEARER_RESOURCE_COMMAND_TYPE: rv = ogs_tlv_parse_msg(>p_message->bearer_resource_command, &ogs_gtp_tlv_desc_bearer_resource_command, pkbuf, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_BEARER_RESOURCE_FAILURE_INDICATION_TYPE: rv = ogs_tlv_parse_msg(>p_message->bearer_resource_failure_indication, &ogs_gtp_tlv_desc_bearer_resource_failure_indication, pkbuf, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_DOWNLINK_DATA_NOTIFICATION_FAILURE_INDICATION_TYPE: rv = ogs_tlv_parse_msg(>p_message->downlink_data_notification_failure_indication, &ogs_gtp_tlv_desc_downlink_data_notification_failure_indication, pkbuf, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_CREATE_BEARER_REQUEST_TYPE: rv = ogs_tlv_parse_msg(>p_message->create_bearer_request, &ogs_gtp_tlv_desc_create_bearer_request, pkbuf, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_CREATE_BEARER_RESPONSE_TYPE: rv = ogs_tlv_parse_msg(>p_message->create_bearer_response, &ogs_gtp_tlv_desc_create_bearer_response, pkbuf, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_UPDATE_BEARER_REQUEST_TYPE: rv = ogs_tlv_parse_msg(>p_message->update_bearer_request, &ogs_gtp_tlv_desc_update_bearer_request, pkbuf, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_UPDATE_BEARER_RESPONSE_TYPE: rv = ogs_tlv_parse_msg(>p_message->update_bearer_response, &ogs_gtp_tlv_desc_update_bearer_response, pkbuf, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_DELETE_BEARER_REQUEST_TYPE: rv = ogs_tlv_parse_msg(>p_message->delete_bearer_request, &ogs_gtp_tlv_desc_delete_bearer_request, pkbuf, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_DELETE_BEARER_RESPONSE_TYPE: rv = ogs_tlv_parse_msg(>p_message->delete_bearer_response, &ogs_gtp_tlv_desc_delete_bearer_response, pkbuf, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_REQUEST_TYPE: rv = ogs_tlv_parse_msg(>p_message->create_indirect_data_forwarding_tunnel_request, &ogs_gtp_tlv_desc_create_indirect_data_forwarding_tunnel_request, pkbuf, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE: rv = ogs_tlv_parse_msg(>p_message->create_indirect_data_forwarding_tunnel_response, &ogs_gtp_tlv_desc_create_indirect_data_forwarding_tunnel_response, pkbuf, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_DELETE_INDIRECT_DATA_FORWARDING_TUNNEL_REQUEST_TYPE: rv = ogs_tlv_parse_msg(>p_message->delete_indirect_data_forwarding_tunnel_request, &ogs_gtp_tlv_desc_delete_indirect_data_forwarding_tunnel_request, pkbuf, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_DELETE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE: rv = ogs_tlv_parse_msg(>p_message->delete_indirect_data_forwarding_tunnel_response, &ogs_gtp_tlv_desc_delete_indirect_data_forwarding_tunnel_response, pkbuf, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_RELEASE_ACCESS_BEARERS_REQUEST_TYPE: rv = ogs_tlv_parse_msg(>p_message->release_access_bearers_request, &ogs_gtp_tlv_desc_release_access_bearers_request, pkbuf, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_RELEASE_ACCESS_BEARERS_RESPONSE_TYPE: rv = ogs_tlv_parse_msg(>p_message->release_access_bearers_response, &ogs_gtp_tlv_desc_release_access_bearers_response, pkbuf, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_DOWNLINK_DATA_NOTIFICATION_TYPE: rv = ogs_tlv_parse_msg(>p_message->downlink_data_notification, &ogs_gtp_tlv_desc_downlink_data_notification, pkbuf, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_DOWNLINK_DATA_NOTIFICATION_ACKNOWLEDGE_TYPE: rv = ogs_tlv_parse_msg(>p_message->downlink_data_notification_acknowledge, &ogs_gtp_tlv_desc_downlink_data_notification_acknowledge, pkbuf, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_MODIFY_ACCESS_BEARERS_REQUEST_TYPE: rv = ogs_tlv_parse_msg(>p_message->modify_access_bearers_request, &ogs_gtp_tlv_desc_modify_access_bearers_request, pkbuf, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_MODIFY_ACCESS_BEARERS_RESPONSE_TYPE: rv = ogs_tlv_parse_msg(>p_message->modify_access_bearers_response, &ogs_gtp_tlv_desc_modify_access_bearers_response, pkbuf, OGS_TLV_MODE_T1_L2_I1); break; default: ogs_warn("Not implmeneted(type:%d)", gtp_message->h.type); break; } ogs_assert(ogs_pkbuf_push(pkbuf, size)); return rv; } ogs_pkbuf_t *ogs_gtp_build_msg(ogs_gtp_message_t *gtp_message) { ogs_pkbuf_t *pkbuf = NULL; ogs_assert(gtp_message); switch(gtp_message->h.type) { case OGS_GTP_ECHO_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp_tlv_desc_echo_request, >p_message->echo_request, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_ECHO_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp_tlv_desc_echo_response, >p_message->echo_response, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_CREATE_SESSION_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp_tlv_desc_create_session_request, >p_message->create_session_request, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_CREATE_SESSION_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp_tlv_desc_create_session_response, >p_message->create_session_response, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_MODIFY_BEARER_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp_tlv_desc_modify_bearer_request, >p_message->modify_bearer_request, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_MODIFY_BEARER_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp_tlv_desc_modify_bearer_response, >p_message->modify_bearer_response, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_DELETE_SESSION_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp_tlv_desc_delete_session_request, >p_message->delete_session_request, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_DELETE_SESSION_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp_tlv_desc_delete_session_response, >p_message->delete_session_response, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_MODIFY_BEARER_COMMAND_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp_tlv_desc_modify_bearer_command, >p_message->modify_bearer_command, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_MODIFY_BEARER_FAILURE_INDICATION_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp_tlv_desc_modify_bearer_failure_indication, >p_message->modify_bearer_failure_indication, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_DELETE_BEARER_COMMAND_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp_tlv_desc_delete_bearer_command, >p_message->delete_bearer_command, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_DELETE_BEARER_FAILURE_INDICATION_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp_tlv_desc_delete_bearer_failure_indication, >p_message->delete_bearer_failure_indication, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_BEARER_RESOURCE_COMMAND_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp_tlv_desc_bearer_resource_command, >p_message->bearer_resource_command, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_BEARER_RESOURCE_FAILURE_INDICATION_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp_tlv_desc_bearer_resource_failure_indication, >p_message->bearer_resource_failure_indication, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_DOWNLINK_DATA_NOTIFICATION_FAILURE_INDICATION_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp_tlv_desc_downlink_data_notification_failure_indication, >p_message->downlink_data_notification_failure_indication, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_CREATE_BEARER_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp_tlv_desc_create_bearer_request, >p_message->create_bearer_request, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_CREATE_BEARER_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp_tlv_desc_create_bearer_response, >p_message->create_bearer_response, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_UPDATE_BEARER_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp_tlv_desc_update_bearer_request, >p_message->update_bearer_request, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_UPDATE_BEARER_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp_tlv_desc_update_bearer_response, >p_message->update_bearer_response, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_DELETE_BEARER_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp_tlv_desc_delete_bearer_request, >p_message->delete_bearer_request, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_DELETE_BEARER_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp_tlv_desc_delete_bearer_response, >p_message->delete_bearer_response, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp_tlv_desc_create_indirect_data_forwarding_tunnel_request, >p_message->create_indirect_data_forwarding_tunnel_request, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp_tlv_desc_create_indirect_data_forwarding_tunnel_response, >p_message->create_indirect_data_forwarding_tunnel_response, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_DELETE_INDIRECT_DATA_FORWARDING_TUNNEL_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp_tlv_desc_delete_indirect_data_forwarding_tunnel_request, >p_message->delete_indirect_data_forwarding_tunnel_request, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_DELETE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp_tlv_desc_delete_indirect_data_forwarding_tunnel_response, >p_message->delete_indirect_data_forwarding_tunnel_response, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_RELEASE_ACCESS_BEARERS_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp_tlv_desc_release_access_bearers_request, >p_message->release_access_bearers_request, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_RELEASE_ACCESS_BEARERS_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp_tlv_desc_release_access_bearers_response, >p_message->release_access_bearers_response, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_DOWNLINK_DATA_NOTIFICATION_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp_tlv_desc_downlink_data_notification, >p_message->downlink_data_notification, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_DOWNLINK_DATA_NOTIFICATION_ACKNOWLEDGE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp_tlv_desc_downlink_data_notification_acknowledge, >p_message->downlink_data_notification_acknowledge, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_MODIFY_ACCESS_BEARERS_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp_tlv_desc_modify_access_bearers_request, >p_message->modify_access_bearers_request, OGS_TLV_MODE_T1_L2_I1); break; case OGS_GTP_MODIFY_ACCESS_BEARERS_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp_tlv_desc_modify_access_bearers_response, >p_message->modify_access_bearers_response, OGS_TLV_MODE_T1_L2_I1); break; default: ogs_warn("Not implmeneted(type:%d)", gtp_message->h.type); break; } return pkbuf; }