From 4f7c3ab16ad65270fc10ab3fe17a80286b32a17d Mon Sep 17 00:00:00 2001 From: Pascal Quantin Date: Wed, 11 Jan 2023 09:50:18 +0100 Subject: [PATCH] X2AP: upgrade dissector to v17.3.0 --- .../asn1/x2ap/X2AP-CommonDataTypes.asn | 2 +- epan/dissectors/asn1/x2ap/X2AP-Constants.asn | 4 +- epan/dissectors/asn1/x2ap/X2AP-Containers.asn | 2 +- epan/dissectors/asn1/x2ap/X2AP-IEs.asn | 22 +- .../asn1/x2ap/X2AP-PDU-Contents.asn | 7 +- .../asn1/x2ap/X2AP-PDU-Descriptions.asn | 2 +- .../asn1/x2ap/packet-x2ap-template.c | 4 +- epan/dissectors/asn1/x2ap/x2ap.cnf | 2 + epan/dissectors/packet-x2ap.c | 204 +++++++++++------- 9 files changed, 164 insertions(+), 85 deletions(-) diff --git a/epan/dissectors/asn1/x2ap/X2AP-CommonDataTypes.asn b/epan/dissectors/asn1/x2ap/X2AP-CommonDataTypes.asn index 564b50898d..6124e67a61 100644 --- a/epan/dissectors/asn1/x2ap/X2AP-CommonDataTypes.asn +++ b/epan/dissectors/asn1/x2ap/X2AP-CommonDataTypes.asn @@ -1,4 +1,4 @@ --- 3GPP TS 36.423 V17.2.0 (2022-09) +-- 3GPP TS 36.423 V17.3.0 (2022-12) -- 9.3.6 Common definitions -- ************************************************************** -- diff --git a/epan/dissectors/asn1/x2ap/X2AP-Constants.asn b/epan/dissectors/asn1/x2ap/X2AP-Constants.asn index 935fed4da9..0cd17019b5 100644 --- a/epan/dissectors/asn1/x2ap/X2AP-Constants.asn +++ b/epan/dissectors/asn1/x2ap/X2AP-Constants.asn @@ -1,4 +1,4 @@ --- 3GPP TS 36.423 V17.2.0 (2022-09) +-- 3GPP TS 36.423 V17.3.0 (2022-12) -- 9.3.7 Constant definitions -- ************************************************************** -- @@ -159,6 +159,7 @@ maxnoofCSIRSconfigurations INTEGER ::= 96 maxnoofCSIRSneighbourCells INTEGER ::= 16 maxnoofCSIRSneighbourCellsInMTC INTEGER ::= 16 maxnoofSensorName INTEGER ::= 3 +maxnoofTargetSgNBsMinusOne INTEGER ::= 7 -- ************************************************************** -- @@ -612,5 +613,6 @@ id-RAT-Restrictions ProtocolIE-ID ::= 437 id-SCGreconfigNotification ProtocolIE-ID ::= 438 id-MIMOPRBusageInformation ProtocolIE-ID ::= 439 id-SensorMeasurementConfiguration ProtocolIE-ID ::= 440 +id-AdditionalListofForwardingGTPTunnelEndpoint ProtocolIE-ID ::= 441 END diff --git a/epan/dissectors/asn1/x2ap/X2AP-Containers.asn b/epan/dissectors/asn1/x2ap/X2AP-Containers.asn index 7d2dde8995..1d81ab714d 100644 --- a/epan/dissectors/asn1/x2ap/X2AP-Containers.asn +++ b/epan/dissectors/asn1/x2ap/X2AP-Containers.asn @@ -1,4 +1,4 @@ --- 3GPP TS 36.423 V17.2.0 (2022-09) +-- 3GPP TS 36.423 V17.3.0 (2022-12) -- 9.3.8 Container definitions -- ************************************************************** -- diff --git a/epan/dissectors/asn1/x2ap/X2AP-IEs.asn b/epan/dissectors/asn1/x2ap/X2AP-IEs.asn index 792f820fd6..3d70292828 100644 --- a/epan/dissectors/asn1/x2ap/X2AP-IEs.asn +++ b/epan/dissectors/asn1/x2ap/X2AP-IEs.asn @@ -1,4 +1,4 @@ --- 3GPP TS 36.423 V17.2.0 (2022-09) +-- 3GPP TS 36.423 V17.3.0 (2022-12) -- 9.3.5 Information Element definitions -- ************************************************************** -- @@ -161,7 +161,8 @@ IMPORTS maxnoofCSIRSneighbourCells, maxnoofCSIRSneighbourCellsInMTC, maxCellinengNB, - maxnoofSensorName + maxnoofSensorName, + maxnoofTargetSgNBsMinusOne FROM X2AP-Constants @@ -279,6 +280,19 @@ CSI-RS-MTC-Neighbour-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= { ... } +AdditionalListofForwardingGTPTunnelEndpoint ::= SEQUENCE (SIZE(1..maxnoofTargetSgNBsMinusOne)) OF AdditionalListofForwardingGTPTunnelEndpoint-Item + +AdditionalListofForwardingGTPTunnelEndpoint-Item ::= SEQUENCE { + uL-GTPtunnelEndpoint GTPtunnelEndpoint OPTIONAL, + dL-GTPtunnelEndpoint GTPtunnelEndpoint OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { AdditionalListofForwardingGTPTunnelEndpoint-Item-ExtIEs} } OPTIONAL, + ... +} + +AdditionalListofForwardingGTPTunnelEndpoint-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= { + ... +} + AdditionLocationInformation ::= ENUMERATED { includePSCell, ... @@ -617,7 +631,7 @@ CPACcandidatePSCells-item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= { CPCindicator ::= ENUMERATED {cpc-initiation, cpc-modification, cpc-cancel, ...} -CPCdataforwarding ::= ENUMERATED {cpc-triggered, early-data-transmission-stop, ...} +CPCdataforwarding ::= ENUMERATED {cpc-triggered, early-data-transmission-stop, ..., coordination-only} CPAinformation-REQ ::= SEQUENCE { @@ -772,7 +786,7 @@ CPACinformation-REQD-ExtIEs X2AP-PROTOCOL-EXTENSION ::= { CHO-DC-EarlyDataForwarding ::= ENUMERATED {stop, ...} -CHO-DC-Indicator ::= ENUMERATED {true, ...} +CHO-DC-Indicator ::= ENUMERATED {true, ..., coordination-only} CNTypeRestrictions ::= SEQUENCE (SIZE(1.. maxnoofEPLMNsPlusOne)) OF CNTypeRestrictionsItem diff --git a/epan/dissectors/asn1/x2ap/X2AP-PDU-Contents.asn b/epan/dissectors/asn1/x2ap/X2AP-PDU-Contents.asn index 4fee233a78..3b81b3ca06 100644 --- a/epan/dissectors/asn1/x2ap/X2AP-PDU-Contents.asn +++ b/epan/dissectors/asn1/x2ap/X2AP-PDU-Contents.asn @@ -1,4 +1,4 @@ --- 3GPP TS 36.423 V17.2.0 (2022-09) +-- 3GPP TS 36.423 V17.3.0 (2022-12) -- 9.3.4 PDU Definitions -- ************************************************************** -- @@ -261,7 +261,8 @@ IMPORTS SecurityIndication, SecurityResult, TraceCollectionEntityIPAddress, - SCGreconfigNotification + SCGreconfigNotification, + AdditionalListofForwardingGTPTunnelEndpoint @@ -643,6 +644,7 @@ FROM X2AP-Containers id-SecurityIndication, id-SecurityResult, id-SCGreconfigNotification, + id-AdditionalListofForwardingGTPTunnelEndpoint, maxCellineNB, maxnoofBearers, maxnoofPDCP-SN, @@ -3907,6 +3909,7 @@ E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent ::= SEQUENCE { } E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= { + { ID id-AdditionalListofForwardingGTPTunnelEndpoint CRITICALITY ignore EXTENSION AdditionalListofForwardingGTPTunnelEndpoint PRESENCE optional }, ... } diff --git a/epan/dissectors/asn1/x2ap/X2AP-PDU-Descriptions.asn b/epan/dissectors/asn1/x2ap/X2AP-PDU-Descriptions.asn index 36a2e03879..22378cc314 100644 --- a/epan/dissectors/asn1/x2ap/X2AP-PDU-Descriptions.asn +++ b/epan/dissectors/asn1/x2ap/X2AP-PDU-Descriptions.asn @@ -1,4 +1,4 @@ --- 3GPP TS 36.423 V17.2.0 (2022-09) +-- 3GPP TS 36.423 V17.3.0 (2022-12) -- 9.3.3 Elementary Procedure Definitions -- ************************************************************** -- diff --git a/epan/dissectors/asn1/x2ap/packet-x2ap-template.c b/epan/dissectors/asn1/x2ap/packet-x2ap-template.c index 9c58df4f8f..8df4e2aa94 100644 --- a/epan/dissectors/asn1/x2ap/packet-x2ap-template.c +++ b/epan/dissectors/asn1/x2ap/packet-x2ap-template.c @@ -3,7 +3,7 @@ * X2 Application Protocol (X2AP); * 3GPP TS 36.423 packet dissection * Copyright 2007-2014, Anders Broman - * Copyright 2016-2022, Pascal Quantin + * Copyright 2016-2023, Pascal Quantin * * Wireshark - Network traffic analyzer * By Gerald Combs @@ -12,7 +12,7 @@ * SPDX-License-Identifier: GPL-2.0-or-later * * Ref: - * 3GPP TS 36.423 V17.2.0 (2022-09) + * 3GPP TS 36.423 V17.3.0 (2022-12) */ #include "config.h" diff --git a/epan/dissectors/asn1/x2ap/x2ap.cnf b/epan/dissectors/asn1/x2ap/x2ap.cnf index 4e856b34c9..136cd16b4f 100644 --- a/epan/dissectors/asn1/x2ap/x2ap.cnf +++ b/epan/dissectors/asn1/x2ap/x2ap.cnf @@ -1652,6 +1652,7 @@ id-RAT-Restrictions ProtocolIE-ID id-SCGreconfigNotification ProtocolIE-ID id-MIMOPRBusageInformation ProtocolIE-ID id-SensorMeasurementConfiguration ProtocolIE-ID +id-AdditionalListofForwardingGTPTunnelEndpoint ProtocolIE-ID #.REGISTER @@ -2088,6 +2089,7 @@ SecurityResult N x2ap.extension id-SecurityResult RAT-Restrictions N x2ap.extension id-RAT-Restrictions MIMOPRBusageInformation N x2ap.extension id-MIMOPRBusageInformation SensorMeasurementConfiguration N x2ap.extension id-SensorMeasurementConfiguration +AdditionalListofForwardingGTPTunnelEndpoint N x2ap.extension id-AdditionalListofForwardingGTPTunnelEndpoint # X2AP-PDU-Descriptions.asn Interface Elementary Procedures #X2AP-ELEMENTARY-PROCEDURE diff --git a/epan/dissectors/packet-x2ap.c b/epan/dissectors/packet-x2ap.c index 1846c3e78a..bd172149ce 100644 --- a/epan/dissectors/packet-x2ap.c +++ b/epan/dissectors/packet-x2ap.c @@ -8,7 +8,7 @@ * X2 Application Protocol (X2AP); * 3GPP TS 36.423 packet dissection * Copyright 2007-2014, Anders Broman - * Copyright 2016-2022, Pascal Quantin + * Copyright 2016-2023, Pascal Quantin * * Wireshark - Network traffic analyzer * By Gerald Combs @@ -17,7 +17,7 @@ * SPDX-License-Identifier: GPL-2.0-or-later * * Ref: - * 3GPP TS 36.423 V17.2.0 (2022-09) + * 3GPP TS 36.423 V17.3.0 (2022-12) */ #include "config.h" @@ -124,6 +124,7 @@ void proto_register_x2ap(void); #define maxnoofCSIRSneighbourCells 16 #define maxnoofCSIRSneighbourCellsInMTC 16 #define maxnoofSensorName 3 +#define maxnoofTargetSgNBsMinusOne 7 typedef enum _ProcedureCode_enum { id_handoverPreparation = 0, @@ -629,7 +630,8 @@ typedef enum _ProtocolIE_ID_enum { id_RAT_Restrictions = 437, id_SCGreconfigNotification = 438, id_MIMOPRBusageInformation = 439, - id_SensorMeasurementConfiguration = 440 + id_SensorMeasurementConfiguration = 440, + id_AdditionalListofForwardingGTPTunnelEndpoint = 441 } ProtocolIE_ID_enum; /* Initialize the protocol and registered fields */ @@ -714,6 +716,7 @@ static int hf_x2ap_ABSInformation_PDU = -1; /* ABSInformation */ static int hf_x2ap_ABS_Status_PDU = -1; /* ABS_Status */ static int hf_x2ap_ActivationID_PDU = -1; /* ActivationID */ static int hf_x2ap_Additional_Measurement_Timing_Configuration_List_PDU = -1; /* Additional_Measurement_Timing_Configuration_List */ +static int hf_x2ap_AdditionalListofForwardingGTPTunnelEndpoint_PDU = -1; /* AdditionalListofForwardingGTPTunnelEndpoint */ static int hf_x2ap_AdditionLocationInformation_PDU = -1; /* AdditionLocationInformation */ static int hf_x2ap_AdditionalRRMPriorityIndex_PDU = -1; /* AdditionalRRMPriorityIndex */ static int hf_x2ap_AdditionalSpecialSubframe_Info_PDU = -1; /* AdditionalSpecialSubframe_Info */ @@ -1220,6 +1223,9 @@ static int hf_x2ap_CSI_RS_Neighbour_List_item = -1; /* CSI_RS_Neighbour_Item */ static int hf_x2ap_nr_cgi = -1; /* NRCGI */ static int hf_x2ap_csi_RS_MTC_Neighbour_List = -1; /* CSI_RS_MTC_Neighbour_List */ static int hf_x2ap_CSI_RS_MTC_Neighbour_List_item = -1; /* CSI_RS_MTC_Neighbour_Item */ +static int hf_x2ap_AdditionalListofForwardingGTPTunnelEndpoint_item = -1; /* AdditionalListofForwardingGTPTunnelEndpoint_Item */ +static int hf_x2ap_uL_GTPtunnelEndpoint = -1; /* GTPtunnelEndpoint */ +static int hf_x2ap_dL_GTPtunnelEndpoint = -1; /* GTPtunnelEndpoint */ static int hf_x2ap_additionalspecialSubframePatterns = -1; /* AdditionalSpecialSubframePatterns */ static int hf_x2ap_cyclicPrefixDL = -1; /* CyclicPrefixDL */ static int hf_x2ap_cyclicPrefixUL = -1; /* CyclicPrefixUL */ @@ -1751,7 +1757,6 @@ static int hf_x2ap_locationReportingInformation = -1; /* LocationReportingInfor static int hf_x2ap_E_RABs_ToBeSetup_List_item = -1; /* ProtocolIE_Single_Container */ static int hf_x2ap_e_RAB_Level_QoS_Parameters = -1; /* E_RAB_Level_QoS_Parameters */ static int hf_x2ap_dL_Forwarding = -1; /* DL_Forwarding */ -static int hf_x2ap_uL_GTPtunnelEndpoint = -1; /* GTPtunnelEndpoint */ static int hf_x2ap_source_GlobalSeNB_ID = -1; /* GlobalENB_ID */ static int hf_x2ap_seNB_UE_X2AP_ID = -1; /* UE_X2AP_ID */ static int hf_x2ap_seNB_UE_X2AP_ID_Extension = -1; /* UE_X2AP_ID_Extension */ @@ -1892,7 +1897,6 @@ static int hf_x2ap_E_RABs_ToBeReleased_SgNBModReq_List_item = -1; /* ProtocolIE static int hf_x2ap_resource_configuration_04 = -1; /* T_resource_configuration_04 */ static int hf_x2ap_sgNBPDCPpresent_04 = -1; /* E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent */ static int hf_x2ap_sgNBPDCPnotpresent_04 = -1; /* E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent */ -static int hf_x2ap_dL_GTPtunnelEndpoint = -1; /* GTPtunnelEndpoint */ static int hf_x2ap_E_RABs_Admitted_ToBeAdded_SgNBModAckList_item = -1; /* ProtocolIE_Single_Container */ static int hf_x2ap_resource_configuration_05 = -1; /* T_resource_configuration_05 */ static int hf_x2ap_sgNBPDCPpresent_05 = -1; /* E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent */ @@ -2064,6 +2068,8 @@ static gint ett_x2ap_CSI_RS_Neighbour_List = -1; static gint ett_x2ap_CSI_RS_Neighbour_Item = -1; static gint ett_x2ap_CSI_RS_MTC_Neighbour_List = -1; static gint ett_x2ap_CSI_RS_MTC_Neighbour_Item = -1; +static gint ett_x2ap_AdditionalListofForwardingGTPTunnelEndpoint = -1; +static gint ett_x2ap_AdditionalListofForwardingGTPTunnelEndpoint_Item = -1; static gint ett_x2ap_AdditionalSpecialSubframe_Info = -1; static gint ett_x2ap_AdditionalSpecialSubframeExtension_Info = -1; static gint ett_x2ap_AllocationAndRetentionPriority = -1; @@ -3374,6 +3380,7 @@ static const value_string x2ap_ProtocolIE_ID_vals[] = { { id_SCGreconfigNotification, "id-SCGreconfigNotification" }, { id_MIMOPRBusageInformation, "id-MIMOPRBusageInformation" }, { id_SensorMeasurementConfiguration, "id-SensorMeasurementConfiguration" }, + { id_AdditionalListofForwardingGTPTunnelEndpoint, "id-AdditionalListofForwardingGTPTunnelEndpoint" }, { 0, NULL } }; @@ -3965,6 +3972,94 @@ dissect_x2ap_Additional_Measurement_Timing_Configuration_List(tvbuff_t *tvb _U_, } + +static int +dissect_x2ap_TransportLayerAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + tvbuff_t *parameter_tvb = NULL; + proto_tree *subtree; + int len; + + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 1, 160, TRUE, NULL, 0, ¶meter_tvb, &len); + + if (!parameter_tvb) + return offset; + + subtree = proto_item_add_subtree(actx->created_item, ett_x2ap_TransportLayerAddress); + if (len == 32) { + /* IPv4 */ + proto_tree_add_item(subtree, hf_x2ap_transportLayerAddressIPv4, parameter_tvb, 0, 4, ENC_BIG_ENDIAN); + } else if (len == 128) { + /* IPv6 */ + proto_tree_add_item(subtree, hf_x2ap_transportLayerAddressIPv6, parameter_tvb, 0, 16, ENC_NA); + } else if (len == 160) { + /* IPv4 */ + proto_tree_add_item(subtree, hf_x2ap_transportLayerAddressIPv4, parameter_tvb, 0, 4, ENC_BIG_ENDIAN); + /* IPv6 */ + proto_tree_add_item(subtree, hf_x2ap_transportLayerAddressIPv6, parameter_tvb, 4, 16, ENC_NA); + } + + + return offset; +} + + + +static int +dissect_x2ap_GTP_TEI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + 4, 4, FALSE, NULL); + + return offset; +} + + +static const per_sequence_t GTPtunnelEndpoint_sequence[] = { + { &hf_x2ap_transportLayerAddress, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_x2ap_TransportLayerAddress }, + { &hf_x2ap_gTP_TEID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_x2ap_GTP_TEI }, + { &hf_x2ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_x2ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_x2ap_GTPtunnelEndpoint(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_x2ap_GTPtunnelEndpoint, GTPtunnelEndpoint_sequence); + + return offset; +} + + +static const per_sequence_t AdditionalListofForwardingGTPTunnelEndpoint_Item_sequence[] = { + { &hf_x2ap_uL_GTPtunnelEndpoint, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_x2ap_GTPtunnelEndpoint }, + { &hf_x2ap_dL_GTPtunnelEndpoint, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_x2ap_GTPtunnelEndpoint }, + { &hf_x2ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_x2ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_x2ap_AdditionalListofForwardingGTPTunnelEndpoint_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_x2ap_AdditionalListofForwardingGTPTunnelEndpoint_Item, AdditionalListofForwardingGTPTunnelEndpoint_Item_sequence); + + return offset; +} + + +static const per_sequence_t AdditionalListofForwardingGTPTunnelEndpoint_sequence_of[1] = { + { &hf_x2ap_AdditionalListofForwardingGTPTunnelEndpoint_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_x2ap_AdditionalListofForwardingGTPTunnelEndpoint_Item }, +}; + +static int +dissect_x2ap_AdditionalListofForwardingGTPTunnelEndpoint(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_x2ap_AdditionalListofForwardingGTPTunnelEndpoint, AdditionalListofForwardingGTPTunnelEndpoint_sequence_of, + 1, maxnoofTargetSgNBsMinusOne, FALSE); + + return offset; +} + + static const value_string x2ap_AdditionLocationInformation_vals[] = { { 0, "includePSCell" }, { 0, NULL } @@ -5126,6 +5221,7 @@ dissect_x2ap_CPCindicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U static const value_string x2ap_CPCdataforwarding_vals[] = { { 0, "cpc-triggered" }, { 1, "early-data-transmission-stop" }, + { 2, "coordination-only" }, { 0, NULL } }; @@ -5133,7 +5229,7 @@ static const value_string x2ap_CPCdataforwarding_vals[] = { static int dissect_x2ap_CPCdataforwarding(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, - 2, NULL, TRUE, 0, NULL); + 2, NULL, TRUE, 1, NULL); return offset; } @@ -5470,6 +5566,7 @@ dissect_x2ap_CHO_DC_EarlyDataForwarding(tvbuff_t *tvb _U_, int offset _U_, asn1_ static const value_string x2ap_CHO_DC_Indicator_vals[] = { { 0, "true" }, + { 1, "coordination-only" }, { 0, NULL } }; @@ -5477,7 +5574,7 @@ static const value_string x2ap_CHO_DC_Indicator_vals[] = { static int dissect_x2ap_CHO_DC_Indicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, - 1, NULL, TRUE, 0, NULL); + 1, NULL, TRUE, 1, NULL); return offset; } @@ -5857,38 +5954,6 @@ dissect_x2ap_CoverageModificationList(tvbuff_t *tvb _U_, int offset _U_, asn1_ct -static int -dissect_x2ap_TransportLayerAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - tvbuff_t *parameter_tvb = NULL; - proto_tree *subtree; - int len; - - offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 1, 160, TRUE, NULL, 0, ¶meter_tvb, &len); - - if (!parameter_tvb) - return offset; - - subtree = proto_item_add_subtree(actx->created_item, ett_x2ap_TransportLayerAddress); - if (len == 32) { - /* IPv4 */ - proto_tree_add_item(subtree, hf_x2ap_transportLayerAddressIPv4, parameter_tvb, 0, 4, ENC_BIG_ENDIAN); - } else if (len == 128) { - /* IPv6 */ - proto_tree_add_item(subtree, hf_x2ap_transportLayerAddressIPv6, parameter_tvb, 0, 16, ENC_NA); - } else if (len == 160) { - /* IPv4 */ - proto_tree_add_item(subtree, hf_x2ap_transportLayerAddressIPv4, parameter_tvb, 0, 4, ENC_BIG_ENDIAN); - /* IPv6 */ - proto_tree_add_item(subtree, hf_x2ap_transportLayerAddressIPv6, parameter_tvb, 4, 16, ENC_NA); - } - - - return offset; -} - - - static int dissect_x2ap_Port_Number(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { tvbuff_t *parameter_tvb = NULL; @@ -8529,32 +8594,6 @@ dissect_x2ap_GTPTLAs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr -static int -dissect_x2ap_GTP_TEI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, - 4, 4, FALSE, NULL); - - return offset; -} - - -static const per_sequence_t GTPtunnelEndpoint_sequence[] = { - { &hf_x2ap_transportLayerAddress, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_x2ap_TransportLayerAddress }, - { &hf_x2ap_gTP_TEID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_x2ap_GTP_TEI }, - { &hf_x2ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_x2ap_ProtocolExtensionContainer }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_x2ap_GTPtunnelEndpoint(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_x2ap_GTPtunnelEndpoint, GTPtunnelEndpoint_sequence); - - return offset; -} - - - static int dissect_x2ap_MME_Group_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { tvbuff_t *parameter_tvb = NULL; @@ -19329,6 +19368,14 @@ static int dissect_Additional_Measurement_Timing_Configuration_List_PDU(tvbuff_t offset += 7; offset >>= 3; return offset; } +static int dissect_AdditionalListofForwardingGTPTunnelEndpoint_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_x2ap_AdditionalListofForwardingGTPTunnelEndpoint(tvb, offset, &asn1_ctx, tree, hf_x2ap_AdditionalListofForwardingGTPTunnelEndpoint_PDU); + offset += 7; offset >>= 3; + return offset; +} static int dissect_AdditionLocationInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; @@ -23481,6 +23528,10 @@ void proto_register_x2ap(void) { { "Additional-Measurement-Timing-Configuration-List", "x2ap.Additional_Measurement_Timing_Configuration_List", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_x2ap_AdditionalListofForwardingGTPTunnelEndpoint_PDU, + { "AdditionalListofForwardingGTPTunnelEndpoint", "x2ap.AdditionalListofForwardingGTPTunnelEndpoint", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, { &hf_x2ap_AdditionLocationInformation_PDU, { "AdditionLocationInformation", "x2ap.AdditionLocationInformation", FT_UINT32, BASE_DEC, VALS(x2ap_AdditionLocationInformation_vals), 0, @@ -25505,6 +25556,18 @@ void proto_register_x2ap(void) { { "CSI-RS-MTC-Neighbour-Item", "x2ap.CSI_RS_MTC_Neighbour_Item_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_x2ap_AdditionalListofForwardingGTPTunnelEndpoint_item, + { "AdditionalListofForwardingGTPTunnelEndpoint-Item", "x2ap.AdditionalListofForwardingGTPTunnelEndpoint_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_x2ap_uL_GTPtunnelEndpoint, + { "uL-GTPtunnelEndpoint", "x2ap.uL_GTPtunnelEndpoint_element", + FT_NONE, BASE_NONE, NULL, 0, + "GTPtunnelEndpoint", HFILL }}, + { &hf_x2ap_dL_GTPtunnelEndpoint, + { "dL-GTPtunnelEndpoint", "x2ap.dL_GTPtunnelEndpoint_element", + FT_NONE, BASE_NONE, NULL, 0, + "GTPtunnelEndpoint", HFILL }}, { &hf_x2ap_additionalspecialSubframePatterns, { "additionalspecialSubframePatterns", "x2ap.additionalspecialSubframePatterns", FT_UINT32, BASE_DEC, VALS(x2ap_AdditionalSpecialSubframePatterns_vals), 0, @@ -27629,10 +27692,6 @@ void proto_register_x2ap(void) { { "dL-Forwarding", "x2ap.dL_Forwarding", FT_UINT32, BASE_DEC, VALS(x2ap_DL_Forwarding_vals), 0, NULL, HFILL }}, - { &hf_x2ap_uL_GTPtunnelEndpoint, - { "uL-GTPtunnelEndpoint", "x2ap.uL_GTPtunnelEndpoint_element", - FT_NONE, BASE_NONE, NULL, 0, - "GTPtunnelEndpoint", HFILL }}, { &hf_x2ap_source_GlobalSeNB_ID, { "source-GlobalSeNB-ID", "x2ap.source_GlobalSeNB_ID_element", FT_NONE, BASE_NONE, NULL, 0, @@ -28193,10 +28252,6 @@ void proto_register_x2ap(void) { { "sgNBPDCPnotpresent", "x2ap.sgNBPDCPnotpresent_element", FT_NONE, BASE_NONE, NULL, 0, "E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent", HFILL }}, - { &hf_x2ap_dL_GTPtunnelEndpoint, - { "dL-GTPtunnelEndpoint", "x2ap.dL_GTPtunnelEndpoint_element", - FT_NONE, BASE_NONE, NULL, 0, - "GTPtunnelEndpoint", HFILL }}, { &hf_x2ap_E_RABs_Admitted_ToBeAdded_SgNBModAckList_item, { "ProtocolIE-Single-Container", "x2ap.ProtocolIE_Single_Container_element", FT_NONE, BASE_NONE, NULL, 0, @@ -28667,6 +28722,8 @@ void proto_register_x2ap(void) { &ett_x2ap_CSI_RS_Neighbour_Item, &ett_x2ap_CSI_RS_MTC_Neighbour_List, &ett_x2ap_CSI_RS_MTC_Neighbour_Item, + &ett_x2ap_AdditionalListofForwardingGTPTunnelEndpoint, + &ett_x2ap_AdditionalListofForwardingGTPTunnelEndpoint_Item, &ett_x2ap_AdditionalSpecialSubframe_Info, &ett_x2ap_AdditionalSpecialSubframeExtension_Info, &ett_x2ap_AllocationAndRetentionPriority, @@ -29742,6 +29799,7 @@ proto_reg_handoff_x2ap(void) dissector_add_uint("x2ap.extension", id_RAT_Restrictions, create_dissector_handle(dissect_RAT_Restrictions_PDU, proto_x2ap)); dissector_add_uint("x2ap.extension", id_MIMOPRBusageInformation, create_dissector_handle(dissect_MIMOPRBusageInformation_PDU, proto_x2ap)); dissector_add_uint("x2ap.extension", id_SensorMeasurementConfiguration, create_dissector_handle(dissect_SensorMeasurementConfiguration_PDU, proto_x2ap)); + dissector_add_uint("x2ap.extension", id_AdditionalListofForwardingGTPTunnelEndpoint, create_dissector_handle(dissect_AdditionalListofForwardingGTPTunnelEndpoint_PDU, proto_x2ap)); dissector_add_uint("x2ap.proc.imsg", id_handoverPreparation, create_dissector_handle(dissect_HandoverRequest_PDU, proto_x2ap)); dissector_add_uint("x2ap.proc.sout", id_handoverPreparation, create_dissector_handle(dissect_HandoverRequestAcknowledge_PDU, proto_x2ap)); dissector_add_uint("x2ap.proc.uout", id_handoverPreparation, create_dissector_handle(dissect_HandoverPreparationFailure_PDU, proto_x2ap));