1 /* Do not modify this file. Changes will be overwritten. */
2 /* Generated automatically by the ASN.1 to Wireshark dissector compiler */
4 /* asn2wrs.py -q -L -p m2ap -c ./m2ap.cnf -s ./packet-m2ap-template -D . -O ../.. M2AP-CommonDataTypes.asn M2AP-Constants.asn M2AP-Containers.asn M2AP-IEs.asn M2AP-PDU-Contents.asn M2AP-PDU-Descriptions.asn */
7 * Routines for M2 Application Protocol packet dissection
8 * Copyright 2016-2023, Pascal Quantin <pascal@wireshark.org>
10 * Wireshark - Network traffic analyzer
11 * By Gerald Combs <gerald@wireshark.org>
12 * Copyright 1998 Gerald Combs
14 * SPDX-License-Identifier: GPL-2.0-or-later
16 * Reference: 3GPP TS 36.443 v17.0.1
21 #include <epan/packet.h>
22 #include <epan/sctpppids.h>
23 #include <epan/asn1.h>
24 #include <epan/expert.h>
25 #include <epan/proto_data.h>
26 #include <epan/unit_strings.h>
27 #include <wsutil/array.h>
29 #include "packet-per.h"
30 #include "packet-e212.h"
32 #define PNAME "M2 Application Protocol"
36 void proto_register_m2ap(void);
37 void proto_reg_handoff_m2ap(void);
39 /* M2AP uses port 36443 as recommended by IANA. */
40 #define M2AP_PORT 36443
42 #define maxPrivateIEs 65535
43 #define maxProtocolExtensions 65535
44 #define maxProtocolIEs 65535
45 #define maxnoofMBSFNareas 256
46 #define maxnoofMBSFN_Allocations 8
47 #define maxnoofPMCHsperMBSFNarea 15
48 #define maxnoofCells 256
49 #define maxnoofMBMSServiceAreasPerCell 256
50 #define maxnoofSessionsPerPMCH 29
51 #define maxnooferrors 256
52 #define maxNrOfIndividualM2ConnectionsToReset 256
53 #define maxnoofCountingService 16
54 #define maxnoofCellsforMBMS 4096
56 typedef enum _ProcedureCode_enum
{
59 id_mbmsSchedulingInformation
= 2,
60 id_errorIndication
= 3,
63 id_eNBConfigurationUpdate
= 6,
64 id_mCEConfigurationUpdate
= 7,
65 id_privateMessage
= 8,
67 id_mbmsServiceCounting
= 10,
68 id_mbmsServiceCountingResultsReport
= 11,
69 id_mbmsOverloadNotification
= 12
72 typedef enum _ProtocolIE_ID_enum
{
73 id_MCE_MBMS_M2AP_ID
= 0,
74 id_ENB_MBMS_M2AP_ID
= 1,
76 id_MBMS_Session_ID
= 3,
77 id_MBMS_Service_Area
= 6,
78 id_TNL_Information
= 7,
79 id_CriticalityDiagnostics
= 8,
81 id_MBSFN_Area_Configuration_List
= 10,
82 id_PMCH_Configuration_List
= 11,
83 id_PMCH_Configuration_Item
= 12,
86 id_ENB_MBMS_Configuration_data_List
= 15,
87 id_ENB_MBMS_Configuration_data_Item
= 16,
90 id_MCCHrelatedBCCH_ConfigPerMBSFNArea
= 19,
91 id_MCCHrelatedBCCH_ConfigPerMBSFNArea_Item
= 20,
93 id_MBSFN_Subframe_Configuration_List
= 22,
94 id_MBSFN_Subframe_Configuration_Item
= 23,
95 id_Common_Subframe_Allocation_Period
= 24,
96 id_MCCH_Update_Time
= 25,
97 id_ENB_MBMS_Configuration_data_List_ConfigUpdate
= 26,
98 id_ENB_MBMS_Configuration_data_ConfigUpdate_Item
= 27,
99 id_MBMS_Service_associatedLogicalM2_ConnectionItem
= 28,
100 id_MBSFN_Area_ID
= 29,
102 id_MBMS_Service_associatedLogicalM2_ConnectionListResAck
= 31,
103 id_MBMS_Counting_Request_Session
= 32,
104 id_MBMS_Counting_Request_Session_Item
= 33,
105 id_MBMS_Counting_Result_List
= 34,
106 id_MBMS_Counting_Result_Item
= 35,
107 id_Modulation_Coding_Scheme2
= 36,
108 id_MCH_Scheduling_PeriodExtended
= 37,
109 id_Alternative_TNL_Information
= 38,
110 id_Overload_Status_Per_PMCH_List
= 39,
111 id_PMCH_Overload_Status
= 41,
112 id_Active_MBMS_Session_List
= 42,
113 id_MBMS_Suspension_Notification_List
= 43,
114 id_MBMS_Suspension_Notification_Item
= 44,
115 id_SC_PTM_Information
= 45,
116 id_Modification_PeriodExtended
= 46,
117 id_Repetition_PeriodExtended
= 47,
118 id_MCH_Scheduling_PeriodExtended2
= 48,
119 id_Subcarrier_SpacingMBMS
= 49,
120 id_SubframeAllocationExtended
= 50,
121 id_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item
= 51,
122 id_MCCHrelatedBCCH_ExtConfigPerMBSFNArea
= 52,
123 id_SubframeAllocationFurtherExtension
= 53,
124 id_AdditionalConfigParameters
= 54
125 } ProtocolIE_ID_enum
;
127 /* Initialize the protocol and registered fields */
128 static int proto_m2ap
;
130 static int hf_m2ap_IPAddress_v4
;
131 static int hf_m2ap_IPAddress_v6
;
132 static int hf_m2ap_AdditionalConfigParameters_PDU
; /* AdditionalConfigParameters */
133 static int hf_m2ap_Cause_PDU
; /* Cause */
134 static int hf_m2ap_CriticalityDiagnostics_PDU
; /* CriticalityDiagnostics */
135 static int hf_m2ap_ENB_MBMS_Configuration_data_Item_PDU
; /* ENB_MBMS_Configuration_data_Item */
136 static int hf_m2ap_ENB_MBMS_Configuration_data_ConfigUpdate_Item_PDU
; /* ENB_MBMS_Configuration_data_ConfigUpdate_Item */
137 static int hf_m2ap_ENB_MBMS_M2AP_ID_PDU
; /* ENB_MBMS_M2AP_ID */
138 static int hf_m2ap_ENBname_PDU
; /* ENBname */
139 static int hf_m2ap_GlobalENB_ID_PDU
; /* GlobalENB_ID */
140 static int hf_m2ap_GlobalMCE_ID_PDU
; /* GlobalMCE_ID */
141 static int hf_m2ap_MBMS_Service_associatedLogicalM2_ConnectionItem_PDU
; /* MBMS_Service_associatedLogicalM2_ConnectionItem */
142 static int hf_m2ap_MBMS_Service_Area_PDU
; /* MBMS_Service_Area */
143 static int hf_m2ap_MBMS_Session_ID_PDU
; /* MBMS_Session_ID */
144 static int hf_m2ap_MBSFN_Area_ID_PDU
; /* MBSFN_Area_ID */
145 static int hf_m2ap_MBSFN_Subframe_Configuration_PDU
; /* MBSFN_Subframe_Configuration */
146 static int hf_m2ap_MCCH_Update_Time_PDU
; /* MCCH_Update_Time */
147 static int hf_m2ap_MCCHrelatedBCCH_ConfigPerMBSFNArea_Item_PDU
; /* MCCHrelatedBCCH_ConfigPerMBSFNArea_Item */
148 static int hf_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item_PDU
; /* MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item */
149 static int hf_m2ap_MCE_MBMS_M2AP_ID_PDU
; /* MCE_MBMS_M2AP_ID */
150 static int hf_m2ap_MCEname_PDU
; /* MCEname */
151 static int hf_m2ap_MCH_Scheduling_PeriodExtended_PDU
; /* MCH_Scheduling_PeriodExtended */
152 static int hf_m2ap_MCH_Scheduling_PeriodExtended2_PDU
; /* MCH_Scheduling_PeriodExtended2 */
153 static int hf_m2ap_Modulation_Coding_Scheme2_PDU
; /* Modulation_Coding_Scheme2 */
154 static int hf_m2ap_Modification_PeriodExtended_PDU
; /* Modification_PeriodExtended */
155 static int hf_m2ap_Common_Subframe_Allocation_Period_PDU
; /* Common_Subframe_Allocation_Period */
156 static int hf_m2ap_Repetition_PeriodExtended_PDU
; /* Repetition_PeriodExtended */
157 static int hf_m2ap_SC_PTM_Information_PDU
; /* SC_PTM_Information */
158 static int hf_m2ap_Subcarrier_SpacingMBMS_PDU
; /* Subcarrier_SpacingMBMS */
159 static int hf_m2ap_SubframeAllocationExtended_PDU
; /* SubframeAllocationExtended */
160 static int hf_m2ap_SubframeAllocationFurtherExtension_PDU
; /* SubframeAllocationFurtherExtension */
161 static int hf_m2ap_TimeToWait_PDU
; /* TimeToWait */
162 static int hf_m2ap_TMGI_PDU
; /* TMGI */
163 static int hf_m2ap_TNL_Information_PDU
; /* TNL_Information */
164 static int hf_m2ap_SessionStartRequest_PDU
; /* SessionStartRequest */
165 static int hf_m2ap_SessionStartResponse_PDU
; /* SessionStartResponse */
166 static int hf_m2ap_SessionStartFailure_PDU
; /* SessionStartFailure */
167 static int hf_m2ap_SessionStopRequest_PDU
; /* SessionStopRequest */
168 static int hf_m2ap_SessionStopResponse_PDU
; /* SessionStopResponse */
169 static int hf_m2ap_SessionUpdateRequest_PDU
; /* SessionUpdateRequest */
170 static int hf_m2ap_SessionUpdateResponse_PDU
; /* SessionUpdateResponse */
171 static int hf_m2ap_SessionUpdateFailure_PDU
; /* SessionUpdateFailure */
172 static int hf_m2ap_MbmsSchedulingInformation_PDU
; /* MbmsSchedulingInformation */
173 static int hf_m2ap_MBSFN_Area_Configuration_List_PDU
; /* MBSFN_Area_Configuration_List */
174 static int hf_m2ap_PMCH_Configuration_List_PDU
; /* PMCH_Configuration_List */
175 static int hf_m2ap_PMCH_Configuration_Item_PDU
; /* PMCH_Configuration_Item */
176 static int hf_m2ap_MBSFN_Subframe_ConfigurationList_PDU
; /* MBSFN_Subframe_ConfigurationList */
177 static int hf_m2ap_MBMS_Suspension_Notification_List_PDU
; /* MBMS_Suspension_Notification_List */
178 static int hf_m2ap_MBMS_Suspension_Notification_Item_PDU
; /* MBMS_Suspension_Notification_Item */
179 static int hf_m2ap_MbmsSchedulingInformationResponse_PDU
; /* MbmsSchedulingInformationResponse */
180 static int hf_m2ap_M2SetupRequest_PDU
; /* M2SetupRequest */
181 static int hf_m2ap_ENB_MBMS_Configuration_data_List_PDU
; /* ENB_MBMS_Configuration_data_List */
182 static int hf_m2ap_M2SetupResponse_PDU
; /* M2SetupResponse */
183 static int hf_m2ap_MCCHrelatedBCCH_ConfigPerMBSFNArea_PDU
; /* MCCHrelatedBCCH_ConfigPerMBSFNArea */
184 static int hf_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_PDU
; /* MCCHrelatedBCCH_ExtConfigPerMBSFNArea */
185 static int hf_m2ap_M2SetupFailure_PDU
; /* M2SetupFailure */
186 static int hf_m2ap_ENBConfigurationUpdate_PDU
; /* ENBConfigurationUpdate */
187 static int hf_m2ap_ENB_MBMS_Configuration_data_List_ConfigUpdate_PDU
; /* ENB_MBMS_Configuration_data_List_ConfigUpdate */
188 static int hf_m2ap_ENBConfigurationUpdateAcknowledge_PDU
; /* ENBConfigurationUpdateAcknowledge */
189 static int hf_m2ap_ENBConfigurationUpdateFailure_PDU
; /* ENBConfigurationUpdateFailure */
190 static int hf_m2ap_MCEConfigurationUpdate_PDU
; /* MCEConfigurationUpdate */
191 static int hf_m2ap_MCEConfigurationUpdateAcknowledge_PDU
; /* MCEConfigurationUpdateAcknowledge */
192 static int hf_m2ap_MCEConfigurationUpdateFailure_PDU
; /* MCEConfigurationUpdateFailure */
193 static int hf_m2ap_ErrorIndication_PDU
; /* ErrorIndication */
194 static int hf_m2ap_Reset_PDU
; /* Reset */
195 static int hf_m2ap_ResetType_PDU
; /* ResetType */
196 static int hf_m2ap_ResetAcknowledge_PDU
; /* ResetAcknowledge */
197 static int hf_m2ap_MBMS_Service_associatedLogicalM2_ConnectionListResAck_PDU
; /* MBMS_Service_associatedLogicalM2_ConnectionListResAck */
198 static int hf_m2ap_PrivateMessage_PDU
; /* PrivateMessage */
199 static int hf_m2ap_MbmsServiceCountingRequest_PDU
; /* MbmsServiceCountingRequest */
200 static int hf_m2ap_MBMS_Counting_Request_Session_PDU
; /* MBMS_Counting_Request_Session */
201 static int hf_m2ap_MBMS_Counting_Request_SessionIE_PDU
; /* MBMS_Counting_Request_SessionIE */
202 static int hf_m2ap_MbmsServiceCountingResponse_PDU
; /* MbmsServiceCountingResponse */
203 static int hf_m2ap_MbmsServiceCountingFailure_PDU
; /* MbmsServiceCountingFailure */
204 static int hf_m2ap_MbmsServiceCountingResultsReport_PDU
; /* MbmsServiceCountingResultsReport */
205 static int hf_m2ap_MBMS_Counting_Result_List_PDU
; /* MBMS_Counting_Result_List */
206 static int hf_m2ap_MBMS_Counting_Result_PDU
; /* MBMS_Counting_Result */
207 static int hf_m2ap_MbmsOverloadNotification_PDU
; /* MbmsOverloadNotification */
208 static int hf_m2ap_Overload_Status_Per_PMCH_List_PDU
; /* Overload_Status_Per_PMCH_List */
209 static int hf_m2ap_PMCH_Overload_Status_PDU
; /* PMCH_Overload_Status */
210 static int hf_m2ap_Active_MBMS_Session_List_PDU
; /* Active_MBMS_Session_List */
211 static int hf_m2ap_M2AP_PDU_PDU
; /* M2AP_PDU */
212 static int hf_m2ap_local
; /* INTEGER_0_maxPrivateIEs */
213 static int hf_m2ap_global
; /* OBJECT_IDENTIFIER */
214 static int hf_m2ap_ProtocolIE_Container_item
; /* ProtocolIE_Field */
215 static int hf_m2ap_id
; /* ProtocolIE_ID */
216 static int hf_m2ap_criticality
; /* Criticality */
217 static int hf_m2ap_ie_field_value
; /* T_ie_field_value */
218 static int hf_m2ap_ProtocolExtensionContainer_item
; /* ProtocolExtensionField */
219 static int hf_m2ap_ext_id
; /* ProtocolIE_ID */
220 static int hf_m2ap_extensionValue
; /* T_extensionValue */
221 static int hf_m2ap_PrivateIE_Container_item
; /* PrivateIE_Field */
222 static int hf_m2ap_private_id
; /* PrivateIE_ID */
223 static int hf_m2ap_private_value
; /* T_private_value */
224 static int hf_m2ap_pmch_Bandwidth
; /* PMCH_Bandwidth */
225 static int hf_m2ap_iE_Extensions
; /* ProtocolExtensionContainer */
226 static int hf_m2ap_priorityLevel
; /* PriorityLevel */
227 static int hf_m2ap_pre_emptionCapability
; /* Pre_emptionCapability */
228 static int hf_m2ap_pre_emptionVulnerability
; /* Pre_emptionVulnerability */
229 static int hf_m2ap_radioNetwork
; /* CauseRadioNetwork */
230 static int hf_m2ap_transport
; /* CauseTransport */
231 static int hf_m2ap_nAS
; /* CauseNAS */
232 static int hf_m2ap_protocol
; /* CauseProtocol */
233 static int hf_m2ap_misc
; /* CauseMisc */
234 static int hf_m2ap_eCGI
; /* ECGI */
235 static int hf_m2ap_cellReservationInfo
; /* T_cellReservationInfo */
236 static int hf_m2ap_Cell_Information_List_item
; /* Cell_Information */
237 static int hf_m2ap_procedureCode
; /* ProcedureCode */
238 static int hf_m2ap_triggeringMessage
; /* TriggeringMessage */
239 static int hf_m2ap_procedureCriticality
; /* Criticality */
240 static int hf_m2ap_iEsCriticalityDiagnostics
; /* CriticalityDiagnostics_IE_List */
241 static int hf_m2ap_CriticalityDiagnostics_IE_List_item
; /* CriticalityDiagnostics_IE_List_item */
242 static int hf_m2ap_iECriticality
; /* Criticality */
243 static int hf_m2ap_iE_ID
; /* ProtocolIE_ID */
244 static int hf_m2ap_typeOfError
; /* TypeOfError */
245 static int hf_m2ap_pLMN_Identity
; /* PLMN_Identity */
246 static int hf_m2ap_eUTRANcellIdentifier
; /* EUTRANCellIdentifier */
247 static int hf_m2ap_macro_eNB_ID
; /* BIT_STRING_SIZE_20 */
248 static int hf_m2ap_short_Macro_eNB_ID
; /* BIT_STRING_SIZE_18 */
249 static int hf_m2ap_long_Macro_eNB_ID
; /* BIT_STRING_SIZE_21 */
250 static int hf_m2ap_mbsfnSynchronisationArea
; /* MBSFN_SynchronisationArea_ID */
251 static int hf_m2ap_mbmsServiceAreaList
; /* MBMS_Service_Area_ID_List */
252 static int hf_m2ap_mBMSConfigData
; /* ENB_MBMS_Configuration_data_Item */
253 static int hf_m2ap_mBMS_E_RAB_MaximumBitrateDL
; /* BitRate */
254 static int hf_m2ap_mBMS_E_RAB_GuaranteedBitrateDL
; /* BitRate */
255 static int hf_m2ap_eNB_ID
; /* ENB_ID */
256 static int hf_m2ap_mCE_ID
; /* MCE_ID */
257 static int hf_m2ap_MBMS_Cell_List_item
; /* ECGI */
258 static int hf_m2ap_qCI
; /* QCI */
259 static int hf_m2ap_gbrQosInformation
; /* GBR_QosInformation */
260 static int hf_m2ap_allocationAndRetentionPriority
; /* AllocationAndRetentionPriority */
261 static int hf_m2ap_eNB_MBMS_M2AP_ID
; /* ENB_MBMS_M2AP_ID */
262 static int hf_m2ap_mCE_MBMS_M2AP_ID
; /* MCE_MBMS_M2AP_ID */
263 static int hf_m2ap_MBMS_Service_Area_ID_List_item
; /* MBMS_Service_Area */
264 static int hf_m2ap_MBMSsessionListPerPMCH_Item_item
; /* MBMSsessionListPerPMCH_Item_item */
265 static int hf_m2ap_tmgi
; /* TMGI */
266 static int hf_m2ap_lcid
; /* LCID */
267 static int hf_m2ap_MBMSsessionsToBeSuspendedListPerPMCH_Item_item
; /* MBMSsessionsToBeSuspendedListPerPMCH_Item_item */
268 static int hf_m2ap_radioframeAllocationPeriod
; /* T_radioframeAllocationPeriod */
269 static int hf_m2ap_radioframeAllocationOffset
; /* INTEGER_0_7 */
270 static int hf_m2ap_subframeAllocation
; /* T_subframeAllocation */
271 static int hf_m2ap_oneFrame
; /* BIT_STRING_SIZE_6 */
272 static int hf_m2ap_fourFrames
; /* BIT_STRING_SIZE_24 */
273 static int hf_m2ap_mbsfnArea
; /* MBSFN_Area_ID */
274 static int hf_m2ap_pdcchLength
; /* T_pdcchLength */
275 static int hf_m2ap_repetitionPeriod
; /* T_repetitionPeriod */
276 static int hf_m2ap_offset
; /* INTEGER_0_10 */
277 static int hf_m2ap_modificationPeriod
; /* T_modificationPeriod */
278 static int hf_m2ap_subframeAllocationInfo
; /* BIT_STRING_SIZE_6 */
279 static int hf_m2ap_modulationAndCodingScheme
; /* T_modulationAndCodingScheme */
280 static int hf_m2ap_cellInformationList
; /* Cell_Information_List */
281 static int hf_m2ap_repetitionPeriodExpanded
; /* T_repetitionPeriodExpanded */
282 static int hf_m2ap_modificationPeriodExpanded
; /* T_modificationPeriodExpanded */
283 static int hf_m2ap_subframeAllocationInfoExpanded
; /* BIT_STRING_SIZE_10 */
284 static int hf_m2ap_modulationAndCodingScheme_01
; /* T_modulationAndCodingScheme_01 */
285 static int hf_m2ap_subcarrier_SpacingMBMSExpanded
; /* T_subcarrier_SpacingMBMSExpanded */
286 static int hf_m2ap_timeSeparation
; /* T_timeSeparation */
287 static int hf_m2ap_allocatedSubframesEnd
; /* AllocatedSubframesEnd */
288 static int hf_m2ap_dataMCS
; /* INTEGER_0_28 */
289 static int hf_m2ap_mchSchedulingPeriod
; /* MCH_Scheduling_Period */
290 static int hf_m2ap_mbmsCellList
; /* MBMS_Cell_List */
291 static int hf_m2ap_mbms_E_RAB_QoS_Parameters
; /* MBMS_E_RAB_QoS_Parameters */
292 static int hf_m2ap_oneFrameExtension
; /* BIT_STRING_SIZE_2 */
293 static int hf_m2ap_fourFrameExtension
; /* BIT_STRING_SIZE_8 */
294 static int hf_m2ap_choice_extension
; /* ProtocolIE_Single_Container */
295 static int hf_m2ap_oneFrameFurtherExtension
; /* BIT_STRING_SIZE_2 */
296 static int hf_m2ap_fourFrameFurtherExtension
; /* BIT_STRING_SIZE_8 */
297 static int hf_m2ap_pLMNidentity
; /* PLMN_Identity */
298 static int hf_m2ap_serviceID
; /* OCTET_STRING_SIZE_3 */
299 static int hf_m2ap_iPMCAddress
; /* IPAddress */
300 static int hf_m2ap_iPSourceAddress
; /* IPAddress */
301 static int hf_m2ap_gTP_TEID
; /* GTP_TEID */
302 static int hf_m2ap_protocolIEs
; /* ProtocolIE_Container */
303 static int hf_m2ap_MBSFN_Area_Configuration_List_item
; /* ProtocolIE_Container */
304 static int hf_m2ap_PMCH_Configuration_List_item
; /* ProtocolIE_Single_Container */
305 static int hf_m2ap_pmch_Configuration
; /* PMCH_Configuration */
306 static int hf_m2ap_mbms_Session_List
; /* MBMSsessionListPerPMCH_Item */
307 static int hf_m2ap_MBSFN_Subframe_ConfigurationList_item
; /* ProtocolIE_Single_Container */
308 static int hf_m2ap_MBMS_Suspension_Notification_List_item
; /* ProtocolIE_Single_Container */
309 static int hf_m2ap_sfn
; /* SFN */
310 static int hf_m2ap_mbms_Sessions_To_Be_Suspended_List
; /* MBMSsessionsToBeSuspendedListPerPMCH_Item */
311 static int hf_m2ap_ENB_MBMS_Configuration_data_List_item
; /* ProtocolIE_Single_Container */
312 static int hf_m2ap_MCCHrelatedBCCH_ConfigPerMBSFNArea_item
; /* ProtocolIE_Single_Container */
313 static int hf_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_item
; /* ProtocolIE_Single_Container */
314 static int hf_m2ap_ENB_MBMS_Configuration_data_List_ConfigUpdate_item
; /* ProtocolIE_Single_Container */
315 static int hf_m2ap_m2_Interface
; /* ResetAll */
316 static int hf_m2ap_partOfM2_Interface
; /* MBMS_Service_associatedLogicalM2_ConnectionListRes */
317 static int hf_m2ap_MBMS_Service_associatedLogicalM2_ConnectionListRes_item
; /* ProtocolIE_Single_Container */
318 static int hf_m2ap_MBMS_Service_associatedLogicalM2_ConnectionListResAck_item
; /* ProtocolIE_Single_Container */
319 static int hf_m2ap_privateIEs
; /* PrivateIE_Container */
320 static int hf_m2ap_MBMS_Counting_Request_Session_item
; /* ProtocolIE_Container */
321 static int hf_m2ap_MBMS_Counting_Result_List_item
; /* ProtocolIE_Container */
322 static int hf_m2ap_countingResult
; /* CountingResult */
323 static int hf_m2ap_Overload_Status_Per_PMCH_List_item
; /* ProtocolIE_Container */
324 static int hf_m2ap_Active_MBMS_Session_List_item
; /* ProtocolIE_Container */
325 static int hf_m2ap_initiatingMessage
; /* InitiatingMessage */
326 static int hf_m2ap_successfulOutcome
; /* SuccessfulOutcome */
327 static int hf_m2ap_unsuccessfulOutcome
; /* UnsuccessfulOutcome */
328 static int hf_m2ap_initiatingMessage_value
; /* InitiatingMessage_value */
329 static int hf_m2ap_successfulOutcome_value
; /* SuccessfulOutcome_value */
330 static int hf_m2ap_unsuccessfulOutcome_value
; /* UnsuccessfulOutcome_value */
332 /* Initialize the subtree pointers */
334 static int ett_m2ap_PLMN_Identity
;
335 static int ett_m2ap_IPAddress
;
336 static int ett_m2ap_PrivateIE_ID
;
337 static int ett_m2ap_ProtocolIE_Container
;
338 static int ett_m2ap_ProtocolIE_Field
;
339 static int ett_m2ap_ProtocolExtensionContainer
;
340 static int ett_m2ap_ProtocolExtensionField
;
341 static int ett_m2ap_PrivateIE_Container
;
342 static int ett_m2ap_PrivateIE_Field
;
343 static int ett_m2ap_AdditionalConfigParameters
;
344 static int ett_m2ap_AllocationAndRetentionPriority
;
345 static int ett_m2ap_Cause
;
346 static int ett_m2ap_Cell_Information
;
347 static int ett_m2ap_Cell_Information_List
;
348 static int ett_m2ap_CriticalityDiagnostics
;
349 static int ett_m2ap_CriticalityDiagnostics_IE_List
;
350 static int ett_m2ap_CriticalityDiagnostics_IE_List_item
;
351 static int ett_m2ap_ECGI
;
352 static int ett_m2ap_ENB_ID
;
353 static int ett_m2ap_ENB_MBMS_Configuration_data_Item
;
354 static int ett_m2ap_ENB_MBMS_Configuration_data_ConfigUpdate_Item
;
355 static int ett_m2ap_GBR_QosInformation
;
356 static int ett_m2ap_GlobalENB_ID
;
357 static int ett_m2ap_GlobalMCE_ID
;
358 static int ett_m2ap_MBMS_Cell_List
;
359 static int ett_m2ap_MBMS_E_RAB_QoS_Parameters
;
360 static int ett_m2ap_MBMS_Service_associatedLogicalM2_ConnectionItem
;
361 static int ett_m2ap_MBMS_Service_Area_ID_List
;
362 static int ett_m2ap_MBMSsessionListPerPMCH_Item
;
363 static int ett_m2ap_MBMSsessionListPerPMCH_Item_item
;
364 static int ett_m2ap_MBMSsessionsToBeSuspendedListPerPMCH_Item
;
365 static int ett_m2ap_MBMSsessionsToBeSuspendedListPerPMCH_Item_item
;
366 static int ett_m2ap_MBSFN_Subframe_Configuration
;
367 static int ett_m2ap_T_subframeAllocation
;
368 static int ett_m2ap_MCCHrelatedBCCH_ConfigPerMBSFNArea_Item
;
369 static int ett_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item
;
370 static int ett_m2ap_PMCH_Configuration
;
371 static int ett_m2ap_SC_PTM_Information
;
372 static int ett_m2ap_SubframeAllocationExtended
;
373 static int ett_m2ap_SubframeAllocationFurtherExtension
;
374 static int ett_m2ap_TMGI
;
375 static int ett_m2ap_TNL_Information
;
376 static int ett_m2ap_SessionStartRequest
;
377 static int ett_m2ap_SessionStartResponse
;
378 static int ett_m2ap_SessionStartFailure
;
379 static int ett_m2ap_SessionStopRequest
;
380 static int ett_m2ap_SessionStopResponse
;
381 static int ett_m2ap_SessionUpdateRequest
;
382 static int ett_m2ap_SessionUpdateResponse
;
383 static int ett_m2ap_SessionUpdateFailure
;
384 static int ett_m2ap_MbmsSchedulingInformation
;
385 static int ett_m2ap_MBSFN_Area_Configuration_List
;
386 static int ett_m2ap_PMCH_Configuration_List
;
387 static int ett_m2ap_PMCH_Configuration_Item
;
388 static int ett_m2ap_MBSFN_Subframe_ConfigurationList
;
389 static int ett_m2ap_MBMS_Suspension_Notification_List
;
390 static int ett_m2ap_MBMS_Suspension_Notification_Item
;
391 static int ett_m2ap_MbmsSchedulingInformationResponse
;
392 static int ett_m2ap_M2SetupRequest
;
393 static int ett_m2ap_ENB_MBMS_Configuration_data_List
;
394 static int ett_m2ap_M2SetupResponse
;
395 static int ett_m2ap_MCCHrelatedBCCH_ConfigPerMBSFNArea
;
396 static int ett_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea
;
397 static int ett_m2ap_M2SetupFailure
;
398 static int ett_m2ap_ENBConfigurationUpdate
;
399 static int ett_m2ap_ENB_MBMS_Configuration_data_List_ConfigUpdate
;
400 static int ett_m2ap_ENBConfigurationUpdateAcknowledge
;
401 static int ett_m2ap_ENBConfigurationUpdateFailure
;
402 static int ett_m2ap_MCEConfigurationUpdate
;
403 static int ett_m2ap_MCEConfigurationUpdateAcknowledge
;
404 static int ett_m2ap_MCEConfigurationUpdateFailure
;
405 static int ett_m2ap_ErrorIndication
;
406 static int ett_m2ap_Reset
;
407 static int ett_m2ap_ResetType
;
408 static int ett_m2ap_MBMS_Service_associatedLogicalM2_ConnectionListRes
;
409 static int ett_m2ap_ResetAcknowledge
;
410 static int ett_m2ap_MBMS_Service_associatedLogicalM2_ConnectionListResAck
;
411 static int ett_m2ap_PrivateMessage
;
412 static int ett_m2ap_MbmsServiceCountingRequest
;
413 static int ett_m2ap_MBMS_Counting_Request_Session
;
414 static int ett_m2ap_MBMS_Counting_Request_SessionIE
;
415 static int ett_m2ap_MbmsServiceCountingResponse
;
416 static int ett_m2ap_MbmsServiceCountingFailure
;
417 static int ett_m2ap_MbmsServiceCountingResultsReport
;
418 static int ett_m2ap_MBMS_Counting_Result_List
;
419 static int ett_m2ap_MBMS_Counting_Result
;
420 static int ett_m2ap_MbmsOverloadNotification
;
421 static int ett_m2ap_Overload_Status_Per_PMCH_List
;
422 static int ett_m2ap_Active_MBMS_Session_List
;
423 static int ett_m2ap_M2AP_PDU
;
424 static int ett_m2ap_InitiatingMessage
;
425 static int ett_m2ap_SuccessfulOutcome
;
426 static int ett_m2ap_UnsuccessfulOutcome
;
428 static expert_field ei_m2ap_invalid_ip_address_len
;
430 struct m2ap_private_data
{
431 e212_number_type_t number_type
;
440 /* Global variables */
441 static uint32_t ProcedureCode
;
442 static uint32_t ProtocolIE_ID
;
443 static uint32_t message_type
;
444 static dissector_handle_t m2ap_handle
;
446 /* Dissector tables */
447 static dissector_table_t m2ap_ies_dissector_table
;
448 static dissector_table_t m2ap_extension_dissector_table
;
449 static dissector_table_t m2ap_proc_imsg_dissector_table
;
450 static dissector_table_t m2ap_proc_sout_dissector_table
;
451 static dissector_table_t m2ap_proc_uout_dissector_table
;
453 static int dissect_ProtocolIEFieldValue(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *);
454 static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *);
455 static int dissect_InitiatingMessageValue(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *);
456 static int dissect_SuccessfulOutcomeValue(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *);
457 static int dissect_UnsuccessfulOutcomeValue(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *);
459 static struct m2ap_private_data
*
460 m2ap_get_private_data(packet_info
*pinfo
)
462 struct m2ap_private_data
*m2ap_data
= (struct m2ap_private_data
*)p_get_proto_data(pinfo
->pool
, pinfo
, proto_m2ap
, 0);
464 m2ap_data
= wmem_new0(pinfo
->pool
, struct m2ap_private_data
);
465 p_add_proto_data(pinfo
->pool
, pinfo
, proto_m2ap
, 0, m2ap_data
);
471 static const value_string m2ap_Criticality_vals
[] = {
480 dissect_m2ap_Criticality(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
481 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
482 3, NULL
, false, 0, NULL
);
490 dissect_m2ap_INTEGER_0_maxPrivateIEs(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
491 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
492 0U, maxPrivateIEs
, NULL
, false);
500 dissect_m2ap_OBJECT_IDENTIFIER(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
501 offset
= dissect_per_object_identifier(tvb
, offset
, actx
, tree
, hf_index
, NULL
);
507 static const value_string m2ap_PrivateIE_ID_vals
[] = {
513 static const per_choice_t PrivateIE_ID_choice
[] = {
514 { 0, &hf_m2ap_local
, ASN1_NO_EXTENSIONS
, dissect_m2ap_INTEGER_0_maxPrivateIEs
},
515 { 1, &hf_m2ap_global
, ASN1_NO_EXTENSIONS
, dissect_m2ap_OBJECT_IDENTIFIER
},
520 dissect_m2ap_PrivateIE_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
521 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
522 ett_m2ap_PrivateIE_ID
, PrivateIE_ID_choice
,
529 static const value_string m2ap_ProcedureCode_vals
[] = {
530 { id_sessionStart
, "id-sessionStart" },
531 { id_sessionStop
, "id-sessionStop" },
532 { id_mbmsSchedulingInformation
, "id-mbmsSchedulingInformation" },
533 { id_errorIndication
, "id-errorIndication" },
534 { id_reset
, "id-reset" },
535 { id_m2Setup
, "id-m2Setup" },
536 { id_eNBConfigurationUpdate
, "id-eNBConfigurationUpdate" },
537 { id_mCEConfigurationUpdate
, "id-mCEConfigurationUpdate" },
538 { id_privateMessage
, "id-privateMessage" },
539 { id_sessionUpdate
, "id-sessionUpdate" },
540 { id_mbmsServiceCounting
, "id-mbmsServiceCounting" },
541 { id_mbmsServiceCountingResultsReport
, "id-mbmsServiceCountingResultsReport" },
542 { id_mbmsOverloadNotification
, "id-mbmsOverloadNotification" },
546 static value_string_ext m2ap_ProcedureCode_vals_ext
= VALUE_STRING_EXT_INIT(m2ap_ProcedureCode_vals
);
550 dissect_m2ap_ProcedureCode(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
551 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
552 0U, 255U, &ProcedureCode
, false);
558 static const value_string m2ap_ProtocolIE_ID_vals
[] = {
559 { id_MCE_MBMS_M2AP_ID
, "id-MCE-MBMS-M2AP-ID" },
560 { id_ENB_MBMS_M2AP_ID
, "id-ENB-MBMS-M2AP-ID" },
561 { id_TMGI
, "id-TMGI" },
562 { id_MBMS_Session_ID
, "id-MBMS-Session-ID" },
563 { id_MBMS_Service_Area
, "id-MBMS-Service-Area" },
564 { id_TNL_Information
, "id-TNL-Information" },
565 { id_CriticalityDiagnostics
, "id-CriticalityDiagnostics" },
566 { id_Cause
, "id-Cause" },
567 { id_MBSFN_Area_Configuration_List
, "id-MBSFN-Area-Configuration-List" },
568 { id_PMCH_Configuration_List
, "id-PMCH-Configuration-List" },
569 { id_PMCH_Configuration_Item
, "id-PMCH-Configuration-Item" },
570 { id_GlobalENB_ID
, "id-GlobalENB-ID" },
571 { id_ENBname
, "id-ENBname" },
572 { id_ENB_MBMS_Configuration_data_List
, "id-ENB-MBMS-Configuration-data-List" },
573 { id_ENB_MBMS_Configuration_data_Item
, "id-ENB-MBMS-Configuration-data-Item" },
574 { id_GlobalMCE_ID
, "id-GlobalMCE-ID" },
575 { id_MCEname
, "id-MCEname" },
576 { id_MCCHrelatedBCCH_ConfigPerMBSFNArea
, "id-MCCHrelatedBCCH-ConfigPerMBSFNArea" },
577 { id_MCCHrelatedBCCH_ConfigPerMBSFNArea_Item
, "id-MCCHrelatedBCCH-ConfigPerMBSFNArea-Item" },
578 { id_TimeToWait
, "id-TimeToWait" },
579 { id_MBSFN_Subframe_Configuration_List
, "id-MBSFN-Subframe-Configuration-List" },
580 { id_MBSFN_Subframe_Configuration_Item
, "id-MBSFN-Subframe-Configuration-Item" },
581 { id_Common_Subframe_Allocation_Period
, "id-Common-Subframe-Allocation-Period" },
582 { id_MCCH_Update_Time
, "id-MCCH-Update-Time" },
583 { id_ENB_MBMS_Configuration_data_List_ConfigUpdate
, "id-ENB-MBMS-Configuration-data-List-ConfigUpdate" },
584 { id_ENB_MBMS_Configuration_data_ConfigUpdate_Item
, "id-ENB-MBMS-Configuration-data-ConfigUpdate-Item" },
585 { id_MBMS_Service_associatedLogicalM2_ConnectionItem
, "id-MBMS-Service-associatedLogicalM2-ConnectionItem" },
586 { id_MBSFN_Area_ID
, "id-MBSFN-Area-ID" },
587 { id_ResetType
, "id-ResetType" },
588 { id_MBMS_Service_associatedLogicalM2_ConnectionListResAck
, "id-MBMS-Service-associatedLogicalM2-ConnectionListResAck" },
589 { id_MBMS_Counting_Request_Session
, "id-MBMS-Counting-Request-Session" },
590 { id_MBMS_Counting_Request_Session_Item
, "id-MBMS-Counting-Request-Session-Item" },
591 { id_MBMS_Counting_Result_List
, "id-MBMS-Counting-Result-List" },
592 { id_MBMS_Counting_Result_Item
, "id-MBMS-Counting-Result-Item" },
593 { id_Modulation_Coding_Scheme2
, "id-Modulation-Coding-Scheme2" },
594 { id_MCH_Scheduling_PeriodExtended
, "id-MCH-Scheduling-PeriodExtended" },
595 { id_Alternative_TNL_Information
, "id-Alternative-TNL-Information" },
596 { id_Overload_Status_Per_PMCH_List
, "id-Overload-Status-Per-PMCH-List" },
597 { id_PMCH_Overload_Status
, "id-PMCH-Overload-Status" },
598 { id_Active_MBMS_Session_List
, "id-Active-MBMS-Session-List" },
599 { id_MBMS_Suspension_Notification_List
, "id-MBMS-Suspension-Notification-List" },
600 { id_MBMS_Suspension_Notification_Item
, "id-MBMS-Suspension-Notification-Item" },
601 { id_SC_PTM_Information
, "id-SC-PTM-Information" },
602 { id_Modification_PeriodExtended
, "id-Modification-PeriodExtended" },
603 { id_Repetition_PeriodExtended
, "id-Repetition-PeriodExtended" },
604 { id_MCH_Scheduling_PeriodExtended2
, "id-MCH-Scheduling-PeriodExtended2" },
605 { id_Subcarrier_SpacingMBMS
, "id-Subcarrier-SpacingMBMS" },
606 { id_SubframeAllocationExtended
, "id-SubframeAllocationExtended" },
607 { id_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item
, "id-MCCHrelatedBCCH-ExtConfigPerMBSFNArea-Item" },
608 { id_MCCHrelatedBCCH_ExtConfigPerMBSFNArea
, "id-MCCHrelatedBCCH-ExtConfigPerMBSFNArea" },
609 { id_SubframeAllocationFurtherExtension
, "id-SubframeAllocationFurtherExtension" },
610 { id_AdditionalConfigParameters
, "id-AdditionalConfigParameters" },
614 static value_string_ext m2ap_ProtocolIE_ID_vals_ext
= VALUE_STRING_EXT_INIT(m2ap_ProtocolIE_ID_vals
);
618 dissect_m2ap_ProtocolIE_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
619 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
620 0U, maxProtocolIEs
, &ProtocolIE_ID
, false);
623 proto_item_append_text(proto_item_get_parent_nth(actx
->created_item
, 2), ": %s", val_to_str_ext(ProtocolIE_ID
, &m2ap_ProtocolIE_ID_vals_ext
, "unknown (%d)"));
629 static const value_string m2ap_TriggeringMessage_vals
[] = {
630 { 0, "initiating-message" },
631 { 1, "successful-outcome" },
632 { 2, "unsuccessful-outcome" },
638 dissect_m2ap_TriggeringMessage(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
639 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
640 3, NULL
, false, 0, NULL
);
648 dissect_m2ap_T_ie_field_value(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
649 offset
= dissect_per_open_type_pdu_new(tvb
, offset
, actx
, tree
, hf_index
, dissect_ProtocolIEFieldValue
);
655 static const per_sequence_t ProtocolIE_Field_sequence
[] = {
656 { &hf_m2ap_id
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_ID
},
657 { &hf_m2ap_criticality
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_Criticality
},
658 { &hf_m2ap_ie_field_value
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_T_ie_field_value
},
663 dissect_m2ap_ProtocolIE_Field(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
664 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
665 ett_m2ap_ProtocolIE_Field
, ProtocolIE_Field_sequence
);
671 static const per_sequence_t ProtocolIE_Container_sequence_of
[1] = {
672 { &hf_m2ap_ProtocolIE_Container_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Field
},
676 dissect_m2ap_ProtocolIE_Container(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
677 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
678 ett_m2ap_ProtocolIE_Container
, ProtocolIE_Container_sequence_of
,
679 0, maxProtocolIEs
, false);
687 dissect_m2ap_ProtocolIE_Single_Container(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
688 offset
= dissect_m2ap_ProtocolIE_Field(tvb
, offset
, actx
, tree
, hf_index
);
696 dissect_m2ap_T_extensionValue(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
697 offset
= dissect_per_open_type_pdu_new(tvb
, offset
, actx
, tree
, hf_index
, dissect_ProtocolExtensionFieldExtensionValue
);
703 static const per_sequence_t ProtocolExtensionField_sequence
[] = {
704 { &hf_m2ap_ext_id
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_ID
},
705 { &hf_m2ap_criticality
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_Criticality
},
706 { &hf_m2ap_extensionValue
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_T_extensionValue
},
711 dissect_m2ap_ProtocolExtensionField(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
712 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
713 ett_m2ap_ProtocolExtensionField
, ProtocolExtensionField_sequence
);
719 static const per_sequence_t ProtocolExtensionContainer_sequence_of
[1] = {
720 { &hf_m2ap_ProtocolExtensionContainer_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolExtensionField
},
724 dissect_m2ap_ProtocolExtensionContainer(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
725 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
726 ett_m2ap_ProtocolExtensionContainer
, ProtocolExtensionContainer_sequence_of
,
727 1, maxProtocolExtensions
, false);
735 dissect_m2ap_T_private_value(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
736 offset
= dissect_per_open_type(tvb
, offset
, actx
, tree
, hf_index
, NULL
);
742 static const per_sequence_t PrivateIE_Field_sequence
[] = {
743 { &hf_m2ap_private_id
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_PrivateIE_ID
},
744 { &hf_m2ap_criticality
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_Criticality
},
745 { &hf_m2ap_private_value
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_T_private_value
},
750 dissect_m2ap_PrivateIE_Field(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
751 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
752 ett_m2ap_PrivateIE_Field
, PrivateIE_Field_sequence
);
758 static const per_sequence_t PrivateIE_Container_sequence_of
[1] = {
759 { &hf_m2ap_PrivateIE_Container_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_PrivateIE_Field
},
763 dissect_m2ap_PrivateIE_Container(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
764 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
765 ett_m2ap_PrivateIE_Container
, PrivateIE_Container_sequence_of
,
766 1, maxPrivateIEs
, false);
772 static const value_string m2ap_PMCH_Bandwidth_vals
[] = {
781 dissect_m2ap_PMCH_Bandwidth(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
782 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
783 3, NULL
, true, 0, NULL
);
789 static const per_sequence_t AdditionalConfigParameters_sequence
[] = {
790 { &hf_m2ap_pmch_Bandwidth
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_PMCH_Bandwidth
},
791 { &hf_m2ap_iE_Extensions
, ASN1_NO_EXTENSIONS
, ASN1_OPTIONAL
, dissect_m2ap_ProtocolExtensionContainer
},
796 dissect_m2ap_AdditionalConfigParameters(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
797 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
798 ett_m2ap_AdditionalConfigParameters
, AdditionalConfigParameters_sequence
);
806 dissect_m2ap_AllocatedSubframesEnd(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
807 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
808 0U, 1535U, NULL
, false);
814 static const value_string m2ap_PriorityLevel_vals
[] = {
818 { 15, "no-priority" },
824 dissect_m2ap_PriorityLevel(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
825 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
826 0U, 15U, NULL
, false);
832 static const value_string m2ap_Pre_emptionCapability_vals
[] = {
833 { 0, "shall-not-trigger-pre-emption" },
834 { 1, "may-trigger-pre-emption" },
840 dissect_m2ap_Pre_emptionCapability(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
841 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
842 2, NULL
, false, 0, NULL
);
848 static const value_string m2ap_Pre_emptionVulnerability_vals
[] = {
849 { 0, "not-pre-emptable" },
850 { 1, "pre-emptable" },
856 dissect_m2ap_Pre_emptionVulnerability(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
857 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
858 2, NULL
, false, 0, NULL
);
864 static const per_sequence_t AllocationAndRetentionPriority_sequence
[] = {
865 { &hf_m2ap_priorityLevel
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_PriorityLevel
},
866 { &hf_m2ap_pre_emptionCapability
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_Pre_emptionCapability
},
867 { &hf_m2ap_pre_emptionVulnerability
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_Pre_emptionVulnerability
},
868 { &hf_m2ap_iE_Extensions
, ASN1_NO_EXTENSIONS
, ASN1_OPTIONAL
, dissect_m2ap_ProtocolExtensionContainer
},
873 dissect_m2ap_AllocationAndRetentionPriority(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
874 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
875 ett_m2ap_AllocationAndRetentionPriority
, AllocationAndRetentionPriority_sequence
);
883 dissect_m2ap_BitRate(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
884 offset
= dissect_per_constrained_integer_64b(tvb
, offset
, actx
, tree
, hf_index
,
885 0U, UINT64_C(10000000000), NULL
, false);
891 static const value_string m2ap_CauseRadioNetwork_vals
[] = {
892 { 0, "unknown-or-already-allocated-MCE-MBMS-M2AP-ID" },
893 { 1, "unknown-or-already-allocated-eNB-MBMS-M2AP-ID" },
894 { 2, "unknown-or-inconsistent-pair-of-MBMS-M2AP-IDs" },
895 { 3, "radio-resources-not-available" },
896 { 4, "interaction-with-other-procedure" },
897 { 5, "unspecified" },
898 { 6, "invalid-QoS-combination" },
899 { 7, "not-supported-QCI-value" },
905 dissect_m2ap_CauseRadioNetwork(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
906 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
907 6, NULL
, true, 2, NULL
);
913 static const value_string m2ap_CauseTransport_vals
[] = {
914 { 0, "transport-resource-unavailable" },
915 { 1, "unspecified" },
921 dissect_m2ap_CauseTransport(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
922 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
923 2, NULL
, true, 0, NULL
);
929 static const value_string m2ap_CauseNAS_vals
[] = {
930 { 0, "unspecified" },
936 dissect_m2ap_CauseNAS(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
937 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
938 1, NULL
, true, 0, NULL
);
944 static const value_string m2ap_CauseProtocol_vals
[] = {
945 { 0, "transfer-syntax-error" },
946 { 1, "abstract-syntax-error-reject" },
947 { 2, "abstract-syntax-error-ignore-and-notify" },
948 { 3, "message-not-compatible-with-receiver-state" },
949 { 4, "semantic-error" },
950 { 5, "abstract-syntax-error-falsely-constructed-message" },
951 { 6, "unspecified" },
957 dissect_m2ap_CauseProtocol(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
958 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
959 7, NULL
, true, 0, NULL
);
965 static const value_string m2ap_CauseMisc_vals
[] = {
966 { 0, "control-processing-overload" },
967 { 1, "hardware-failure" },
968 { 2, "om-intervention" },
969 { 3, "unspecified" },
975 dissect_m2ap_CauseMisc(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
976 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
977 4, NULL
, true, 0, NULL
);
983 static const value_string m2ap_Cause_vals
[] = {
984 { 0, "radioNetwork" },
992 static const per_choice_t Cause_choice
[] = {
993 { 0, &hf_m2ap_radioNetwork
, ASN1_EXTENSION_ROOT
, dissect_m2ap_CauseRadioNetwork
},
994 { 1, &hf_m2ap_transport
, ASN1_EXTENSION_ROOT
, dissect_m2ap_CauseTransport
},
995 { 2, &hf_m2ap_nAS
, ASN1_EXTENSION_ROOT
, dissect_m2ap_CauseNAS
},
996 { 3, &hf_m2ap_protocol
, ASN1_EXTENSION_ROOT
, dissect_m2ap_CauseProtocol
},
997 { 4, &hf_m2ap_misc
, ASN1_EXTENSION_ROOT
, dissect_m2ap_CauseMisc
},
1002 dissect_m2ap_Cause(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1003 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
1004 ett_m2ap_Cause
, Cause_choice
,
1013 dissect_m2ap_PLMN_Identity(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1014 tvbuff_t
*parameter_tvb
= NULL
;
1015 struct m2ap_private_data
*m2ap_data
= m2ap_get_private_data(actx
->pinfo
);
1016 e212_number_type_t number_type
= m2ap_data
->number_type
;
1017 m2ap_data
->number_type
= E212_NONE
;
1018 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1019 3, 3, false, ¶meter_tvb
);
1021 if (parameter_tvb
) {
1022 proto_tree
*subtree
= proto_item_add_subtree(actx
->created_item
, ett_m2ap_PLMN_Identity
);
1023 dissect_e212_mcc_mnc(parameter_tvb
, actx
->pinfo
, subtree
, 0, number_type
, false);
1032 dissect_m2ap_EUTRANCellIdentifier(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1033 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
1034 28, 28, false, NULL
, 0, NULL
, NULL
);
1040 static const per_sequence_t ECGI_sequence
[] = {
1041 { &hf_m2ap_pLMN_Identity
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_PLMN_Identity
},
1042 { &hf_m2ap_eUTRANcellIdentifier
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_EUTRANCellIdentifier
},
1043 { &hf_m2ap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_m2ap_ProtocolExtensionContainer
},
1044 { NULL
, 0, 0, NULL
}
1048 dissect_m2ap_ECGI(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1049 struct m2ap_private_data
*m2ap_data
= m2ap_get_private_data(actx
->pinfo
);
1050 m2ap_data
->number_type
= E212_ECGI
;
1051 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1052 ett_m2ap_ECGI
, ECGI_sequence
);
1060 static const value_string m2ap_T_cellReservationInfo_vals
[] = {
1061 { 0, "reservedCell" },
1062 { 1, "nonReservedCell" },
1068 dissect_m2ap_T_cellReservationInfo(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1069 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1070 2, NULL
, true, 0, NULL
);
1076 static const per_sequence_t Cell_Information_sequence
[] = {
1077 { &hf_m2ap_eCGI
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ECGI
},
1078 { &hf_m2ap_cellReservationInfo
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_T_cellReservationInfo
},
1079 { &hf_m2ap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_m2ap_ProtocolExtensionContainer
},
1080 { NULL
, 0, 0, NULL
}
1084 dissect_m2ap_Cell_Information(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1085 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1086 ett_m2ap_Cell_Information
, Cell_Information_sequence
);
1092 static const per_sequence_t Cell_Information_List_sequence_of
[1] = {
1093 { &hf_m2ap_Cell_Information_List_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_Cell_Information
},
1097 dissect_m2ap_Cell_Information_List(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1098 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1099 ett_m2ap_Cell_Information_List
, Cell_Information_List_sequence_of
,
1100 1, maxnoofCells
, false);
1106 static const value_string m2ap_TypeOfError_vals
[] = {
1107 { 0, "not-understood" },
1114 dissect_m2ap_TypeOfError(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1115 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1116 2, NULL
, true, 0, NULL
);
1122 static const per_sequence_t CriticalityDiagnostics_IE_List_item_sequence
[] = {
1123 { &hf_m2ap_iECriticality
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_Criticality
},
1124 { &hf_m2ap_iE_ID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_ID
},
1125 { &hf_m2ap_typeOfError
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_TypeOfError
},
1126 { &hf_m2ap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_m2ap_ProtocolExtensionContainer
},
1127 { NULL
, 0, 0, NULL
}
1131 dissect_m2ap_CriticalityDiagnostics_IE_List_item(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1132 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1133 ett_m2ap_CriticalityDiagnostics_IE_List_item
, CriticalityDiagnostics_IE_List_item_sequence
);
1139 static const per_sequence_t CriticalityDiagnostics_IE_List_sequence_of
[1] = {
1140 { &hf_m2ap_CriticalityDiagnostics_IE_List_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_CriticalityDiagnostics_IE_List_item
},
1144 dissect_m2ap_CriticalityDiagnostics_IE_List(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1145 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1146 ett_m2ap_CriticalityDiagnostics_IE_List
, CriticalityDiagnostics_IE_List_sequence_of
,
1147 1, maxnooferrors
, false);
1153 static const per_sequence_t CriticalityDiagnostics_sequence
[] = {
1154 { &hf_m2ap_procedureCode
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_m2ap_ProcedureCode
},
1155 { &hf_m2ap_triggeringMessage
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_m2ap_TriggeringMessage
},
1156 { &hf_m2ap_procedureCriticality
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_m2ap_Criticality
},
1157 { &hf_m2ap_iEsCriticalityDiagnostics
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_m2ap_CriticalityDiagnostics_IE_List
},
1158 { &hf_m2ap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_m2ap_ProtocolExtensionContainer
},
1159 { NULL
, 0, 0, NULL
}
1163 dissect_m2ap_CriticalityDiagnostics(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1164 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1165 ett_m2ap_CriticalityDiagnostics
, CriticalityDiagnostics_sequence
);
1173 dissect_m2ap_BIT_STRING_SIZE_20(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1174 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
1175 20, 20, false, NULL
, 0, NULL
, NULL
);
1183 dissect_m2ap_BIT_STRING_SIZE_18(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1184 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
1185 18, 18, false, NULL
, 0, NULL
, NULL
);
1193 dissect_m2ap_BIT_STRING_SIZE_21(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1194 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
1195 21, 21, false, NULL
, 0, NULL
, NULL
);
1201 static const value_string m2ap_ENB_ID_vals
[] = {
1202 { 0, "macro-eNB-ID" },
1203 { 1, "short-Macro-eNB-ID" },
1204 { 2, "long-Macro-eNB-ID" },
1208 static const per_choice_t ENB_ID_choice
[] = {
1209 { 0, &hf_m2ap_macro_eNB_ID
, ASN1_EXTENSION_ROOT
, dissect_m2ap_BIT_STRING_SIZE_20
},
1210 { 1, &hf_m2ap_short_Macro_eNB_ID
, ASN1_NOT_EXTENSION_ROOT
, dissect_m2ap_BIT_STRING_SIZE_18
},
1211 { 2, &hf_m2ap_long_Macro_eNB_ID
, ASN1_NOT_EXTENSION_ROOT
, dissect_m2ap_BIT_STRING_SIZE_21
},
1212 { 0, NULL
, 0, NULL
}
1216 dissect_m2ap_ENB_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1217 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
1218 ett_m2ap_ENB_ID
, ENB_ID_choice
,
1227 dissect_m2ap_MBSFN_SynchronisationArea_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1228 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1229 0U, 65535U, NULL
, false);
1237 dissect_m2ap_MBMS_Service_Area(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1238 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1239 NO_BOUND
, NO_BOUND
, false, NULL
);
1245 static const per_sequence_t MBMS_Service_Area_ID_List_sequence_of
[1] = {
1246 { &hf_m2ap_MBMS_Service_Area_ID_List_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_MBMS_Service_Area
},
1250 dissect_m2ap_MBMS_Service_Area_ID_List(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1251 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1252 ett_m2ap_MBMS_Service_Area_ID_List
, MBMS_Service_Area_ID_List_sequence_of
,
1253 1, maxnoofMBMSServiceAreasPerCell
, false);
1259 static const per_sequence_t ENB_MBMS_Configuration_data_Item_sequence
[] = {
1260 { &hf_m2ap_eCGI
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ECGI
},
1261 { &hf_m2ap_mbsfnSynchronisationArea
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_MBSFN_SynchronisationArea_ID
},
1262 { &hf_m2ap_mbmsServiceAreaList
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_MBMS_Service_Area_ID_List
},
1263 { &hf_m2ap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_m2ap_ProtocolExtensionContainer
},
1264 { NULL
, 0, 0, NULL
}
1268 dissect_m2ap_ENB_MBMS_Configuration_data_Item(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1269 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1270 ett_m2ap_ENB_MBMS_Configuration_data_Item
, ENB_MBMS_Configuration_data_Item_sequence
);
1276 static const value_string m2ap_ENB_MBMS_Configuration_data_ConfigUpdate_Item_vals
[] = {
1277 { 0, "mBMSConfigData" },
1282 static const per_choice_t ENB_MBMS_Configuration_data_ConfigUpdate_Item_choice
[] = {
1283 { 0, &hf_m2ap_mBMSConfigData
, ASN1_EXTENSION_ROOT
, dissect_m2ap_ENB_MBMS_Configuration_data_Item
},
1284 { 1, &hf_m2ap_eCGI
, ASN1_EXTENSION_ROOT
, dissect_m2ap_ECGI
},
1285 { 0, NULL
, 0, NULL
}
1289 dissect_m2ap_ENB_MBMS_Configuration_data_ConfigUpdate_Item(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1290 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
1291 ett_m2ap_ENB_MBMS_Configuration_data_ConfigUpdate_Item
, ENB_MBMS_Configuration_data_ConfigUpdate_Item_choice
,
1300 dissect_m2ap_ENB_MBMS_M2AP_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1301 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1302 0U, 65535U, NULL
, false);
1310 dissect_m2ap_ENBname(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1311 offset
= dissect_per_PrintableString(tvb
, offset
, actx
, tree
, hf_index
,
1319 static const per_sequence_t GBR_QosInformation_sequence
[] = {
1320 { &hf_m2ap_mBMS_E_RAB_MaximumBitrateDL
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_BitRate
},
1321 { &hf_m2ap_mBMS_E_RAB_GuaranteedBitrateDL
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_BitRate
},
1322 { &hf_m2ap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_m2ap_ProtocolExtensionContainer
},
1323 { NULL
, 0, 0, NULL
}
1327 dissect_m2ap_GBR_QosInformation(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1328 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1329 ett_m2ap_GBR_QosInformation
, GBR_QosInformation_sequence
);
1335 static const per_sequence_t GlobalENB_ID_sequence
[] = {
1336 { &hf_m2ap_pLMN_Identity
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_PLMN_Identity
},
1337 { &hf_m2ap_eNB_ID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ENB_ID
},
1338 { &hf_m2ap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_m2ap_ProtocolExtensionContainer
},
1339 { NULL
, 0, 0, NULL
}
1343 dissect_m2ap_GlobalENB_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1344 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1345 ett_m2ap_GlobalENB_ID
, GlobalENB_ID_sequence
);
1353 dissect_m2ap_MCE_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1354 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1361 static const per_sequence_t GlobalMCE_ID_sequence
[] = {
1362 { &hf_m2ap_pLMN_Identity
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_PLMN_Identity
},
1363 { &hf_m2ap_mCE_ID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_MCE_ID
},
1364 { &hf_m2ap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_m2ap_ProtocolExtensionContainer
},
1365 { NULL
, 0, 0, NULL
}
1369 dissect_m2ap_GlobalMCE_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1370 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1371 ett_m2ap_GlobalMCE_ID
, GlobalMCE_ID_sequence
);
1379 dissect_m2ap_GTP_TEID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1380 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1389 dissect_m2ap_IPAddress(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1390 tvbuff_t
*parameter_tvb
= NULL
;
1391 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1392 4, 16, false, ¶meter_tvb
);
1394 if (parameter_tvb
) {
1395 int tvb_len
= tvb_reported_length(parameter_tvb
);
1396 proto_tree
*subtree
= proto_item_add_subtree(actx
->created_item
, ett_m2ap_IPAddress
);
1400 proto_tree_add_item(subtree
, hf_m2ap_IPAddress_v4
, parameter_tvb
, 0, 4, ENC_BIG_ENDIAN
);
1403 proto_tree_add_item(subtree
, hf_m2ap_IPAddress_v6
, parameter_tvb
, 0, 16, ENC_NA
);
1406 proto_tree_add_expert(subtree
, actx
->pinfo
, &ei_m2ap_invalid_ip_address_len
, parameter_tvb
, 0, tvb_len
);
1417 dissect_m2ap_LCID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1418 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1419 0U, 28U, NULL
, false);
1425 static const per_sequence_t MBMS_Cell_List_sequence_of
[1] = {
1426 { &hf_m2ap_MBMS_Cell_List_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ECGI
},
1430 dissect_m2ap_MBMS_Cell_List(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1431 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1432 ett_m2ap_MBMS_Cell_List
, MBMS_Cell_List_sequence_of
,
1433 1, maxnoofCellsforMBMS
, false);
1441 dissect_m2ap_QCI(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1442 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1443 0U, 255U, NULL
, false);
1449 static const per_sequence_t MBMS_E_RAB_QoS_Parameters_sequence
[] = {
1450 { &hf_m2ap_qCI
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_QCI
},
1451 { &hf_m2ap_gbrQosInformation
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_m2ap_GBR_QosInformation
},
1452 { &hf_m2ap_allocationAndRetentionPriority
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_AllocationAndRetentionPriority
},
1453 { &hf_m2ap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_m2ap_ProtocolExtensionContainer
},
1454 { NULL
, 0, 0, NULL
}
1458 dissect_m2ap_MBMS_E_RAB_QoS_Parameters(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1459 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1460 ett_m2ap_MBMS_E_RAB_QoS_Parameters
, MBMS_E_RAB_QoS_Parameters_sequence
);
1468 dissect_m2ap_MCE_MBMS_M2AP_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1469 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1470 0U, 16777215U, NULL
, false);
1476 static const per_sequence_t MBMS_Service_associatedLogicalM2_ConnectionItem_sequence
[] = {
1477 { &hf_m2ap_eNB_MBMS_M2AP_ID
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_m2ap_ENB_MBMS_M2AP_ID
},
1478 { &hf_m2ap_mCE_MBMS_M2AP_ID
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_m2ap_MCE_MBMS_M2AP_ID
},
1479 { &hf_m2ap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_m2ap_ProtocolExtensionContainer
},
1480 { NULL
, 0, 0, NULL
}
1484 dissect_m2ap_MBMS_Service_associatedLogicalM2_ConnectionItem(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1485 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1486 ett_m2ap_MBMS_Service_associatedLogicalM2_ConnectionItem
, MBMS_Service_associatedLogicalM2_ConnectionItem_sequence
);
1494 dissect_m2ap_MBMS_Session_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1495 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1504 dissect_m2ap_OCTET_STRING_SIZE_3(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1505 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1512 static const per_sequence_t TMGI_sequence
[] = {
1513 { &hf_m2ap_pLMNidentity
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_PLMN_Identity
},
1514 { &hf_m2ap_serviceID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_OCTET_STRING_SIZE_3
},
1515 { &hf_m2ap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_m2ap_ProtocolExtensionContainer
},
1516 { NULL
, 0, 0, NULL
}
1520 dissect_m2ap_TMGI(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1521 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1522 ett_m2ap_TMGI
, TMGI_sequence
);
1528 static const per_sequence_t MBMSsessionListPerPMCH_Item_item_sequence
[] = {
1529 { &hf_m2ap_tmgi
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_TMGI
},
1530 { &hf_m2ap_lcid
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_LCID
},
1531 { &hf_m2ap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_m2ap_ProtocolExtensionContainer
},
1532 { NULL
, 0, 0, NULL
}
1536 dissect_m2ap_MBMSsessionListPerPMCH_Item_item(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1537 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1538 ett_m2ap_MBMSsessionListPerPMCH_Item_item
, MBMSsessionListPerPMCH_Item_item_sequence
);
1544 static const per_sequence_t MBMSsessionListPerPMCH_Item_sequence_of
[1] = {
1545 { &hf_m2ap_MBMSsessionListPerPMCH_Item_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_MBMSsessionListPerPMCH_Item_item
},
1549 dissect_m2ap_MBMSsessionListPerPMCH_Item(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1550 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1551 ett_m2ap_MBMSsessionListPerPMCH_Item
, MBMSsessionListPerPMCH_Item_sequence_of
,
1552 1, maxnoofSessionsPerPMCH
, false);
1558 static const per_sequence_t MBMSsessionsToBeSuspendedListPerPMCH_Item_item_sequence
[] = {
1559 { &hf_m2ap_tmgi
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_TMGI
},
1560 { &hf_m2ap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_m2ap_ProtocolExtensionContainer
},
1561 { NULL
, 0, 0, NULL
}
1565 dissect_m2ap_MBMSsessionsToBeSuspendedListPerPMCH_Item_item(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1566 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1567 ett_m2ap_MBMSsessionsToBeSuspendedListPerPMCH_Item_item
, MBMSsessionsToBeSuspendedListPerPMCH_Item_item_sequence
);
1573 static const per_sequence_t MBMSsessionsToBeSuspendedListPerPMCH_Item_sequence_of
[1] = {
1574 { &hf_m2ap_MBMSsessionsToBeSuspendedListPerPMCH_Item_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_MBMSsessionsToBeSuspendedListPerPMCH_Item_item
},
1578 dissect_m2ap_MBMSsessionsToBeSuspendedListPerPMCH_Item(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1579 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1580 ett_m2ap_MBMSsessionsToBeSuspendedListPerPMCH_Item
, MBMSsessionsToBeSuspendedListPerPMCH_Item_sequence_of
,
1581 1, maxnoofSessionsPerPMCH
, false);
1589 dissect_m2ap_MBSFN_Area_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1590 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1591 0U, 255U, NULL
, false);
1597 static const value_string m2ap_T_radioframeAllocationPeriod_vals
[] = {
1609 dissect_m2ap_T_radioframeAllocationPeriod(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1610 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1611 6, NULL
, false, 0, NULL
);
1619 dissect_m2ap_INTEGER_0_7(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1620 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1621 0U, 7U, NULL
, false);
1629 dissect_m2ap_BIT_STRING_SIZE_6(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1630 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
1631 6, 6, false, NULL
, 0, NULL
, NULL
);
1639 dissect_m2ap_BIT_STRING_SIZE_24(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1640 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
1641 24, 24, false, NULL
, 0, NULL
, NULL
);
1647 static const value_string m2ap_T_subframeAllocation_vals
[] = {
1649 { 1, "fourFrames" },
1653 static const per_choice_t T_subframeAllocation_choice
[] = {
1654 { 0, &hf_m2ap_oneFrame
, ASN1_NO_EXTENSIONS
, dissect_m2ap_BIT_STRING_SIZE_6
},
1655 { 1, &hf_m2ap_fourFrames
, ASN1_NO_EXTENSIONS
, dissect_m2ap_BIT_STRING_SIZE_24
},
1656 { 0, NULL
, 0, NULL
}
1660 dissect_m2ap_T_subframeAllocation(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1661 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
1662 ett_m2ap_T_subframeAllocation
, T_subframeAllocation_choice
,
1669 static const per_sequence_t MBSFN_Subframe_Configuration_sequence
[] = {
1670 { &hf_m2ap_radioframeAllocationPeriod
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_T_radioframeAllocationPeriod
},
1671 { &hf_m2ap_radioframeAllocationOffset
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_INTEGER_0_7
},
1672 { &hf_m2ap_subframeAllocation
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_T_subframeAllocation
},
1673 { &hf_m2ap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_m2ap_ProtocolExtensionContainer
},
1674 { NULL
, 0, 0, NULL
}
1678 dissect_m2ap_MBSFN_Subframe_Configuration(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1679 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1680 ett_m2ap_MBSFN_Subframe_Configuration
, MBSFN_Subframe_Configuration_sequence
);
1688 dissect_m2ap_MCCH_Update_Time(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1689 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1690 0U, 255U, NULL
, false);
1696 static const value_string m2ap_T_pdcchLength_vals
[] = {
1704 dissect_m2ap_T_pdcchLength(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1705 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1706 2, NULL
, true, 0, NULL
);
1712 static const value_string m2ap_T_repetitionPeriod_vals
[] = {
1722 dissect_m2ap_T_repetitionPeriod(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1723 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1724 4, NULL
, false, 0, NULL
);
1732 dissect_m2ap_INTEGER_0_10(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1733 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1734 0U, 10U, NULL
, false);
1740 static const value_string m2ap_T_modificationPeriod_vals
[] = {
1748 dissect_m2ap_T_modificationPeriod(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1749 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1750 2, NULL
, false, 0, NULL
);
1756 static const value_string m2ap_T_modulationAndCodingScheme_vals
[] = {
1766 dissect_m2ap_T_modulationAndCodingScheme(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1767 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1768 4, NULL
, false, 0, NULL
);
1774 static const per_sequence_t MCCHrelatedBCCH_ConfigPerMBSFNArea_Item_sequence
[] = {
1775 { &hf_m2ap_mbsfnArea
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_MBSFN_Area_ID
},
1776 { &hf_m2ap_pdcchLength
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_T_pdcchLength
},
1777 { &hf_m2ap_repetitionPeriod
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_T_repetitionPeriod
},
1778 { &hf_m2ap_offset
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_INTEGER_0_10
},
1779 { &hf_m2ap_modificationPeriod
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_T_modificationPeriod
},
1780 { &hf_m2ap_subframeAllocationInfo
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_BIT_STRING_SIZE_6
},
1781 { &hf_m2ap_modulationAndCodingScheme
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_T_modulationAndCodingScheme
},
1782 { &hf_m2ap_cellInformationList
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_m2ap_Cell_Information_List
},
1783 { &hf_m2ap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_m2ap_ProtocolExtensionContainer
},
1784 { NULL
, 0, 0, NULL
}
1788 dissect_m2ap_MCCHrelatedBCCH_ConfigPerMBSFNArea_Item(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1789 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1790 ett_m2ap_MCCHrelatedBCCH_ConfigPerMBSFNArea_Item
, MCCHrelatedBCCH_ConfigPerMBSFNArea_Item_sequence
);
1796 static const value_string m2ap_T_repetitionPeriodExpanded_vals
[] = {
1811 dissect_m2ap_T_repetitionPeriodExpanded(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1812 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1813 9, NULL
, true, 0, NULL
);
1819 static const value_string m2ap_T_modificationPeriodExpanded_vals
[] = {
1836 dissect_m2ap_T_modificationPeriodExpanded(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1837 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1838 11, NULL
, true, 0, NULL
);
1846 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_
) {
1847 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
1848 10, 10, false, NULL
, 0, NULL
, NULL
);
1854 static const value_string m2ap_T_modulationAndCodingScheme_01_vals
[] = {
1864 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_
) {
1865 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1866 4, NULL
, false, 0, NULL
);
1872 static const value_string m2ap_T_subcarrier_SpacingMBMSExpanded_vals
[] = {
1875 { 2, "khz-1dot25" },
1876 { 3, "khz-0dot37" },
1883 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_
) {
1884 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1885 4, NULL
, true, 1, NULL
);
1891 static const value_string m2ap_T_timeSeparation_vals
[] = {
1899 dissect_m2ap_T_timeSeparation(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1900 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1901 2, NULL
, true, 0, NULL
);
1907 static const per_sequence_t MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item_sequence
[] = {
1908 { &hf_m2ap_mbsfnArea
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_MBSFN_Area_ID
},
1909 { &hf_m2ap_repetitionPeriodExpanded
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_T_repetitionPeriodExpanded
},
1910 { &hf_m2ap_offset
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_INTEGER_0_10
},
1911 { &hf_m2ap_modificationPeriodExpanded
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_T_modificationPeriodExpanded
},
1912 { &hf_m2ap_subframeAllocationInfoExpanded
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_BIT_STRING_SIZE_10
},
1913 { &hf_m2ap_modulationAndCodingScheme_01
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_T_modulationAndCodingScheme_01
},
1914 { &hf_m2ap_subcarrier_SpacingMBMSExpanded
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_T_subcarrier_SpacingMBMSExpanded
},
1915 { &hf_m2ap_timeSeparation
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_m2ap_T_timeSeparation
},
1916 { &hf_m2ap_cellInformationList
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_m2ap_Cell_Information_List
},
1917 { &hf_m2ap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_m2ap_ProtocolExtensionContainer
},
1918 { NULL
, 0, 0, NULL
}
1922 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_
) {
1923 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1924 ett_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item
, MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item_sequence
);
1932 dissect_m2ap_MCEname(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1933 offset
= dissect_per_PrintableString(tvb
, offset
, actx
, tree
, hf_index
,
1941 static const value_string m2ap_MCH_Scheduling_Period_vals
[] = {
1955 dissect_m2ap_MCH_Scheduling_Period(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1956 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1957 8, NULL
, false, 0, NULL
);
1963 static const value_string m2ap_MCH_Scheduling_PeriodExtended_vals
[] = {
1970 dissect_m2ap_MCH_Scheduling_PeriodExtended(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1971 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1972 1, NULL
, true, 0, NULL
);
1978 static const value_string m2ap_MCH_Scheduling_PeriodExtended2_vals
[] = {
1986 dissect_m2ap_MCH_Scheduling_PeriodExtended2(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1987 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1988 2, NULL
, true, 0, NULL
);
1996 dissect_m2ap_Modulation_Coding_Scheme2(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1997 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1998 0U, 27U, NULL
, false);
2004 static const value_string m2ap_Modification_PeriodExtended_vals
[] = {
2019 dissect_m2ap_Modification_PeriodExtended(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2020 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
2021 9, NULL
, true, 0, NULL
);
2029 dissect_m2ap_INTEGER_0_28(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2030 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
2031 0U, 28U, NULL
, false);
2037 static const per_sequence_t PMCH_Configuration_sequence
[] = {
2038 { &hf_m2ap_allocatedSubframesEnd
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_AllocatedSubframesEnd
},
2039 { &hf_m2ap_dataMCS
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_INTEGER_0_28
},
2040 { &hf_m2ap_mchSchedulingPeriod
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_MCH_Scheduling_Period
},
2041 { &hf_m2ap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_m2ap_ProtocolExtensionContainer
},
2042 { NULL
, 0, 0, NULL
}
2046 dissect_m2ap_PMCH_Configuration(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2047 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2048 ett_m2ap_PMCH_Configuration
, PMCH_Configuration_sequence
);
2054 static const value_string m2ap_Common_Subframe_Allocation_Period_vals
[] = {
2067 dissect_m2ap_Common_Subframe_Allocation_Period(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2068 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
2069 7, NULL
, false, 0, NULL
);
2075 static const value_string m2ap_Repetition_PeriodExtended_vals
[] = {
2086 dissect_m2ap_Repetition_PeriodExtended(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2087 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
2088 5, NULL
, true, 0, NULL
);
2094 static const per_sequence_t SC_PTM_Information_sequence
[] = {
2095 { &hf_m2ap_mbmsCellList
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_MBMS_Cell_List
},
2096 { &hf_m2ap_mbms_E_RAB_QoS_Parameters
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_MBMS_E_RAB_QoS_Parameters
},
2097 { &hf_m2ap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_m2ap_ProtocolExtensionContainer
},
2098 { NULL
, 0, 0, NULL
}
2102 dissect_m2ap_SC_PTM_Information(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2103 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2104 ett_m2ap_SC_PTM_Information
, SC_PTM_Information_sequence
);
2112 dissect_m2ap_SFN(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2113 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
2114 0U, 1023U, NULL
, false);
2120 static const value_string m2ap_Subcarrier_SpacingMBMS_vals
[] = {
2122 { 1, "khz-1dot25" },
2128 dissect_m2ap_Subcarrier_SpacingMBMS(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2129 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
2130 2, NULL
, true, 0, NULL
);
2138 dissect_m2ap_BIT_STRING_SIZE_2(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2139 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
2140 2, 2, false, NULL
, 0, NULL
, NULL
);
2148 dissect_m2ap_BIT_STRING_SIZE_8(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2149 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
2150 8, 8, false, NULL
, 0, NULL
, NULL
);
2156 static const value_string m2ap_SubframeAllocationExtended_vals
[] = {
2157 { 0, "oneFrameExtension" },
2158 { 1, "fourFrameExtension" },
2159 { 2, "choice-extension" },
2163 static const per_choice_t SubframeAllocationExtended_choice
[] = {
2164 { 0, &hf_m2ap_oneFrameExtension
, ASN1_EXTENSION_ROOT
, dissect_m2ap_BIT_STRING_SIZE_2
},
2165 { 1, &hf_m2ap_fourFrameExtension
, ASN1_EXTENSION_ROOT
, dissect_m2ap_BIT_STRING_SIZE_8
},
2166 { 2, &hf_m2ap_choice_extension
, ASN1_EXTENSION_ROOT
, dissect_m2ap_ProtocolIE_Single_Container
},
2167 { 0, NULL
, 0, NULL
}
2171 dissect_m2ap_SubframeAllocationExtended(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2172 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
2173 ett_m2ap_SubframeAllocationExtended
, SubframeAllocationExtended_choice
,
2180 static const value_string m2ap_SubframeAllocationFurtherExtension_vals
[] = {
2181 { 0, "oneFrameFurtherExtension" },
2182 { 1, "fourFrameFurtherExtension" },
2183 { 2, "choice-extension" },
2187 static const per_choice_t SubframeAllocationFurtherExtension_choice
[] = {
2188 { 0, &hf_m2ap_oneFrameFurtherExtension
, ASN1_EXTENSION_ROOT
, dissect_m2ap_BIT_STRING_SIZE_2
},
2189 { 1, &hf_m2ap_fourFrameFurtherExtension
, ASN1_EXTENSION_ROOT
, dissect_m2ap_BIT_STRING_SIZE_8
},
2190 { 2, &hf_m2ap_choice_extension
, ASN1_EXTENSION_ROOT
, dissect_m2ap_ProtocolIE_Single_Container
},
2191 { 0, NULL
, 0, NULL
}
2195 dissect_m2ap_SubframeAllocationFurtherExtension(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2196 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
2197 ett_m2ap_SubframeAllocationFurtherExtension
, SubframeAllocationFurtherExtension_choice
,
2204 static const value_string m2ap_TimeToWait_vals
[] = {
2216 dissect_m2ap_TimeToWait(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2217 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
2218 6, NULL
, true, 0, NULL
);
2224 static const per_sequence_t TNL_Information_sequence
[] = {
2225 { &hf_m2ap_iPMCAddress
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_IPAddress
},
2226 { &hf_m2ap_iPSourceAddress
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_IPAddress
},
2227 { &hf_m2ap_gTP_TEID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_GTP_TEID
},
2228 { &hf_m2ap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_m2ap_ProtocolExtensionContainer
},
2229 { NULL
, 0, 0, NULL
}
2233 dissect_m2ap_TNL_Information(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2234 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2235 ett_m2ap_TNL_Information
, TNL_Information_sequence
);
2241 static const per_sequence_t SessionStartRequest_sequence
[] = {
2242 { &hf_m2ap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Container
},
2243 { NULL
, 0, 0, NULL
}
2247 dissect_m2ap_SessionStartRequest(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2248 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
, "MBMS Session Start Request");
2249 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2250 ett_m2ap_SessionStartRequest
, SessionStartRequest_sequence
);
2256 static const per_sequence_t SessionStartResponse_sequence
[] = {
2257 { &hf_m2ap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Container
},
2258 { NULL
, 0, 0, NULL
}
2262 dissect_m2ap_SessionStartResponse(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2263 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
, "MBMS Session Start Response");
2264 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2265 ett_m2ap_SessionStartResponse
, SessionStartResponse_sequence
);
2271 static const per_sequence_t SessionStartFailure_sequence
[] = {
2272 { &hf_m2ap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Container
},
2273 { NULL
, 0, 0, NULL
}
2277 dissect_m2ap_SessionStartFailure(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2278 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
, "MBMS Session Start Failure");
2279 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2280 ett_m2ap_SessionStartFailure
, SessionStartFailure_sequence
);
2286 static const per_sequence_t SessionStopRequest_sequence
[] = {
2287 { &hf_m2ap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Container
},
2288 { NULL
, 0, 0, NULL
}
2292 dissect_m2ap_SessionStopRequest(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2293 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
, "MBMS Session Stop Request");
2294 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2295 ett_m2ap_SessionStopRequest
, SessionStopRequest_sequence
);
2301 static const per_sequence_t SessionStopResponse_sequence
[] = {
2302 { &hf_m2ap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Container
},
2303 { NULL
, 0, 0, NULL
}
2307 dissect_m2ap_SessionStopResponse(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2308 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
, "MBMS Session Stop Response");
2309 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2310 ett_m2ap_SessionStopResponse
, SessionStopResponse_sequence
);
2316 static const per_sequence_t SessionUpdateRequest_sequence
[] = {
2317 { &hf_m2ap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Container
},
2318 { NULL
, 0, 0, NULL
}
2322 dissect_m2ap_SessionUpdateRequest(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2323 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
, "MBMS Session Update Request");
2324 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2325 ett_m2ap_SessionUpdateRequest
, SessionUpdateRequest_sequence
);
2331 static const per_sequence_t SessionUpdateResponse_sequence
[] = {
2332 { &hf_m2ap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Container
},
2333 { NULL
, 0, 0, NULL
}
2337 dissect_m2ap_SessionUpdateResponse(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2338 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
, "MBMS Session Update Response");
2339 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2340 ett_m2ap_SessionUpdateResponse
, SessionUpdateResponse_sequence
);
2346 static const per_sequence_t SessionUpdateFailure_sequence
[] = {
2347 { &hf_m2ap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Container
},
2348 { NULL
, 0, 0, NULL
}
2352 dissect_m2ap_SessionUpdateFailure(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2353 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
, "MBMS Session Update Failure");
2354 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2355 ett_m2ap_SessionUpdateFailure
, SessionUpdateFailure_sequence
);
2361 static const per_sequence_t MbmsSchedulingInformation_sequence
[] = {
2362 { &hf_m2ap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Container
},
2363 { NULL
, 0, 0, NULL
}
2367 dissect_m2ap_MbmsSchedulingInformation(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2368 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
, "MBMS Scheduling Information");
2369 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2370 ett_m2ap_MbmsSchedulingInformation
, MbmsSchedulingInformation_sequence
);
2376 static const per_sequence_t MBSFN_Area_Configuration_List_sequence_of
[1] = {
2377 { &hf_m2ap_MBSFN_Area_Configuration_List_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Container
},
2381 dissect_m2ap_MBSFN_Area_Configuration_List(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2382 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
2383 ett_m2ap_MBSFN_Area_Configuration_List
, MBSFN_Area_Configuration_List_sequence_of
,
2384 1, maxnoofMBSFNareas
, false);
2390 static const per_sequence_t PMCH_Configuration_List_sequence_of
[1] = {
2391 { &hf_m2ap_PMCH_Configuration_List_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Single_Container
},
2395 dissect_m2ap_PMCH_Configuration_List(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2396 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
2397 ett_m2ap_PMCH_Configuration_List
, PMCH_Configuration_List_sequence_of
,
2398 0, maxnoofPMCHsperMBSFNarea
, false);
2404 static const per_sequence_t PMCH_Configuration_Item_sequence
[] = {
2405 { &hf_m2ap_pmch_Configuration
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_PMCH_Configuration
},
2406 { &hf_m2ap_mbms_Session_List
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_MBMSsessionListPerPMCH_Item
},
2407 { &hf_m2ap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_m2ap_ProtocolExtensionContainer
},
2408 { NULL
, 0, 0, NULL
}
2412 dissect_m2ap_PMCH_Configuration_Item(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2413 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2414 ett_m2ap_PMCH_Configuration_Item
, PMCH_Configuration_Item_sequence
);
2420 static const per_sequence_t MBSFN_Subframe_ConfigurationList_sequence_of
[1] = {
2421 { &hf_m2ap_MBSFN_Subframe_ConfigurationList_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Single_Container
},
2425 dissect_m2ap_MBSFN_Subframe_ConfigurationList(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2426 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
2427 ett_m2ap_MBSFN_Subframe_ConfigurationList
, MBSFN_Subframe_ConfigurationList_sequence_of
,
2428 1, maxnoofMBSFN_Allocations
, false);
2434 static const per_sequence_t MBMS_Suspension_Notification_List_sequence_of
[1] = {
2435 { &hf_m2ap_MBMS_Suspension_Notification_List_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Single_Container
},
2439 dissect_m2ap_MBMS_Suspension_Notification_List(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2440 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
2441 ett_m2ap_MBMS_Suspension_Notification_List
, MBMS_Suspension_Notification_List_sequence_of
,
2442 1, maxnoofPMCHsperMBSFNarea
, false);
2448 static const per_sequence_t MBMS_Suspension_Notification_Item_sequence
[] = {
2449 { &hf_m2ap_sfn
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_SFN
},
2450 { &hf_m2ap_mbms_Sessions_To_Be_Suspended_List
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_MBMSsessionsToBeSuspendedListPerPMCH_Item
},
2451 { &hf_m2ap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_m2ap_ProtocolExtensionContainer
},
2452 { NULL
, 0, 0, NULL
}
2456 dissect_m2ap_MBMS_Suspension_Notification_Item(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2457 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2458 ett_m2ap_MBMS_Suspension_Notification_Item
, MBMS_Suspension_Notification_Item_sequence
);
2464 static const per_sequence_t MbmsSchedulingInformationResponse_sequence
[] = {
2465 { &hf_m2ap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Container
},
2466 { NULL
, 0, 0, NULL
}
2470 dissect_m2ap_MbmsSchedulingInformationResponse(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2471 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
, "MBMS Scheduling Information Response");
2472 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2473 ett_m2ap_MbmsSchedulingInformationResponse
, MbmsSchedulingInformationResponse_sequence
);
2479 static const per_sequence_t M2SetupRequest_sequence
[] = {
2480 { &hf_m2ap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Container
},
2481 { NULL
, 0, 0, NULL
}
2485 dissect_m2ap_M2SetupRequest(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2486 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
, "M2 Setup Request");
2487 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2488 ett_m2ap_M2SetupRequest
, M2SetupRequest_sequence
);
2494 static const per_sequence_t ENB_MBMS_Configuration_data_List_sequence_of
[1] = {
2495 { &hf_m2ap_ENB_MBMS_Configuration_data_List_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Single_Container
},
2499 dissect_m2ap_ENB_MBMS_Configuration_data_List(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2500 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
2501 ett_m2ap_ENB_MBMS_Configuration_data_List
, ENB_MBMS_Configuration_data_List_sequence_of
,
2502 1, maxnoofCells
, false);
2508 static const per_sequence_t M2SetupResponse_sequence
[] = {
2509 { &hf_m2ap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Container
},
2510 { NULL
, 0, 0, NULL
}
2514 dissect_m2ap_M2SetupResponse(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2515 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
, "M2 Setup Response");
2516 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2517 ett_m2ap_M2SetupResponse
, M2SetupResponse_sequence
);
2523 static const per_sequence_t MCCHrelatedBCCH_ConfigPerMBSFNArea_sequence_of
[1] = {
2524 { &hf_m2ap_MCCHrelatedBCCH_ConfigPerMBSFNArea_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Single_Container
},
2528 dissect_m2ap_MCCHrelatedBCCH_ConfigPerMBSFNArea(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2529 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
2530 ett_m2ap_MCCHrelatedBCCH_ConfigPerMBSFNArea
, MCCHrelatedBCCH_ConfigPerMBSFNArea_sequence_of
,
2531 1, maxnoofMBSFNareas
, false);
2537 static const per_sequence_t MCCHrelatedBCCH_ExtConfigPerMBSFNArea_sequence_of
[1] = {
2538 { &hf_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Single_Container
},
2542 dissect_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2543 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
2544 ett_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea
, MCCHrelatedBCCH_ExtConfigPerMBSFNArea_sequence_of
,
2545 1, maxnoofMBSFNareas
, false);
2551 static const per_sequence_t M2SetupFailure_sequence
[] = {
2552 { &hf_m2ap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Container
},
2553 { NULL
, 0, 0, NULL
}
2557 dissect_m2ap_M2SetupFailure(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2558 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
, "M2 Setup Failure");
2559 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2560 ett_m2ap_M2SetupFailure
, M2SetupFailure_sequence
);
2566 static const per_sequence_t ENBConfigurationUpdate_sequence
[] = {
2567 { &hf_m2ap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Container
},
2568 { NULL
, 0, 0, NULL
}
2572 dissect_m2ap_ENBConfigurationUpdate(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2573 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
, "eNB Configuration Update");
2574 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2575 ett_m2ap_ENBConfigurationUpdate
, ENBConfigurationUpdate_sequence
);
2581 static const per_sequence_t ENB_MBMS_Configuration_data_List_ConfigUpdate_sequence_of
[1] = {
2582 { &hf_m2ap_ENB_MBMS_Configuration_data_List_ConfigUpdate_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Single_Container
},
2586 dissect_m2ap_ENB_MBMS_Configuration_data_List_ConfigUpdate(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2587 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
2588 ett_m2ap_ENB_MBMS_Configuration_data_List_ConfigUpdate
, ENB_MBMS_Configuration_data_List_ConfigUpdate_sequence_of
,
2589 1, maxnoofCells
, false);
2595 static const per_sequence_t ENBConfigurationUpdateAcknowledge_sequence
[] = {
2596 { &hf_m2ap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Container
},
2597 { NULL
, 0, 0, NULL
}
2601 dissect_m2ap_ENBConfigurationUpdateAcknowledge(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2602 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
, "eNB Configuration Update Acknowledge");
2603 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2604 ett_m2ap_ENBConfigurationUpdateAcknowledge
, ENBConfigurationUpdateAcknowledge_sequence
);
2610 static const per_sequence_t ENBConfigurationUpdateFailure_sequence
[] = {
2611 { &hf_m2ap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Container
},
2612 { NULL
, 0, 0, NULL
}
2616 dissect_m2ap_ENBConfigurationUpdateFailure(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2617 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
, "eNB Configuration Update Failure");
2618 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2619 ett_m2ap_ENBConfigurationUpdateFailure
, ENBConfigurationUpdateFailure_sequence
);
2625 static const per_sequence_t MCEConfigurationUpdate_sequence
[] = {
2626 { &hf_m2ap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Container
},
2627 { NULL
, 0, 0, NULL
}
2631 dissect_m2ap_MCEConfigurationUpdate(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2632 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
, "MCE Configuration Update");
2633 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2634 ett_m2ap_MCEConfigurationUpdate
, MCEConfigurationUpdate_sequence
);
2640 static const per_sequence_t MCEConfigurationUpdateAcknowledge_sequence
[] = {
2641 { &hf_m2ap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Container
},
2642 { NULL
, 0, 0, NULL
}
2646 dissect_m2ap_MCEConfigurationUpdateAcknowledge(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2647 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
, "MCE Configuration Update Acknowledge");
2648 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2649 ett_m2ap_MCEConfigurationUpdateAcknowledge
, MCEConfigurationUpdateAcknowledge_sequence
);
2655 static const per_sequence_t MCEConfigurationUpdateFailure_sequence
[] = {
2656 { &hf_m2ap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Container
},
2657 { NULL
, 0, 0, NULL
}
2661 dissect_m2ap_MCEConfigurationUpdateFailure(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2662 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
, "MCE Configuration Update Failure");
2663 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2664 ett_m2ap_MCEConfigurationUpdateFailure
, MCEConfigurationUpdateFailure_sequence
);
2670 static const per_sequence_t ErrorIndication_sequence
[] = {
2671 { &hf_m2ap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Container
},
2672 { NULL
, 0, 0, NULL
}
2676 dissect_m2ap_ErrorIndication(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2677 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
, "Error Indication");
2678 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2679 ett_m2ap_ErrorIndication
, ErrorIndication_sequence
);
2685 static const per_sequence_t Reset_sequence
[] = {
2686 { &hf_m2ap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Container
},
2687 { NULL
, 0, 0, NULL
}
2691 dissect_m2ap_Reset(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2692 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
, "Reset");
2693 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2694 ett_m2ap_Reset
, Reset_sequence
);
2700 static const value_string m2ap_ResetAll_vals
[] = {
2707 dissect_m2ap_ResetAll(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2708 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
2709 1, NULL
, true, 0, NULL
);
2715 static const per_sequence_t MBMS_Service_associatedLogicalM2_ConnectionListRes_sequence_of
[1] = {
2716 { &hf_m2ap_MBMS_Service_associatedLogicalM2_ConnectionListRes_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Single_Container
},
2720 dissect_m2ap_MBMS_Service_associatedLogicalM2_ConnectionListRes(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2721 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
2722 ett_m2ap_MBMS_Service_associatedLogicalM2_ConnectionListRes
, MBMS_Service_associatedLogicalM2_ConnectionListRes_sequence_of
,
2723 1, maxNrOfIndividualM2ConnectionsToReset
, false);
2729 static const value_string m2ap_ResetType_vals
[] = {
2730 { 0, "m2-Interface" },
2731 { 1, "partOfM2-Interface" },
2735 static const per_choice_t ResetType_choice
[] = {
2736 { 0, &hf_m2ap_m2_Interface
, ASN1_EXTENSION_ROOT
, dissect_m2ap_ResetAll
},
2737 { 1, &hf_m2ap_partOfM2_Interface
, ASN1_EXTENSION_ROOT
, dissect_m2ap_MBMS_Service_associatedLogicalM2_ConnectionListRes
},
2738 { 0, NULL
, 0, NULL
}
2742 dissect_m2ap_ResetType(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2743 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
2744 ett_m2ap_ResetType
, ResetType_choice
,
2751 static const per_sequence_t ResetAcknowledge_sequence
[] = {
2752 { &hf_m2ap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Container
},
2753 { NULL
, 0, 0, NULL
}
2757 dissect_m2ap_ResetAcknowledge(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2758 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
, "Reset Acknowledge");
2759 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2760 ett_m2ap_ResetAcknowledge
, ResetAcknowledge_sequence
);
2766 static const per_sequence_t MBMS_Service_associatedLogicalM2_ConnectionListResAck_sequence_of
[1] = {
2767 { &hf_m2ap_MBMS_Service_associatedLogicalM2_ConnectionListResAck_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Single_Container
},
2771 dissect_m2ap_MBMS_Service_associatedLogicalM2_ConnectionListResAck(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2772 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
2773 ett_m2ap_MBMS_Service_associatedLogicalM2_ConnectionListResAck
, MBMS_Service_associatedLogicalM2_ConnectionListResAck_sequence_of
,
2774 1, maxNrOfIndividualM2ConnectionsToReset
, false);
2780 static const per_sequence_t PrivateMessage_sequence
[] = {
2781 { &hf_m2ap_privateIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_PrivateIE_Container
},
2782 { NULL
, 0, 0, NULL
}
2786 dissect_m2ap_PrivateMessage(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2787 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
, "Private Message");
2788 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2789 ett_m2ap_PrivateMessage
, PrivateMessage_sequence
);
2795 static const per_sequence_t MbmsServiceCountingRequest_sequence
[] = {
2796 { &hf_m2ap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Container
},
2797 { NULL
, 0, 0, NULL
}
2801 dissect_m2ap_MbmsServiceCountingRequest(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2802 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
, "MBMS Service Counting Request");
2803 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2804 ett_m2ap_MbmsServiceCountingRequest
, MbmsServiceCountingRequest_sequence
);
2810 static const per_sequence_t MBMS_Counting_Request_Session_sequence_of
[1] = {
2811 { &hf_m2ap_MBMS_Counting_Request_Session_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Container
},
2815 dissect_m2ap_MBMS_Counting_Request_Session(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2816 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
2817 ett_m2ap_MBMS_Counting_Request_Session
, MBMS_Counting_Request_Session_sequence_of
,
2818 1, maxnoofCountingService
, false);
2824 static const per_sequence_t MBMS_Counting_Request_SessionIE_sequence
[] = {
2825 { &hf_m2ap_tmgi
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_TMGI
},
2826 { &hf_m2ap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_m2ap_ProtocolExtensionContainer
},
2827 { NULL
, 0, 0, NULL
}
2831 dissect_m2ap_MBMS_Counting_Request_SessionIE(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2832 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2833 ett_m2ap_MBMS_Counting_Request_SessionIE
, MBMS_Counting_Request_SessionIE_sequence
);
2839 static const per_sequence_t MbmsServiceCountingResponse_sequence
[] = {
2840 { &hf_m2ap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Container
},
2841 { NULL
, 0, 0, NULL
}
2845 dissect_m2ap_MbmsServiceCountingResponse(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2846 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
, "MBMS Service Counting Response");
2847 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2848 ett_m2ap_MbmsServiceCountingResponse
, MbmsServiceCountingResponse_sequence
);
2854 static const per_sequence_t MbmsServiceCountingFailure_sequence
[] = {
2855 { &hf_m2ap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Container
},
2856 { NULL
, 0, 0, NULL
}
2860 dissect_m2ap_MbmsServiceCountingFailure(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2861 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
, "MBMS Service Counting Failure");
2862 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2863 ett_m2ap_MbmsServiceCountingFailure
, MbmsServiceCountingFailure_sequence
);
2869 static const per_sequence_t MbmsServiceCountingResultsReport_sequence
[] = {
2870 { &hf_m2ap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Container
},
2871 { NULL
, 0, 0, NULL
}
2875 dissect_m2ap_MbmsServiceCountingResultsReport(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2876 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
, "MBMS Service Counting Results Report");
2877 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2878 ett_m2ap_MbmsServiceCountingResultsReport
, MbmsServiceCountingResultsReport_sequence
);
2884 static const per_sequence_t MBMS_Counting_Result_List_sequence_of
[1] = {
2885 { &hf_m2ap_MBMS_Counting_Result_List_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Container
},
2889 dissect_m2ap_MBMS_Counting_Result_List(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2890 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
2891 ett_m2ap_MBMS_Counting_Result_List
, MBMS_Counting_Result_List_sequence_of
,
2892 1, maxnoofCountingService
, false);
2900 dissect_m2ap_CountingResult(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2901 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
2902 0U, 1023U, NULL
, false);
2908 static const per_sequence_t MBMS_Counting_Result_sequence
[] = {
2909 { &hf_m2ap_tmgi
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_TMGI
},
2910 { &hf_m2ap_countingResult
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_CountingResult
},
2911 { &hf_m2ap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_m2ap_ProtocolExtensionContainer
},
2912 { NULL
, 0, 0, NULL
}
2916 dissect_m2ap_MBMS_Counting_Result(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2917 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2918 ett_m2ap_MBMS_Counting_Result
, MBMS_Counting_Result_sequence
);
2924 static const per_sequence_t MbmsOverloadNotification_sequence
[] = {
2925 { &hf_m2ap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Container
},
2926 { NULL
, 0, 0, NULL
}
2930 dissect_m2ap_MbmsOverloadNotification(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2931 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
, "MBMS Overload Notification");
2933 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2934 ett_m2ap_MbmsOverloadNotification
, MbmsOverloadNotification_sequence
);
2940 static const per_sequence_t Overload_Status_Per_PMCH_List_sequence_of
[1] = {
2941 { &hf_m2ap_Overload_Status_Per_PMCH_List_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Container
},
2945 dissect_m2ap_Overload_Status_Per_PMCH_List(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2946 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
2947 ett_m2ap_Overload_Status_Per_PMCH_List
, Overload_Status_Per_PMCH_List_sequence_of
,
2948 1, maxnoofPMCHsperMBSFNarea
, false);
2954 static const value_string m2ap_PMCH_Overload_Status_vals
[] = {
2962 dissect_m2ap_PMCH_Overload_Status(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2963 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
2964 2, NULL
, true, 0, NULL
);
2970 static const per_sequence_t Active_MBMS_Session_List_sequence_of
[1] = {
2971 { &hf_m2ap_Active_MBMS_Session_List_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProtocolIE_Container
},
2975 dissect_m2ap_Active_MBMS_Session_List(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2976 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
2977 ett_m2ap_Active_MBMS_Session_List
, Active_MBMS_Session_List_sequence_of
,
2978 1, maxnoofSessionsPerPMCH
, false);
2986 dissect_m2ap_InitiatingMessage_value(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2987 message_type
= INITIATING_MESSAGE
;
2989 offset
= dissect_per_open_type_pdu_new(tvb
, offset
, actx
, tree
, hf_index
, dissect_InitiatingMessageValue
);
2995 static const per_sequence_t InitiatingMessage_sequence
[] = {
2996 { &hf_m2ap_procedureCode
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProcedureCode
},
2997 { &hf_m2ap_criticality
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_Criticality
},
2998 { &hf_m2ap_initiatingMessage_value
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_InitiatingMessage_value
},
2999 { NULL
, 0, 0, NULL
}
3003 dissect_m2ap_InitiatingMessage(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
3004 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
3005 ett_m2ap_InitiatingMessage
, InitiatingMessage_sequence
);
3013 dissect_m2ap_SuccessfulOutcome_value(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
3014 message_type
= SUCCESSFUL_OUTCOME
;
3016 offset
= dissect_per_open_type_pdu_new(tvb
, offset
, actx
, tree
, hf_index
, dissect_SuccessfulOutcomeValue
);
3022 static const per_sequence_t SuccessfulOutcome_sequence
[] = {
3023 { &hf_m2ap_procedureCode
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProcedureCode
},
3024 { &hf_m2ap_criticality
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_Criticality
},
3025 { &hf_m2ap_successfulOutcome_value
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_SuccessfulOutcome_value
},
3026 { NULL
, 0, 0, NULL
}
3030 dissect_m2ap_SuccessfulOutcome(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
3031 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
3032 ett_m2ap_SuccessfulOutcome
, SuccessfulOutcome_sequence
);
3040 dissect_m2ap_UnsuccessfulOutcome_value(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
3041 message_type
= UNSUCCESSFUL_OUTCOME
;
3043 offset
= dissect_per_open_type_pdu_new(tvb
, offset
, actx
, tree
, hf_index
, dissect_UnsuccessfulOutcomeValue
);
3049 static const per_sequence_t UnsuccessfulOutcome_sequence
[] = {
3050 { &hf_m2ap_procedureCode
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_ProcedureCode
},
3051 { &hf_m2ap_criticality
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_Criticality
},
3052 { &hf_m2ap_unsuccessfulOutcome_value
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_m2ap_UnsuccessfulOutcome_value
},
3053 { NULL
, 0, 0, NULL
}
3057 dissect_m2ap_UnsuccessfulOutcome(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
3058 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
3059 ett_m2ap_UnsuccessfulOutcome
, UnsuccessfulOutcome_sequence
);
3065 static const value_string m2ap_M2AP_PDU_vals
[] = {
3066 { 0, "initiatingMessage" },
3067 { 1, "successfulOutcome" },
3068 { 2, "unsuccessfulOutcome" },
3072 static const per_choice_t M2AP_PDU_choice
[] = {
3073 { 0, &hf_m2ap_initiatingMessage
, ASN1_EXTENSION_ROOT
, dissect_m2ap_InitiatingMessage
},
3074 { 1, &hf_m2ap_successfulOutcome
, ASN1_EXTENSION_ROOT
, dissect_m2ap_SuccessfulOutcome
},
3075 { 2, &hf_m2ap_unsuccessfulOutcome
, ASN1_EXTENSION_ROOT
, dissect_m2ap_UnsuccessfulOutcome
},
3076 { 0, NULL
, 0, NULL
}
3080 dissect_m2ap_M2AP_PDU(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
3081 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
3082 ett_m2ap_M2AP_PDU
, M2AP_PDU_choice
,
3090 static int dissect_AdditionalConfigParameters_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3092 asn1_ctx_t asn1_ctx
;
3093 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3094 offset
= dissect_m2ap_AdditionalConfigParameters(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_AdditionalConfigParameters_PDU
);
3095 offset
+= 7; offset
>>= 3;
3098 static int dissect_Cause_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3100 asn1_ctx_t asn1_ctx
;
3101 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3102 offset
= dissect_m2ap_Cause(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_Cause_PDU
);
3103 offset
+= 7; offset
>>= 3;
3106 static int dissect_CriticalityDiagnostics_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3108 asn1_ctx_t asn1_ctx
;
3109 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3110 offset
= dissect_m2ap_CriticalityDiagnostics(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_CriticalityDiagnostics_PDU
);
3111 offset
+= 7; offset
>>= 3;
3114 static int dissect_ENB_MBMS_Configuration_data_Item_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3116 asn1_ctx_t asn1_ctx
;
3117 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3118 offset
= dissect_m2ap_ENB_MBMS_Configuration_data_Item(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_ENB_MBMS_Configuration_data_Item_PDU
);
3119 offset
+= 7; offset
>>= 3;
3122 static int dissect_ENB_MBMS_Configuration_data_ConfigUpdate_Item_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3124 asn1_ctx_t asn1_ctx
;
3125 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3126 offset
= dissect_m2ap_ENB_MBMS_Configuration_data_ConfigUpdate_Item(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_ENB_MBMS_Configuration_data_ConfigUpdate_Item_PDU
);
3127 offset
+= 7; offset
>>= 3;
3130 static int dissect_ENB_MBMS_M2AP_ID_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3132 asn1_ctx_t asn1_ctx
;
3133 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3134 offset
= dissect_m2ap_ENB_MBMS_M2AP_ID(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_ENB_MBMS_M2AP_ID_PDU
);
3135 offset
+= 7; offset
>>= 3;
3138 static int dissect_ENBname_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3140 asn1_ctx_t asn1_ctx
;
3141 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3142 offset
= dissect_m2ap_ENBname(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_ENBname_PDU
);
3143 offset
+= 7; offset
>>= 3;
3146 static int dissect_GlobalENB_ID_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3148 asn1_ctx_t asn1_ctx
;
3149 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3150 offset
= dissect_m2ap_GlobalENB_ID(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_GlobalENB_ID_PDU
);
3151 offset
+= 7; offset
>>= 3;
3154 static int dissect_GlobalMCE_ID_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3156 asn1_ctx_t asn1_ctx
;
3157 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3158 offset
= dissect_m2ap_GlobalMCE_ID(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_GlobalMCE_ID_PDU
);
3159 offset
+= 7; offset
>>= 3;
3162 static int dissect_MBMS_Service_associatedLogicalM2_ConnectionItem_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3164 asn1_ctx_t asn1_ctx
;
3165 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3166 offset
= dissect_m2ap_MBMS_Service_associatedLogicalM2_ConnectionItem(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_MBMS_Service_associatedLogicalM2_ConnectionItem_PDU
);
3167 offset
+= 7; offset
>>= 3;
3170 static int dissect_MBMS_Service_Area_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3172 asn1_ctx_t asn1_ctx
;
3173 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3174 offset
= dissect_m2ap_MBMS_Service_Area(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_MBMS_Service_Area_PDU
);
3175 offset
+= 7; offset
>>= 3;
3178 static int dissect_MBMS_Session_ID_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3180 asn1_ctx_t asn1_ctx
;
3181 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3182 offset
= dissect_m2ap_MBMS_Session_ID(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_MBMS_Session_ID_PDU
);
3183 offset
+= 7; offset
>>= 3;
3186 static int dissect_MBSFN_Area_ID_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3188 asn1_ctx_t asn1_ctx
;
3189 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3190 offset
= dissect_m2ap_MBSFN_Area_ID(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_MBSFN_Area_ID_PDU
);
3191 offset
+= 7; offset
>>= 3;
3194 static int dissect_MBSFN_Subframe_Configuration_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3196 asn1_ctx_t asn1_ctx
;
3197 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3198 offset
= dissect_m2ap_MBSFN_Subframe_Configuration(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_MBSFN_Subframe_Configuration_PDU
);
3199 offset
+= 7; offset
>>= 3;
3202 static int dissect_MCCH_Update_Time_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3204 asn1_ctx_t asn1_ctx
;
3205 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3206 offset
= dissect_m2ap_MCCH_Update_Time(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_MCCH_Update_Time_PDU
);
3207 offset
+= 7; offset
>>= 3;
3210 static int dissect_MCCHrelatedBCCH_ConfigPerMBSFNArea_Item_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3212 asn1_ctx_t asn1_ctx
;
3213 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3214 offset
= dissect_m2ap_MCCHrelatedBCCH_ConfigPerMBSFNArea_Item(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_MCCHrelatedBCCH_ConfigPerMBSFNArea_Item_PDU
);
3215 offset
+= 7; offset
>>= 3;
3218 static int dissect_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3220 asn1_ctx_t asn1_ctx
;
3221 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3222 offset
= dissect_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item_PDU
);
3223 offset
+= 7; offset
>>= 3;
3226 static int dissect_MCE_MBMS_M2AP_ID_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3228 asn1_ctx_t asn1_ctx
;
3229 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3230 offset
= dissect_m2ap_MCE_MBMS_M2AP_ID(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_MCE_MBMS_M2AP_ID_PDU
);
3231 offset
+= 7; offset
>>= 3;
3234 static int dissect_MCEname_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3236 asn1_ctx_t asn1_ctx
;
3237 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3238 offset
= dissect_m2ap_MCEname(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_MCEname_PDU
);
3239 offset
+= 7; offset
>>= 3;
3242 static int dissect_MCH_Scheduling_PeriodExtended_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3244 asn1_ctx_t asn1_ctx
;
3245 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3246 offset
= dissect_m2ap_MCH_Scheduling_PeriodExtended(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_MCH_Scheduling_PeriodExtended_PDU
);
3247 offset
+= 7; offset
>>= 3;
3250 static int dissect_MCH_Scheduling_PeriodExtended2_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3252 asn1_ctx_t asn1_ctx
;
3253 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3254 offset
= dissect_m2ap_MCH_Scheduling_PeriodExtended2(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_MCH_Scheduling_PeriodExtended2_PDU
);
3255 offset
+= 7; offset
>>= 3;
3258 static int dissect_Modulation_Coding_Scheme2_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3260 asn1_ctx_t asn1_ctx
;
3261 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3262 offset
= dissect_m2ap_Modulation_Coding_Scheme2(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_Modulation_Coding_Scheme2_PDU
);
3263 offset
+= 7; offset
>>= 3;
3266 static int dissect_Modification_PeriodExtended_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3268 asn1_ctx_t asn1_ctx
;
3269 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3270 offset
= dissect_m2ap_Modification_PeriodExtended(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_Modification_PeriodExtended_PDU
);
3271 offset
+= 7; offset
>>= 3;
3274 static int dissect_Common_Subframe_Allocation_Period_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3276 asn1_ctx_t asn1_ctx
;
3277 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3278 offset
= dissect_m2ap_Common_Subframe_Allocation_Period(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_Common_Subframe_Allocation_Period_PDU
);
3279 offset
+= 7; offset
>>= 3;
3282 static int dissect_Repetition_PeriodExtended_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3284 asn1_ctx_t asn1_ctx
;
3285 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3286 offset
= dissect_m2ap_Repetition_PeriodExtended(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_Repetition_PeriodExtended_PDU
);
3287 offset
+= 7; offset
>>= 3;
3290 static int dissect_SC_PTM_Information_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3292 asn1_ctx_t asn1_ctx
;
3293 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3294 offset
= dissect_m2ap_SC_PTM_Information(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_SC_PTM_Information_PDU
);
3295 offset
+= 7; offset
>>= 3;
3298 static int dissect_Subcarrier_SpacingMBMS_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3300 asn1_ctx_t asn1_ctx
;
3301 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3302 offset
= dissect_m2ap_Subcarrier_SpacingMBMS(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_Subcarrier_SpacingMBMS_PDU
);
3303 offset
+= 7; offset
>>= 3;
3306 static int dissect_SubframeAllocationExtended_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3308 asn1_ctx_t asn1_ctx
;
3309 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3310 offset
= dissect_m2ap_SubframeAllocationExtended(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_SubframeAllocationExtended_PDU
);
3311 offset
+= 7; offset
>>= 3;
3314 static int dissect_SubframeAllocationFurtherExtension_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3316 asn1_ctx_t asn1_ctx
;
3317 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3318 offset
= dissect_m2ap_SubframeAllocationFurtherExtension(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_SubframeAllocationFurtherExtension_PDU
);
3319 offset
+= 7; offset
>>= 3;
3322 static int dissect_TimeToWait_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3324 asn1_ctx_t asn1_ctx
;
3325 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3326 offset
= dissect_m2ap_TimeToWait(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_TimeToWait_PDU
);
3327 offset
+= 7; offset
>>= 3;
3330 static int dissect_TMGI_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3332 asn1_ctx_t asn1_ctx
;
3333 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3334 offset
= dissect_m2ap_TMGI(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_TMGI_PDU
);
3335 offset
+= 7; offset
>>= 3;
3338 static int dissect_TNL_Information_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3340 asn1_ctx_t asn1_ctx
;
3341 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3342 offset
= dissect_m2ap_TNL_Information(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_TNL_Information_PDU
);
3343 offset
+= 7; offset
>>= 3;
3346 static int dissect_SessionStartRequest_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3348 asn1_ctx_t asn1_ctx
;
3349 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3350 offset
= dissect_m2ap_SessionStartRequest(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_SessionStartRequest_PDU
);
3351 offset
+= 7; offset
>>= 3;
3354 static int dissect_SessionStartResponse_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3356 asn1_ctx_t asn1_ctx
;
3357 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3358 offset
= dissect_m2ap_SessionStartResponse(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_SessionStartResponse_PDU
);
3359 offset
+= 7; offset
>>= 3;
3362 static int dissect_SessionStartFailure_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3364 asn1_ctx_t asn1_ctx
;
3365 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3366 offset
= dissect_m2ap_SessionStartFailure(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_SessionStartFailure_PDU
);
3367 offset
+= 7; offset
>>= 3;
3370 static int dissect_SessionStopRequest_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3372 asn1_ctx_t asn1_ctx
;
3373 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3374 offset
= dissect_m2ap_SessionStopRequest(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_SessionStopRequest_PDU
);
3375 offset
+= 7; offset
>>= 3;
3378 static int dissect_SessionStopResponse_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3380 asn1_ctx_t asn1_ctx
;
3381 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3382 offset
= dissect_m2ap_SessionStopResponse(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_SessionStopResponse_PDU
);
3383 offset
+= 7; offset
>>= 3;
3386 static int dissect_SessionUpdateRequest_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3388 asn1_ctx_t asn1_ctx
;
3389 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3390 offset
= dissect_m2ap_SessionUpdateRequest(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_SessionUpdateRequest_PDU
);
3391 offset
+= 7; offset
>>= 3;
3394 static int dissect_SessionUpdateResponse_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3396 asn1_ctx_t asn1_ctx
;
3397 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3398 offset
= dissect_m2ap_SessionUpdateResponse(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_SessionUpdateResponse_PDU
);
3399 offset
+= 7; offset
>>= 3;
3402 static int dissect_SessionUpdateFailure_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3404 asn1_ctx_t asn1_ctx
;
3405 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3406 offset
= dissect_m2ap_SessionUpdateFailure(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_SessionUpdateFailure_PDU
);
3407 offset
+= 7; offset
>>= 3;
3410 static int dissect_MbmsSchedulingInformation_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3412 asn1_ctx_t asn1_ctx
;
3413 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3414 offset
= dissect_m2ap_MbmsSchedulingInformation(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_MbmsSchedulingInformation_PDU
);
3415 offset
+= 7; offset
>>= 3;
3418 static int dissect_MBSFN_Area_Configuration_List_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3420 asn1_ctx_t asn1_ctx
;
3421 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3422 offset
= dissect_m2ap_MBSFN_Area_Configuration_List(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_MBSFN_Area_Configuration_List_PDU
);
3423 offset
+= 7; offset
>>= 3;
3426 static int dissect_PMCH_Configuration_List_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3428 asn1_ctx_t asn1_ctx
;
3429 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3430 offset
= dissect_m2ap_PMCH_Configuration_List(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_PMCH_Configuration_List_PDU
);
3431 offset
+= 7; offset
>>= 3;
3434 static int dissect_PMCH_Configuration_Item_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3436 asn1_ctx_t asn1_ctx
;
3437 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3438 offset
= dissect_m2ap_PMCH_Configuration_Item(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_PMCH_Configuration_Item_PDU
);
3439 offset
+= 7; offset
>>= 3;
3442 static int dissect_MBSFN_Subframe_ConfigurationList_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3444 asn1_ctx_t asn1_ctx
;
3445 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3446 offset
= dissect_m2ap_MBSFN_Subframe_ConfigurationList(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_MBSFN_Subframe_ConfigurationList_PDU
);
3447 offset
+= 7; offset
>>= 3;
3450 static int dissect_MBMS_Suspension_Notification_List_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3452 asn1_ctx_t asn1_ctx
;
3453 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3454 offset
= dissect_m2ap_MBMS_Suspension_Notification_List(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_MBMS_Suspension_Notification_List_PDU
);
3455 offset
+= 7; offset
>>= 3;
3458 static int dissect_MBMS_Suspension_Notification_Item_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3460 asn1_ctx_t asn1_ctx
;
3461 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3462 offset
= dissect_m2ap_MBMS_Suspension_Notification_Item(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_MBMS_Suspension_Notification_Item_PDU
);
3463 offset
+= 7; offset
>>= 3;
3466 static int dissect_MbmsSchedulingInformationResponse_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3468 asn1_ctx_t asn1_ctx
;
3469 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3470 offset
= dissect_m2ap_MbmsSchedulingInformationResponse(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_MbmsSchedulingInformationResponse_PDU
);
3471 offset
+= 7; offset
>>= 3;
3474 static int dissect_M2SetupRequest_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3476 asn1_ctx_t asn1_ctx
;
3477 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3478 offset
= dissect_m2ap_M2SetupRequest(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_M2SetupRequest_PDU
);
3479 offset
+= 7; offset
>>= 3;
3482 static int dissect_ENB_MBMS_Configuration_data_List_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3484 asn1_ctx_t asn1_ctx
;
3485 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3486 offset
= dissect_m2ap_ENB_MBMS_Configuration_data_List(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_ENB_MBMS_Configuration_data_List_PDU
);
3487 offset
+= 7; offset
>>= 3;
3490 static int dissect_M2SetupResponse_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3492 asn1_ctx_t asn1_ctx
;
3493 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3494 offset
= dissect_m2ap_M2SetupResponse(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_M2SetupResponse_PDU
);
3495 offset
+= 7; offset
>>= 3;
3498 static int dissect_MCCHrelatedBCCH_ConfigPerMBSFNArea_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3500 asn1_ctx_t asn1_ctx
;
3501 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3502 offset
= dissect_m2ap_MCCHrelatedBCCH_ConfigPerMBSFNArea(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_MCCHrelatedBCCH_ConfigPerMBSFNArea_PDU
);
3503 offset
+= 7; offset
>>= 3;
3506 static int dissect_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3508 asn1_ctx_t asn1_ctx
;
3509 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3510 offset
= dissect_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_PDU
);
3511 offset
+= 7; offset
>>= 3;
3514 static int dissect_M2SetupFailure_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3516 asn1_ctx_t asn1_ctx
;
3517 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3518 offset
= dissect_m2ap_M2SetupFailure(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_M2SetupFailure_PDU
);
3519 offset
+= 7; offset
>>= 3;
3522 static int dissect_ENBConfigurationUpdate_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3524 asn1_ctx_t asn1_ctx
;
3525 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3526 offset
= dissect_m2ap_ENBConfigurationUpdate(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_ENBConfigurationUpdate_PDU
);
3527 offset
+= 7; offset
>>= 3;
3530 static int dissect_ENB_MBMS_Configuration_data_List_ConfigUpdate_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3532 asn1_ctx_t asn1_ctx
;
3533 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3534 offset
= dissect_m2ap_ENB_MBMS_Configuration_data_List_ConfigUpdate(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_ENB_MBMS_Configuration_data_List_ConfigUpdate_PDU
);
3535 offset
+= 7; offset
>>= 3;
3538 static int dissect_ENBConfigurationUpdateAcknowledge_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3540 asn1_ctx_t asn1_ctx
;
3541 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3542 offset
= dissect_m2ap_ENBConfigurationUpdateAcknowledge(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_ENBConfigurationUpdateAcknowledge_PDU
);
3543 offset
+= 7; offset
>>= 3;
3546 static int dissect_ENBConfigurationUpdateFailure_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3548 asn1_ctx_t asn1_ctx
;
3549 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3550 offset
= dissect_m2ap_ENBConfigurationUpdateFailure(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_ENBConfigurationUpdateFailure_PDU
);
3551 offset
+= 7; offset
>>= 3;
3554 static int dissect_MCEConfigurationUpdate_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3556 asn1_ctx_t asn1_ctx
;
3557 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3558 offset
= dissect_m2ap_MCEConfigurationUpdate(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_MCEConfigurationUpdate_PDU
);
3559 offset
+= 7; offset
>>= 3;
3562 static int dissect_MCEConfigurationUpdateAcknowledge_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3564 asn1_ctx_t asn1_ctx
;
3565 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3566 offset
= dissect_m2ap_MCEConfigurationUpdateAcknowledge(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_MCEConfigurationUpdateAcknowledge_PDU
);
3567 offset
+= 7; offset
>>= 3;
3570 static int dissect_MCEConfigurationUpdateFailure_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3572 asn1_ctx_t asn1_ctx
;
3573 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3574 offset
= dissect_m2ap_MCEConfigurationUpdateFailure(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_MCEConfigurationUpdateFailure_PDU
);
3575 offset
+= 7; offset
>>= 3;
3578 static int dissect_ErrorIndication_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3580 asn1_ctx_t asn1_ctx
;
3581 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3582 offset
= dissect_m2ap_ErrorIndication(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_ErrorIndication_PDU
);
3583 offset
+= 7; offset
>>= 3;
3586 static int dissect_Reset_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3588 asn1_ctx_t asn1_ctx
;
3589 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3590 offset
= dissect_m2ap_Reset(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_Reset_PDU
);
3591 offset
+= 7; offset
>>= 3;
3594 static int dissect_ResetType_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3596 asn1_ctx_t asn1_ctx
;
3597 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3598 offset
= dissect_m2ap_ResetType(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_ResetType_PDU
);
3599 offset
+= 7; offset
>>= 3;
3602 static int dissect_ResetAcknowledge_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3604 asn1_ctx_t asn1_ctx
;
3605 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3606 offset
= dissect_m2ap_ResetAcknowledge(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_ResetAcknowledge_PDU
);
3607 offset
+= 7; offset
>>= 3;
3610 static int dissect_MBMS_Service_associatedLogicalM2_ConnectionListResAck_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3612 asn1_ctx_t asn1_ctx
;
3613 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3614 offset
= dissect_m2ap_MBMS_Service_associatedLogicalM2_ConnectionListResAck(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_MBMS_Service_associatedLogicalM2_ConnectionListResAck_PDU
);
3615 offset
+= 7; offset
>>= 3;
3618 static int dissect_PrivateMessage_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3620 asn1_ctx_t asn1_ctx
;
3621 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3622 offset
= dissect_m2ap_PrivateMessage(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_PrivateMessage_PDU
);
3623 offset
+= 7; offset
>>= 3;
3626 static int dissect_MbmsServiceCountingRequest_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3628 asn1_ctx_t asn1_ctx
;
3629 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3630 offset
= dissect_m2ap_MbmsServiceCountingRequest(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_MbmsServiceCountingRequest_PDU
);
3631 offset
+= 7; offset
>>= 3;
3634 static int dissect_MBMS_Counting_Request_Session_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3636 asn1_ctx_t asn1_ctx
;
3637 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3638 offset
= dissect_m2ap_MBMS_Counting_Request_Session(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_MBMS_Counting_Request_Session_PDU
);
3639 offset
+= 7; offset
>>= 3;
3642 static int dissect_MBMS_Counting_Request_SessionIE_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3644 asn1_ctx_t asn1_ctx
;
3645 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3646 offset
= dissect_m2ap_MBMS_Counting_Request_SessionIE(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_MBMS_Counting_Request_SessionIE_PDU
);
3647 offset
+= 7; offset
>>= 3;
3650 static int dissect_MbmsServiceCountingResponse_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3652 asn1_ctx_t asn1_ctx
;
3653 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3654 offset
= dissect_m2ap_MbmsServiceCountingResponse(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_MbmsServiceCountingResponse_PDU
);
3655 offset
+= 7; offset
>>= 3;
3658 static int dissect_MbmsServiceCountingFailure_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3660 asn1_ctx_t asn1_ctx
;
3661 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3662 offset
= dissect_m2ap_MbmsServiceCountingFailure(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_MbmsServiceCountingFailure_PDU
);
3663 offset
+= 7; offset
>>= 3;
3666 static int dissect_MbmsServiceCountingResultsReport_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3668 asn1_ctx_t asn1_ctx
;
3669 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3670 offset
= dissect_m2ap_MbmsServiceCountingResultsReport(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_MbmsServiceCountingResultsReport_PDU
);
3671 offset
+= 7; offset
>>= 3;
3674 static int dissect_MBMS_Counting_Result_List_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3676 asn1_ctx_t asn1_ctx
;
3677 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3678 offset
= dissect_m2ap_MBMS_Counting_Result_List(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_MBMS_Counting_Result_List_PDU
);
3679 offset
+= 7; offset
>>= 3;
3682 static int dissect_MBMS_Counting_Result_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3684 asn1_ctx_t asn1_ctx
;
3685 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3686 offset
= dissect_m2ap_MBMS_Counting_Result(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_MBMS_Counting_Result_PDU
);
3687 offset
+= 7; offset
>>= 3;
3690 static int dissect_MbmsOverloadNotification_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3692 asn1_ctx_t asn1_ctx
;
3693 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3694 offset
= dissect_m2ap_MbmsOverloadNotification(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_MbmsOverloadNotification_PDU
);
3695 offset
+= 7; offset
>>= 3;
3698 static int dissect_Overload_Status_Per_PMCH_List_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3700 asn1_ctx_t asn1_ctx
;
3701 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3702 offset
= dissect_m2ap_Overload_Status_Per_PMCH_List(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_Overload_Status_Per_PMCH_List_PDU
);
3703 offset
+= 7; offset
>>= 3;
3706 static int dissect_PMCH_Overload_Status_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3708 asn1_ctx_t asn1_ctx
;
3709 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3710 offset
= dissect_m2ap_PMCH_Overload_Status(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_PMCH_Overload_Status_PDU
);
3711 offset
+= 7; offset
>>= 3;
3714 static int dissect_Active_MBMS_Session_List_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3716 asn1_ctx_t asn1_ctx
;
3717 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3718 offset
= dissect_m2ap_Active_MBMS_Session_List(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_Active_MBMS_Session_List_PDU
);
3719 offset
+= 7; offset
>>= 3;
3722 static int dissect_M2AP_PDU_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3724 asn1_ctx_t asn1_ctx
;
3725 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
3726 offset
= dissect_m2ap_M2AP_PDU(tvb
, offset
, &asn1_ctx
, tree
, hf_m2ap_M2AP_PDU_PDU
);
3727 offset
+= 7; offset
>>= 3;
3733 dissect_ProtocolIEFieldValue(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
3735 return (dissector_try_uint_with_data(m2ap_ies_dissector_table
, ProtocolIE_ID
, tvb
, pinfo
, tree
, false, NULL
)) ? tvb_captured_length(tvb
) : 0;
3739 dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
3741 return (dissector_try_uint_with_data(m2ap_extension_dissector_table
, ProtocolIE_ID
, tvb
, pinfo
, tree
, false, NULL
)) ? tvb_captured_length(tvb
) : 0;
3745 dissect_InitiatingMessageValue(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
3747 return (dissector_try_uint_with_data(m2ap_proc_imsg_dissector_table
, ProcedureCode
, tvb
, pinfo
, tree
, false, NULL
)) ? tvb_captured_length(tvb
) : 0;
3751 dissect_SuccessfulOutcomeValue(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
3753 return (dissector_try_uint_with_data(m2ap_proc_sout_dissector_table
, ProcedureCode
, tvb
, pinfo
, tree
, false, NULL
)) ? tvb_captured_length(tvb
) : 0;
3757 dissect_UnsuccessfulOutcomeValue(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
3759 return (dissector_try_uint_with_data(m2ap_proc_uout_dissector_table
, ProcedureCode
, tvb
, pinfo
, tree
, false, NULL
)) ? tvb_captured_length(tvb
) : 0;
3764 dissect_m2ap(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void* data _U_
)
3766 proto_item
*m2ap_item
= NULL
;
3767 proto_tree
*m2ap_tree
= NULL
;
3769 /* make entry in the Protocol column on summary display */
3770 col_set_str(pinfo
->cinfo
, COL_PROTOCOL
, PSNAME
);
3771 col_clear_fence(pinfo
->cinfo
, COL_INFO
);
3772 col_clear(pinfo
->cinfo
, COL_INFO
);
3774 m2ap_item
= proto_tree_add_item(tree
, proto_m2ap
, tvb
, 0, -1, ENC_NA
);
3775 m2ap_tree
= proto_item_add_subtree(m2ap_item
, ett_m2ap
);
3777 dissect_M2AP_PDU_PDU(tvb
, pinfo
, m2ap_tree
, NULL
);
3779 return tvb_captured_length(tvb
);
3783 proto_register_m2ap(void) {
3785 /* List of fields */
3786 static hf_register_info hf
[] = {
3787 { &hf_m2ap_IPAddress_v4
,
3788 { "IPAddress", "m2ap.IPAddress_v4",
3789 FT_IPv4
, BASE_NONE
, NULL
, 0,
3792 { &hf_m2ap_IPAddress_v6
,
3793 { "IPAddress", "m2ap.IPAddress_v6",
3794 FT_IPv6
, BASE_NONE
, NULL
, 0,
3797 { &hf_m2ap_AdditionalConfigParameters_PDU
,
3798 { "AdditionalConfigParameters", "m2ap.AdditionalConfigParameters_element",
3799 FT_NONE
, BASE_NONE
, NULL
, 0,
3801 { &hf_m2ap_Cause_PDU
,
3802 { "Cause", "m2ap.Cause",
3803 FT_UINT32
, BASE_DEC
, VALS(m2ap_Cause_vals
), 0,
3805 { &hf_m2ap_CriticalityDiagnostics_PDU
,
3806 { "CriticalityDiagnostics", "m2ap.CriticalityDiagnostics_element",
3807 FT_NONE
, BASE_NONE
, NULL
, 0,
3809 { &hf_m2ap_ENB_MBMS_Configuration_data_Item_PDU
,
3810 { "ENB-MBMS-Configuration-data-Item", "m2ap.ENB_MBMS_Configuration_data_Item_element",
3811 FT_NONE
, BASE_NONE
, NULL
, 0,
3813 { &hf_m2ap_ENB_MBMS_Configuration_data_ConfigUpdate_Item_PDU
,
3814 { "ENB-MBMS-Configuration-data-ConfigUpdate-Item", "m2ap.ENB_MBMS_Configuration_data_ConfigUpdate_Item",
3815 FT_UINT32
, BASE_DEC
, VALS(m2ap_ENB_MBMS_Configuration_data_ConfigUpdate_Item_vals
), 0,
3817 { &hf_m2ap_ENB_MBMS_M2AP_ID_PDU
,
3818 { "ENB-MBMS-M2AP-ID", "m2ap.ENB_MBMS_M2AP_ID",
3819 FT_UINT32
, BASE_DEC
, NULL
, 0,
3821 { &hf_m2ap_ENBname_PDU
,
3822 { "ENBname", "m2ap.ENBname",
3823 FT_STRING
, BASE_NONE
, NULL
, 0,
3825 { &hf_m2ap_GlobalENB_ID_PDU
,
3826 { "GlobalENB-ID", "m2ap.GlobalENB_ID_element",
3827 FT_NONE
, BASE_NONE
, NULL
, 0,
3829 { &hf_m2ap_GlobalMCE_ID_PDU
,
3830 { "GlobalMCE-ID", "m2ap.GlobalMCE_ID_element",
3831 FT_NONE
, BASE_NONE
, NULL
, 0,
3833 { &hf_m2ap_MBMS_Service_associatedLogicalM2_ConnectionItem_PDU
,
3834 { "MBMS-Service-associatedLogicalM2-ConnectionItem", "m2ap.MBMS_Service_associatedLogicalM2_ConnectionItem_element",
3835 FT_NONE
, BASE_NONE
, NULL
, 0,
3837 { &hf_m2ap_MBMS_Service_Area_PDU
,
3838 { "MBMS-Service-Area", "m2ap.MBMS_Service_Area",
3839 FT_BYTES
, BASE_NONE
, NULL
, 0,
3841 { &hf_m2ap_MBMS_Session_ID_PDU
,
3842 { "MBMS-Session-ID", "m2ap.MBMS_Session_ID",
3843 FT_BYTES
, BASE_NONE
, NULL
, 0,
3845 { &hf_m2ap_MBSFN_Area_ID_PDU
,
3846 { "MBSFN-Area-ID", "m2ap.MBSFN_Area_ID",
3847 FT_UINT32
, BASE_DEC
, NULL
, 0,
3849 { &hf_m2ap_MBSFN_Subframe_Configuration_PDU
,
3850 { "MBSFN-Subframe-Configuration", "m2ap.MBSFN_Subframe_Configuration_element",
3851 FT_NONE
, BASE_NONE
, NULL
, 0,
3853 { &hf_m2ap_MCCH_Update_Time_PDU
,
3854 { "MCCH-Update-Time", "m2ap.MCCH_Update_Time",
3855 FT_UINT32
, BASE_DEC
, NULL
, 0,
3857 { &hf_m2ap_MCCHrelatedBCCH_ConfigPerMBSFNArea_Item_PDU
,
3858 { "MCCHrelatedBCCH-ConfigPerMBSFNArea-Item", "m2ap.MCCHrelatedBCCH_ConfigPerMBSFNArea_Item_element",
3859 FT_NONE
, BASE_NONE
, NULL
, 0,
3861 { &hf_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item_PDU
,
3862 { "MCCHrelatedBCCH-ExtConfigPerMBSFNArea-Item", "m2ap.MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item_element",
3863 FT_NONE
, BASE_NONE
, NULL
, 0,
3865 { &hf_m2ap_MCE_MBMS_M2AP_ID_PDU
,
3866 { "MCE-MBMS-M2AP-ID", "m2ap.MCE_MBMS_M2AP_ID",
3867 FT_UINT32
, BASE_DEC
, NULL
, 0,
3869 { &hf_m2ap_MCEname_PDU
,
3870 { "MCEname", "m2ap.MCEname",
3871 FT_STRING
, BASE_NONE
, NULL
, 0,
3873 { &hf_m2ap_MCH_Scheduling_PeriodExtended_PDU
,
3874 { "MCH-Scheduling-PeriodExtended", "m2ap.MCH_Scheduling_PeriodExtended",
3875 FT_UINT32
, BASE_DEC
, VALS(m2ap_MCH_Scheduling_PeriodExtended_vals
), 0,
3877 { &hf_m2ap_MCH_Scheduling_PeriodExtended2_PDU
,
3878 { "MCH-Scheduling-PeriodExtended2", "m2ap.MCH_Scheduling_PeriodExtended2",
3879 FT_UINT32
, BASE_DEC
, VALS(m2ap_MCH_Scheduling_PeriodExtended2_vals
), 0,
3881 { &hf_m2ap_Modulation_Coding_Scheme2_PDU
,
3882 { "Modulation-Coding-Scheme2", "m2ap.Modulation_Coding_Scheme2",
3883 FT_UINT32
, BASE_DEC
, NULL
, 0,
3885 { &hf_m2ap_Modification_PeriodExtended_PDU
,
3886 { "Modification-PeriodExtended", "m2ap.Modification_PeriodExtended",
3887 FT_UINT32
, BASE_DEC
, VALS(m2ap_Modification_PeriodExtended_vals
), 0,
3889 { &hf_m2ap_Common_Subframe_Allocation_Period_PDU
,
3890 { "Common-Subframe-Allocation-Period", "m2ap.Common_Subframe_Allocation_Period",
3891 FT_UINT32
, BASE_DEC
, VALS(m2ap_Common_Subframe_Allocation_Period_vals
), 0,
3893 { &hf_m2ap_Repetition_PeriodExtended_PDU
,
3894 { "Repetition-PeriodExtended", "m2ap.Repetition_PeriodExtended",
3895 FT_UINT32
, BASE_DEC
, VALS(m2ap_Repetition_PeriodExtended_vals
), 0,
3897 { &hf_m2ap_SC_PTM_Information_PDU
,
3898 { "SC-PTM-Information", "m2ap.SC_PTM_Information_element",
3899 FT_NONE
, BASE_NONE
, NULL
, 0,
3901 { &hf_m2ap_Subcarrier_SpacingMBMS_PDU
,
3902 { "Subcarrier-SpacingMBMS", "m2ap.Subcarrier_SpacingMBMS",
3903 FT_UINT32
, BASE_DEC
, VALS(m2ap_Subcarrier_SpacingMBMS_vals
), 0,
3905 { &hf_m2ap_SubframeAllocationExtended_PDU
,
3906 { "SubframeAllocationExtended", "m2ap.SubframeAllocationExtended",
3907 FT_UINT32
, BASE_DEC
, VALS(m2ap_SubframeAllocationExtended_vals
), 0,
3909 { &hf_m2ap_SubframeAllocationFurtherExtension_PDU
,
3910 { "SubframeAllocationFurtherExtension", "m2ap.SubframeAllocationFurtherExtension",
3911 FT_UINT32
, BASE_DEC
, VALS(m2ap_SubframeAllocationFurtherExtension_vals
), 0,
3913 { &hf_m2ap_TimeToWait_PDU
,
3914 { "TimeToWait", "m2ap.TimeToWait",
3915 FT_UINT32
, BASE_DEC
, VALS(m2ap_TimeToWait_vals
), 0,
3917 { &hf_m2ap_TMGI_PDU
,
3918 { "TMGI", "m2ap.TMGI_element",
3919 FT_NONE
, BASE_NONE
, NULL
, 0,
3921 { &hf_m2ap_TNL_Information_PDU
,
3922 { "TNL-Information", "m2ap.TNL_Information_element",
3923 FT_NONE
, BASE_NONE
, NULL
, 0,
3925 { &hf_m2ap_SessionStartRequest_PDU
,
3926 { "SessionStartRequest", "m2ap.SessionStartRequest_element",
3927 FT_NONE
, BASE_NONE
, NULL
, 0,
3929 { &hf_m2ap_SessionStartResponse_PDU
,
3930 { "SessionStartResponse", "m2ap.SessionStartResponse_element",
3931 FT_NONE
, BASE_NONE
, NULL
, 0,
3933 { &hf_m2ap_SessionStartFailure_PDU
,
3934 { "SessionStartFailure", "m2ap.SessionStartFailure_element",
3935 FT_NONE
, BASE_NONE
, NULL
, 0,
3937 { &hf_m2ap_SessionStopRequest_PDU
,
3938 { "SessionStopRequest", "m2ap.SessionStopRequest_element",
3939 FT_NONE
, BASE_NONE
, NULL
, 0,
3941 { &hf_m2ap_SessionStopResponse_PDU
,
3942 { "SessionStopResponse", "m2ap.SessionStopResponse_element",
3943 FT_NONE
, BASE_NONE
, NULL
, 0,
3945 { &hf_m2ap_SessionUpdateRequest_PDU
,
3946 { "SessionUpdateRequest", "m2ap.SessionUpdateRequest_element",
3947 FT_NONE
, BASE_NONE
, NULL
, 0,
3949 { &hf_m2ap_SessionUpdateResponse_PDU
,
3950 { "SessionUpdateResponse", "m2ap.SessionUpdateResponse_element",
3951 FT_NONE
, BASE_NONE
, NULL
, 0,
3953 { &hf_m2ap_SessionUpdateFailure_PDU
,
3954 { "SessionUpdateFailure", "m2ap.SessionUpdateFailure_element",
3955 FT_NONE
, BASE_NONE
, NULL
, 0,
3957 { &hf_m2ap_MbmsSchedulingInformation_PDU
,
3958 { "MbmsSchedulingInformation", "m2ap.MbmsSchedulingInformation_element",
3959 FT_NONE
, BASE_NONE
, NULL
, 0,
3961 { &hf_m2ap_MBSFN_Area_Configuration_List_PDU
,
3962 { "MBSFN-Area-Configuration-List", "m2ap.MBSFN_Area_Configuration_List",
3963 FT_UINT32
, BASE_DEC
, NULL
, 0,
3965 { &hf_m2ap_PMCH_Configuration_List_PDU
,
3966 { "PMCH-Configuration-List", "m2ap.PMCH_Configuration_List",
3967 FT_UINT32
, BASE_DEC
, NULL
, 0,
3969 { &hf_m2ap_PMCH_Configuration_Item_PDU
,
3970 { "PMCH-Configuration-Item", "m2ap.PMCH_Configuration_Item_element",
3971 FT_NONE
, BASE_NONE
, NULL
, 0,
3973 { &hf_m2ap_MBSFN_Subframe_ConfigurationList_PDU
,
3974 { "MBSFN-Subframe-ConfigurationList", "m2ap.MBSFN_Subframe_ConfigurationList",
3975 FT_UINT32
, BASE_DEC
, NULL
, 0,
3977 { &hf_m2ap_MBMS_Suspension_Notification_List_PDU
,
3978 { "MBMS-Suspension-Notification-List", "m2ap.MBMS_Suspension_Notification_List",
3979 FT_UINT32
, BASE_DEC
, NULL
, 0,
3981 { &hf_m2ap_MBMS_Suspension_Notification_Item_PDU
,
3982 { "MBMS-Suspension-Notification-Item", "m2ap.MBMS_Suspension_Notification_Item_element",
3983 FT_NONE
, BASE_NONE
, NULL
, 0,
3985 { &hf_m2ap_MbmsSchedulingInformationResponse_PDU
,
3986 { "MbmsSchedulingInformationResponse", "m2ap.MbmsSchedulingInformationResponse_element",
3987 FT_NONE
, BASE_NONE
, NULL
, 0,
3989 { &hf_m2ap_M2SetupRequest_PDU
,
3990 { "M2SetupRequest", "m2ap.M2SetupRequest_element",
3991 FT_NONE
, BASE_NONE
, NULL
, 0,
3993 { &hf_m2ap_ENB_MBMS_Configuration_data_List_PDU
,
3994 { "ENB-MBMS-Configuration-data-List", "m2ap.ENB_MBMS_Configuration_data_List",
3995 FT_UINT32
, BASE_DEC
, NULL
, 0,
3997 { &hf_m2ap_M2SetupResponse_PDU
,
3998 { "M2SetupResponse", "m2ap.M2SetupResponse_element",
3999 FT_NONE
, BASE_NONE
, NULL
, 0,
4001 { &hf_m2ap_MCCHrelatedBCCH_ConfigPerMBSFNArea_PDU
,
4002 { "MCCHrelatedBCCH-ConfigPerMBSFNArea", "m2ap.MCCHrelatedBCCH_ConfigPerMBSFNArea",
4003 FT_UINT32
, BASE_DEC
, NULL
, 0,
4005 { &hf_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_PDU
,
4006 { "MCCHrelatedBCCH-ExtConfigPerMBSFNArea", "m2ap.MCCHrelatedBCCH_ExtConfigPerMBSFNArea",
4007 FT_UINT32
, BASE_DEC
, NULL
, 0,
4009 { &hf_m2ap_M2SetupFailure_PDU
,
4010 { "M2SetupFailure", "m2ap.M2SetupFailure_element",
4011 FT_NONE
, BASE_NONE
, NULL
, 0,
4013 { &hf_m2ap_ENBConfigurationUpdate_PDU
,
4014 { "ENBConfigurationUpdate", "m2ap.ENBConfigurationUpdate_element",
4015 FT_NONE
, BASE_NONE
, NULL
, 0,
4017 { &hf_m2ap_ENB_MBMS_Configuration_data_List_ConfigUpdate_PDU
,
4018 { "ENB-MBMS-Configuration-data-List-ConfigUpdate", "m2ap.ENB_MBMS_Configuration_data_List_ConfigUpdate",
4019 FT_UINT32
, BASE_DEC
, NULL
, 0,
4021 { &hf_m2ap_ENBConfigurationUpdateAcknowledge_PDU
,
4022 { "ENBConfigurationUpdateAcknowledge", "m2ap.ENBConfigurationUpdateAcknowledge_element",
4023 FT_NONE
, BASE_NONE
, NULL
, 0,
4025 { &hf_m2ap_ENBConfigurationUpdateFailure_PDU
,
4026 { "ENBConfigurationUpdateFailure", "m2ap.ENBConfigurationUpdateFailure_element",
4027 FT_NONE
, BASE_NONE
, NULL
, 0,
4029 { &hf_m2ap_MCEConfigurationUpdate_PDU
,
4030 { "MCEConfigurationUpdate", "m2ap.MCEConfigurationUpdate_element",
4031 FT_NONE
, BASE_NONE
, NULL
, 0,
4033 { &hf_m2ap_MCEConfigurationUpdateAcknowledge_PDU
,
4034 { "MCEConfigurationUpdateAcknowledge", "m2ap.MCEConfigurationUpdateAcknowledge_element",
4035 FT_NONE
, BASE_NONE
, NULL
, 0,
4037 { &hf_m2ap_MCEConfigurationUpdateFailure_PDU
,
4038 { "MCEConfigurationUpdateFailure", "m2ap.MCEConfigurationUpdateFailure_element",
4039 FT_NONE
, BASE_NONE
, NULL
, 0,
4041 { &hf_m2ap_ErrorIndication_PDU
,
4042 { "ErrorIndication", "m2ap.ErrorIndication_element",
4043 FT_NONE
, BASE_NONE
, NULL
, 0,
4045 { &hf_m2ap_Reset_PDU
,
4046 { "Reset", "m2ap.Reset_element",
4047 FT_NONE
, BASE_NONE
, NULL
, 0,
4049 { &hf_m2ap_ResetType_PDU
,
4050 { "ResetType", "m2ap.ResetType",
4051 FT_UINT32
, BASE_DEC
, VALS(m2ap_ResetType_vals
), 0,
4053 { &hf_m2ap_ResetAcknowledge_PDU
,
4054 { "ResetAcknowledge", "m2ap.ResetAcknowledge_element",
4055 FT_NONE
, BASE_NONE
, NULL
, 0,
4057 { &hf_m2ap_MBMS_Service_associatedLogicalM2_ConnectionListResAck_PDU
,
4058 { "MBMS-Service-associatedLogicalM2-ConnectionListResAck", "m2ap.MBMS_Service_associatedLogicalM2_ConnectionListResAck",
4059 FT_UINT32
, BASE_DEC
, NULL
, 0,
4061 { &hf_m2ap_PrivateMessage_PDU
,
4062 { "PrivateMessage", "m2ap.PrivateMessage_element",
4063 FT_NONE
, BASE_NONE
, NULL
, 0,
4065 { &hf_m2ap_MbmsServiceCountingRequest_PDU
,
4066 { "MbmsServiceCountingRequest", "m2ap.MbmsServiceCountingRequest_element",
4067 FT_NONE
, BASE_NONE
, NULL
, 0,
4069 { &hf_m2ap_MBMS_Counting_Request_Session_PDU
,
4070 { "MBMS-Counting-Request-Session", "m2ap.MBMS_Counting_Request_Session",
4071 FT_UINT32
, BASE_DEC
, NULL
, 0,
4073 { &hf_m2ap_MBMS_Counting_Request_SessionIE_PDU
,
4074 { "MBMS-Counting-Request-SessionIE", "m2ap.MBMS_Counting_Request_SessionIE_element",
4075 FT_NONE
, BASE_NONE
, NULL
, 0,
4077 { &hf_m2ap_MbmsServiceCountingResponse_PDU
,
4078 { "MbmsServiceCountingResponse", "m2ap.MbmsServiceCountingResponse_element",
4079 FT_NONE
, BASE_NONE
, NULL
, 0,
4081 { &hf_m2ap_MbmsServiceCountingFailure_PDU
,
4082 { "MbmsServiceCountingFailure", "m2ap.MbmsServiceCountingFailure_element",
4083 FT_NONE
, BASE_NONE
, NULL
, 0,
4085 { &hf_m2ap_MbmsServiceCountingResultsReport_PDU
,
4086 { "MbmsServiceCountingResultsReport", "m2ap.MbmsServiceCountingResultsReport_element",
4087 FT_NONE
, BASE_NONE
, NULL
, 0,
4089 { &hf_m2ap_MBMS_Counting_Result_List_PDU
,
4090 { "MBMS-Counting-Result-List", "m2ap.MBMS_Counting_Result_List",
4091 FT_UINT32
, BASE_DEC
, NULL
, 0,
4093 { &hf_m2ap_MBMS_Counting_Result_PDU
,
4094 { "MBMS-Counting-Result", "m2ap.MBMS_Counting_Result_element",
4095 FT_NONE
, BASE_NONE
, NULL
, 0,
4097 { &hf_m2ap_MbmsOverloadNotification_PDU
,
4098 { "MbmsOverloadNotification", "m2ap.MbmsOverloadNotification_element",
4099 FT_NONE
, BASE_NONE
, NULL
, 0,
4101 { &hf_m2ap_Overload_Status_Per_PMCH_List_PDU
,
4102 { "Overload-Status-Per-PMCH-List", "m2ap.Overload_Status_Per_PMCH_List",
4103 FT_UINT32
, BASE_DEC
, NULL
, 0,
4105 { &hf_m2ap_PMCH_Overload_Status_PDU
,
4106 { "PMCH-Overload-Status", "m2ap.PMCH_Overload_Status",
4107 FT_UINT32
, BASE_DEC
, VALS(m2ap_PMCH_Overload_Status_vals
), 0,
4109 { &hf_m2ap_Active_MBMS_Session_List_PDU
,
4110 { "Active-MBMS-Session-List", "m2ap.Active_MBMS_Session_List",
4111 FT_UINT32
, BASE_DEC
, NULL
, 0,
4113 { &hf_m2ap_M2AP_PDU_PDU
,
4114 { "M2AP-PDU", "m2ap.M2AP_PDU",
4115 FT_UINT32
, BASE_DEC
, VALS(m2ap_M2AP_PDU_vals
), 0,
4118 { "local", "m2ap.local",
4119 FT_UINT32
, BASE_DEC
, NULL
, 0,
4120 "INTEGER_0_maxPrivateIEs", HFILL
}},
4122 { "global", "m2ap.global",
4123 FT_OID
, BASE_NONE
, NULL
, 0,
4124 "OBJECT_IDENTIFIER", HFILL
}},
4125 { &hf_m2ap_ProtocolIE_Container_item
,
4126 { "ProtocolIE-Field", "m2ap.ProtocolIE_Field_element",
4127 FT_NONE
, BASE_NONE
, NULL
, 0,
4131 FT_UINT32
, BASE_DEC
|BASE_EXT_STRING
, &m2ap_ProtocolIE_ID_vals_ext
, 0,
4132 "ProtocolIE_ID", HFILL
}},
4133 { &hf_m2ap_criticality
,
4134 { "criticality", "m2ap.criticality",
4135 FT_UINT32
, BASE_DEC
, VALS(m2ap_Criticality_vals
), 0,
4137 { &hf_m2ap_ie_field_value
,
4138 { "value", "m2ap.value_element",
4139 FT_NONE
, BASE_NONE
, NULL
, 0,
4140 "T_ie_field_value", HFILL
}},
4141 { &hf_m2ap_ProtocolExtensionContainer_item
,
4142 { "ProtocolExtensionField", "m2ap.ProtocolExtensionField_element",
4143 FT_NONE
, BASE_NONE
, NULL
, 0,
4147 FT_UINT32
, BASE_DEC
|BASE_EXT_STRING
, &m2ap_ProtocolIE_ID_vals_ext
, 0,
4148 "ProtocolIE_ID", HFILL
}},
4149 { &hf_m2ap_extensionValue
,
4150 { "extensionValue", "m2ap.extensionValue_element",
4151 FT_NONE
, BASE_NONE
, NULL
, 0,
4153 { &hf_m2ap_PrivateIE_Container_item
,
4154 { "PrivateIE-Field", "m2ap.PrivateIE_Field_element",
4155 FT_NONE
, BASE_NONE
, NULL
, 0,
4157 { &hf_m2ap_private_id
,
4159 FT_UINT32
, BASE_DEC
, VALS(m2ap_PrivateIE_ID_vals
), 0,
4160 "PrivateIE_ID", HFILL
}},
4161 { &hf_m2ap_private_value
,
4162 { "value", "m2ap.value_element",
4163 FT_NONE
, BASE_NONE
, NULL
, 0,
4164 "T_private_value", HFILL
}},
4165 { &hf_m2ap_pmch_Bandwidth
,
4166 { "pmch-Bandwidth", "m2ap.pmch_Bandwidth",
4167 FT_UINT32
, BASE_DEC
, VALS(m2ap_PMCH_Bandwidth_vals
), 0,
4169 { &hf_m2ap_iE_Extensions
,
4170 { "iE-Extensions", "m2ap.iE_Extensions",
4171 FT_UINT32
, BASE_DEC
, NULL
, 0,
4172 "ProtocolExtensionContainer", HFILL
}},
4173 { &hf_m2ap_priorityLevel
,
4174 { "priorityLevel", "m2ap.priorityLevel",
4175 FT_UINT32
, BASE_DEC
, VALS(m2ap_PriorityLevel_vals
), 0,
4177 { &hf_m2ap_pre_emptionCapability
,
4178 { "pre-emptionCapability", "m2ap.pre_emptionCapability",
4179 FT_UINT32
, BASE_DEC
, VALS(m2ap_Pre_emptionCapability_vals
), 0,
4181 { &hf_m2ap_pre_emptionVulnerability
,
4182 { "pre-emptionVulnerability", "m2ap.pre_emptionVulnerability",
4183 FT_UINT32
, BASE_DEC
, VALS(m2ap_Pre_emptionVulnerability_vals
), 0,
4185 { &hf_m2ap_radioNetwork
,
4186 { "radioNetwork", "m2ap.radioNetwork",
4187 FT_UINT32
, BASE_DEC
, VALS(m2ap_CauseRadioNetwork_vals
), 0,
4188 "CauseRadioNetwork", HFILL
}},
4189 { &hf_m2ap_transport
,
4190 { "transport", "m2ap.transport",
4191 FT_UINT32
, BASE_DEC
, VALS(m2ap_CauseTransport_vals
), 0,
4192 "CauseTransport", HFILL
}},
4194 { "nAS", "m2ap.nAS",
4195 FT_UINT32
, BASE_DEC
, VALS(m2ap_CauseNAS_vals
), 0,
4196 "CauseNAS", HFILL
}},
4197 { &hf_m2ap_protocol
,
4198 { "protocol", "m2ap.protocol",
4199 FT_UINT32
, BASE_DEC
, VALS(m2ap_CauseProtocol_vals
), 0,
4200 "CauseProtocol", HFILL
}},
4202 { "misc", "m2ap.misc",
4203 FT_UINT32
, BASE_DEC
, VALS(m2ap_CauseMisc_vals
), 0,
4204 "CauseMisc", HFILL
}},
4206 { "eCGI", "m2ap.eCGI_element",
4207 FT_NONE
, BASE_NONE
, NULL
, 0,
4209 { &hf_m2ap_cellReservationInfo
,
4210 { "cellReservationInfo", "m2ap.cellReservationInfo",
4211 FT_UINT32
, BASE_DEC
, VALS(m2ap_T_cellReservationInfo_vals
), 0,
4213 { &hf_m2ap_Cell_Information_List_item
,
4214 { "Cell-Information", "m2ap.Cell_Information_element",
4215 FT_NONE
, BASE_NONE
, NULL
, 0,
4217 { &hf_m2ap_procedureCode
,
4218 { "procedureCode", "m2ap.procedureCode",
4219 FT_UINT32
, BASE_DEC
|BASE_EXT_STRING
, &m2ap_ProcedureCode_vals_ext
, 0,
4221 { &hf_m2ap_triggeringMessage
,
4222 { "triggeringMessage", "m2ap.triggeringMessage",
4223 FT_UINT32
, BASE_DEC
, VALS(m2ap_TriggeringMessage_vals
), 0,
4225 { &hf_m2ap_procedureCriticality
,
4226 { "procedureCriticality", "m2ap.procedureCriticality",
4227 FT_UINT32
, BASE_DEC
, VALS(m2ap_Criticality_vals
), 0,
4228 "Criticality", HFILL
}},
4229 { &hf_m2ap_iEsCriticalityDiagnostics
,
4230 { "iEsCriticalityDiagnostics", "m2ap.iEsCriticalityDiagnostics",
4231 FT_UINT32
, BASE_DEC
, NULL
, 0,
4232 "CriticalityDiagnostics_IE_List", HFILL
}},
4233 { &hf_m2ap_CriticalityDiagnostics_IE_List_item
,
4234 { "CriticalityDiagnostics-IE-List item", "m2ap.CriticalityDiagnostics_IE_List_item_element",
4235 FT_NONE
, BASE_NONE
, NULL
, 0,
4237 { &hf_m2ap_iECriticality
,
4238 { "iECriticality", "m2ap.iECriticality",
4239 FT_UINT32
, BASE_DEC
, VALS(m2ap_Criticality_vals
), 0,
4240 "Criticality", HFILL
}},
4242 { "iE-ID", "m2ap.iE_ID",
4243 FT_UINT32
, BASE_DEC
|BASE_EXT_STRING
, &m2ap_ProtocolIE_ID_vals_ext
, 0,
4244 "ProtocolIE_ID", HFILL
}},
4245 { &hf_m2ap_typeOfError
,
4246 { "typeOfError", "m2ap.typeOfError",
4247 FT_UINT32
, BASE_DEC
, VALS(m2ap_TypeOfError_vals
), 0,
4249 { &hf_m2ap_pLMN_Identity
,
4250 { "pLMN-Identity", "m2ap.pLMN_Identity",
4251 FT_BYTES
, BASE_NONE
, NULL
, 0,
4253 { &hf_m2ap_eUTRANcellIdentifier
,
4254 { "eUTRANcellIdentifier", "m2ap.eUTRANcellIdentifier",
4255 FT_BYTES
, BASE_NONE
, NULL
, 0,
4257 { &hf_m2ap_macro_eNB_ID
,
4258 { "macro-eNB-ID", "m2ap.macro_eNB_ID",
4259 FT_BYTES
, BASE_NONE
, NULL
, 0,
4260 "BIT_STRING_SIZE_20", HFILL
}},
4261 { &hf_m2ap_short_Macro_eNB_ID
,
4262 { "short-Macro-eNB-ID", "m2ap.short_Macro_eNB_ID",
4263 FT_BYTES
, BASE_NONE
, NULL
, 0,
4264 "BIT_STRING_SIZE_18", HFILL
}},
4265 { &hf_m2ap_long_Macro_eNB_ID
,
4266 { "long-Macro-eNB-ID", "m2ap.long_Macro_eNB_ID",
4267 FT_BYTES
, BASE_NONE
, NULL
, 0,
4268 "BIT_STRING_SIZE_21", HFILL
}},
4269 { &hf_m2ap_mbsfnSynchronisationArea
,
4270 { "mbsfnSynchronisationArea", "m2ap.mbsfnSynchronisationArea",
4271 FT_UINT32
, BASE_DEC
, NULL
, 0,
4272 "MBSFN_SynchronisationArea_ID", HFILL
}},
4273 { &hf_m2ap_mbmsServiceAreaList
,
4274 { "mbmsServiceAreaList", "m2ap.mbmsServiceAreaList",
4275 FT_UINT32
, BASE_DEC
, NULL
, 0,
4276 "MBMS_Service_Area_ID_List", HFILL
}},
4277 { &hf_m2ap_mBMSConfigData
,
4278 { "mBMSConfigData", "m2ap.mBMSConfigData_element",
4279 FT_NONE
, BASE_NONE
, NULL
, 0,
4280 "ENB_MBMS_Configuration_data_Item", HFILL
}},
4281 { &hf_m2ap_mBMS_E_RAB_MaximumBitrateDL
,
4282 { "mBMS-E-RAB-MaximumBitrateDL", "m2ap.mBMS_E_RAB_MaximumBitrateDL",
4283 FT_UINT64
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_bit_sec
), 0,
4284 "BitRate", HFILL
}},
4285 { &hf_m2ap_mBMS_E_RAB_GuaranteedBitrateDL
,
4286 { "mBMS-E-RAB-GuaranteedBitrateDL", "m2ap.mBMS_E_RAB_GuaranteedBitrateDL",
4287 FT_UINT64
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_bit_sec
), 0,
4288 "BitRate", HFILL
}},
4290 { "eNB-ID", "m2ap.eNB_ID",
4291 FT_UINT32
, BASE_DEC
, VALS(m2ap_ENB_ID_vals
), 0,
4294 { "mCE-ID", "m2ap.mCE_ID",
4295 FT_BYTES
, BASE_NONE
, NULL
, 0,
4297 { &hf_m2ap_MBMS_Cell_List_item
,
4298 { "ECGI", "m2ap.ECGI_element",
4299 FT_NONE
, BASE_NONE
, NULL
, 0,
4302 { "qCI", "m2ap.qCI",
4303 FT_UINT32
, BASE_DEC
, NULL
, 0,
4305 { &hf_m2ap_gbrQosInformation
,
4306 { "gbrQosInformation", "m2ap.gbrQosInformation_element",
4307 FT_NONE
, BASE_NONE
, NULL
, 0,
4308 "GBR_QosInformation", HFILL
}},
4309 { &hf_m2ap_allocationAndRetentionPriority
,
4310 { "allocationAndRetentionPriority", "m2ap.allocationAndRetentionPriority_element",
4311 FT_NONE
, BASE_NONE
, NULL
, 0,
4313 { &hf_m2ap_eNB_MBMS_M2AP_ID
,
4314 { "eNB-MBMS-M2AP-ID", "m2ap.eNB_MBMS_M2AP_ID",
4315 FT_UINT32
, BASE_DEC
, NULL
, 0,
4317 { &hf_m2ap_mCE_MBMS_M2AP_ID
,
4318 { "mCE-MBMS-M2AP-ID", "m2ap.mCE_MBMS_M2AP_ID",
4319 FT_UINT32
, BASE_DEC
, NULL
, 0,
4321 { &hf_m2ap_MBMS_Service_Area_ID_List_item
,
4322 { "MBMS-Service-Area", "m2ap.MBMS_Service_Area",
4323 FT_BYTES
, BASE_NONE
, NULL
, 0,
4325 { &hf_m2ap_MBMSsessionListPerPMCH_Item_item
,
4326 { "MBMSsessionListPerPMCH-Item item", "m2ap.MBMSsessionListPerPMCH_Item_item_element",
4327 FT_NONE
, BASE_NONE
, NULL
, 0,
4330 { "tmgi", "m2ap.tmgi_element",
4331 FT_NONE
, BASE_NONE
, NULL
, 0,
4334 { "lcid", "m2ap.lcid",
4335 FT_UINT32
, BASE_DEC
, NULL
, 0,
4337 { &hf_m2ap_MBMSsessionsToBeSuspendedListPerPMCH_Item_item
,
4338 { "MBMSsessionsToBeSuspendedListPerPMCH-Item item", "m2ap.MBMSsessionsToBeSuspendedListPerPMCH_Item_item_element",
4339 FT_NONE
, BASE_NONE
, NULL
, 0,
4341 { &hf_m2ap_radioframeAllocationPeriod
,
4342 { "radioframeAllocationPeriod", "m2ap.radioframeAllocationPeriod",
4343 FT_UINT32
, BASE_DEC
, VALS(m2ap_T_radioframeAllocationPeriod_vals
), 0,
4345 { &hf_m2ap_radioframeAllocationOffset
,
4346 { "radioframeAllocationOffset", "m2ap.radioframeAllocationOffset",
4347 FT_UINT32
, BASE_DEC
, NULL
, 0,
4348 "INTEGER_0_7", HFILL
}},
4349 { &hf_m2ap_subframeAllocation
,
4350 { "subframeAllocation", "m2ap.subframeAllocation",
4351 FT_UINT32
, BASE_DEC
, VALS(m2ap_T_subframeAllocation_vals
), 0,
4353 { &hf_m2ap_oneFrame
,
4354 { "oneFrame", "m2ap.oneFrame",
4355 FT_BYTES
, BASE_NONE
, NULL
, 0,
4356 "BIT_STRING_SIZE_6", HFILL
}},
4357 { &hf_m2ap_fourFrames
,
4358 { "fourFrames", "m2ap.fourFrames",
4359 FT_BYTES
, BASE_NONE
, NULL
, 0,
4360 "BIT_STRING_SIZE_24", HFILL
}},
4361 { &hf_m2ap_mbsfnArea
,
4362 { "mbsfnArea", "m2ap.mbsfnArea",
4363 FT_UINT32
, BASE_DEC
, NULL
, 0,
4364 "MBSFN_Area_ID", HFILL
}},
4365 { &hf_m2ap_pdcchLength
,
4366 { "pdcchLength", "m2ap.pdcchLength",
4367 FT_UINT32
, BASE_DEC
, VALS(m2ap_T_pdcchLength_vals
), 0,
4369 { &hf_m2ap_repetitionPeriod
,
4370 { "repetitionPeriod", "m2ap.repetitionPeriod",
4371 FT_UINT32
, BASE_DEC
, VALS(m2ap_T_repetitionPeriod_vals
), 0,
4374 { "offset", "m2ap.offset",
4375 FT_UINT32
, BASE_DEC
, NULL
, 0,
4376 "INTEGER_0_10", HFILL
}},
4377 { &hf_m2ap_modificationPeriod
,
4378 { "modificationPeriod", "m2ap.modificationPeriod",
4379 FT_UINT32
, BASE_DEC
, VALS(m2ap_T_modificationPeriod_vals
), 0,
4381 { &hf_m2ap_subframeAllocationInfo
,
4382 { "subframeAllocationInfo", "m2ap.subframeAllocationInfo",
4383 FT_BYTES
, BASE_NONE
, NULL
, 0,
4384 "BIT_STRING_SIZE_6", HFILL
}},
4385 { &hf_m2ap_modulationAndCodingScheme
,
4386 { "modulationAndCodingScheme", "m2ap.modulationAndCodingScheme",
4387 FT_UINT32
, BASE_DEC
, VALS(m2ap_T_modulationAndCodingScheme_vals
), 0,
4389 { &hf_m2ap_cellInformationList
,
4390 { "cellInformationList", "m2ap.cellInformationList",
4391 FT_UINT32
, BASE_DEC
, NULL
, 0,
4392 "Cell_Information_List", HFILL
}},
4393 { &hf_m2ap_repetitionPeriodExpanded
,
4394 { "repetitionPeriodExpanded", "m2ap.repetitionPeriodExpanded",
4395 FT_UINT32
, BASE_DEC
, VALS(m2ap_T_repetitionPeriodExpanded_vals
), 0,
4397 { &hf_m2ap_modificationPeriodExpanded
,
4398 { "modificationPeriodExpanded", "m2ap.modificationPeriodExpanded",
4399 FT_UINT32
, BASE_DEC
, VALS(m2ap_T_modificationPeriodExpanded_vals
), 0,
4401 { &hf_m2ap_subframeAllocationInfoExpanded
,
4402 { "subframeAllocationInfoExpanded", "m2ap.subframeAllocationInfoExpanded",
4403 FT_BYTES
, BASE_NONE
, NULL
, 0,
4404 "BIT_STRING_SIZE_10", HFILL
}},
4405 { &hf_m2ap_modulationAndCodingScheme_01
,
4406 { "modulationAndCodingScheme", "m2ap.modulationAndCodingScheme",
4407 FT_UINT32
, BASE_DEC
, VALS(m2ap_T_modulationAndCodingScheme_01_vals
), 0,
4408 "T_modulationAndCodingScheme_01", HFILL
}},
4409 { &hf_m2ap_subcarrier_SpacingMBMSExpanded
,
4410 { "subcarrier-SpacingMBMSExpanded", "m2ap.subcarrier_SpacingMBMSExpanded",
4411 FT_UINT32
, BASE_DEC
, VALS(m2ap_T_subcarrier_SpacingMBMSExpanded_vals
), 0,
4413 { &hf_m2ap_timeSeparation
,
4414 { "timeSeparation", "m2ap.timeSeparation",
4415 FT_UINT32
, BASE_DEC
, VALS(m2ap_T_timeSeparation_vals
), 0,
4417 { &hf_m2ap_allocatedSubframesEnd
,
4418 { "allocatedSubframesEnd", "m2ap.allocatedSubframesEnd",
4419 FT_UINT32
, BASE_DEC
, NULL
, 0,
4422 { "dataMCS", "m2ap.dataMCS",
4423 FT_UINT32
, BASE_DEC
, NULL
, 0,
4424 "INTEGER_0_28", HFILL
}},
4425 { &hf_m2ap_mchSchedulingPeriod
,
4426 { "mchSchedulingPeriod", "m2ap.mchSchedulingPeriod",
4427 FT_UINT32
, BASE_DEC
, VALS(m2ap_MCH_Scheduling_Period_vals
), 0,
4428 "MCH_Scheduling_Period", HFILL
}},
4429 { &hf_m2ap_mbmsCellList
,
4430 { "mbmsCellList", "m2ap.mbmsCellList",
4431 FT_UINT32
, BASE_DEC
, NULL
, 0,
4432 "MBMS_Cell_List", HFILL
}},
4433 { &hf_m2ap_mbms_E_RAB_QoS_Parameters
,
4434 { "mbms-E-RAB-QoS-Parameters", "m2ap.mbms_E_RAB_QoS_Parameters_element",
4435 FT_NONE
, BASE_NONE
, NULL
, 0,
4437 { &hf_m2ap_oneFrameExtension
,
4438 { "oneFrameExtension", "m2ap.oneFrameExtension",
4439 FT_BYTES
, BASE_NONE
, NULL
, 0,
4440 "BIT_STRING_SIZE_2", HFILL
}},
4441 { &hf_m2ap_fourFrameExtension
,
4442 { "fourFrameExtension", "m2ap.fourFrameExtension",
4443 FT_BYTES
, BASE_NONE
, NULL
, 0,
4444 "BIT_STRING_SIZE_8", HFILL
}},
4445 { &hf_m2ap_choice_extension
,
4446 { "choice-extension", "m2ap.choice_extension_element",
4447 FT_NONE
, BASE_NONE
, NULL
, 0,
4448 "ProtocolIE_Single_Container", HFILL
}},
4449 { &hf_m2ap_oneFrameFurtherExtension
,
4450 { "oneFrameFurtherExtension", "m2ap.oneFrameFurtherExtension",
4451 FT_BYTES
, BASE_NONE
, NULL
, 0,
4452 "BIT_STRING_SIZE_2", HFILL
}},
4453 { &hf_m2ap_fourFrameFurtherExtension
,
4454 { "fourFrameFurtherExtension", "m2ap.fourFrameFurtherExtension",
4455 FT_BYTES
, BASE_NONE
, NULL
, 0,
4456 "BIT_STRING_SIZE_8", HFILL
}},
4457 { &hf_m2ap_pLMNidentity
,
4458 { "pLMNidentity", "m2ap.pLMNidentity",
4459 FT_BYTES
, BASE_NONE
, NULL
, 0,
4460 "PLMN_Identity", HFILL
}},
4461 { &hf_m2ap_serviceID
,
4462 { "serviceID", "m2ap.serviceID",
4463 FT_BYTES
, BASE_NONE
, NULL
, 0,
4464 "OCTET_STRING_SIZE_3", HFILL
}},
4465 { &hf_m2ap_iPMCAddress
,
4466 { "iPMCAddress", "m2ap.iPMCAddress",
4467 FT_BYTES
, BASE_NONE
, NULL
, 0,
4468 "IPAddress", HFILL
}},
4469 { &hf_m2ap_iPSourceAddress
,
4470 { "iPSourceAddress", "m2ap.iPSourceAddress",
4471 FT_BYTES
, BASE_NONE
, NULL
, 0,
4472 "IPAddress", HFILL
}},
4473 { &hf_m2ap_gTP_TEID
,
4474 { "gTP-TEID", "m2ap.gTP_TEID",
4475 FT_BYTES
, BASE_NONE
, NULL
, 0,
4477 { &hf_m2ap_protocolIEs
,
4478 { "protocolIEs", "m2ap.protocolIEs",
4479 FT_UINT32
, BASE_DEC
, NULL
, 0,
4480 "ProtocolIE_Container", HFILL
}},
4481 { &hf_m2ap_MBSFN_Area_Configuration_List_item
,
4482 { "ProtocolIE-Container", "m2ap.ProtocolIE_Container",
4483 FT_UINT32
, BASE_DEC
, NULL
, 0,
4485 { &hf_m2ap_PMCH_Configuration_List_item
,
4486 { "ProtocolIE-Single-Container", "m2ap.ProtocolIE_Single_Container_element",
4487 FT_NONE
, BASE_NONE
, NULL
, 0,
4489 { &hf_m2ap_pmch_Configuration
,
4490 { "pmch-Configuration", "m2ap.pmch_Configuration_element",
4491 FT_NONE
, BASE_NONE
, NULL
, 0,
4493 { &hf_m2ap_mbms_Session_List
,
4494 { "mbms-Session-List", "m2ap.mbms_Session_List",
4495 FT_UINT32
, BASE_DEC
, NULL
, 0,
4496 "MBMSsessionListPerPMCH_Item", HFILL
}},
4497 { &hf_m2ap_MBSFN_Subframe_ConfigurationList_item
,
4498 { "ProtocolIE-Single-Container", "m2ap.ProtocolIE_Single_Container_element",
4499 FT_NONE
, BASE_NONE
, NULL
, 0,
4501 { &hf_m2ap_MBMS_Suspension_Notification_List_item
,
4502 { "ProtocolIE-Single-Container", "m2ap.ProtocolIE_Single_Container_element",
4503 FT_NONE
, BASE_NONE
, NULL
, 0,
4506 { "sfn", "m2ap.sfn",
4507 FT_UINT32
, BASE_DEC
, NULL
, 0,
4509 { &hf_m2ap_mbms_Sessions_To_Be_Suspended_List
,
4510 { "mbms-Sessions-To-Be-Suspended-List", "m2ap.mbms_Sessions_To_Be_Suspended_List",
4511 FT_UINT32
, BASE_DEC
, NULL
, 0,
4512 "MBMSsessionsToBeSuspendedListPerPMCH_Item", HFILL
}},
4513 { &hf_m2ap_ENB_MBMS_Configuration_data_List_item
,
4514 { "ProtocolIE-Single-Container", "m2ap.ProtocolIE_Single_Container_element",
4515 FT_NONE
, BASE_NONE
, NULL
, 0,
4517 { &hf_m2ap_MCCHrelatedBCCH_ConfigPerMBSFNArea_item
,
4518 { "ProtocolIE-Single-Container", "m2ap.ProtocolIE_Single_Container_element",
4519 FT_NONE
, BASE_NONE
, NULL
, 0,
4521 { &hf_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_item
,
4522 { "ProtocolIE-Single-Container", "m2ap.ProtocolIE_Single_Container_element",
4523 FT_NONE
, BASE_NONE
, NULL
, 0,
4525 { &hf_m2ap_ENB_MBMS_Configuration_data_List_ConfigUpdate_item
,
4526 { "ProtocolIE-Single-Container", "m2ap.ProtocolIE_Single_Container_element",
4527 FT_NONE
, BASE_NONE
, NULL
, 0,
4529 { &hf_m2ap_m2_Interface
,
4530 { "m2-Interface", "m2ap.m2_Interface",
4531 FT_UINT32
, BASE_DEC
, VALS(m2ap_ResetAll_vals
), 0,
4532 "ResetAll", HFILL
}},
4533 { &hf_m2ap_partOfM2_Interface
,
4534 { "partOfM2-Interface", "m2ap.partOfM2_Interface",
4535 FT_UINT32
, BASE_DEC
, NULL
, 0,
4536 "MBMS_Service_associatedLogicalM2_ConnectionListRes", HFILL
}},
4537 { &hf_m2ap_MBMS_Service_associatedLogicalM2_ConnectionListRes_item
,
4538 { "ProtocolIE-Single-Container", "m2ap.ProtocolIE_Single_Container_element",
4539 FT_NONE
, BASE_NONE
, NULL
, 0,
4541 { &hf_m2ap_MBMS_Service_associatedLogicalM2_ConnectionListResAck_item
,
4542 { "ProtocolIE-Single-Container", "m2ap.ProtocolIE_Single_Container_element",
4543 FT_NONE
, BASE_NONE
, NULL
, 0,
4545 { &hf_m2ap_privateIEs
,
4546 { "privateIEs", "m2ap.privateIEs",
4547 FT_UINT32
, BASE_DEC
, NULL
, 0,
4548 "PrivateIE_Container", HFILL
}},
4549 { &hf_m2ap_MBMS_Counting_Request_Session_item
,
4550 { "ProtocolIE-Container", "m2ap.ProtocolIE_Container",
4551 FT_UINT32
, BASE_DEC
, NULL
, 0,
4553 { &hf_m2ap_MBMS_Counting_Result_List_item
,
4554 { "ProtocolIE-Container", "m2ap.ProtocolIE_Container",
4555 FT_UINT32
, BASE_DEC
, NULL
, 0,
4557 { &hf_m2ap_countingResult
,
4558 { "countingResult", "m2ap.countingResult",
4559 FT_UINT32
, BASE_DEC
, NULL
, 0,
4561 { &hf_m2ap_Overload_Status_Per_PMCH_List_item
,
4562 { "ProtocolIE-Container", "m2ap.ProtocolIE_Container",
4563 FT_UINT32
, BASE_DEC
, NULL
, 0,
4565 { &hf_m2ap_Active_MBMS_Session_List_item
,
4566 { "ProtocolIE-Container", "m2ap.ProtocolIE_Container",
4567 FT_UINT32
, BASE_DEC
, NULL
, 0,
4569 { &hf_m2ap_initiatingMessage
,
4570 { "initiatingMessage", "m2ap.initiatingMessage_element",
4571 FT_NONE
, BASE_NONE
, NULL
, 0,
4573 { &hf_m2ap_successfulOutcome
,
4574 { "successfulOutcome", "m2ap.successfulOutcome_element",
4575 FT_NONE
, BASE_NONE
, NULL
, 0,
4577 { &hf_m2ap_unsuccessfulOutcome
,
4578 { "unsuccessfulOutcome", "m2ap.unsuccessfulOutcome_element",
4579 FT_NONE
, BASE_NONE
, NULL
, 0,
4581 { &hf_m2ap_initiatingMessage_value
,
4582 { "value", "m2ap.value_element",
4583 FT_NONE
, BASE_NONE
, NULL
, 0,
4584 "InitiatingMessage_value", HFILL
}},
4585 { &hf_m2ap_successfulOutcome_value
,
4586 { "value", "m2ap.value_element",
4587 FT_NONE
, BASE_NONE
, NULL
, 0,
4588 "SuccessfulOutcome_value", HFILL
}},
4589 { &hf_m2ap_unsuccessfulOutcome_value
,
4590 { "value", "m2ap.value_element",
4591 FT_NONE
, BASE_NONE
, NULL
, 0,
4592 "UnsuccessfulOutcome_value", HFILL
}},
4595 /* List of subtrees */
4596 static int *ett
[] = {
4598 &ett_m2ap_PLMN_Identity
,
4599 &ett_m2ap_IPAddress
,
4600 &ett_m2ap_PrivateIE_ID
,
4601 &ett_m2ap_ProtocolIE_Container
,
4602 &ett_m2ap_ProtocolIE_Field
,
4603 &ett_m2ap_ProtocolExtensionContainer
,
4604 &ett_m2ap_ProtocolExtensionField
,
4605 &ett_m2ap_PrivateIE_Container
,
4606 &ett_m2ap_PrivateIE_Field
,
4607 &ett_m2ap_AdditionalConfigParameters
,
4608 &ett_m2ap_AllocationAndRetentionPriority
,
4610 &ett_m2ap_Cell_Information
,
4611 &ett_m2ap_Cell_Information_List
,
4612 &ett_m2ap_CriticalityDiagnostics
,
4613 &ett_m2ap_CriticalityDiagnostics_IE_List
,
4614 &ett_m2ap_CriticalityDiagnostics_IE_List_item
,
4617 &ett_m2ap_ENB_MBMS_Configuration_data_Item
,
4618 &ett_m2ap_ENB_MBMS_Configuration_data_ConfigUpdate_Item
,
4619 &ett_m2ap_GBR_QosInformation
,
4620 &ett_m2ap_GlobalENB_ID
,
4621 &ett_m2ap_GlobalMCE_ID
,
4622 &ett_m2ap_MBMS_Cell_List
,
4623 &ett_m2ap_MBMS_E_RAB_QoS_Parameters
,
4624 &ett_m2ap_MBMS_Service_associatedLogicalM2_ConnectionItem
,
4625 &ett_m2ap_MBMS_Service_Area_ID_List
,
4626 &ett_m2ap_MBMSsessionListPerPMCH_Item
,
4627 &ett_m2ap_MBMSsessionListPerPMCH_Item_item
,
4628 &ett_m2ap_MBMSsessionsToBeSuspendedListPerPMCH_Item
,
4629 &ett_m2ap_MBMSsessionsToBeSuspendedListPerPMCH_Item_item
,
4630 &ett_m2ap_MBSFN_Subframe_Configuration
,
4631 &ett_m2ap_T_subframeAllocation
,
4632 &ett_m2ap_MCCHrelatedBCCH_ConfigPerMBSFNArea_Item
,
4633 &ett_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item
,
4634 &ett_m2ap_PMCH_Configuration
,
4635 &ett_m2ap_SC_PTM_Information
,
4636 &ett_m2ap_SubframeAllocationExtended
,
4637 &ett_m2ap_SubframeAllocationFurtherExtension
,
4639 &ett_m2ap_TNL_Information
,
4640 &ett_m2ap_SessionStartRequest
,
4641 &ett_m2ap_SessionStartResponse
,
4642 &ett_m2ap_SessionStartFailure
,
4643 &ett_m2ap_SessionStopRequest
,
4644 &ett_m2ap_SessionStopResponse
,
4645 &ett_m2ap_SessionUpdateRequest
,
4646 &ett_m2ap_SessionUpdateResponse
,
4647 &ett_m2ap_SessionUpdateFailure
,
4648 &ett_m2ap_MbmsSchedulingInformation
,
4649 &ett_m2ap_MBSFN_Area_Configuration_List
,
4650 &ett_m2ap_PMCH_Configuration_List
,
4651 &ett_m2ap_PMCH_Configuration_Item
,
4652 &ett_m2ap_MBSFN_Subframe_ConfigurationList
,
4653 &ett_m2ap_MBMS_Suspension_Notification_List
,
4654 &ett_m2ap_MBMS_Suspension_Notification_Item
,
4655 &ett_m2ap_MbmsSchedulingInformationResponse
,
4656 &ett_m2ap_M2SetupRequest
,
4657 &ett_m2ap_ENB_MBMS_Configuration_data_List
,
4658 &ett_m2ap_M2SetupResponse
,
4659 &ett_m2ap_MCCHrelatedBCCH_ConfigPerMBSFNArea
,
4660 &ett_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea
,
4661 &ett_m2ap_M2SetupFailure
,
4662 &ett_m2ap_ENBConfigurationUpdate
,
4663 &ett_m2ap_ENB_MBMS_Configuration_data_List_ConfigUpdate
,
4664 &ett_m2ap_ENBConfigurationUpdateAcknowledge
,
4665 &ett_m2ap_ENBConfigurationUpdateFailure
,
4666 &ett_m2ap_MCEConfigurationUpdate
,
4667 &ett_m2ap_MCEConfigurationUpdateAcknowledge
,
4668 &ett_m2ap_MCEConfigurationUpdateFailure
,
4669 &ett_m2ap_ErrorIndication
,
4671 &ett_m2ap_ResetType
,
4672 &ett_m2ap_MBMS_Service_associatedLogicalM2_ConnectionListRes
,
4673 &ett_m2ap_ResetAcknowledge
,
4674 &ett_m2ap_MBMS_Service_associatedLogicalM2_ConnectionListResAck
,
4675 &ett_m2ap_PrivateMessage
,
4676 &ett_m2ap_MbmsServiceCountingRequest
,
4677 &ett_m2ap_MBMS_Counting_Request_Session
,
4678 &ett_m2ap_MBMS_Counting_Request_SessionIE
,
4679 &ett_m2ap_MbmsServiceCountingResponse
,
4680 &ett_m2ap_MbmsServiceCountingFailure
,
4681 &ett_m2ap_MbmsServiceCountingResultsReport
,
4682 &ett_m2ap_MBMS_Counting_Result_List
,
4683 &ett_m2ap_MBMS_Counting_Result
,
4684 &ett_m2ap_MbmsOverloadNotification
,
4685 &ett_m2ap_Overload_Status_Per_PMCH_List
,
4686 &ett_m2ap_Active_MBMS_Session_List
,
4688 &ett_m2ap_InitiatingMessage
,
4689 &ett_m2ap_SuccessfulOutcome
,
4690 &ett_m2ap_UnsuccessfulOutcome
,
4693 expert_module_t
* expert_m2ap
;
4695 static ei_register_info ei
[] = {
4696 { &ei_m2ap_invalid_ip_address_len
, { "m2ap.invalid_ip_address_len", PI_MALFORMED
, PI_ERROR
, "Invalid IP address length", EXPFILL
}}
4699 /* Register protocol */
4700 proto_m2ap
= proto_register_protocol(PNAME
, PSNAME
, PFNAME
);
4701 /* Register fields and subtrees */
4702 proto_register_field_array(proto_m2ap
, hf
, array_length(hf
));
4703 proto_register_subtree_array(ett
, array_length(ett
));
4704 expert_m2ap
= expert_register_protocol(proto_m2ap
);
4705 expert_register_field_array(expert_m2ap
, ei
, array_length(ei
));
4706 /* Register dissector */
4707 m2ap_handle
= register_dissector(PFNAME
, dissect_m2ap
, proto_m2ap
);
4709 /* Register dissector tables */
4710 m2ap_ies_dissector_table
= register_dissector_table("m2ap.ies", "M2AP-PROTOCOL-IES", proto_m2ap
, FT_UINT32
, BASE_DEC
);
4711 m2ap_extension_dissector_table
= register_dissector_table("m2ap.extension", "M2AP-PROTOCOL-EXTENSION", proto_m2ap
, FT_UINT32
, BASE_DEC
);
4712 m2ap_proc_imsg_dissector_table
= register_dissector_table("m2ap.proc.imsg", "M2AP-ELEMENTARY-PROCEDURE InitiatingMessage", proto_m2ap
, FT_UINT32
, BASE_DEC
);
4713 m2ap_proc_sout_dissector_table
= register_dissector_table("m2ap.proc.sout", "M2AP-ELEMENTARY-PROCEDURE SuccessfulOutcome", proto_m2ap
, FT_UINT32
, BASE_DEC
);
4714 m2ap_proc_uout_dissector_table
= register_dissector_table("m2ap.proc.uout", "M2AP-ELEMENTARY-PROCEDURE UnsuccessfulOutcome", proto_m2ap
, FT_UINT32
, BASE_DEC
);
4718 proto_reg_handoff_m2ap(void)
4720 dissector_add_uint("sctp.ppi", PROTO_3GPP_M2AP_PROTOCOL_ID
, m2ap_handle
);
4721 dissector_add_uint("sctp.port", M2AP_PORT
, m2ap_handle
);
4722 dissector_add_uint("m2ap.ies", id_MCE_MBMS_M2AP_ID
, create_dissector_handle(dissect_MCE_MBMS_M2AP_ID_PDU
, proto_m2ap
));
4723 dissector_add_uint("m2ap.ies", id_ENB_MBMS_M2AP_ID
, create_dissector_handle(dissect_ENB_MBMS_M2AP_ID_PDU
, proto_m2ap
));
4724 dissector_add_uint("m2ap.ies", id_TMGI
, create_dissector_handle(dissect_TMGI_PDU
, proto_m2ap
));
4725 dissector_add_uint("m2ap.ies", id_MBMS_Session_ID
, create_dissector_handle(dissect_MBMS_Session_ID_PDU
, proto_m2ap
));
4726 dissector_add_uint("m2ap.ies", id_MBMS_Service_Area
, create_dissector_handle(dissect_MBMS_Service_Area_PDU
, proto_m2ap
));
4727 dissector_add_uint("m2ap.ies", id_TNL_Information
, create_dissector_handle(dissect_TNL_Information_PDU
, proto_m2ap
));
4728 dissector_add_uint("m2ap.ies", id_CriticalityDiagnostics
, create_dissector_handle(dissect_CriticalityDiagnostics_PDU
, proto_m2ap
));
4729 dissector_add_uint("m2ap.ies", id_Cause
, create_dissector_handle(dissect_Cause_PDU
, proto_m2ap
));
4730 dissector_add_uint("m2ap.ies", id_MBSFN_Area_Configuration_List
, create_dissector_handle(dissect_MBSFN_Area_Configuration_List_PDU
, proto_m2ap
));
4731 dissector_add_uint("m2ap.ies", id_PMCH_Configuration_List
, create_dissector_handle(dissect_PMCH_Configuration_List_PDU
, proto_m2ap
));
4732 dissector_add_uint("m2ap.ies", id_PMCH_Configuration_Item
, create_dissector_handle(dissect_PMCH_Configuration_Item_PDU
, proto_m2ap
));
4733 dissector_add_uint("m2ap.ies", id_GlobalENB_ID
, create_dissector_handle(dissect_GlobalENB_ID_PDU
, proto_m2ap
));
4734 dissector_add_uint("m2ap.ies", id_ENBname
, create_dissector_handle(dissect_ENBname_PDU
, proto_m2ap
));
4735 dissector_add_uint("m2ap.ies", id_ENB_MBMS_Configuration_data_List
, create_dissector_handle(dissect_ENB_MBMS_Configuration_data_List_PDU
, proto_m2ap
));
4736 dissector_add_uint("m2ap.ies", id_ENB_MBMS_Configuration_data_Item
, create_dissector_handle(dissect_ENB_MBMS_Configuration_data_Item_PDU
, proto_m2ap
));
4737 dissector_add_uint("m2ap.ies", id_GlobalMCE_ID
, create_dissector_handle(dissect_GlobalMCE_ID_PDU
, proto_m2ap
));
4738 dissector_add_uint("m2ap.ies", id_MCEname
, create_dissector_handle(dissect_MCEname_PDU
, proto_m2ap
));
4739 dissector_add_uint("m2ap.ies", id_MCCHrelatedBCCH_ConfigPerMBSFNArea
, create_dissector_handle(dissect_MCCHrelatedBCCH_ConfigPerMBSFNArea_PDU
, proto_m2ap
));
4740 dissector_add_uint("m2ap.ies", id_MCCHrelatedBCCH_ConfigPerMBSFNArea_Item
, create_dissector_handle(dissect_MCCHrelatedBCCH_ConfigPerMBSFNArea_Item_PDU
, proto_m2ap
));
4741 dissector_add_uint("m2ap.ies", id_TimeToWait
, create_dissector_handle(dissect_TimeToWait_PDU
, proto_m2ap
));
4742 dissector_add_uint("m2ap.ies", id_MBSFN_Subframe_Configuration_List
, create_dissector_handle(dissect_MBSFN_Subframe_ConfigurationList_PDU
, proto_m2ap
));
4743 dissector_add_uint("m2ap.ies", id_MBSFN_Subframe_Configuration_Item
, create_dissector_handle(dissect_MBSFN_Subframe_Configuration_PDU
, proto_m2ap
));
4744 dissector_add_uint("m2ap.ies", id_Common_Subframe_Allocation_Period
, create_dissector_handle(dissect_Common_Subframe_Allocation_Period_PDU
, proto_m2ap
));
4745 dissector_add_uint("m2ap.ies", id_MCCH_Update_Time
, create_dissector_handle(dissect_MCCH_Update_Time_PDU
, proto_m2ap
));
4746 dissector_add_uint("m2ap.ies", id_ENB_MBMS_Configuration_data_List_ConfigUpdate
, create_dissector_handle(dissect_ENB_MBMS_Configuration_data_List_ConfigUpdate_PDU
, proto_m2ap
));
4747 dissector_add_uint("m2ap.ies", id_ENB_MBMS_Configuration_data_ConfigUpdate_Item
, create_dissector_handle(dissect_ENB_MBMS_Configuration_data_ConfigUpdate_Item_PDU
, proto_m2ap
));
4748 dissector_add_uint("m2ap.ies", id_MBMS_Service_associatedLogicalM2_ConnectionItem
, create_dissector_handle(dissect_MBMS_Service_associatedLogicalM2_ConnectionItem_PDU
, proto_m2ap
));
4749 dissector_add_uint("m2ap.ies", id_MBSFN_Area_ID
, create_dissector_handle(dissect_MBSFN_Area_ID_PDU
, proto_m2ap
));
4750 dissector_add_uint("m2ap.ies", id_ResetType
, create_dissector_handle(dissect_ResetType_PDU
, proto_m2ap
));
4751 dissector_add_uint("m2ap.ies", id_MBMS_Service_associatedLogicalM2_ConnectionListResAck
, create_dissector_handle(dissect_MBMS_Service_associatedLogicalM2_ConnectionListResAck_PDU
, proto_m2ap
));
4752 dissector_add_uint("m2ap.ies", id_MBMS_Counting_Request_Session
, create_dissector_handle(dissect_MBMS_Counting_Request_Session_PDU
, proto_m2ap
));
4753 dissector_add_uint("m2ap.ies", id_MBMS_Counting_Request_Session_Item
, create_dissector_handle(dissect_MBMS_Counting_Request_SessionIE_PDU
, proto_m2ap
));
4754 dissector_add_uint("m2ap.ies", id_MBMS_Counting_Result_List
, create_dissector_handle(dissect_MBMS_Counting_Result_List_PDU
, proto_m2ap
));
4755 dissector_add_uint("m2ap.ies", id_MBMS_Counting_Result_Item
, create_dissector_handle(dissect_MBMS_Counting_Result_PDU
, proto_m2ap
));
4756 dissector_add_uint("m2ap.ies", id_Alternative_TNL_Information
, create_dissector_handle(dissect_TNL_Information_PDU
, proto_m2ap
));
4757 dissector_add_uint("m2ap.ies", id_Overload_Status_Per_PMCH_List
, create_dissector_handle(dissect_Overload_Status_Per_PMCH_List_PDU
, proto_m2ap
));
4758 dissector_add_uint("m2ap.ies", id_PMCH_Overload_Status
, create_dissector_handle(dissect_PMCH_Overload_Status_PDU
, proto_m2ap
));
4759 dissector_add_uint("m2ap.ies", id_Active_MBMS_Session_List
, create_dissector_handle(dissect_Active_MBMS_Session_List_PDU
, proto_m2ap
));
4760 dissector_add_uint("m2ap.ies", id_MBMS_Suspension_Notification_List
, create_dissector_handle(dissect_MBMS_Suspension_Notification_List_PDU
, proto_m2ap
));
4761 dissector_add_uint("m2ap.ies", id_MBMS_Suspension_Notification_Item
, create_dissector_handle(dissect_MBMS_Suspension_Notification_Item_PDU
, proto_m2ap
));
4762 dissector_add_uint("m2ap.ies", id_SC_PTM_Information
, create_dissector_handle(dissect_SC_PTM_Information_PDU
, proto_m2ap
));
4763 dissector_add_uint("m2ap.ies", id_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item
, create_dissector_handle(dissect_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item_PDU
, proto_m2ap
));
4764 dissector_add_uint("m2ap.ies", id_MCCHrelatedBCCH_ExtConfigPerMBSFNArea
, create_dissector_handle(dissect_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_PDU
, proto_m2ap
));
4765 dissector_add_uint("m2ap.extension", id_Modulation_Coding_Scheme2
, create_dissector_handle(dissect_Modulation_Coding_Scheme2_PDU
, proto_m2ap
));
4766 dissector_add_uint("m2ap.extension", id_MCH_Scheduling_PeriodExtended
, create_dissector_handle(dissect_MCH_Scheduling_PeriodExtended_PDU
, proto_m2ap
));
4767 dissector_add_uint("m2ap.extension", id_Repetition_PeriodExtended
, create_dissector_handle(dissect_Repetition_PeriodExtended_PDU
, proto_m2ap
));
4768 dissector_add_uint("m2ap.extension", id_Modification_PeriodExtended
, create_dissector_handle(dissect_Modification_PeriodExtended_PDU
, proto_m2ap
));
4769 dissector_add_uint("m2ap.extension", id_MCH_Scheduling_PeriodExtended2
, create_dissector_handle(dissect_MCH_Scheduling_PeriodExtended2_PDU
, proto_m2ap
));
4770 dissector_add_uint("m2ap.extension", id_SubframeAllocationExtended
, create_dissector_handle(dissect_SubframeAllocationExtended_PDU
, proto_m2ap
));
4771 dissector_add_uint("m2ap.extension", id_Subcarrier_SpacingMBMS
, create_dissector_handle(dissect_Subcarrier_SpacingMBMS_PDU
, proto_m2ap
));
4772 dissector_add_uint("m2ap.extension", id_SubframeAllocationFurtherExtension
, create_dissector_handle(dissect_SubframeAllocationFurtherExtension_PDU
, proto_m2ap
));
4773 dissector_add_uint("m2ap.extension", id_AdditionalConfigParameters
, create_dissector_handle(dissect_AdditionalConfigParameters_PDU
, proto_m2ap
));
4774 dissector_add_uint("m2ap.proc.imsg", id_sessionStart
, create_dissector_handle(dissect_SessionStartRequest_PDU
, proto_m2ap
));
4775 dissector_add_uint("m2ap.proc.sout", id_sessionStart
, create_dissector_handle(dissect_SessionStartResponse_PDU
, proto_m2ap
));
4776 dissector_add_uint("m2ap.proc.uout", id_sessionStart
, create_dissector_handle(dissect_SessionStartFailure_PDU
, proto_m2ap
));
4777 dissector_add_uint("m2ap.proc.imsg", id_sessionStop
, create_dissector_handle(dissect_SessionStopRequest_PDU
, proto_m2ap
));
4778 dissector_add_uint("m2ap.proc.sout", id_sessionStop
, create_dissector_handle(dissect_SessionStopResponse_PDU
, proto_m2ap
));
4779 dissector_add_uint("m2ap.proc.imsg", id_sessionUpdate
, create_dissector_handle(dissect_SessionUpdateRequest_PDU
, proto_m2ap
));
4780 dissector_add_uint("m2ap.proc.sout", id_sessionUpdate
, create_dissector_handle(dissect_SessionUpdateResponse_PDU
, proto_m2ap
));
4781 dissector_add_uint("m2ap.proc.uout", id_sessionUpdate
, create_dissector_handle(dissect_SessionUpdateFailure_PDU
, proto_m2ap
));
4782 dissector_add_uint("m2ap.proc.imsg", id_mbmsSchedulingInformation
, create_dissector_handle(dissect_MbmsSchedulingInformation_PDU
, proto_m2ap
));
4783 dissector_add_uint("m2ap.proc.sout", id_mbmsSchedulingInformation
, create_dissector_handle(dissect_MbmsSchedulingInformationResponse_PDU
, proto_m2ap
));
4784 dissector_add_uint("m2ap.proc.imsg", id_m2Setup
, create_dissector_handle(dissect_M2SetupRequest_PDU
, proto_m2ap
));
4785 dissector_add_uint("m2ap.proc.sout", id_m2Setup
, create_dissector_handle(dissect_M2SetupResponse_PDU
, proto_m2ap
));
4786 dissector_add_uint("m2ap.proc.uout", id_m2Setup
, create_dissector_handle(dissect_M2SetupFailure_PDU
, proto_m2ap
));
4787 dissector_add_uint("m2ap.proc.imsg", id_eNBConfigurationUpdate
, create_dissector_handle(dissect_ENBConfigurationUpdate_PDU
, proto_m2ap
));
4788 dissector_add_uint("m2ap.proc.sout", id_eNBConfigurationUpdate
, create_dissector_handle(dissect_ENBConfigurationUpdateAcknowledge_PDU
, proto_m2ap
));
4789 dissector_add_uint("m2ap.proc.uout", id_eNBConfigurationUpdate
, create_dissector_handle(dissect_ENBConfigurationUpdateFailure_PDU
, proto_m2ap
));
4790 dissector_add_uint("m2ap.proc.imsg", id_mCEConfigurationUpdate
, create_dissector_handle(dissect_MCEConfigurationUpdate_PDU
, proto_m2ap
));
4791 dissector_add_uint("m2ap.proc.sout", id_mCEConfigurationUpdate
, create_dissector_handle(dissect_MCEConfigurationUpdateAcknowledge_PDU
, proto_m2ap
));
4792 dissector_add_uint("m2ap.proc.uout", id_mCEConfigurationUpdate
, create_dissector_handle(dissect_MCEConfigurationUpdateFailure_PDU
, proto_m2ap
));
4793 dissector_add_uint("m2ap.proc.imsg", id_errorIndication
, create_dissector_handle(dissect_ErrorIndication_PDU
, proto_m2ap
));
4794 dissector_add_uint("m2ap.proc.imsg", id_reset
, create_dissector_handle(dissect_Reset_PDU
, proto_m2ap
));
4795 dissector_add_uint("m2ap.proc.sout", id_reset
, create_dissector_handle(dissect_ResetAcknowledge_PDU
, proto_m2ap
));
4796 dissector_add_uint("m2ap.proc.imsg", id_privateMessage
, create_dissector_handle(dissect_PrivateMessage_PDU
, proto_m2ap
));
4797 dissector_add_uint("m2ap.proc.imsg", id_mbmsServiceCounting
, create_dissector_handle(dissect_MbmsServiceCountingRequest_PDU
, proto_m2ap
));
4798 dissector_add_uint("m2ap.proc.sout", id_mbmsServiceCounting
, create_dissector_handle(dissect_MbmsServiceCountingResponse_PDU
, proto_m2ap
));
4799 dissector_add_uint("m2ap.proc.uout", id_mbmsServiceCounting
, create_dissector_handle(dissect_MbmsServiceCountingFailure_PDU
, proto_m2ap
));
4800 dissector_add_uint("m2ap.proc.imsg", id_mbmsServiceCountingResultsReport
, create_dissector_handle(dissect_MbmsServiceCountingResultsReport_PDU
, proto_m2ap
));
4801 dissector_add_uint("m2ap.proc.imsg", id_mbmsOverloadNotification
, create_dissector_handle(dissect_MbmsOverloadNotification_PDU
, proto_m2ap
));