aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-m2ap.c
diff options
context:
space:
mode:
authorPascal Quantin <pascal@wireshark.org>2023-01-11 10:30:41 +0100
committerPascal Quantin <pascal@wireshark.org>2023-01-11 10:17:49 +0000
commitf2cdd8bbc3dc07a6b36102f7d572e45c1be4a2b7 (patch)
treed71aebbd181934ab88d25a8d3081eb3243de00a3 /epan/dissectors/packet-m2ap.c
parentfc013d9bd60783478c672a95904c8ce4c3d68de4 (diff)
M2AP: upgrade dissector to v17.0.1
Diffstat (limited to 'epan/dissectors/packet-m2ap.c')
-rw-r--r--epan/dissectors/packet-m2ap.c342
1 files changed, 334 insertions, 8 deletions
diff --git a/epan/dissectors/packet-m2ap.c b/epan/dissectors/packet-m2ap.c
index b4d61e292f..2b0a7ddd30 100644
--- a/epan/dissectors/packet-m2ap.c
+++ b/epan/dissectors/packet-m2ap.c
@@ -5,7 +5,7 @@
/* packet-m2ap.c
* Routines for M2 Application Protocol packet dissection
- * Copyright 2016, Pascal Quantin <pascal@wireshark.org>
+ * Copyright 2016-2023, Pascal Quantin <pascal@wireshark.org>
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
@@ -13,7 +13,7 @@
*
* SPDX-License-Identifier: GPL-2.0-or-later
*
- * Reference: 3GPP TS 36.443 v15.0.0
+ * Reference: 3GPP TS 36.443 v17.0.1
*/
#include "config.h"
@@ -115,7 +115,11 @@ typedef enum _ProtocolIE_ID_enum {
id_Repetition_PeriodExtended = 47,
id_MCH_Scheduling_PeriodExtended2 = 48,
id_Subcarrier_SpacingMBMS = 49,
- id_SubframeAllocationExtended = 50
+ id_SubframeAllocationExtended = 50,
+ id_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item = 51,
+ id_MCCHrelatedBCCH_ExtConfigPerMBSFNArea = 52,
+ id_SubframeAllocationFurtherExtension = 53,
+ id_AdditionalConfigParameters = 54
} ProtocolIE_ID_enum;
/* Initialize the protocol and registered fields */
@@ -123,6 +127,7 @@ static int proto_m2ap = -1;
static int hf_m2ap_IPAddress_v4 = -1;
static int hf_m2ap_IPAddress_v6 = -1;
+static int hf_m2ap_AdditionalConfigParameters_PDU = -1; /* AdditionalConfigParameters */
static int hf_m2ap_Cause_PDU = -1; /* Cause */
static int hf_m2ap_CriticalityDiagnostics_PDU = -1; /* CriticalityDiagnostics */
static int hf_m2ap_ENB_MBMS_Configuration_data_Item_PDU = -1; /* ENB_MBMS_Configuration_data_Item */
@@ -138,6 +143,7 @@ static int hf_m2ap_MBSFN_Area_ID_PDU = -1; /* MBSFN_Area_ID */
static int hf_m2ap_MBSFN_Subframe_Configuration_PDU = -1; /* MBSFN_Subframe_Configuration */
static int hf_m2ap_MCCH_Update_Time_PDU = -1; /* MCCH_Update_Time */
static int hf_m2ap_MCCHrelatedBCCH_ConfigPerMBSFNArea_Item_PDU = -1; /* MCCHrelatedBCCH_ConfigPerMBSFNArea_Item */
+static int hf_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item_PDU = -1; /* MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item */
static int hf_m2ap_MCE_MBMS_M2AP_ID_PDU = -1; /* MCE_MBMS_M2AP_ID */
static int hf_m2ap_MCEname_PDU = -1; /* MCEname */
static int hf_m2ap_MCH_Scheduling_PeriodExtended_PDU = -1; /* MCH_Scheduling_PeriodExtended */
@@ -149,6 +155,7 @@ static int hf_m2ap_Repetition_PeriodExtended_PDU = -1; /* Repetition_PeriodExte
static int hf_m2ap_SC_PTM_Information_PDU = -1; /* SC_PTM_Information */
static int hf_m2ap_Subcarrier_SpacingMBMS_PDU = -1; /* Subcarrier_SpacingMBMS */
static int hf_m2ap_SubframeAllocationExtended_PDU = -1; /* SubframeAllocationExtended */
+static int hf_m2ap_SubframeAllocationFurtherExtension_PDU = -1; /* SubframeAllocationFurtherExtension */
static int hf_m2ap_TimeToWait_PDU = -1; /* TimeToWait */
static int hf_m2ap_TMGI_PDU = -1; /* TMGI */
static int hf_m2ap_TNL_Information_PDU = -1; /* TNL_Information */
@@ -172,6 +179,7 @@ static int hf_m2ap_M2SetupRequest_PDU = -1; /* M2SetupRequest */
static int hf_m2ap_ENB_MBMS_Configuration_data_List_PDU = -1; /* ENB_MBMS_Configuration_data_List */
static int hf_m2ap_M2SetupResponse_PDU = -1; /* M2SetupResponse */
static int hf_m2ap_MCCHrelatedBCCH_ConfigPerMBSFNArea_PDU = -1; /* MCCHrelatedBCCH_ConfigPerMBSFNArea */
+static int hf_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_PDU = -1; /* MCCHrelatedBCCH_ExtConfigPerMBSFNArea */
static int hf_m2ap_M2SetupFailure_PDU = -1; /* M2SetupFailure */
static int hf_m2ap_ENBConfigurationUpdate_PDU = -1; /* ENBConfigurationUpdate */
static int hf_m2ap_ENB_MBMS_Configuration_data_List_ConfigUpdate_PDU = -1; /* ENB_MBMS_Configuration_data_List_ConfigUpdate */
@@ -211,10 +219,11 @@ static int hf_m2ap_extensionValue = -1; /* T_extensionValue */
static int hf_m2ap_PrivateIE_Container_item = -1; /* PrivateIE_Field */
static int hf_m2ap_private_id = -1; /* PrivateIE_ID */
static int hf_m2ap_private_value = -1; /* T_private_value */
+static int hf_m2ap_pmch_Bandwidth = -1; /* PMCH_Bandwidth */
+static int hf_m2ap_iE_Extensions = -1; /* ProtocolExtensionContainer */
static int hf_m2ap_priorityLevel = -1; /* PriorityLevel */
static int hf_m2ap_pre_emptionCapability = -1; /* Pre_emptionCapability */
static int hf_m2ap_pre_emptionVulnerability = -1; /* Pre_emptionVulnerability */
-static int hf_m2ap_iE_Extensions = -1; /* ProtocolExtensionContainer */
static int hf_m2ap_radioNetwork = -1; /* CauseRadioNetwork */
static int hf_m2ap_transport = -1; /* CauseTransport */
static int hf_m2ap_nAS = -1; /* CauseNAS */
@@ -267,6 +276,12 @@ static int hf_m2ap_modificationPeriod = -1; /* T_modificationPeriod */
static int hf_m2ap_subframeAllocationInfo = -1; /* BIT_STRING_SIZE_6 */
static int hf_m2ap_modulationAndCodingScheme = -1; /* T_modulationAndCodingScheme */
static int hf_m2ap_cellInformationList = -1; /* Cell_Information_List */
+static int hf_m2ap_repetitionPeriodExpanded = -1; /* T_repetitionPeriodExpanded */
+static int hf_m2ap_modificationPeriodExpanded = -1; /* T_modificationPeriodExpanded */
+static int hf_m2ap_subframeAllocationInfoExpanded = -1; /* BIT_STRING_SIZE_10 */
+static int hf_m2ap_modulationAndCodingScheme_01 = -1; /* T_modulationAndCodingScheme_01 */
+static int hf_m2ap_subcarrier_SpacingMBMSExpanded = -1; /* T_subcarrier_SpacingMBMSExpanded */
+static int hf_m2ap_timeSeparation = -1; /* T_timeSeparation */
static int hf_m2ap_allocatedSubframesEnd = -1; /* AllocatedSubframesEnd */
static int hf_m2ap_dataMCS = -1; /* INTEGER_0_28 */
static int hf_m2ap_mchSchedulingPeriod = -1; /* MCH_Scheduling_Period */
@@ -275,6 +290,8 @@ static int hf_m2ap_mbms_E_RAB_QoS_Parameters = -1; /* MBMS_E_RAB_QoS_Parameters
static int hf_m2ap_oneFrameExtension = -1; /* BIT_STRING_SIZE_2 */
static int hf_m2ap_fourFrameExtension = -1; /* BIT_STRING_SIZE_8 */
static int hf_m2ap_choice_extension = -1; /* ProtocolIE_Single_Container */
+static int hf_m2ap_oneFrameFurtherExtension = -1; /* BIT_STRING_SIZE_2 */
+static int hf_m2ap_fourFrameFurtherExtension = -1; /* BIT_STRING_SIZE_8 */
static int hf_m2ap_pLMNidentity = -1; /* PLMN_Identity */
static int hf_m2ap_serviceID = -1; /* OCTET_STRING_SIZE_3 */
static int hf_m2ap_iPMCAddress = -1; /* IPAddress */
@@ -291,6 +308,7 @@ static int hf_m2ap_sfn = -1; /* SFN */
static int hf_m2ap_mbms_Sessions_To_Be_Suspended_List = -1; /* MBMSsessionsToBeSuspendedListPerPMCH_Item */
static int hf_m2ap_ENB_MBMS_Configuration_data_List_item = -1; /* ProtocolIE_Single_Container */
static int hf_m2ap_MCCHrelatedBCCH_ConfigPerMBSFNArea_item = -1; /* ProtocolIE_Single_Container */
+static int hf_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_item = -1; /* ProtocolIE_Single_Container */
static int hf_m2ap_ENB_MBMS_Configuration_data_List_ConfigUpdate_item = -1; /* ProtocolIE_Single_Container */
static int hf_m2ap_m2_Interface = -1; /* ResetAll */
static int hf_m2ap_partOfM2_Interface = -1; /* MBMS_Service_associatedLogicalM2_ConnectionListRes */
@@ -320,6 +338,7 @@ static gint ett_m2ap_ProtocolExtensionContainer = -1;
static gint ett_m2ap_ProtocolExtensionField = -1;
static gint ett_m2ap_PrivateIE_Container = -1;
static gint ett_m2ap_PrivateIE_Field = -1;
+static gint ett_m2ap_AdditionalConfigParameters = -1;
static gint ett_m2ap_AllocationAndRetentionPriority = -1;
static gint ett_m2ap_Cause = -1;
static gint ett_m2ap_Cell_Information = -1;
@@ -345,9 +364,11 @@ static gint ett_m2ap_MBMSsessionsToBeSuspendedListPerPMCH_Item_item = -1;
static gint ett_m2ap_MBSFN_Subframe_Configuration = -1;
static gint ett_m2ap_T_subframeAllocation = -1;
static gint ett_m2ap_MCCHrelatedBCCH_ConfigPerMBSFNArea_Item = -1;
+static gint ett_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item = -1;
static gint ett_m2ap_PMCH_Configuration = -1;
static gint ett_m2ap_SC_PTM_Information = -1;
static gint ett_m2ap_SubframeAllocationExtended = -1;
+static gint ett_m2ap_SubframeAllocationFurtherExtension = -1;
static gint ett_m2ap_TMGI = -1;
static gint ett_m2ap_TNL_Information = -1;
static gint ett_m2ap_SessionStartRequest = -1;
@@ -370,6 +391,7 @@ static gint ett_m2ap_M2SetupRequest = -1;
static gint ett_m2ap_ENB_MBMS_Configuration_data_List = -1;
static gint ett_m2ap_M2SetupResponse = -1;
static gint ett_m2ap_MCCHrelatedBCCH_ConfigPerMBSFNArea = -1;
+static gint ett_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea = -1;
static gint ett_m2ap_M2SetupFailure = -1;
static gint ett_m2ap_ENBConfigurationUpdate = -1;
static gint ett_m2ap_ENB_MBMS_Configuration_data_List_ConfigUpdate = -1;
@@ -580,6 +602,10 @@ static const value_string m2ap_ProtocolIE_ID_vals[] = {
{ id_MCH_Scheduling_PeriodExtended2, "id-MCH-Scheduling-PeriodExtended2" },
{ id_Subcarrier_SpacingMBMS, "id-Subcarrier-SpacingMBMS" },
{ id_SubframeAllocationExtended, "id-SubframeAllocationExtended" },
+ { id_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item, "id-MCCHrelatedBCCH-ExtConfigPerMBSFNArea-Item" },
+ { id_MCCHrelatedBCCH_ExtConfigPerMBSFNArea, "id-MCCHrelatedBCCH-ExtConfigPerMBSFNArea" },
+ { id_SubframeAllocationFurtherExtension, "id-SubframeAllocationFurtherExtension" },
+ { id_AdditionalConfigParameters, "id-AdditionalConfigParameters" },
{ 0, NULL }
};
@@ -741,6 +767,38 @@ dissect_m2ap_PrivateIE_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
}
+static const value_string m2ap_PMCH_Bandwidth_vals[] = {
+ { 0, "n40" },
+ { 1, "n35" },
+ { 2, "n30" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_m2ap_PMCH_Bandwidth(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,
+ 3, NULL, TRUE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t AdditionalConfigParameters_sequence[] = {
+ { &hf_m2ap_pmch_Bandwidth , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m2ap_PMCH_Bandwidth },
+ { &hf_m2ap_iE_Extensions , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_m2ap_ProtocolExtensionContainer },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_m2ap_AdditionalConfigParameters(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_m2ap_AdditionalConfigParameters, AdditionalConfigParameters_sequence);
+
+ return offset;
+}
+
+
static int
dissect_m2ap_AllocatedSubframesEnd(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -1732,6 +1790,140 @@ dissect_m2ap_MCCHrelatedBCCH_ConfigPerMBSFNArea_Item(tvbuff_t *tvb _U_, int offs
}
+static const value_string m2ap_T_repetitionPeriodExpanded_vals[] = {
+ { 0, "rf1" },
+ { 1, "rf2" },
+ { 2, "rf4" },
+ { 3, "rf8" },
+ { 4, "rf16" },
+ { 5, "rf32" },
+ { 6, "rf64" },
+ { 7, "rf128" },
+ { 8, "rf256" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_m2ap_T_repetitionPeriodExpanded(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,
+ 9, NULL, TRUE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string m2ap_T_modificationPeriodExpanded_vals[] = {
+ { 0, "rf1" },
+ { 1, "rf2" },
+ { 2, "rf4" },
+ { 3, "rf8" },
+ { 4, "rf16" },
+ { 5, "rf32" },
+ { 6, "rf64" },
+ { 7, "rf128" },
+ { 8, "rf256" },
+ { 9, "rf512" },
+ { 10, "rf1024" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_m2ap_T_modificationPeriodExpanded(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,
+ 11, NULL, TRUE, 0, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_m2ap_BIT_STRING_SIZE_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+ 10, 10, FALSE, NULL, 0, NULL, NULL);
+
+ return offset;
+}
+
+
+static const value_string m2ap_T_modulationAndCodingScheme_01_vals[] = {
+ { 0, "n2" },
+ { 1, "n7" },
+ { 2, "n13" },
+ { 3, "n19" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_m2ap_T_modulationAndCodingScheme_01(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,
+ 4, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string m2ap_T_subcarrier_SpacingMBMSExpanded_vals[] = {
+ { 0, "khz-7dot5" },
+ { 1, "khz-2dot5" },
+ { 2, "khz-1dot25" },
+ { 3, "khz-0dot37" },
+ { 4, "kHz-15" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_m2ap_T_subcarrier_SpacingMBMSExpanded(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,
+ 4, NULL, TRUE, 1, NULL);
+
+ return offset;
+}
+
+
+static const value_string m2ap_T_timeSeparation_vals[] = {
+ { 0, "sl2" },
+ { 1, "sl4" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_m2ap_T_timeSeparation(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);
+
+ return offset;
+}
+
+
+static const per_sequence_t MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item_sequence[] = {
+ { &hf_m2ap_mbsfnArea , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m2ap_MBSFN_Area_ID },
+ { &hf_m2ap_repetitionPeriodExpanded, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m2ap_T_repetitionPeriodExpanded },
+ { &hf_m2ap_offset , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m2ap_INTEGER_0_10 },
+ { &hf_m2ap_modificationPeriodExpanded, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m2ap_T_modificationPeriodExpanded },
+ { &hf_m2ap_subframeAllocationInfoExpanded, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m2ap_BIT_STRING_SIZE_10 },
+ { &hf_m2ap_modulationAndCodingScheme_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m2ap_T_modulationAndCodingScheme_01 },
+ { &hf_m2ap_subcarrier_SpacingMBMSExpanded, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m2ap_T_subcarrier_SpacingMBMSExpanded },
+ { &hf_m2ap_timeSeparation , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_m2ap_T_timeSeparation },
+ { &hf_m2ap_cellInformationList, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_m2ap_Cell_Information_List },
+ { &hf_m2ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_m2ap_ProtocolExtensionContainer },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_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_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item, MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item_sequence);
+
+ return offset;
+}
+
+
static int
dissect_m2ap_MCEname(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -1981,6 +2173,30 @@ dissect_m2ap_SubframeAllocationExtended(tvbuff_t *tvb _U_, int offset _U_, asn1_
}
+static const value_string m2ap_SubframeAllocationFurtherExtension_vals[] = {
+ { 0, "oneFrameFurtherExtension" },
+ { 1, "fourFrameFurtherExtension" },
+ { 2, "choice-extension" },
+ { 0, NULL }
+};
+
+static const per_choice_t SubframeAllocationFurtherExtension_choice[] = {
+ { 0, &hf_m2ap_oneFrameFurtherExtension, ASN1_EXTENSION_ROOT , dissect_m2ap_BIT_STRING_SIZE_2 },
+ { 1, &hf_m2ap_fourFrameFurtherExtension, ASN1_EXTENSION_ROOT , dissect_m2ap_BIT_STRING_SIZE_8 },
+ { 2, &hf_m2ap_choice_extension, ASN1_EXTENSION_ROOT , dissect_m2ap_ProtocolIE_Single_Container },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_m2ap_SubframeAllocationFurtherExtension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_m2ap_SubframeAllocationFurtherExtension, SubframeAllocationFurtherExtension_choice,
+ NULL);
+
+ return offset;
+}
+
+
static const value_string m2ap_TimeToWait_vals[] = {
{ 0, "v1s" },
{ 1, "v2s" },
@@ -2314,6 +2530,20 @@ dissect_m2ap_MCCHrelatedBCCH_ConfigPerMBSFNArea(tvbuff_t *tvb _U_, int offset _U
}
+static const per_sequence_t MCCHrelatedBCCH_ExtConfigPerMBSFNArea_sequence_of[1] = {
+ { &hf_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m2ap_ProtocolIE_Single_Container },
+};
+
+static int
+dissect_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea(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_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea, MCCHrelatedBCCH_ExtConfigPerMBSFNArea_sequence_of,
+ 1, maxnoofMBSFNareas, FALSE);
+
+ return offset;
+}
+
+
static const per_sequence_t M2SetupFailure_sequence[] = {
{ &hf_m2ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m2ap_ProtocolIE_Container },
{ NULL, 0, 0, NULL }
@@ -2853,6 +3083,14 @@ dissect_m2ap_M2AP_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, p
/*--- PDUs ---*/
+static int dissect_AdditionalConfigParameters_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_m2ap_AdditionalConfigParameters(tvb, offset, &asn1_ctx, tree, hf_m2ap_AdditionalConfigParameters_PDU);
+ offset += 7; offset >>= 3;
+ return offset;
+}
static int dissect_Cause_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
int offset = 0;
asn1_ctx_t asn1_ctx;
@@ -2973,6 +3211,14 @@ static int dissect_MCCHrelatedBCCH_ConfigPerMBSFNArea_Item_PDU(tvbuff_t *tvb _U_
offset += 7; offset >>= 3;
return offset;
}
+static int dissect_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item_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_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item(tvb, offset, &asn1_ctx, tree, hf_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item_PDU);
+ offset += 7; offset >>= 3;
+ return offset;
+}
static int dissect_MCE_MBMS_M2AP_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
int offset = 0;
asn1_ctx_t asn1_ctx;
@@ -3061,6 +3307,14 @@ static int dissect_SubframeAllocationExtended_PDU(tvbuff_t *tvb _U_, packet_info
offset += 7; offset >>= 3;
return offset;
}
+static int dissect_SubframeAllocationFurtherExtension_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_m2ap_SubframeAllocationFurtherExtension(tvb, offset, &asn1_ctx, tree, hf_m2ap_SubframeAllocationFurtherExtension_PDU);
+ offset += 7; offset >>= 3;
+ return offset;
+}
static int dissect_TimeToWait_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
int offset = 0;
asn1_ctx_t asn1_ctx;
@@ -3245,6 +3499,14 @@ static int dissect_MCCHrelatedBCCH_ConfigPerMBSFNArea_PDU(tvbuff_t *tvb _U_, pac
offset += 7; offset >>= 3;
return offset;
}
+static int dissect_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_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_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea(tvb, offset, &asn1_ctx, tree, hf_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_PDU);
+ offset += 7; offset >>= 3;
+ return offset;
+}
static int dissect_M2SetupFailure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
int offset = 0;
asn1_ctx_t asn1_ctx;
@@ -3528,6 +3790,10 @@ proto_register_m2ap(void) {
FT_IPv6, BASE_NONE, NULL, 0,
NULL, HFILL }
},
+ { &hf_m2ap_AdditionalConfigParameters_PDU,
+ { "AdditionalConfigParameters", "m2ap.AdditionalConfigParameters_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_m2ap_Cause_PDU,
{ "Cause", "m2ap.Cause",
FT_UINT32, BASE_DEC, VALS(m2ap_Cause_vals), 0,
@@ -3588,6 +3854,10 @@ proto_register_m2ap(void) {
{ "MCCHrelatedBCCH-ConfigPerMBSFNArea-Item", "m2ap.MCCHrelatedBCCH_ConfigPerMBSFNArea_Item_element",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item_PDU,
+ { "MCCHrelatedBCCH-ExtConfigPerMBSFNArea-Item", "m2ap.MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_m2ap_MCE_MBMS_M2AP_ID_PDU,
{ "MCE-MBMS-M2AP-ID", "m2ap.MCE_MBMS_M2AP_ID",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -3632,6 +3902,10 @@ proto_register_m2ap(void) {
{ "SubframeAllocationExtended", "m2ap.SubframeAllocationExtended",
FT_UINT32, BASE_DEC, VALS(m2ap_SubframeAllocationExtended_vals), 0,
NULL, HFILL }},
+ { &hf_m2ap_SubframeAllocationFurtherExtension_PDU,
+ { "SubframeAllocationFurtherExtension", "m2ap.SubframeAllocationFurtherExtension",
+ FT_UINT32, BASE_DEC, VALS(m2ap_SubframeAllocationFurtherExtension_vals), 0,
+ NULL, HFILL }},
{ &hf_m2ap_TimeToWait_PDU,
{ "TimeToWait", "m2ap.TimeToWait",
FT_UINT32, BASE_DEC, VALS(m2ap_TimeToWait_vals), 0,
@@ -3724,6 +3998,10 @@ proto_register_m2ap(void) {
{ "MCCHrelatedBCCH-ConfigPerMBSFNArea", "m2ap.MCCHrelatedBCCH_ConfigPerMBSFNArea",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
+ { &hf_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_PDU,
+ { "MCCHrelatedBCCH-ExtConfigPerMBSFNArea", "m2ap.MCCHrelatedBCCH_ExtConfigPerMBSFNArea",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
{ &hf_m2ap_M2SetupFailure_PDU,
{ "M2SetupFailure", "m2ap.M2SetupFailure_element",
FT_NONE, BASE_NONE, NULL, 0,
@@ -3880,6 +4158,14 @@ proto_register_m2ap(void) {
{ "value", "m2ap.value_element",
FT_NONE, BASE_NONE, NULL, 0,
"T_private_value", HFILL }},
+ { &hf_m2ap_pmch_Bandwidth,
+ { "pmch-Bandwidth", "m2ap.pmch_Bandwidth",
+ FT_UINT32, BASE_DEC, VALS(m2ap_PMCH_Bandwidth_vals), 0,
+ NULL, HFILL }},
+ { &hf_m2ap_iE_Extensions,
+ { "iE-Extensions", "m2ap.iE_Extensions",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ProtocolExtensionContainer", HFILL }},
{ &hf_m2ap_priorityLevel,
{ "priorityLevel", "m2ap.priorityLevel",
FT_UINT32, BASE_DEC, VALS(m2ap_PriorityLevel_vals), 0,
@@ -3892,10 +4178,6 @@ proto_register_m2ap(void) {
{ "pre-emptionVulnerability", "m2ap.pre_emptionVulnerability",
FT_UINT32, BASE_DEC, VALS(m2ap_Pre_emptionVulnerability_vals), 0,
NULL, HFILL }},
- { &hf_m2ap_iE_Extensions,
- { "iE-Extensions", "m2ap.iE_Extensions",
- FT_UINT32, BASE_DEC, NULL, 0,
- "ProtocolExtensionContainer", HFILL }},
{ &hf_m2ap_radioNetwork,
{ "radioNetwork", "m2ap.radioNetwork",
FT_UINT32, BASE_DEC, VALS(m2ap_CauseRadioNetwork_vals), 0,
@@ -4104,6 +4386,30 @@ proto_register_m2ap(void) {
{ "cellInformationList", "m2ap.cellInformationList",
FT_UINT32, BASE_DEC, NULL, 0,
"Cell_Information_List", HFILL }},
+ { &hf_m2ap_repetitionPeriodExpanded,
+ { "repetitionPeriodExpanded", "m2ap.repetitionPeriodExpanded",
+ FT_UINT32, BASE_DEC, VALS(m2ap_T_repetitionPeriodExpanded_vals), 0,
+ NULL, HFILL }},
+ { &hf_m2ap_modificationPeriodExpanded,
+ { "modificationPeriodExpanded", "m2ap.modificationPeriodExpanded",
+ FT_UINT32, BASE_DEC, VALS(m2ap_T_modificationPeriodExpanded_vals), 0,
+ NULL, HFILL }},
+ { &hf_m2ap_subframeAllocationInfoExpanded,
+ { "subframeAllocationInfoExpanded", "m2ap.subframeAllocationInfoExpanded",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING_SIZE_10", HFILL }},
+ { &hf_m2ap_modulationAndCodingScheme_01,
+ { "modulationAndCodingScheme", "m2ap.modulationAndCodingScheme",
+ FT_UINT32, BASE_DEC, VALS(m2ap_T_modulationAndCodingScheme_01_vals), 0,
+ "T_modulationAndCodingScheme_01", HFILL }},
+ { &hf_m2ap_subcarrier_SpacingMBMSExpanded,
+ { "subcarrier-SpacingMBMSExpanded", "m2ap.subcarrier_SpacingMBMSExpanded",
+ FT_UINT32, BASE_DEC, VALS(m2ap_T_subcarrier_SpacingMBMSExpanded_vals), 0,
+ NULL, HFILL }},
+ { &hf_m2ap_timeSeparation,
+ { "timeSeparation", "m2ap.timeSeparation",
+ FT_UINT32, BASE_DEC, VALS(m2ap_T_timeSeparation_vals), 0,
+ NULL, HFILL }},
{ &hf_m2ap_allocatedSubframesEnd,
{ "allocatedSubframesEnd", "m2ap.allocatedSubframesEnd",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -4136,6 +4442,14 @@ proto_register_m2ap(void) {
{ "choice-extension", "m2ap.choice_extension_element",
FT_NONE, BASE_NONE, NULL, 0,
"ProtocolIE_Single_Container", HFILL }},
+ { &hf_m2ap_oneFrameFurtherExtension,
+ { "oneFrameFurtherExtension", "m2ap.oneFrameFurtherExtension",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING_SIZE_2", HFILL }},
+ { &hf_m2ap_fourFrameFurtherExtension,
+ { "fourFrameFurtherExtension", "m2ap.fourFrameFurtherExtension",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING_SIZE_8", HFILL }},
{ &hf_m2ap_pLMNidentity,
{ "pLMNidentity", "m2ap.pLMNidentity",
FT_BYTES, BASE_NONE, NULL, 0,
@@ -4200,6 +4514,10 @@ proto_register_m2ap(void) {
{ "ProtocolIE-Single-Container", "m2ap.ProtocolIE_Single_Container_element",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_item,
+ { "ProtocolIE-Single-Container", "m2ap.ProtocolIE_Single_Container_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_m2ap_ENB_MBMS_Configuration_data_List_ConfigUpdate_item,
{ "ProtocolIE-Single-Container", "m2ap.ProtocolIE_Single_Container_element",
FT_NONE, BASE_NONE, NULL, 0,
@@ -4282,6 +4600,7 @@ proto_register_m2ap(void) {
&ett_m2ap_ProtocolExtensionField,
&ett_m2ap_PrivateIE_Container,
&ett_m2ap_PrivateIE_Field,
+ &ett_m2ap_AdditionalConfigParameters,
&ett_m2ap_AllocationAndRetentionPriority,
&ett_m2ap_Cause,
&ett_m2ap_Cell_Information,
@@ -4307,9 +4626,11 @@ proto_register_m2ap(void) {
&ett_m2ap_MBSFN_Subframe_Configuration,
&ett_m2ap_T_subframeAllocation,
&ett_m2ap_MCCHrelatedBCCH_ConfigPerMBSFNArea_Item,
+ &ett_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item,
&ett_m2ap_PMCH_Configuration,
&ett_m2ap_SC_PTM_Information,
&ett_m2ap_SubframeAllocationExtended,
+ &ett_m2ap_SubframeAllocationFurtherExtension,
&ett_m2ap_TMGI,
&ett_m2ap_TNL_Information,
&ett_m2ap_SessionStartRequest,
@@ -4332,6 +4653,7 @@ proto_register_m2ap(void) {
&ett_m2ap_ENB_MBMS_Configuration_data_List,
&ett_m2ap_M2SetupResponse,
&ett_m2ap_MCCHrelatedBCCH_ConfigPerMBSFNArea,
+ &ett_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea,
&ett_m2ap_M2SetupFailure,
&ett_m2ap_ENBConfigurationUpdate,
&ett_m2ap_ENB_MBMS_Configuration_data_List_ConfigUpdate,
@@ -4434,6 +4756,8 @@ proto_reg_handoff_m2ap(void)
dissector_add_uint("m2ap.ies", id_MBMS_Suspension_Notification_List, create_dissector_handle(dissect_MBMS_Suspension_Notification_List_PDU, proto_m2ap));
dissector_add_uint("m2ap.ies", id_MBMS_Suspension_Notification_Item, create_dissector_handle(dissect_MBMS_Suspension_Notification_Item_PDU, proto_m2ap));
dissector_add_uint("m2ap.ies", id_SC_PTM_Information, create_dissector_handle(dissect_SC_PTM_Information_PDU, proto_m2ap));
+ dissector_add_uint("m2ap.ies", id_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item, create_dissector_handle(dissect_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item_PDU, proto_m2ap));
+ dissector_add_uint("m2ap.ies", id_MCCHrelatedBCCH_ExtConfigPerMBSFNArea, create_dissector_handle(dissect_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_PDU, proto_m2ap));
dissector_add_uint("m2ap.extension", id_Modulation_Coding_Scheme2, create_dissector_handle(dissect_Modulation_Coding_Scheme2_PDU, proto_m2ap));
dissector_add_uint("m2ap.extension", id_MCH_Scheduling_PeriodExtended, create_dissector_handle(dissect_MCH_Scheduling_PeriodExtended_PDU, proto_m2ap));
dissector_add_uint("m2ap.extension", id_Repetition_PeriodExtended, create_dissector_handle(dissect_Repetition_PeriodExtended_PDU, proto_m2ap));
@@ -4441,6 +4765,8 @@ proto_reg_handoff_m2ap(void)
dissector_add_uint("m2ap.extension", id_MCH_Scheduling_PeriodExtended2, create_dissector_handle(dissect_MCH_Scheduling_PeriodExtended2_PDU, proto_m2ap));
dissector_add_uint("m2ap.extension", id_SubframeAllocationExtended, create_dissector_handle(dissect_SubframeAllocationExtended_PDU, proto_m2ap));
dissector_add_uint("m2ap.extension", id_Subcarrier_SpacingMBMS, create_dissector_handle(dissect_Subcarrier_SpacingMBMS_PDU, proto_m2ap));
+ dissector_add_uint("m2ap.extension", id_SubframeAllocationFurtherExtension, create_dissector_handle(dissect_SubframeAllocationFurtherExtension_PDU, proto_m2ap));
+ dissector_add_uint("m2ap.extension", id_AdditionalConfigParameters, create_dissector_handle(dissect_AdditionalConfigParameters_PDU, proto_m2ap));
dissector_add_uint("m2ap.proc.imsg", id_sessionStart, create_dissector_handle(dissect_SessionStartRequest_PDU, proto_m2ap));
dissector_add_uint("m2ap.proc.sout", id_sessionStart, create_dissector_handle(dissect_SessionStartResponse_PDU, proto_m2ap));
dissector_add_uint("m2ap.proc.uout", id_sessionStart, create_dissector_handle(dissect_SessionStartFailure_PDU, proto_m2ap));