/* * Copyright (C) 2019 by Sukchan Lee * Copyright (C) 2022 by sysmocom - s.f.m.c. GmbH * Copyright (C) 2023 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 gtp1-tlv.py script v0.1.0 * Please do not modify this file but regenerate it via script. * Created on: 2023-08-26 16:35:02.182792 by acetcom * from 29060-h40.docx ******************************************************************************/ #include "ogs-gtp.h" ogs_tlv_desc_t ogs_gtp1_tlv_desc_cause = { OGS_TV_UINT8, "Cause", OGS_GTP1_CAUSE_TYPE, 1, 0, sizeof(ogs_gtp1_tlv_cause_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_imsi = { OGS_TV_FIXED_STR, "IMSI", OGS_GTP1_IMSI_TYPE, 8, 0, sizeof(ogs_gtp1_tlv_imsi_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_rai = { OGS_TV_FIXED_STR, "RAI", OGS_GTP1_RAI_TYPE, 6, 0, sizeof(ogs_gtp1_tlv_rai_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_tlli = { OGS_TV_UINT32, "TLLI", OGS_GTP1_TLLI_TYPE, 4, 0, sizeof(ogs_gtp1_tlv_tlli_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_p_tmsi = { OGS_TV_UINT32, "P-TMSI", OGS_GTP1_P_TMSI_TYPE, 4, 0, sizeof(ogs_gtp1_tlv_p_tmsi_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_reordering_required = { OGS_TV_UINT8, "Reordering Required", OGS_GTP1_REORDERING_REQUIRED_TYPE, 1, 0, sizeof(ogs_gtp1_tlv_reordering_required_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_authentication_triplet = { OGS_TV_FIXED_STR, "Authentication Triplet", OGS_GTP1_AUTHENTICATION_TRIPLET_TYPE, 28, 0, sizeof(ogs_gtp1_tlv_authentication_triplet_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_map_cause = { OGS_TV_FIXED_STR, "MAP Cause", OGS_GTP1_MAP_CAUSE_TYPE, 1, 0, sizeof(ogs_gtp1_tlv_map_cause_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_p_tmsi_signature = { OGS_TV_FIXED_STR, "P-TMSI Signature", OGS_GTP1_P_TMSI_SIGNATURE_TYPE, 3, 0, sizeof(ogs_gtp1_tlv_p_tmsi_signature_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_ms_validated = { OGS_TV_FIXED_STR, "MS Validated", OGS_GTP1_MS_VALIDATED_TYPE, 1, 0, sizeof(ogs_gtp1_tlv_ms_validated_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_recovery = { OGS_TV_UINT8, "Recovery", OGS_GTP1_RECOVERY_TYPE, 1, 0, sizeof(ogs_gtp1_tlv_recovery_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_selection_mode = { OGS_TV_UINT8, "Selection Mode", OGS_GTP1_SELECTION_MODE_TYPE, 1, 0, sizeof(ogs_gtp1_tlv_selection_mode_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_data_i = { OGS_TV_UINT32, "Tunnel Endpoint Identifier Data I", OGS_GTP1_TUNNEL_ENDPOINT_IDENTIFIER_DATA_I_TYPE, 4, 0, sizeof(ogs_gtp1_tlv_tunnel_endpoint_identifier_data_i_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_control_plane = { OGS_TV_UINT32, "Tunnel Endpoint Identifier Control Plane", OGS_GTP1_TUNNEL_ENDPOINT_IDENTIFIER_CONTROL_PLANE_TYPE, 4, 0, sizeof(ogs_gtp1_tlv_tunnel_endpoint_identifier_control_plane_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_data_ii = { OGS_TV_FIXED_STR, "Tunnel Endpoint Identifier Data II", OGS_GTP1_TUNNEL_ENDPOINT_IDENTIFIER_DATA_II_TYPE, 5, 0, sizeof(ogs_gtp1_tlv_tunnel_endpoint_identifier_data_ii_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_teardown_ind = { OGS_TV_UINT8, "Teardown Ind", OGS_GTP1_TEARDOWN_IND_TYPE, 1, 0, sizeof(ogs_gtp1_tlv_teardown_ind_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_nsapi = { OGS_TV_UINT8, "NSAPI", OGS_GTP1_NSAPI_TYPE, 1, 0, sizeof(ogs_gtp1_tlv_nsapi_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_ranap_cause = { OGS_TV_UINT8, "RANAP Cause", OGS_GTP1_RANAP_CAUSE_TYPE, 1, 0, sizeof(ogs_gtp1_tlv_ranap_cause_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_rab_context = { OGS_TV_FIXED_STR, "RAB Context", OGS_GTP1_RAB_CONTEXT_TYPE, 9, 0, sizeof(ogs_gtp1_tlv_rab_context_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_radio_priority_sms = { OGS_TV_UINT8, "Radio Priority SMS", OGS_GTP1_RADIO_PRIORITY_SMS_TYPE, 1, 0, sizeof(ogs_gtp1_tlv_radio_priority_sms_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_radio_priority = { OGS_TV_UINT8, "Radio Priority", OGS_GTP1_RADIO_PRIORITY_TYPE, 1, 0, sizeof(ogs_gtp1_tlv_radio_priority_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_packet_flow_id = { OGS_TV_UINT16, "Packet Flow Id", OGS_GTP1_PACKET_FLOW_ID_TYPE, 2, 0, sizeof(ogs_gtp1_tlv_packet_flow_id_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_charging_characteristics = { OGS_TV_FIXED_STR, "Charging Characteristics", OGS_GTP1_CHARGING_CHARACTERISTICS_TYPE, 2, 0, sizeof(ogs_gtp1_tlv_charging_characteristics_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_trace_reference = { OGS_TV_UINT16, "Trace Reference", OGS_GTP1_TRACE_REFERENCE_TYPE, 2, 0, sizeof(ogs_gtp1_tlv_trace_reference_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_trace_type = { OGS_TV_UINT16, "Trace Type", OGS_GTP1_TRACE_TYPE_TYPE, 2, 0, sizeof(ogs_gtp1_tlv_trace_type_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_ms_not_reachable_reason = { OGS_TV_UINT8, "MS Not Reachable Reason", OGS_GTP1_MS_NOT_REACHABLE_REASON_TYPE, 1, 0, sizeof(ogs_gtp1_tlv_ms_not_reachable_reason_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_charging_id = { OGS_TV_UINT32, "Charging ID", OGS_GTP1_CHARGING_ID_TYPE, 4, 0, sizeof(ogs_gtp1_tlv_charging_id_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_end_user_address = { OGS_TLV_VAR_STR, "End User Address", OGS_GTP1_END_USER_ADDRESS_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_end_user_address_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_mm_context = { OGS_TLV_VAR_STR, "MM Context", OGS_GTP1_MM_CONTEXT_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_mm_context_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_pdp_context = { OGS_TLV_VAR_STR, "PDP Context", OGS_GTP1_PDP_CONTEXT_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_pdp_context_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_access_point_name = { OGS_TLV_VAR_STR, "Access Point Name", OGS_GTP1_ACCESS_POINT_NAME_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_access_point_name_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_protocol_configuration_options = { OGS_TLV_VAR_STR, "Protocol Configuration Options", OGS_GTP1_PROTOCOL_CONFIGURATION_OPTIONS_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_protocol_configuration_options_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_gsn_address = { OGS_TLV_VAR_STR, "GSN Address", OGS_GTP1_GSN_ADDRESS_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_gsn_address_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_msisdn = { OGS_TLV_VAR_STR, "MSISDN", OGS_GTP1_MSISDN_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_msisdn_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_quality_of_service_profile = { OGS_TLV_VAR_STR, "Quality of Service Profile", OGS_GTP1_QUALITY_OF_SERVICE_PROFILE_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_quality_of_service_profile_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_authentication_quintuplet = { OGS_TLV_VAR_STR, "Authentication Quintuplet", OGS_GTP1_AUTHENTICATION_QUINTUPLET_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_authentication_quintuplet_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_traffic_flow_template = { OGS_TLV_VAR_STR, "Traffic Flow Template", OGS_GTP1_TRAFFIC_FLOW_TEMPLATE_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_traffic_flow_template_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_target_identification = { OGS_TLV_VAR_STR, "Target Identification", OGS_GTP1_TARGET_IDENTIFICATION_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_target_identification_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_utran_transparent_container = { OGS_TLV_VAR_STR, "UTRAN Transparent Container", OGS_GTP1_UTRAN_TRANSPARENT_CONTAINER_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_utran_transparent_container_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_rab_setup_information = { OGS_TLV_VAR_STR, "RAB Setup Information", OGS_GTP1_RAB_SETUP_INFORMATION_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_rab_setup_information_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_extension_header_type_list = { OGS_TLV_VAR_STR, "Extension Header Type List", OGS_GTP1_EXTENSION_HEADER_TYPE_LIST_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_extension_header_type_list_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_trigger_id = { OGS_TLV_VAR_STR, "Trigger Id", OGS_GTP1_TRIGGER_ID_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_trigger_id_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_omc_identity = { OGS_TLV_VAR_STR, "OMC Identity", OGS_GTP1_OMC_IDENTITY_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_omc_identity_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_ran_transparent_container = { OGS_TLV_VAR_STR, "RAN Transparent Container", OGS_GTP1_RAN_TRANSPARENT_CONTAINER_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_ran_transparent_container_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_pdp_context_prioritization = { OGS_TLV_FIXED_STR, "PDP Context Prioritization", OGS_GTP1_PDP_CONTEXT_PRIORITIZATION_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_pdp_context_prioritization_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_additional_rab_setup_information = { OGS_TLV_VAR_STR, "Additional RAB Setup Information", OGS_GTP1_ADDITIONAL_RAB_SETUP_INFORMATION_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_additional_rab_setup_information_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_sgsn_number = { OGS_TLV_VAR_STR, "SGSN Number", OGS_GTP1_SGSN_NUMBER_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_sgsn_number_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_common_flags = { OGS_TLV_FIXED_STR, "Common Flags", OGS_GTP1_COMMON_FLAGS_TYPE, 1, 0, sizeof(ogs_gtp1_tlv_common_flags_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_apn_restriction = { OGS_TLV_UINT8, "APN Restriction", OGS_GTP1_APN_RESTRICTION_TYPE, 1, 0, sizeof(ogs_gtp1_tlv_apn_restriction_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_radio_priority_lcs = { OGS_TLV_FIXED_STR, "Radio Priority LCS", OGS_GTP1_RADIO_PRIORITY_LCS_TYPE, 1, 0, sizeof(ogs_gtp1_tlv_radio_priority_lcs_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_rat_type = { OGS_TLV_UINT8, "RAT Type", OGS_GTP1_RAT_TYPE_TYPE, 1, 0, sizeof(ogs_gtp1_tlv_rat_type_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_user_location_information = { OGS_TLV_VAR_STR, "User Location Information", OGS_GTP1_USER_LOCATION_INFORMATION_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_user_location_information_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_ms_time_zone = { OGS_TLV_FIXED_STR, "MS Time Zone", OGS_GTP1_MS_TIME_ZONE_TYPE, 2, 0, sizeof(ogs_gtp1_tlv_ms_time_zone_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_sv = { OGS_TLV_FIXED_STR, "SV", OGS_GTP1_SV_TYPE, 8, 0, sizeof(ogs_gtp1_tlv_sv_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_camel_charging_information_container = { OGS_TLV_VAR_STR, "CAMEL Charging Information Container", OGS_GTP1_CAMEL_CHARGING_INFORMATION_CONTAINER_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_camel_charging_information_container_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_mbms_ue_context = { OGS_TLV_VAR_STR, "MBMS UE Context", OGS_GTP1_MBMS_UE_CONTEXT_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_mbms_ue_context_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_tmgi = { OGS_TLV_FIXED_STR, "TMGI", OGS_GTP1_TMGI_TYPE, 6, 0, sizeof(ogs_gtp1_tlv_tmgi_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_rim_routing_address = { OGS_TLV_VAR_STR, "RIM Routing Address", OGS_GTP1_RIM_ROUTING_ADDRESS_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_rim_routing_address_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_mbms_protocol_configuration_options = { OGS_TLV_VAR_STR, "MBMS Protocol Configuration Options", OGS_GTP1_MBMS_PROTOCOL_CONFIGURATION_OPTIONS_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_mbms_protocol_configuration_options_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_mbms_service_area = { OGS_TLV_VAR_STR, "MBMS Service Area", OGS_GTP1_MBMS_SERVICE_AREA_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_mbms_service_area_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_source_rnc_pdcp_context_info = { OGS_TLV_VAR_STR, "Source RNC PDCP context info", OGS_GTP1_SOURCE_RNC_PDCP_CONTEXT_INFO_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_source_rnc_pdcp_context_info_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_additional_trace_info = { OGS_TLV_FIXED_STR, "Additional Trace Info", OGS_GTP1_ADDITIONAL_TRACE_INFO_TYPE, 9, 0, sizeof(ogs_gtp1_tlv_additional_trace_info_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_hop_counter = { OGS_TLV_FIXED_STR, "Hop Counter", OGS_GTP1_HOP_COUNTER_TYPE, 1, 0, sizeof(ogs_gtp1_tlv_hop_counter_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_selected_plmn_id = { OGS_TLV_FIXED_STR, "Selected PLMN ID", OGS_GTP1_SELECTED_PLMN_ID_TYPE, 3, 0, sizeof(ogs_gtp1_tlv_selected_plmn_id_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_mbms_session_identifier = { OGS_TLV_FIXED_STR, "MBMS Session Identifier", OGS_GTP1_MBMS_SESSION_IDENTIFIER_TYPE, 1, 0, sizeof(ogs_gtp1_tlv_mbms_session_identifier_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_mbms_2g_3g_indicator = { OGS_TLV_FIXED_STR, "MBMS 2G/3G Indicator", OGS_GTP1_MBMS_2G_3G_INDICATOR_TYPE, 1, 0, sizeof(ogs_gtp1_tlv_mbms_2g_3g_indicator_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_enhanced_nsapi = { OGS_TLV_FIXED_STR, "Enhanced NSAPI", OGS_GTP1_ENHANCED_NSAPI_TYPE, 1, 0, sizeof(ogs_gtp1_tlv_enhanced_nsapi_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_mbms_session_duration = { OGS_TLV_FIXED_STR, "MBMS Session Duration", OGS_GTP1_MBMS_SESSION_DURATION_TYPE, 3, 0, sizeof(ogs_gtp1_tlv_mbms_session_duration_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_additional_mbms_trace_info = { OGS_TLV_FIXED_STR, "Additional MBMS Trace Info", OGS_GTP1_ADDITIONAL_MBMS_TRACE_INFO_TYPE, 8, 0, sizeof(ogs_gtp1_tlv_additional_mbms_trace_info_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_mbms_session_repetition_number = { OGS_TLV_FIXED_STR, "MBMS Session Repetition Number", OGS_GTP1_MBMS_SESSION_REPETITION_NUMBER_TYPE, 1, 0, sizeof(ogs_gtp1_tlv_mbms_session_repetition_number_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_mbms_time_to_data_transfer = { OGS_TLV_FIXED_STR, "MBMS Time To Data Transfer", OGS_GTP1_MBMS_TIME_TO_DATA_TRANSFER_TYPE, 1, 0, sizeof(ogs_gtp1_tlv_mbms_time_to_data_transfer_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_bss_container = { OGS_TLV_VAR_STR, "BSS Container", OGS_GTP1_BSS_CONTAINER_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_bss_container_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_cell_identification = { OGS_TLV_FIXED_STR, "Cell Identification", OGS_GTP1_CELL_IDENTIFICATION_TYPE, 17, 0, sizeof(ogs_gtp1_tlv_cell_identification_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_pdu_numbers = { OGS_TLV_FIXED_STR, "PDU Numbers", OGS_GTP1_PDU_NUMBERS_TYPE, 9, 0, sizeof(ogs_gtp1_tlv_pdu_numbers_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_bssgp_cause = { OGS_TLV_FIXED_STR, "BSSGP Cause", OGS_GTP1_BSSGP_CAUSE_TYPE, 1, 0, sizeof(ogs_gtp1_tlv_bssgp_cause_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_required_mbms_bearer_capabilities = { OGS_TLV_VAR_STR, "Required MBMS bearer capabilities", OGS_GTP1_REQUIRED_MBMS_BEARER_CAPABILITIES_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_required_mbms_bearer_capabilities_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_rim_routing_address_discriminator = { OGS_TLV_FIXED_STR, "RIM Routing Address Discriminator", OGS_GTP1_RIM_ROUTING_ADDRESS_DISCRIMINATOR_TYPE, 1, 0, sizeof(ogs_gtp1_tlv_rim_routing_address_discriminator_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_list_of_set_up_pfcs = { OGS_TLV_VAR_STR, "List of set-up PFCs", OGS_GTP1_LIST_OF_SET_UP_PFCS_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_list_of_set_up_pfcs_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_ps_handover_xid_parameters = { OGS_TLV_VAR_STR, "PS Handover XID Parameters", OGS_GTP1_PS_HANDOVER_XID_PARAMETERS_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_ps_handover_xid_parameters_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_ms_info_change_reporting_action = { OGS_TLV_FIXED_STR, "MS Info Change Reporting Action", OGS_GTP1_MS_INFO_CHANGE_REPORTING_ACTION_TYPE, 1, 0, sizeof(ogs_gtp1_tlv_ms_info_change_reporting_action_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_direct_tunnel_flags = { OGS_TLV_VAR_STR, "Direct Tunnel Flags", OGS_GTP1_DIRECT_TUNNEL_FLAGS_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_direct_tunnel_flags_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_correlation_id = { OGS_TLV_FIXED_STR, "Correlation-ID", OGS_GTP1_CORRELATION_ID_TYPE, 1, 0, sizeof(ogs_gtp1_tlv_correlation_id_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_bearer_control_mode = { OGS_TLV_FIXED_STR, "Bearer Control Mode", OGS_GTP1_BEARER_CONTROL_MODE_TYPE, 1, 0, sizeof(ogs_gtp1_tlv_bearer_control_mode_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_mbms_flow_identifier = { OGS_TLV_VAR_STR, "MBMS Flow Identifier", OGS_GTP1_MBMS_FLOW_IDENTIFIER_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_mbms_flow_identifier_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_mbms_ip_multicast_distribution = { OGS_TLV_VAR_STR, "MBMS IP Multicast Distribution", OGS_GTP1_MBMS_IP_MULTICAST_DISTRIBUTION_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_mbms_ip_multicast_distribution_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_mbms_distribution_acknowledgement = { OGS_TLV_FIXED_STR, "MBMS Distribution Acknowledgement", OGS_GTP1_MBMS_DISTRIBUTION_ACKNOWLEDGEMENT_TYPE, 1, 0, sizeof(ogs_gtp1_tlv_mbms_distribution_acknowledgement_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_reliable_inter_rat_handover_info = { OGS_TLV_FIXED_STR, "Reliable INTER RAT HANDOVER INFO", OGS_GTP1_RELIABLE_INTER_RAT_HANDOVER_INFO_TYPE, 1, 0, sizeof(ogs_gtp1_tlv_reliable_inter_rat_handover_info_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_rfsp_index = { OGS_TLV_FIXED_STR, "RFSP Index", OGS_GTP1_RFSP_INDEX_TYPE, 2, 0, sizeof(ogs_gtp1_tlv_rfsp_index_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_fqdn = { OGS_TLV_VAR_STR, "FQDN", OGS_GTP1_FQDN_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_fqdn_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_evolved_allocation_retention_priority_i = { OGS_TLV_FIXED_STR, "Evolved Allocation/Retention Priority I", OGS_GTP1_EVOLVED_ALLOCATION_RETENTION_PRIORITY_I_TYPE, 1, 0, sizeof(ogs_gtp1_tlv_evolved_allocation_retention_priority_i_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_evolved_allocation_retention_priority_ii = { OGS_TLV_FIXED_STR, "Evolved Allocation/Retention Priority II", OGS_GTP1_EVOLVED_ALLOCATION_RETENTION_PRIORITY_II_TYPE, 2, 0, sizeof(ogs_gtp1_tlv_evolved_allocation_retention_priority_ii_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_extended_common_flags = { OGS_TLV_VAR_STR, "Extended Common Flags", OGS_GTP1_EXTENDED_COMMON_FLAGS_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_extended_common_flags_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_uci = { OGS_TLV_FIXED_STR, "UCI", OGS_GTP1_UCI_TYPE, 8, 0, sizeof(ogs_gtp1_tlv_uci_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_csg_information_reporting_action = { OGS_TLV_VAR_STR, "CSG Information Reporting Action", OGS_GTP1_CSG_INFORMATION_REPORTING_ACTION_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_csg_information_reporting_action_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_csg_id = { OGS_TLV_FIXED_STR, "CSG ID", OGS_GTP1_CSG_ID_TYPE, 4, 0, sizeof(ogs_gtp1_tlv_csg_id_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_cmi = { OGS_TLV_FIXED_STR, "CMI", OGS_GTP1_CMI_TYPE, 1, 0, sizeof(ogs_gtp1_tlv_cmi_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_ambr = { OGS_TLV_FIXED_STR, "AMBR", OGS_GTP1_AMBR_TYPE, 8, 0, sizeof(ogs_gtp1_tlv_ambr_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_ue_network_capability = { OGS_TLV_VAR_STR, "UE Network Capability", OGS_GTP1_UE_NETWORK_CAPABILITY_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_ue_network_capability_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_ue_ambr = { OGS_TLV_VAR_STR, "UE-AMBR", OGS_GTP1_UE_AMBR_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_ue_ambr_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_apn_ambr_with_nsapi = { OGS_TLV_FIXED_STR, "APN-AMBR with NSAPI", OGS_GTP1_APN_AMBR_WITH_NSAPI_TYPE, 9, 0, sizeof(ogs_gtp1_tlv_apn_ambr_with_nsapi_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_ggsn_back_off_time = { OGS_TLV_VAR_STR, "GGSN Back-Off Time", OGS_GTP1_GGSN_BACK_OFF_TIME_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_ggsn_back_off_time_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_signalling_priority_indication = { OGS_TLV_VAR_STR, "Signalling Priority Indication", OGS_GTP1_SIGNALLING_PRIORITY_INDICATION_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_signalling_priority_indication_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_signalling_priority_indication_with_nsapi = { OGS_TLV_VAR_STR, "Signalling Priority Indication with NSAPI", OGS_GTP1_SIGNALLING_PRIORITY_INDICATION_WITH_NSAPI_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_signalling_priority_indication_with_nsapi_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_higher_bitrates_than_16_mbps_flag = { OGS_TLV_FIXED_STR, "Higher bitrates than 16 Mbps flag", OGS_GTP1_HIGHER_BITRATES_THAN_16_MBPS_FLAG_TYPE, 1, 0, sizeof(ogs_gtp1_tlv_higher_bitrates_than_16_mbps_flag_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_additional_mm_context_for_srvcc = { OGS_TLV_VAR_STR, "Additional MM context for SRVCC", OGS_GTP1_ADDITIONAL_MM_CONTEXT_FOR_SRVCC_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_additional_mm_context_for_srvcc_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_additional_flags_for_srvcc = { OGS_TLV_VAR_STR, "Additional flags for SRVCC", OGS_GTP1_ADDITIONAL_FLAGS_FOR_SRVCC_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_additional_flags_for_srvcc_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_stn_sr = { OGS_TLV_VAR_STR, "STN-SR", OGS_GTP1_STN_SR_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_stn_sr_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_c_msisdn = { OGS_TLV_VAR_STR, "C-MSISDN", OGS_GTP1_C_MSISDN_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_c_msisdn_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_extended_ranap_cause = { OGS_TLV_VAR_STR, "Extended RANAP Cause", OGS_GTP1_EXTENDED_RANAP_CAUSE_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_extended_ranap_cause_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_enodeb_id = { OGS_TLV_VAR_STR, "eNodeB ID", OGS_GTP1_ENODEB_ID_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_enodeb_id_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_selection_mode_with_nsapi = { OGS_TLV_FIXED_STR, "Selection Mode with NSAPI", OGS_GTP1_SELECTION_MODE_WITH_NSAPI_TYPE, 2, 0, sizeof(ogs_gtp1_tlv_selection_mode_with_nsapi_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_uli_timestamp = { OGS_TLV_VAR_STR, "ULI Timestamp", OGS_GTP1_ULI_TIMESTAMP_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_uli_timestamp_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_lhn_id_with_nsapi = { OGS_TLV_VAR_STR, "LHN-ID with NSAPI", OGS_GTP1_LHN_ID_WITH_NSAPI_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_lhn_id_with_nsapi_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_cn_operator_selection_entity = { OGS_TLV_VAR_STR, "CN Operator Selection Entity", OGS_GTP1_CN_OPERATOR_SELECTION_ENTITY_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_cn_operator_selection_entity_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_ue_usage_type = { OGS_TLV_VAR_STR, "UE Usage Type", OGS_GTP1_UE_USAGE_TYPE_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_ue_usage_type_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_extended_common_flags_ii = { OGS_TLV_VAR_STR, "Extended Common Flags II", OGS_GTP1_EXTENDED_COMMON_FLAGS_II_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_extended_common_flags_ii_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_node_identifier = { OGS_TLV_VAR_STR, "Node Identifier", OGS_GTP1_NODE_IDENTIFIER_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_node_identifier_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_ciot_optimizations_support_indication = { OGS_TLV_VAR_STR, "CIoT Optimizations Support Indication", OGS_GTP1_CIOT_OPTIMIZATIONS_SUPPORT_INDICATION_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_ciot_optimizations_support_indication_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_scef_pdn_connection = { OGS_TLV_VAR_STR, "SCEF PDN Connection", OGS_GTP1_SCEF_PDN_CONNECTION_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_scef_pdn_connection_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_iov_updates_counter = { OGS_TLV_FIXED_STR, "IOV_updates counter", OGS_GTP1_IOV_UPDATES_COUNTER_TYPE, 1, 0, sizeof(ogs_gtp1_tlv_iov_updates_counter_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_mapped_ue_usage_type = { OGS_TLV_VAR_STR, "Mapped UE Usage Type", OGS_GTP1_MAPPED_UE_USAGE_TYPE_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_mapped_ue_usage_type_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_up_function_selection_indication_flags = { OGS_TLV_VAR_STR, "UP Function Selection Indication Flags", OGS_GTP1_UP_FUNCTION_SELECTION_INDICATION_FLAGS_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_up_function_selection_indication_flags_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_special_ie_type_for_ie_type_extension = { OGS_TLV_VAR_STR, "Special IE type for IE Type Extension", OGS_GTP1_SPECIAL_IE_TYPE_FOR_IE_TYPE_EXTENSION_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_special_ie_type_for_ie_type_extension_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_charging_gateway_address = { OGS_TLV_VAR_STR, "Charging Gateway Address", OGS_GTP1_CHARGING_GATEWAY_ADDRESS_TYPE, 0, 0, sizeof(ogs_gtp1_tlv_charging_gateway_address_t), { NULL } }; ogs_tlv_desc_t ogs_gtp1_tlv_desc_echo_request = { OGS_TLV_MESSAGE, "Echo Request", 0, 0, 0, 0, { NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_echo_response = { OGS_TLV_MESSAGE, "Echo Response", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_recovery, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_create_pdp_context_request = { OGS_TLV_MESSAGE, "Create PDP Context Request", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_imsi, &ogs_gtp1_tlv_desc_rai, &ogs_gtp1_tlv_desc_recovery, &ogs_gtp1_tlv_desc_selection_mode, &ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_data_i, &ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_control_plane, &ogs_gtp1_tlv_desc_nsapi, &ogs_gtp1_tlv_desc_nsapi, &ogs_gtp1_tlv_desc_charging_characteristics, &ogs_gtp1_tlv_desc_trace_reference, &ogs_gtp1_tlv_desc_trace_type, &ogs_gtp1_tlv_desc_end_user_address, &ogs_gtp1_tlv_desc_access_point_name, &ogs_gtp1_tlv_desc_protocol_configuration_options, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_msisdn, &ogs_gtp1_tlv_desc_quality_of_service_profile, &ogs_gtp1_tlv_desc_traffic_flow_template, &ogs_gtp1_tlv_desc_trigger_id, &ogs_gtp1_tlv_desc_omc_identity, &ogs_gtp1_tlv_desc_common_flags, &ogs_gtp1_tlv_desc_apn_restriction, &ogs_gtp1_tlv_desc_rat_type, &ogs_gtp1_tlv_desc_user_location_information, &ogs_gtp1_tlv_desc_ms_time_zone, &ogs_gtp1_tlv_desc_sv, &ogs_gtp1_tlv_desc_camel_charging_information_container, &ogs_gtp1_tlv_desc_additional_trace_info, &ogs_gtp1_tlv_desc_correlation_id, &ogs_gtp1_tlv_desc_evolved_allocation_retention_priority_i, &ogs_gtp1_tlv_desc_extended_common_flags, &ogs_gtp1_tlv_desc_uci, &ogs_gtp1_tlv_desc_ambr, &ogs_gtp1_tlv_desc_signalling_priority_indication, &ogs_gtp1_tlv_desc_cn_operator_selection_entity, &ogs_gtp1_tlv_desc_mapped_ue_usage_type, &ogs_gtp1_tlv_desc_up_function_selection_indication_flags, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_create_pdp_context_response = { OGS_TLV_MESSAGE, "Create PDP Context Response", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_cause, &ogs_gtp1_tlv_desc_reordering_required, &ogs_gtp1_tlv_desc_recovery, &ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_data_i, &ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_control_plane, &ogs_gtp1_tlv_desc_nsapi, &ogs_gtp1_tlv_desc_charging_id, &ogs_gtp1_tlv_desc_end_user_address, &ogs_gtp1_tlv_desc_protocol_configuration_options, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_quality_of_service_profile, &ogs_gtp1_tlv_desc_charging_gateway_address, &ogs_gtp1_tlv_desc_charging_gateway_address, &ogs_gtp1_tlv_desc_common_flags, &ogs_gtp1_tlv_desc_apn_restriction, &ogs_gtp1_tlv_desc_ms_info_change_reporting_action, &ogs_gtp1_tlv_desc_bearer_control_mode, &ogs_gtp1_tlv_desc_evolved_allocation_retention_priority_i, &ogs_gtp1_tlv_desc_extended_common_flags, &ogs_gtp1_tlv_desc_csg_information_reporting_action, &ogs_gtp1_tlv_desc_ambr, &ogs_gtp1_tlv_desc_ggsn_back_off_time, &ogs_gtp1_tlv_desc_extended_common_flags_ii, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_update_pdp_context_request = { OGS_TLV_MESSAGE, "Update PDP Context Request", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_imsi, &ogs_gtp1_tlv_desc_rai, &ogs_gtp1_tlv_desc_recovery, &ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_data_i, &ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_control_plane, &ogs_gtp1_tlv_desc_nsapi, &ogs_gtp1_tlv_desc_trace_reference, &ogs_gtp1_tlv_desc_trace_type, &ogs_gtp1_tlv_desc_protocol_configuration_options, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_quality_of_service_profile, &ogs_gtp1_tlv_desc_traffic_flow_template, &ogs_gtp1_tlv_desc_trigger_id, &ogs_gtp1_tlv_desc_omc_identity, &ogs_gtp1_tlv_desc_common_flags, &ogs_gtp1_tlv_desc_rat_type, &ogs_gtp1_tlv_desc_user_location_information, &ogs_gtp1_tlv_desc_ms_time_zone, &ogs_gtp1_tlv_desc_additional_trace_info, &ogs_gtp1_tlv_desc_direct_tunnel_flags, &ogs_gtp1_tlv_desc_evolved_allocation_retention_priority_i, &ogs_gtp1_tlv_desc_extended_common_flags, &ogs_gtp1_tlv_desc_uci, &ogs_gtp1_tlv_desc_ambr, &ogs_gtp1_tlv_desc_signalling_priority_indication, &ogs_gtp1_tlv_desc_cn_operator_selection_entity, &ogs_gtp1_tlv_desc_sv, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_update_pdp_context_response = { OGS_TLV_MESSAGE, "Update PDP Context Response", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_cause, &ogs_gtp1_tlv_desc_recovery, &ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_data_i, &ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_control_plane, &ogs_gtp1_tlv_desc_charging_id, &ogs_gtp1_tlv_desc_protocol_configuration_options, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_quality_of_service_profile, &ogs_gtp1_tlv_desc_charging_gateway_address, &ogs_gtp1_tlv_desc_charging_gateway_address, &ogs_gtp1_tlv_desc_common_flags, &ogs_gtp1_tlv_desc_apn_restriction, &ogs_gtp1_tlv_desc_bearer_control_mode, &ogs_gtp1_tlv_desc_ms_info_change_reporting_action, &ogs_gtp1_tlv_desc_evolved_allocation_retention_priority_i, &ogs_gtp1_tlv_desc_csg_information_reporting_action, &ogs_gtp1_tlv_desc_ambr, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_delete_pdp_context_request = { OGS_TLV_MESSAGE, "Delete PDP Context Request", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_cause, &ogs_gtp1_tlv_desc_teardown_ind, &ogs_gtp1_tlv_desc_nsapi, &ogs_gtp1_tlv_desc_protocol_configuration_options, &ogs_gtp1_tlv_desc_user_location_information, &ogs_gtp1_tlv_desc_ms_time_zone, &ogs_gtp1_tlv_desc_extended_common_flags, &ogs_gtp1_tlv_desc_uli_timestamp, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_delete_pdp_context_response = { OGS_TLV_MESSAGE, "Delete PDP Context Response", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_cause, &ogs_gtp1_tlv_desc_protocol_configuration_options, &ogs_gtp1_tlv_desc_user_location_information, &ogs_gtp1_tlv_desc_ms_time_zone, &ogs_gtp1_tlv_desc_uli_timestamp, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_initiate_pdp_context_activation_request = { OGS_TLV_MESSAGE, "Initiate PDP Context Activation Request", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_nsapi, &ogs_gtp1_tlv_desc_protocol_configuration_options, &ogs_gtp1_tlv_desc_quality_of_service_profile, &ogs_gtp1_tlv_desc_traffic_flow_template, &ogs_gtp1_tlv_desc_correlation_id, &ogs_gtp1_tlv_desc_evolved_allocation_retention_priority_i, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_initiate_pdp_context_activation_response = { OGS_TLV_MESSAGE, "Initiate PDP Context Activation Response", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_cause, &ogs_gtp1_tlv_desc_protocol_configuration_options, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_pdu_notification_request = { OGS_TLV_MESSAGE, "PDU Notification Request", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_imsi, &ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_control_plane, &ogs_gtp1_tlv_desc_end_user_address, &ogs_gtp1_tlv_desc_access_point_name, &ogs_gtp1_tlv_desc_protocol_configuration_options, &ogs_gtp1_tlv_desc_gsn_address, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_pdu_notification_response = { OGS_TLV_MESSAGE, "PDU Notification Response", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_cause, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_pdu_notification_reject_request = { OGS_TLV_MESSAGE, "PDU Notification Reject Request", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_cause, &ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_control_plane, &ogs_gtp1_tlv_desc_end_user_address, &ogs_gtp1_tlv_desc_access_point_name, &ogs_gtp1_tlv_desc_protocol_configuration_options, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_pdu_notification_reject_response = { OGS_TLV_MESSAGE, "PDU Notification Reject Response", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_cause, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_supported_extension_headers_notification = { OGS_TLV_MESSAGE, "Supported Extension Headers Notification", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_extension_header_type_list, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_send_routeing_information_for_gprs_request = { OGS_TLV_MESSAGE, "Send Routeing Information for GPRS Request", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_imsi, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_send_routeing_information_for_gprs_response = { OGS_TLV_MESSAGE, "Send Routeing Information for GPRS Response", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_cause, &ogs_gtp1_tlv_desc_imsi, &ogs_gtp1_tlv_desc_map_cause, &ogs_gtp1_tlv_desc_ms_not_reachable_reason, &ogs_gtp1_tlv_desc_gsn_address, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_failure_report_request = { OGS_TLV_MESSAGE, "Failure Report Request", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_imsi, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_failure_report_response = { OGS_TLV_MESSAGE, "Failure Report Response", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_cause, &ogs_gtp1_tlv_desc_map_cause, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_note_ms_gprs_present_request = { OGS_TLV_MESSAGE, "Note MS GPRS Present Request", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_imsi, &ogs_gtp1_tlv_desc_gsn_address, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_note_ms_gprs_present_response = { OGS_TLV_MESSAGE, "Note MS GPRS Present Response", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_cause, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_identification_request = { OGS_TLV_MESSAGE, "Identification Request", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_rai, &ogs_gtp1_tlv_desc_p_tmsi, &ogs_gtp1_tlv_desc_p_tmsi_signature, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_hop_counter, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_identification_response = { OGS_TLV_MESSAGE, "Identification Response", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_cause, &ogs_gtp1_tlv_desc_imsi, &ogs_gtp1_tlv_desc_authentication_triplet, &ogs_gtp1_tlv_desc_authentication_quintuplet, &ogs_gtp1_tlv_desc_ue_usage_type, &ogs_gtp1_tlv_desc_iov_updates_counter, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_sgsn_context_request = { OGS_TLV_MESSAGE, "SGSN Context Request", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_imsi, &ogs_gtp1_tlv_desc_rai, &ogs_gtp1_tlv_desc_tlli, &ogs_gtp1_tlv_desc_p_tmsi, &ogs_gtp1_tlv_desc_p_tmsi_signature, &ogs_gtp1_tlv_desc_ms_validated, &ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_control_plane, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_sgsn_number, &ogs_gtp1_tlv_desc_rat_type, &ogs_gtp1_tlv_desc_hop_counter, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_sgsn_context_response = { OGS_TLV_MESSAGE, "SGSN Context Response", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_cause, &ogs_gtp1_tlv_desc_imsi, &ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_control_plane, &ogs_gtp1_tlv_desc_rab_context, &ogs_gtp1_tlv_desc_radio_priority_sms, &ogs_gtp1_tlv_desc_radio_priority, &ogs_gtp1_tlv_desc_packet_flow_id, &ogs_gtp1_tlv_desc_charging_characteristics, &ogs_gtp1_tlv_desc_radio_priority_lcs, &ogs_gtp1_tlv_desc_mm_context, &ogs_gtp1_tlv_desc_pdp_context, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_pdp_context_prioritization, &ogs_gtp1_tlv_desc_mbms_ue_context, &ogs_gtp1_tlv_desc_rfsp_index, &ogs_gtp1_tlv_desc_rfsp_index, &ogs_gtp1_tlv_desc_fqdn, &ogs_gtp1_tlv_desc_evolved_allocation_retention_priority_ii, &ogs_gtp1_tlv_desc_extended_common_flags, &ogs_gtp1_tlv_desc_ue_network_capability, &ogs_gtp1_tlv_desc_ue_ambr, &ogs_gtp1_tlv_desc_apn_ambr_with_nsapi, &ogs_gtp1_tlv_desc_signalling_priority_indication_with_nsapi, &ogs_gtp1_tlv_desc_higher_bitrates_than_16_mbps_flag, &ogs_gtp1_tlv_desc_selection_mode_with_nsapi, &ogs_gtp1_tlv_desc_lhn_id_with_nsapi, &ogs_gtp1_tlv_desc_ue_usage_type, &ogs_gtp1_tlv_desc_extended_common_flags_ii, &ogs_gtp1_tlv_desc_scef_pdn_connection, &ogs_gtp1_tlv_desc_iov_updates_counter, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_sgsn_context_acknowledge = { OGS_TLV_MESSAGE, "SGSN Context Acknowledge", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_cause, &ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_data_ii, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_sgsn_number, &ogs_gtp1_tlv_desc_node_identifier, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_forward_relocation_request = { OGS_TLV_MESSAGE, "Forward Relocation Request", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_imsi, &ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_control_plane, &ogs_gtp1_tlv_desc_ranap_cause, &ogs_gtp1_tlv_desc_packet_flow_id, &ogs_gtp1_tlv_desc_charging_characteristics, &ogs_gtp1_tlv_desc_mm_context, &ogs_gtp1_tlv_desc_pdp_context, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_target_identification, &ogs_gtp1_tlv_desc_utran_transparent_container, &ogs_gtp1_tlv_desc_pdp_context_prioritization, &ogs_gtp1_tlv_desc_mbms_ue_context, &ogs_gtp1_tlv_desc_selected_plmn_id, &ogs_gtp1_tlv_desc_bss_container, &ogs_gtp1_tlv_desc_cell_identification, &ogs_gtp1_tlv_desc_bssgp_cause, &ogs_gtp1_tlv_desc_ps_handover_xid_parameters, &ogs_gtp1_tlv_desc_direct_tunnel_flags, &ogs_gtp1_tlv_desc_reliable_inter_rat_handover_info, &ogs_gtp1_tlv_desc_rfsp_index, &ogs_gtp1_tlv_desc_rfsp_index, &ogs_gtp1_tlv_desc_fqdn, &ogs_gtp1_tlv_desc_evolved_allocation_retention_priority_ii, &ogs_gtp1_tlv_desc_extended_common_flags, &ogs_gtp1_tlv_desc_csg_id, &ogs_gtp1_tlv_desc_cmi, &ogs_gtp1_tlv_desc_ue_network_capability, &ogs_gtp1_tlv_desc_ue_ambr, &ogs_gtp1_tlv_desc_apn_ambr_with_nsapi, &ogs_gtp1_tlv_desc_signalling_priority_indication_with_nsapi, &ogs_gtp1_tlv_desc_higher_bitrates_than_16_mbps_flag, &ogs_gtp1_tlv_desc_additional_mm_context_for_srvcc, &ogs_gtp1_tlv_desc_additional_flags_for_srvcc, &ogs_gtp1_tlv_desc_stn_sr, &ogs_gtp1_tlv_desc_c_msisdn, &ogs_gtp1_tlv_desc_extended_ranap_cause, &ogs_gtp1_tlv_desc_enodeb_id, &ogs_gtp1_tlv_desc_selection_mode_with_nsapi, &ogs_gtp1_tlv_desc_ue_usage_type, &ogs_gtp1_tlv_desc_extended_common_flags_ii, &ogs_gtp1_tlv_desc_scef_pdn_connection, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_forward_relocation_response = { OGS_TLV_MESSAGE, "Forward Relocation Response", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_cause, &ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_control_plane, &ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_data_ii, &ogs_gtp1_tlv_desc_ranap_cause, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_utran_transparent_container, &ogs_gtp1_tlv_desc_rab_setup_information, &ogs_gtp1_tlv_desc_additional_rab_setup_information, &ogs_gtp1_tlv_desc_sgsn_number, &ogs_gtp1_tlv_desc_bss_container, &ogs_gtp1_tlv_desc_bssgp_cause, &ogs_gtp1_tlv_desc_list_of_set_up_pfcs, &ogs_gtp1_tlv_desc_extended_ranap_cause, &ogs_gtp1_tlv_desc_node_identifier, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_forward_relocation_complete = { OGS_TLV_MESSAGE, "Forward Relocation Complete", 0, 0, 0, 0, { NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_relocation_cancel_request = { OGS_TLV_MESSAGE, "Relocation Cancel Request", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_imsi, &ogs_gtp1_tlv_desc_sv, &ogs_gtp1_tlv_desc_extended_common_flags, &ogs_gtp1_tlv_desc_extended_ranap_cause, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_relocation_cancel_response = { OGS_TLV_MESSAGE, "Relocation Cancel Response", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_cause, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_forward_srns_context = { OGS_TLV_MESSAGE, "Forward SRNS Context", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_rab_context, &ogs_gtp1_tlv_desc_source_rnc_pdcp_context_info, &ogs_gtp1_tlv_desc_pdu_numbers, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_forward_relocation_complete_acknowledge = { OGS_TLV_MESSAGE, "Forward Relocation Complete Acknowledge", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_cause, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_forward_srns_context_acknowledge = { OGS_TLV_MESSAGE, "Forward SRNS Context Acknowledge", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_cause, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_ue_registration_query_request = { OGS_TLV_MESSAGE, "UE Registration Query Request", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_imsi, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_ue_registration_query_response = { OGS_TLV_MESSAGE, "UE Registration Query Response", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_cause, &ogs_gtp1_tlv_desc_imsi, &ogs_gtp1_tlv_desc_selected_plmn_id, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_ran_information_relay = { OGS_TLV_MESSAGE, "RAN Information Relay", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_ran_transparent_container, &ogs_gtp1_tlv_desc_rim_routing_address, &ogs_gtp1_tlv_desc_rim_routing_address_discriminator, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_mbms_notification_request = { OGS_TLV_MESSAGE, "MBMS Notification Request", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_imsi, &ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_control_plane, &ogs_gtp1_tlv_desc_nsapi, &ogs_gtp1_tlv_desc_end_user_address, &ogs_gtp1_tlv_desc_access_point_name, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_mbms_protocol_configuration_options, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_mbms_notification_response = { OGS_TLV_MESSAGE, "MBMS Notification Response", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_cause, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_mbms_notification_reject_request = { OGS_TLV_MESSAGE, "MBMS Notification Reject Request", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_cause, &ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_control_plane, &ogs_gtp1_tlv_desc_nsapi, &ogs_gtp1_tlv_desc_end_user_address, &ogs_gtp1_tlv_desc_access_point_name, &ogs_gtp1_tlv_desc_gsn_address, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_mbms_notification_reject_response = { OGS_TLV_MESSAGE, "MBMS Notification Reject Response", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_cause, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_create_mbms_context_request = { OGS_TLV_MESSAGE, "Create MBMS Context Request", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_imsi, &ogs_gtp1_tlv_desc_rai, &ogs_gtp1_tlv_desc_recovery, &ogs_gtp1_tlv_desc_selection_mode, &ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_control_plane, &ogs_gtp1_tlv_desc_trace_reference, &ogs_gtp1_tlv_desc_trace_type, &ogs_gtp1_tlv_desc_end_user_address, &ogs_gtp1_tlv_desc_access_point_name, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_msisdn, &ogs_gtp1_tlv_desc_trigger_id, &ogs_gtp1_tlv_desc_omc_identity, &ogs_gtp1_tlv_desc_rat_type, &ogs_gtp1_tlv_desc_user_location_information, &ogs_gtp1_tlv_desc_ms_time_zone, &ogs_gtp1_tlv_desc_sv, &ogs_gtp1_tlv_desc_mbms_protocol_configuration_options, &ogs_gtp1_tlv_desc_additional_trace_info, &ogs_gtp1_tlv_desc_enhanced_nsapi, &ogs_gtp1_tlv_desc_additional_mbms_trace_info, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_create_mbms_context_response = { OGS_TLV_MESSAGE, "Create MBMS Context Response", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_cause, &ogs_gtp1_tlv_desc_recovery, &ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_control_plane, &ogs_gtp1_tlv_desc_charging_id, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_charging_gateway_address, &ogs_gtp1_tlv_desc_charging_gateway_address, &ogs_gtp1_tlv_desc_mbms_protocol_configuration_options, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_update_mbms_context_request = { OGS_TLV_MESSAGE, "Update MBMS Context Request", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_rai, &ogs_gtp1_tlv_desc_recovery, &ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_control_plane, &ogs_gtp1_tlv_desc_trace_reference, &ogs_gtp1_tlv_desc_trace_type, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_trigger_id, &ogs_gtp1_tlv_desc_omc_identity, &ogs_gtp1_tlv_desc_rat_type, &ogs_gtp1_tlv_desc_user_location_information, &ogs_gtp1_tlv_desc_ms_time_zone, &ogs_gtp1_tlv_desc_additional_trace_info, &ogs_gtp1_tlv_desc_enhanced_nsapi, &ogs_gtp1_tlv_desc_additional_mbms_trace_info, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_update_mbms_context_response = { OGS_TLV_MESSAGE, "Update MBMS Context Response", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_cause, &ogs_gtp1_tlv_desc_recovery, &ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_control_plane, &ogs_gtp1_tlv_desc_charging_id, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_charging_gateway_address, &ogs_gtp1_tlv_desc_charging_gateway_address, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_delete_mbms_context_request = { OGS_TLV_MESSAGE, "Delete MBMS Context Request", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_imsi, &ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_control_plane, &ogs_gtp1_tlv_desc_end_user_address, &ogs_gtp1_tlv_desc_access_point_name, &ogs_gtp1_tlv_desc_mbms_protocol_configuration_options, &ogs_gtp1_tlv_desc_enhanced_nsapi, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_delete_mbms_context_response = { OGS_TLV_MESSAGE, "Delete MBMS Context Response", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_cause, &ogs_gtp1_tlv_desc_mbms_protocol_configuration_options, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_mbms_registration_request = { OGS_TLV_MESSAGE, "MBMS Registration Request", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_control_plane, &ogs_gtp1_tlv_desc_end_user_address, &ogs_gtp1_tlv_desc_access_point_name, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_gsn_address, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_mbms_registration_response = { OGS_TLV_MESSAGE, "MBMS Registration Response", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_cause, &ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_control_plane, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_tmgi, &ogs_gtp1_tlv_desc_required_mbms_bearer_capabilities, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_mbms_de_registration_request = { OGS_TLV_MESSAGE, "MBMS De-Registration Request", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_end_user_address, &ogs_gtp1_tlv_desc_access_point_name, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_mbms_de_registration_response = { OGS_TLV_MESSAGE, "MBMS De-Registration Response", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_cause, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_mbms_session_start_request = { OGS_TLV_MESSAGE, "MBMS Session Start Request", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_recovery, &ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_control_plane, &ogs_gtp1_tlv_desc_end_user_address, &ogs_gtp1_tlv_desc_access_point_name, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_quality_of_service_profile, &ogs_gtp1_tlv_desc_common_flags, &ogs_gtp1_tlv_desc_tmgi, &ogs_gtp1_tlv_desc_mbms_service_area, &ogs_gtp1_tlv_desc_mbms_session_identifier, &ogs_gtp1_tlv_desc_mbms_2g_3g_indicator, &ogs_gtp1_tlv_desc_mbms_session_duration, &ogs_gtp1_tlv_desc_mbms_session_repetition_number, &ogs_gtp1_tlv_desc_mbms_time_to_data_transfer, &ogs_gtp1_tlv_desc_mbms_flow_identifier, &ogs_gtp1_tlv_desc_mbms_ip_multicast_distribution, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_mbms_session_start_response = { OGS_TLV_MESSAGE, "MBMS Session Start Response", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_cause, &ogs_gtp1_tlv_desc_recovery, &ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_data_i, &ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_control_plane, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_mbms_distribution_acknowledgement, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_mbms_session_stop_request = { OGS_TLV_MESSAGE, "MBMS Session Stop Request", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_end_user_address, &ogs_gtp1_tlv_desc_access_point_name, &ogs_gtp1_tlv_desc_mbms_flow_identifier, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_mbms_session_stop_response = { OGS_TLV_MESSAGE, "MBMS Session Stop Response", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_cause, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_mbms_session_update_request = { OGS_TLV_MESSAGE, "MBMS Session Update Request", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_control_plane, &ogs_gtp1_tlv_desc_end_user_address, &ogs_gtp1_tlv_desc_access_point_name, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_tmgi, &ogs_gtp1_tlv_desc_mbms_session_duration, &ogs_gtp1_tlv_desc_mbms_service_area, &ogs_gtp1_tlv_desc_mbms_session_identifier, &ogs_gtp1_tlv_desc_mbms_session_repetition_number, &ogs_gtp1_tlv_desc_mbms_flow_identifier, NULL, }}; ogs_tlv_desc_t ogs_gtp1_tlv_desc_mbms_session_update_response = { OGS_TLV_MESSAGE, "MBMS Session Update Response", 0, 0, 0, 0, { &ogs_gtp1_tlv_desc_cause, &ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_data_i, &ogs_gtp1_tlv_desc_tunnel_endpoint_identifier_control_plane, &ogs_gtp1_tlv_desc_gsn_address, &ogs_gtp1_tlv_desc_gsn_address, NULL, }}; int ogs_gtp1_parse_msg(ogs_gtp1_message_t *gtp1_message, ogs_pkbuf_t *pkbuf) { int rv = OGS_ERROR; ogs_gtp1_header_t *h = NULL; uint16_t size = 0; ogs_assert(gtp1_message); ogs_assert(pkbuf); ogs_assert(pkbuf->len); h = (ogs_gtp1_header_t *)pkbuf->data; ogs_assert(h); memset(gtp1_message, 0, sizeof(ogs_gtp1_message_t)); if (h->e || h->s || h->pn) size = OGS_GTPV1C_HEADER_LEN; else size = OGS_GTPV1C_HEADER_LEN - 4; if (ogs_pkbuf_pull(pkbuf, size) == NULL) { ogs_error("ogs_pkbuf_pull() failed [len:%d]", pkbuf->len); return OGS_ERROR; } memcpy(>p1_message->h, pkbuf->data - size, size); gtp1_message->h.teid = be32toh(gtp1_message->h.teid); if (pkbuf->len == 0) { ogs_assert(ogs_pkbuf_push(pkbuf, size)); return OGS_OK; } switch(gtp1_message->h.type) { case OGS_GTP1_ECHO_REQUEST_TYPE: break; case OGS_GTP1_ECHO_RESPONSE_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->echo_response, &ogs_gtp1_tlv_desc_echo_response, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_CREATE_PDP_CONTEXT_REQUEST_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->create_pdp_context_request, &ogs_gtp1_tlv_desc_create_pdp_context_request, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_CREATE_PDP_CONTEXT_RESPONSE_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->create_pdp_context_response, &ogs_gtp1_tlv_desc_create_pdp_context_response, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_UPDATE_PDP_CONTEXT_REQUEST_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->update_pdp_context_request, &ogs_gtp1_tlv_desc_update_pdp_context_request, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_UPDATE_PDP_CONTEXT_RESPONSE_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->update_pdp_context_response, &ogs_gtp1_tlv_desc_update_pdp_context_response, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_DELETE_PDP_CONTEXT_REQUEST_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->delete_pdp_context_request, &ogs_gtp1_tlv_desc_delete_pdp_context_request, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_DELETE_PDP_CONTEXT_RESPONSE_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->delete_pdp_context_response, &ogs_gtp1_tlv_desc_delete_pdp_context_response, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_INITIATE_PDP_CONTEXT_ACTIVATION_REQUEST_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->initiate_pdp_context_activation_request, &ogs_gtp1_tlv_desc_initiate_pdp_context_activation_request, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_INITIATE_PDP_CONTEXT_ACTIVATION_RESPONSE_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->initiate_pdp_context_activation_response, &ogs_gtp1_tlv_desc_initiate_pdp_context_activation_response, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_PDU_NOTIFICATION_REQUEST_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->pdu_notification_request, &ogs_gtp1_tlv_desc_pdu_notification_request, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_PDU_NOTIFICATION_RESPONSE_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->pdu_notification_response, &ogs_gtp1_tlv_desc_pdu_notification_response, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_PDU_NOTIFICATION_REJECT_REQUEST_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->pdu_notification_reject_request, &ogs_gtp1_tlv_desc_pdu_notification_reject_request, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_PDU_NOTIFICATION_REJECT_RESPONSE_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->pdu_notification_reject_response, &ogs_gtp1_tlv_desc_pdu_notification_reject_response, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_SUPPORTED_EXTENSION_HEADERS_NOTIFICATION_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->supported_extension_headers_notification, &ogs_gtp1_tlv_desc_supported_extension_headers_notification, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_SEND_ROUTEING_INFORMATION_FOR_GPRS_REQUEST_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->send_routeing_information_for_gprs_request, &ogs_gtp1_tlv_desc_send_routeing_information_for_gprs_request, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_SEND_ROUTEING_INFORMATION_FOR_GPRS_RESPONSE_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->send_routeing_information_for_gprs_response, &ogs_gtp1_tlv_desc_send_routeing_information_for_gprs_response, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_FAILURE_REPORT_REQUEST_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->failure_report_request, &ogs_gtp1_tlv_desc_failure_report_request, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_FAILURE_REPORT_RESPONSE_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->failure_report_response, &ogs_gtp1_tlv_desc_failure_report_response, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_NOTE_MS_GPRS_PRESENT_REQUEST_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->note_ms_gprs_present_request, &ogs_gtp1_tlv_desc_note_ms_gprs_present_request, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_NOTE_MS_GPRS_PRESENT_RESPONSE_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->note_ms_gprs_present_response, &ogs_gtp1_tlv_desc_note_ms_gprs_present_response, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_IDENTIFICATION_REQUEST_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->identification_request, &ogs_gtp1_tlv_desc_identification_request, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_IDENTIFICATION_RESPONSE_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->identification_response, &ogs_gtp1_tlv_desc_identification_response, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_SGSN_CONTEXT_REQUEST_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->sgsn_context_request, &ogs_gtp1_tlv_desc_sgsn_context_request, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_SGSN_CONTEXT_RESPONSE_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->sgsn_context_response, &ogs_gtp1_tlv_desc_sgsn_context_response, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_SGSN_CONTEXT_ACKNOWLEDGE_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->sgsn_context_acknowledge, &ogs_gtp1_tlv_desc_sgsn_context_acknowledge, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_FORWARD_RELOCATION_REQUEST_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->forward_relocation_request, &ogs_gtp1_tlv_desc_forward_relocation_request, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_FORWARD_RELOCATION_RESPONSE_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->forward_relocation_response, &ogs_gtp1_tlv_desc_forward_relocation_response, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_FORWARD_RELOCATION_COMPLETE_TYPE: break; case OGS_GTP1_RELOCATION_CANCEL_REQUEST_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->relocation_cancel_request, &ogs_gtp1_tlv_desc_relocation_cancel_request, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_RELOCATION_CANCEL_RESPONSE_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->relocation_cancel_response, &ogs_gtp1_tlv_desc_relocation_cancel_response, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_FORWARD_SRNS_CONTEXT_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->forward_srns_context, &ogs_gtp1_tlv_desc_forward_srns_context, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_FORWARD_RELOCATION_COMPLETE_ACKNOWLEDGE_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->forward_relocation_complete_acknowledge, &ogs_gtp1_tlv_desc_forward_relocation_complete_acknowledge, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_FORWARD_SRNS_CONTEXT_ACKNOWLEDGE_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->forward_srns_context_acknowledge, &ogs_gtp1_tlv_desc_forward_srns_context_acknowledge, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_UE_REGISTRATION_QUERY_REQUEST_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->ue_registration_query_request, &ogs_gtp1_tlv_desc_ue_registration_query_request, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_UE_REGISTRATION_QUERY_RESPONSE_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->ue_registration_query_response, &ogs_gtp1_tlv_desc_ue_registration_query_response, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_RAN_INFORMATION_RELAY_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->ran_information_relay, &ogs_gtp1_tlv_desc_ran_information_relay, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_MBMS_NOTIFICATION_REQUEST_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->mbms_notification_request, &ogs_gtp1_tlv_desc_mbms_notification_request, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_MBMS_NOTIFICATION_RESPONSE_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->mbms_notification_response, &ogs_gtp1_tlv_desc_mbms_notification_response, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_MBMS_NOTIFICATION_REJECT_REQUEST_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->mbms_notification_reject_request, &ogs_gtp1_tlv_desc_mbms_notification_reject_request, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_MBMS_NOTIFICATION_REJECT_RESPONSE_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->mbms_notification_reject_response, &ogs_gtp1_tlv_desc_mbms_notification_reject_response, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_CREATE_MBMS_CONTEXT_REQUEST_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->create_mbms_context_request, &ogs_gtp1_tlv_desc_create_mbms_context_request, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_CREATE_MBMS_CONTEXT_RESPONSE_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->create_mbms_context_response, &ogs_gtp1_tlv_desc_create_mbms_context_response, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_UPDATE_MBMS_CONTEXT_REQUEST_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->update_mbms_context_request, &ogs_gtp1_tlv_desc_update_mbms_context_request, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_UPDATE_MBMS_CONTEXT_RESPONSE_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->update_mbms_context_response, &ogs_gtp1_tlv_desc_update_mbms_context_response, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_DELETE_MBMS_CONTEXT_REQUEST_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->delete_mbms_context_request, &ogs_gtp1_tlv_desc_delete_mbms_context_request, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_DELETE_MBMS_CONTEXT_RESPONSE_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->delete_mbms_context_response, &ogs_gtp1_tlv_desc_delete_mbms_context_response, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_MBMS_REGISTRATION_REQUEST_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->mbms_registration_request, &ogs_gtp1_tlv_desc_mbms_registration_request, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_MBMS_REGISTRATION_RESPONSE_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->mbms_registration_response, &ogs_gtp1_tlv_desc_mbms_registration_response, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_MBMS_DE_REGISTRATION_REQUEST_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->mbms_de_registration_request, &ogs_gtp1_tlv_desc_mbms_de_registration_request, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_MBMS_DE_REGISTRATION_RESPONSE_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->mbms_de_registration_response, &ogs_gtp1_tlv_desc_mbms_de_registration_response, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_MBMS_SESSION_START_REQUEST_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->mbms_session_start_request, &ogs_gtp1_tlv_desc_mbms_session_start_request, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_MBMS_SESSION_START_RESPONSE_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->mbms_session_start_response, &ogs_gtp1_tlv_desc_mbms_session_start_response, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_MBMS_SESSION_STOP_REQUEST_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->mbms_session_stop_request, &ogs_gtp1_tlv_desc_mbms_session_stop_request, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_MBMS_SESSION_STOP_RESPONSE_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->mbms_session_stop_response, &ogs_gtp1_tlv_desc_mbms_session_stop_response, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_MBMS_SESSION_UPDATE_REQUEST_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->mbms_session_update_request, &ogs_gtp1_tlv_desc_mbms_session_update_request, pkbuf, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_MBMS_SESSION_UPDATE_RESPONSE_TYPE: rv = ogs_tlv_parse_msg_desc(>p1_message->mbms_session_update_response, &ogs_gtp1_tlv_desc_mbms_session_update_response, pkbuf, OGS_TLV_MODE_T1_L2); break; default: ogs_warn("Not implemented(type:%d)", gtp1_message->h.type); break; } ogs_assert(ogs_pkbuf_push(pkbuf, size)); return rv; } ogs_pkbuf_t *ogs_gtp1_build_msg(ogs_gtp1_message_t *gtp1_message) { ogs_pkbuf_t *pkbuf = NULL; ogs_assert(gtp1_message); switch(gtp1_message->h.type) { case OGS_GTP1_ECHO_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_echo_request, >p1_message->echo_request, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_ECHO_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_echo_response, >p1_message->echo_response, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_CREATE_PDP_CONTEXT_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_create_pdp_context_request, >p1_message->create_pdp_context_request, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_CREATE_PDP_CONTEXT_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_create_pdp_context_response, >p1_message->create_pdp_context_response, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_UPDATE_PDP_CONTEXT_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_update_pdp_context_request, >p1_message->update_pdp_context_request, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_UPDATE_PDP_CONTEXT_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_update_pdp_context_response, >p1_message->update_pdp_context_response, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_DELETE_PDP_CONTEXT_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_delete_pdp_context_request, >p1_message->delete_pdp_context_request, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_DELETE_PDP_CONTEXT_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_delete_pdp_context_response, >p1_message->delete_pdp_context_response, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_INITIATE_PDP_CONTEXT_ACTIVATION_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_initiate_pdp_context_activation_request, >p1_message->initiate_pdp_context_activation_request, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_INITIATE_PDP_CONTEXT_ACTIVATION_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_initiate_pdp_context_activation_response, >p1_message->initiate_pdp_context_activation_response, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_PDU_NOTIFICATION_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_pdu_notification_request, >p1_message->pdu_notification_request, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_PDU_NOTIFICATION_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_pdu_notification_response, >p1_message->pdu_notification_response, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_PDU_NOTIFICATION_REJECT_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_pdu_notification_reject_request, >p1_message->pdu_notification_reject_request, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_PDU_NOTIFICATION_REJECT_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_pdu_notification_reject_response, >p1_message->pdu_notification_reject_response, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_SUPPORTED_EXTENSION_HEADERS_NOTIFICATION_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_supported_extension_headers_notification, >p1_message->supported_extension_headers_notification, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_SEND_ROUTEING_INFORMATION_FOR_GPRS_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_send_routeing_information_for_gprs_request, >p1_message->send_routeing_information_for_gprs_request, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_SEND_ROUTEING_INFORMATION_FOR_GPRS_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_send_routeing_information_for_gprs_response, >p1_message->send_routeing_information_for_gprs_response, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_FAILURE_REPORT_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_failure_report_request, >p1_message->failure_report_request, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_FAILURE_REPORT_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_failure_report_response, >p1_message->failure_report_response, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_NOTE_MS_GPRS_PRESENT_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_note_ms_gprs_present_request, >p1_message->note_ms_gprs_present_request, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_NOTE_MS_GPRS_PRESENT_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_note_ms_gprs_present_response, >p1_message->note_ms_gprs_present_response, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_IDENTIFICATION_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_identification_request, >p1_message->identification_request, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_IDENTIFICATION_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_identification_response, >p1_message->identification_response, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_SGSN_CONTEXT_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_sgsn_context_request, >p1_message->sgsn_context_request, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_SGSN_CONTEXT_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_sgsn_context_response, >p1_message->sgsn_context_response, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_SGSN_CONTEXT_ACKNOWLEDGE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_sgsn_context_acknowledge, >p1_message->sgsn_context_acknowledge, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_FORWARD_RELOCATION_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_forward_relocation_request, >p1_message->forward_relocation_request, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_FORWARD_RELOCATION_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_forward_relocation_response, >p1_message->forward_relocation_response, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_FORWARD_RELOCATION_COMPLETE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_forward_relocation_complete, >p1_message->forward_relocation_complete, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_RELOCATION_CANCEL_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_relocation_cancel_request, >p1_message->relocation_cancel_request, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_RELOCATION_CANCEL_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_relocation_cancel_response, >p1_message->relocation_cancel_response, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_FORWARD_SRNS_CONTEXT_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_forward_srns_context, >p1_message->forward_srns_context, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_FORWARD_RELOCATION_COMPLETE_ACKNOWLEDGE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_forward_relocation_complete_acknowledge, >p1_message->forward_relocation_complete_acknowledge, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_FORWARD_SRNS_CONTEXT_ACKNOWLEDGE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_forward_srns_context_acknowledge, >p1_message->forward_srns_context_acknowledge, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_UE_REGISTRATION_QUERY_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_ue_registration_query_request, >p1_message->ue_registration_query_request, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_UE_REGISTRATION_QUERY_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_ue_registration_query_response, >p1_message->ue_registration_query_response, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_RAN_INFORMATION_RELAY_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_ran_information_relay, >p1_message->ran_information_relay, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_MBMS_NOTIFICATION_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_mbms_notification_request, >p1_message->mbms_notification_request, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_MBMS_NOTIFICATION_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_mbms_notification_response, >p1_message->mbms_notification_response, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_MBMS_NOTIFICATION_REJECT_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_mbms_notification_reject_request, >p1_message->mbms_notification_reject_request, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_MBMS_NOTIFICATION_REJECT_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_mbms_notification_reject_response, >p1_message->mbms_notification_reject_response, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_CREATE_MBMS_CONTEXT_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_create_mbms_context_request, >p1_message->create_mbms_context_request, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_CREATE_MBMS_CONTEXT_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_create_mbms_context_response, >p1_message->create_mbms_context_response, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_UPDATE_MBMS_CONTEXT_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_update_mbms_context_request, >p1_message->update_mbms_context_request, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_UPDATE_MBMS_CONTEXT_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_update_mbms_context_response, >p1_message->update_mbms_context_response, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_DELETE_MBMS_CONTEXT_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_delete_mbms_context_request, >p1_message->delete_mbms_context_request, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_DELETE_MBMS_CONTEXT_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_delete_mbms_context_response, >p1_message->delete_mbms_context_response, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_MBMS_REGISTRATION_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_mbms_registration_request, >p1_message->mbms_registration_request, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_MBMS_REGISTRATION_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_mbms_registration_response, >p1_message->mbms_registration_response, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_MBMS_DE_REGISTRATION_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_mbms_de_registration_request, >p1_message->mbms_de_registration_request, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_MBMS_DE_REGISTRATION_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_mbms_de_registration_response, >p1_message->mbms_de_registration_response, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_MBMS_SESSION_START_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_mbms_session_start_request, >p1_message->mbms_session_start_request, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_MBMS_SESSION_START_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_mbms_session_start_response, >p1_message->mbms_session_start_response, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_MBMS_SESSION_STOP_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_mbms_session_stop_request, >p1_message->mbms_session_stop_request, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_MBMS_SESSION_STOP_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_mbms_session_stop_response, >p1_message->mbms_session_stop_response, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_MBMS_SESSION_UPDATE_REQUEST_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_mbms_session_update_request, >p1_message->mbms_session_update_request, OGS_TLV_MODE_T1_L2); break; case OGS_GTP1_MBMS_SESSION_UPDATE_RESPONSE_TYPE: pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_mbms_session_update_response, >p1_message->mbms_session_update_response, OGS_TLV_MODE_T1_L2); break; default: ogs_warn("Not implemented(type:%d)", gtp1_message->h.type); break; } return pkbuf; }