/*
 * Copyright (C) 2019 by Sukchan Lee <acetcom@gmail.com>
 * Copyright (C) 2022 by sysmocom - s.f.m.c. GmbH <info@sysmocom.de>
 *
 * 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 <https://www.gnu.org/licenses/>.
 */

/*******************************************************************************
 * 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: 2022-05-12 14:42:38.611950 by pespin
 * from 29060-g00.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_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,
        &ogs_gtp1_tlv_desc_gsn_address,
        &ogs_gtp1_tlv_desc_gsn_address,
    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_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,
        &ogs_gtp1_tlv_desc_gsn_address,
        &ogs_gtp1_tlv_desc_gsn_address,
    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_cause,
    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_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_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_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 *gtp_message, ogs_pkbuf_t *pkbuf)
{
    int rv = OGS_ERROR;
    ogs_gtp1_header_t *h = NULL;
    uint16_t size = 0;

    ogs_assert(gtp_message);
    ogs_assert(pkbuf);
    ogs_assert(pkbuf->len);

    h = (ogs_gtp1_header_t *)pkbuf->data;
    ogs_assert(h);

    memset(gtp_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;

    ogs_assert(ogs_pkbuf_pull(pkbuf, size));
    memcpy(&gtp_message->h, pkbuf->data - size, size);

    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_GTP1_ECHO_REQUEST_TYPE:
        rv = ogs_tlv_parse_msg_desc(&gtp_message->echo_request,
                &ogs_gtp1_tlv_desc_echo_request, pkbuf, OGS_TLV_MODE_T1_L2);
        break;
    case OGS_GTP1_ECHO_RESPONSE_TYPE:
        rv = ogs_tlv_parse_msg_desc(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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:
        rv = ogs_tlv_parse_msg_desc(&gtp_message->forward_relocation_complete,
                &ogs_gtp1_tlv_desc_forward_relocation_complete, pkbuf, OGS_TLV_MODE_T1_L2);
        break;
    case OGS_GTP1_RELOCATION_CANCEL_REQUEST_TYPE:
        rv = ogs_tlv_parse_msg_desc(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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_RESPONSE_TYPE:
        rv = ogs_tlv_parse_msg_desc(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_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(&gtp_message->mbms_session_update_response,
                &ogs_gtp1_tlv_desc_mbms_session_update_response, pkbuf, OGS_TLV_MODE_T1_L2);
        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_gtp1_build_msg(ogs_gtp1_message_t *gtp_message)
{
    ogs_pkbuf_t *pkbuf = NULL;

    ogs_assert(gtp_message);
    switch(gtp_message->h.type) {
    case OGS_GTP1_ECHO_REQUEST_TYPE:
        pkbuf = ogs_tlv_build_msg(&ogs_gtp1_tlv_desc_echo_request,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_message->update_mbms_context_response, 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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_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,
                &gtp_message->mbms_session_update_response, OGS_TLV_MODE_T1_L2);
        break;
    default:
        ogs_warn("Not implmeneted(type:%d)", gtp_message->h.type);
        break;
    }

    return pkbuf;
}

