Revert "TODO epan/dissectors/asn1/kerberos/packet-kerberos-template.c new GSS flags"
[wireshark-sm.git] / epan / dissectors / packet-m2ap.c
blobddafb168df29987c168c397cd0e08795c25a7cf7
1 /* Do not modify this file. Changes will be overwritten. */
2 /* Generated automatically by the ASN.1 to Wireshark dissector compiler */
3 /* packet-m2ap.c */
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 */
6 /* packet-m2ap.c
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
19 #include "config.h"
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"
33 #define PSNAME "M2AP"
34 #define PFNAME "m2ap"
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 {
57 id_sessionStart = 0,
58 id_sessionStop = 1,
59 id_mbmsSchedulingInformation = 2,
60 id_errorIndication = 3,
61 id_reset = 4,
62 id_m2Setup = 5,
63 id_eNBConfigurationUpdate = 6,
64 id_mCEConfigurationUpdate = 7,
65 id_privateMessage = 8,
66 id_sessionUpdate = 9,
67 id_mbmsServiceCounting = 10,
68 id_mbmsServiceCountingResultsReport = 11,
69 id_mbmsOverloadNotification = 12
70 } ProcedureCode_enum;
72 typedef enum _ProtocolIE_ID_enum {
73 id_MCE_MBMS_M2AP_ID = 0,
74 id_ENB_MBMS_M2AP_ID = 1,
75 id_TMGI = 2,
76 id_MBMS_Session_ID = 3,
77 id_MBMS_Service_Area = 6,
78 id_TNL_Information = 7,
79 id_CriticalityDiagnostics = 8,
80 id_Cause = 9,
81 id_MBSFN_Area_Configuration_List = 10,
82 id_PMCH_Configuration_List = 11,
83 id_PMCH_Configuration_Item = 12,
84 id_GlobalENB_ID = 13,
85 id_ENBname = 14,
86 id_ENB_MBMS_Configuration_data_List = 15,
87 id_ENB_MBMS_Configuration_data_Item = 16,
88 id_GlobalMCE_ID = 17,
89 id_MCEname = 18,
90 id_MCCHrelatedBCCH_ConfigPerMBSFNArea = 19,
91 id_MCCHrelatedBCCH_ConfigPerMBSFNArea_Item = 20,
92 id_TimeToWait = 21,
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,
101 id_ResetType = 30,
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 */
333 static int ett_m2ap;
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;
434 enum{
435 INITIATING_MESSAGE,
436 SUCCESSFUL_OUTCOME,
437 UNSUCCESSFUL_OUTCOME
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);
463 if (!m2ap_data) {
464 m2ap_data = wmem_new0(pinfo->pool, struct m2ap_private_data);
465 p_add_proto_data(pinfo->pool, pinfo, proto_m2ap, 0, m2ap_data);
467 return m2ap_data;
471 static const value_string m2ap_Criticality_vals[] = {
472 { 0, "reject" },
473 { 1, "ignore" },
474 { 2, "notify" },
475 { 0, NULL }
479 static int
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);
484 return offset;
489 static int
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);
494 return offset;
499 static int
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);
503 return offset;
507 static const value_string m2ap_PrivateIE_ID_vals[] = {
508 { 0, "local" },
509 { 1, "global" },
510 { 0, NULL }
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 },
516 { 0, NULL, 0, NULL }
519 static int
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,
523 NULL);
525 return offset;
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" },
543 { 0, NULL }
546 static value_string_ext m2ap_ProcedureCode_vals_ext = VALUE_STRING_EXT_INIT(m2ap_ProcedureCode_vals);
549 static int
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);
554 return offset;
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" },
611 { 0, NULL }
614 static value_string_ext m2ap_ProtocolIE_ID_vals_ext = VALUE_STRING_EXT_INIT(m2ap_ProtocolIE_ID_vals);
617 static int
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);
622 if (tree) {
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)"));
625 return offset;
629 static const value_string m2ap_TriggeringMessage_vals[] = {
630 { 0, "initiating-message" },
631 { 1, "successful-outcome" },
632 { 2, "unsuccessful-outcome" },
633 { 0, NULL }
637 static int
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);
642 return offset;
647 static int
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);
651 return offset;
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 },
659 { NULL, 0, 0, NULL }
662 static int
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);
667 return offset;
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 },
675 static int
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);
681 return offset;
686 static int
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);
690 return offset;
695 static int
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);
699 return offset;
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 },
707 { NULL, 0, 0, NULL }
710 static int
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);
715 return offset;
719 static const per_sequence_t ProtocolExtensionContainer_sequence_of[1] = {
720 { &hf_m2ap_ProtocolExtensionContainer_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m2ap_ProtocolExtensionField },
723 static int
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);
729 return offset;
734 static int
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);
738 return offset;
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 },
746 { NULL, 0, 0, NULL }
749 static int
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);
754 return offset;
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 },
762 static int
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);
768 return offset;
772 static const value_string m2ap_PMCH_Bandwidth_vals[] = {
773 { 0, "n40" },
774 { 1, "n35" },
775 { 2, "n30" },
776 { 0, NULL }
780 static int
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);
785 return offset;
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 },
792 { NULL, 0, 0, NULL }
795 static int
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);
800 return offset;
805 static int
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);
810 return offset;
814 static const value_string m2ap_PriorityLevel_vals[] = {
815 { 0, "spare" },
816 { 1, "highest" },
817 { 14, "lowest" },
818 { 15, "no-priority" },
819 { 0, NULL }
823 static int
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);
828 return offset;
832 static const value_string m2ap_Pre_emptionCapability_vals[] = {
833 { 0, "shall-not-trigger-pre-emption" },
834 { 1, "may-trigger-pre-emption" },
835 { 0, NULL }
839 static int
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);
844 return offset;
848 static const value_string m2ap_Pre_emptionVulnerability_vals[] = {
849 { 0, "not-pre-emptable" },
850 { 1, "pre-emptable" },
851 { 0, NULL }
855 static int
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);
860 return offset;
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 },
869 { NULL, 0, 0, NULL }
872 static int
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);
877 return offset;
882 static int
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);
887 return offset;
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" },
900 { 0, NULL }
904 static int
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);
909 return offset;
913 static const value_string m2ap_CauseTransport_vals[] = {
914 { 0, "transport-resource-unavailable" },
915 { 1, "unspecified" },
916 { 0, NULL }
920 static int
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);
925 return offset;
929 static const value_string m2ap_CauseNAS_vals[] = {
930 { 0, "unspecified" },
931 { 0, NULL }
935 static int
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);
940 return offset;
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" },
952 { 0, NULL }
956 static int
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);
961 return offset;
965 static const value_string m2ap_CauseMisc_vals[] = {
966 { 0, "control-processing-overload" },
967 { 1, "hardware-failure" },
968 { 2, "om-intervention" },
969 { 3, "unspecified" },
970 { 0, NULL }
974 static int
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);
979 return offset;
983 static const value_string m2ap_Cause_vals[] = {
984 { 0, "radioNetwork" },
985 { 1, "transport" },
986 { 2, "nAS" },
987 { 3, "protocol" },
988 { 4, "misc" },
989 { 0, NULL }
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 },
998 { 0, NULL, 0, NULL }
1001 static int
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,
1005 NULL);
1007 return offset;
1012 static int
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, &parameter_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);
1026 return offset;
1031 static int
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);
1036 return offset;
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 }
1047 static int
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);
1056 return offset;
1060 static const value_string m2ap_T_cellReservationInfo_vals[] = {
1061 { 0, "reservedCell" },
1062 { 1, "nonReservedCell" },
1063 { 0, NULL }
1067 static int
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);
1072 return offset;
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 }
1083 static int
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);
1088 return offset;
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 },
1096 static int
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);
1102 return offset;
1106 static const value_string m2ap_TypeOfError_vals[] = {
1107 { 0, "not-understood" },
1108 { 1, "missing" },
1109 { 0, NULL }
1113 static int
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);
1118 return offset;
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 }
1130 static int
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);
1135 return offset;
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 },
1143 static int
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);
1149 return offset;
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 }
1162 static int
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);
1167 return offset;
1172 static int
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);
1177 return offset;
1182 static int
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);
1187 return offset;
1192 static int
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);
1197 return offset;
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" },
1205 { 0, NULL }
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 }
1215 static int
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,
1219 NULL);
1221 return offset;
1226 static int
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);
1231 return offset;
1236 static int
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);
1241 return offset;
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 },
1249 static int
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);
1255 return offset;
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 }
1267 static int
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);
1272 return offset;
1276 static const value_string m2ap_ENB_MBMS_Configuration_data_ConfigUpdate_Item_vals[] = {
1277 { 0, "mBMSConfigData" },
1278 { 1, "eCGI" },
1279 { 0, NULL }
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 }
1288 static int
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,
1292 NULL);
1294 return offset;
1299 static int
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);
1304 return offset;
1309 static int
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,
1312 1, 150, true,
1313 NULL);
1315 return offset;
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 }
1326 static int
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);
1331 return offset;
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 }
1342 static int
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);
1347 return offset;
1352 static int
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,
1355 2, 2, false, NULL);
1357 return offset;
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 }
1368 static int
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);
1373 return offset;
1378 static int
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,
1381 4, 4, false, NULL);
1383 return offset;
1388 static int
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, &parameter_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);
1398 switch (tvb_len) {
1399 case 4:
1400 proto_tree_add_item(subtree, hf_m2ap_IPAddress_v4, parameter_tvb, 0, 4, ENC_BIG_ENDIAN);
1401 break;
1402 case 16:
1403 proto_tree_add_item(subtree, hf_m2ap_IPAddress_v6, parameter_tvb, 0, 16, ENC_NA);
1404 break;
1405 default:
1406 proto_tree_add_expert(subtree, actx->pinfo, &ei_m2ap_invalid_ip_address_len, parameter_tvb, 0, tvb_len);
1407 break;
1411 return offset;
1416 static int
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);
1421 return offset;
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 },
1429 static int
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);
1435 return offset;
1440 static int
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);
1445 return offset;
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 }
1457 static int
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);
1462 return offset;
1467 static int
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);
1472 return offset;
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 }
1483 static int
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);
1488 return offset;
1493 static int
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,
1496 1, 1, false, NULL);
1498 return offset;
1503 static int
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,
1506 3, 3, false, NULL);
1508 return offset;
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 }
1519 static int
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);
1524 return offset;
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 }
1535 static int
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);
1540 return offset;
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 },
1548 static int
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);
1554 return offset;
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 }
1564 static int
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);
1569 return offset;
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 },
1577 static int
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);
1583 return offset;
1588 static int
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);
1593 return offset;
1597 static const value_string m2ap_T_radioframeAllocationPeriod_vals[] = {
1598 { 0, "n1" },
1599 { 1, "n2" },
1600 { 2, "n4" },
1601 { 3, "n8" },
1602 { 4, "n16" },
1603 { 5, "n32" },
1604 { 0, NULL }
1608 static int
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);
1613 return offset;
1618 static int
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);
1623 return offset;
1628 static int
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);
1633 return offset;
1638 static int
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);
1643 return offset;
1647 static const value_string m2ap_T_subframeAllocation_vals[] = {
1648 { 0, "oneFrame" },
1649 { 1, "fourFrames" },
1650 { 0, NULL }
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 }
1659 static int
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,
1663 NULL);
1665 return offset;
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 }
1677 static int
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);
1682 return offset;
1687 static int
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);
1692 return offset;
1696 static const value_string m2ap_T_pdcchLength_vals[] = {
1697 { 0, "s1" },
1698 { 1, "s2" },
1699 { 0, NULL }
1703 static int
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);
1708 return offset;
1712 static const value_string m2ap_T_repetitionPeriod_vals[] = {
1713 { 0, "rf32" },
1714 { 1, "rf64" },
1715 { 2, "rf128" },
1716 { 3, "rf256" },
1717 { 0, NULL }
1721 static int
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);
1726 return offset;
1731 static int
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);
1736 return offset;
1740 static const value_string m2ap_T_modificationPeriod_vals[] = {
1741 { 0, "rf512" },
1742 { 1, "rf1024" },
1743 { 0, NULL }
1747 static int
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);
1752 return offset;
1756 static const value_string m2ap_T_modulationAndCodingScheme_vals[] = {
1757 { 0, "n2" },
1758 { 1, "n7" },
1759 { 2, "n13" },
1760 { 3, "n19" },
1761 { 0, NULL }
1765 static int
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);
1770 return offset;
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 }
1787 static int
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);
1792 return offset;
1796 static const value_string m2ap_T_repetitionPeriodExpanded_vals[] = {
1797 { 0, "rf1" },
1798 { 1, "rf2" },
1799 { 2, "rf4" },
1800 { 3, "rf8" },
1801 { 4, "rf16" },
1802 { 5, "rf32" },
1803 { 6, "rf64" },
1804 { 7, "rf128" },
1805 { 8, "rf256" },
1806 { 0, NULL }
1810 static int
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);
1815 return offset;
1819 static const value_string m2ap_T_modificationPeriodExpanded_vals[] = {
1820 { 0, "rf1" },
1821 { 1, "rf2" },
1822 { 2, "rf4" },
1823 { 3, "rf8" },
1824 { 4, "rf16" },
1825 { 5, "rf32" },
1826 { 6, "rf64" },
1827 { 7, "rf128" },
1828 { 8, "rf256" },
1829 { 9, "rf512" },
1830 { 10, "rf1024" },
1831 { 0, NULL }
1835 static int
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);
1840 return offset;
1845 static int
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);
1850 return offset;
1854 static const value_string m2ap_T_modulationAndCodingScheme_01_vals[] = {
1855 { 0, "n2" },
1856 { 1, "n7" },
1857 { 2, "n13" },
1858 { 3, "n19" },
1859 { 0, NULL }
1863 static int
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);
1868 return offset;
1872 static const value_string m2ap_T_subcarrier_SpacingMBMSExpanded_vals[] = {
1873 { 0, "khz-7dot5" },
1874 { 1, "khz-2dot5" },
1875 { 2, "khz-1dot25" },
1876 { 3, "khz-0dot37" },
1877 { 4, "kHz-15" },
1878 { 0, NULL }
1882 static int
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);
1887 return offset;
1891 static const value_string m2ap_T_timeSeparation_vals[] = {
1892 { 0, "sl2" },
1893 { 1, "sl4" },
1894 { 0, NULL }
1898 static int
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);
1903 return offset;
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 }
1921 static int
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);
1926 return offset;
1931 static int
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,
1934 1, 150, true,
1935 NULL);
1937 return offset;
1941 static const value_string m2ap_MCH_Scheduling_Period_vals[] = {
1942 { 0, "rf8" },
1943 { 1, "rf16" },
1944 { 2, "rf32" },
1945 { 3, "rf64" },
1946 { 4, "rf128" },
1947 { 5, "rf256" },
1948 { 6, "rf512" },
1949 { 7, "rf1024" },
1950 { 0, NULL }
1954 static int
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);
1959 return offset;
1963 static const value_string m2ap_MCH_Scheduling_PeriodExtended_vals[] = {
1964 { 0, "rf4" },
1965 { 0, NULL }
1969 static int
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);
1974 return offset;
1978 static const value_string m2ap_MCH_Scheduling_PeriodExtended2_vals[] = {
1979 { 0, "rf1" },
1980 { 1, "rf2" },
1981 { 0, NULL }
1985 static int
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);
1990 return offset;
1995 static int
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);
2000 return offset;
2004 static const value_string m2ap_Modification_PeriodExtended_vals[] = {
2005 { 0, "rf1" },
2006 { 1, "rf2" },
2007 { 2, "rf4" },
2008 { 3, "rf8" },
2009 { 4, "rf16" },
2010 { 5, "rf32" },
2011 { 6, "rf64" },
2012 { 7, "rf128" },
2013 { 8, "rf256" },
2014 { 0, NULL }
2018 static int
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);
2023 return offset;
2028 static int
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);
2033 return offset;
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 }
2045 static int
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);
2050 return offset;
2054 static const value_string m2ap_Common_Subframe_Allocation_Period_vals[] = {
2055 { 0, "rf4" },
2056 { 1, "rf8" },
2057 { 2, "rf16" },
2058 { 3, "rf32" },
2059 { 4, "rf64" },
2060 { 5, "rf128" },
2061 { 6, "rf256" },
2062 { 0, NULL }
2066 static int
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);
2071 return offset;
2075 static const value_string m2ap_Repetition_PeriodExtended_vals[] = {
2076 { 0, "rf1" },
2077 { 1, "rf2" },
2078 { 2, "rf4" },
2079 { 3, "rf8" },
2080 { 4, "rf16" },
2081 { 0, NULL }
2085 static int
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);
2090 return offset;
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 }
2101 static int
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);
2106 return offset;
2111 static int
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);
2116 return offset;
2120 static const value_string m2ap_Subcarrier_SpacingMBMS_vals[] = {
2121 { 0, "khz-7dot5" },
2122 { 1, "khz-1dot25" },
2123 { 0, NULL }
2127 static int
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);
2132 return offset;
2137 static int
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);
2142 return offset;
2147 static int
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);
2152 return offset;
2156 static const value_string m2ap_SubframeAllocationExtended_vals[] = {
2157 { 0, "oneFrameExtension" },
2158 { 1, "fourFrameExtension" },
2159 { 2, "choice-extension" },
2160 { 0, NULL }
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 }
2170 static int
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,
2174 NULL);
2176 return offset;
2180 static const value_string m2ap_SubframeAllocationFurtherExtension_vals[] = {
2181 { 0, "oneFrameFurtherExtension" },
2182 { 1, "fourFrameFurtherExtension" },
2183 { 2, "choice-extension" },
2184 { 0, NULL }
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 }
2194 static int
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,
2198 NULL);
2200 return offset;
2204 static const value_string m2ap_TimeToWait_vals[] = {
2205 { 0, "v1s" },
2206 { 1, "v2s" },
2207 { 2, "v5s" },
2208 { 3, "v10s" },
2209 { 4, "v20s" },
2210 { 5, "v60s" },
2211 { 0, NULL }
2215 static int
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);
2220 return offset;
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 }
2232 static int
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);
2237 return offset;
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 }
2246 static int
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);
2252 return offset;
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 }
2261 static int
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);
2267 return offset;
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 }
2276 static int
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);
2282 return offset;
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 }
2291 static int
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);
2297 return offset;
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 }
2306 static int
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);
2312 return offset;
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 }
2321 static int
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);
2327 return offset;
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 }
2336 static int
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);
2342 return offset;
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 }
2351 static int
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);
2357 return offset;
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 }
2366 static int
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);
2372 return offset;
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 },
2380 static int
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);
2386 return offset;
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 },
2394 static int
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);
2400 return offset;
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 }
2411 static int
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);
2416 return offset;
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 },
2424 static int
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);
2430 return offset;
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 },
2438 static int
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);
2444 return offset;
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 }
2455 static int
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);
2460 return offset;
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 }
2469 static int
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);
2475 return offset;
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 }
2484 static int
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);
2490 return offset;
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 },
2498 static int
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);
2504 return offset;
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 }
2513 static int
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);
2519 return offset;
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 },
2527 static int
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);
2533 return offset;
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 },
2541 static int
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);
2547 return offset;
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 }
2556 static int
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);
2562 return offset;
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 }
2571 static int
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);
2577 return offset;
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 },
2585 static int
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);
2591 return offset;
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 }
2600 static int
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);
2606 return offset;
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 }
2615 static int
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);
2621 return offset;
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 }
2630 static int
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);
2636 return offset;
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 }
2645 static int
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);
2651 return offset;
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 }
2660 static int
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);
2666 return offset;
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 }
2675 static int
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);
2681 return offset;
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 }
2690 static int
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);
2696 return offset;
2700 static const value_string m2ap_ResetAll_vals[] = {
2701 { 0, "reset-all" },
2702 { 0, NULL }
2706 static int
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);
2711 return offset;
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 },
2719 static int
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);
2725 return offset;
2729 static const value_string m2ap_ResetType_vals[] = {
2730 { 0, "m2-Interface" },
2731 { 1, "partOfM2-Interface" },
2732 { 0, NULL }
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 }
2741 static int
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,
2745 NULL);
2747 return offset;
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 }
2756 static int
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);
2762 return offset;
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 },
2770 static int
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);
2776 return offset;
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 }
2785 static int
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);
2791 return offset;
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 }
2800 static int
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);
2806 return offset;
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 },
2814 static int
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);
2820 return offset;
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 }
2830 static int
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);
2835 return offset;
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 }
2844 static int
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);
2850 return offset;
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 }
2859 static int
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);
2865 return offset;
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 }
2874 static int
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);
2880 return offset;
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 },
2888 static int
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);
2894 return offset;
2899 static int
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);
2904 return offset;
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 }
2915 static int
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);
2920 return offset;
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 }
2929 static int
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);
2936 return offset;
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 },
2944 static int
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);
2950 return offset;
2954 static const value_string m2ap_PMCH_Overload_Status_vals[] = {
2955 { 0, "normal" },
2956 { 1, "overload" },
2957 { 0, NULL }
2961 static int
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);
2966 return offset;
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 },
2974 static int
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);
2980 return offset;
2985 static int
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);
2991 return offset;
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 }
3002 static int
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);
3007 return offset;
3012 static int
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);
3018 return offset;
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 }
3029 static int
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);
3034 return offset;
3039 static int
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);
3045 return offset;
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 }
3056 static int
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);
3061 return offset;
3065 static const value_string m2ap_M2AP_PDU_vals[] = {
3066 { 0, "initiatingMessage" },
3067 { 1, "successfulOutcome" },
3068 { 2, "unsuccessfulOutcome" },
3069 { 0, NULL }
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 }
3079 static int
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,
3083 NULL);
3085 return offset;
3088 /*--- PDUs ---*/
3090 static int dissect_AdditionalConfigParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3091 int offset = 0;
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;
3096 return offset;
3098 static int dissect_Cause_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3099 int offset = 0;
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;
3104 return offset;
3106 static int dissect_CriticalityDiagnostics_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3107 int offset = 0;
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;
3112 return offset;
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_) {
3115 int offset = 0;
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;
3120 return offset;
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_) {
3123 int offset = 0;
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;
3128 return offset;
3130 static int dissect_ENB_MBMS_M2AP_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3131 int offset = 0;
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;
3136 return offset;
3138 static int dissect_ENBname_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3139 int offset = 0;
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;
3144 return offset;
3146 static int dissect_GlobalENB_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3147 int offset = 0;
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;
3152 return offset;
3154 static int dissect_GlobalMCE_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3155 int offset = 0;
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;
3160 return offset;
3162 static int dissect_MBMS_Service_associatedLogicalM2_ConnectionItem_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3163 int offset = 0;
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;
3168 return offset;
3170 static int dissect_MBMS_Service_Area_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3171 int offset = 0;
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;
3176 return offset;
3178 static int dissect_MBMS_Session_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3179 int offset = 0;
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;
3184 return offset;
3186 static int dissect_MBSFN_Area_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3187 int offset = 0;
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;
3192 return offset;
3194 static int dissect_MBSFN_Subframe_Configuration_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3195 int offset = 0;
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;
3200 return offset;
3202 static int dissect_MCCH_Update_Time_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3203 int offset = 0;
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;
3208 return offset;
3210 static int dissect_MCCHrelatedBCCH_ConfigPerMBSFNArea_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3211 int offset = 0;
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;
3216 return offset;
3218 static int dissect_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3219 int offset = 0;
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;
3224 return offset;
3226 static int dissect_MCE_MBMS_M2AP_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3227 int offset = 0;
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;
3232 return offset;
3234 static int dissect_MCEname_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3235 int offset = 0;
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;
3240 return offset;
3242 static int dissect_MCH_Scheduling_PeriodExtended_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3243 int offset = 0;
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;
3248 return offset;
3250 static int dissect_MCH_Scheduling_PeriodExtended2_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3251 int offset = 0;
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;
3256 return offset;
3258 static int dissect_Modulation_Coding_Scheme2_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3259 int offset = 0;
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;
3264 return offset;
3266 static int dissect_Modification_PeriodExtended_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3267 int offset = 0;
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;
3272 return offset;
3274 static int dissect_Common_Subframe_Allocation_Period_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3275 int offset = 0;
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;
3280 return offset;
3282 static int dissect_Repetition_PeriodExtended_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3283 int offset = 0;
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;
3288 return offset;
3290 static int dissect_SC_PTM_Information_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3291 int offset = 0;
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;
3296 return offset;
3298 static int dissect_Subcarrier_SpacingMBMS_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3299 int offset = 0;
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;
3304 return offset;
3306 static int dissect_SubframeAllocationExtended_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3307 int offset = 0;
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;
3312 return offset;
3314 static int dissect_SubframeAllocationFurtherExtension_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3315 int offset = 0;
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;
3320 return offset;
3322 static int dissect_TimeToWait_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3323 int offset = 0;
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;
3328 return offset;
3330 static int dissect_TMGI_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3331 int offset = 0;
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;
3336 return offset;
3338 static int dissect_TNL_Information_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3339 int offset = 0;
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;
3344 return offset;
3346 static int dissect_SessionStartRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3347 int offset = 0;
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;
3352 return offset;
3354 static int dissect_SessionStartResponse_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3355 int offset = 0;
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;
3360 return offset;
3362 static int dissect_SessionStartFailure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3363 int offset = 0;
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;
3368 return offset;
3370 static int dissect_SessionStopRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3371 int offset = 0;
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;
3376 return offset;
3378 static int dissect_SessionStopResponse_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3379 int offset = 0;
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;
3384 return offset;
3386 static int dissect_SessionUpdateRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3387 int offset = 0;
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;
3392 return offset;
3394 static int dissect_SessionUpdateResponse_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3395 int offset = 0;
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;
3400 return offset;
3402 static int dissect_SessionUpdateFailure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3403 int offset = 0;
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;
3408 return offset;
3410 static int dissect_MbmsSchedulingInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3411 int offset = 0;
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;
3416 return offset;
3418 static int dissect_MBSFN_Area_Configuration_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3419 int offset = 0;
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;
3424 return offset;
3426 static int dissect_PMCH_Configuration_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3427 int offset = 0;
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;
3432 return offset;
3434 static int dissect_PMCH_Configuration_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3435 int offset = 0;
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;
3440 return offset;
3442 static int dissect_MBSFN_Subframe_ConfigurationList_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3443 int offset = 0;
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;
3448 return offset;
3450 static int dissect_MBMS_Suspension_Notification_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3451 int offset = 0;
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;
3456 return offset;
3458 static int dissect_MBMS_Suspension_Notification_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3459 int offset = 0;
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;
3464 return offset;
3466 static int dissect_MbmsSchedulingInformationResponse_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3467 int offset = 0;
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;
3472 return offset;
3474 static int dissect_M2SetupRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3475 int offset = 0;
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;
3480 return offset;
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_) {
3483 int offset = 0;
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;
3488 return offset;
3490 static int dissect_M2SetupResponse_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3491 int offset = 0;
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;
3496 return offset;
3498 static int dissect_MCCHrelatedBCCH_ConfigPerMBSFNArea_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3499 int offset = 0;
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;
3504 return offset;
3506 static int dissect_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3507 int offset = 0;
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;
3512 return offset;
3514 static int dissect_M2SetupFailure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3515 int offset = 0;
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;
3520 return offset;
3522 static int dissect_ENBConfigurationUpdate_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3523 int offset = 0;
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;
3528 return offset;
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_) {
3531 int offset = 0;
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;
3536 return offset;
3538 static int dissect_ENBConfigurationUpdateAcknowledge_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3539 int offset = 0;
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;
3544 return offset;
3546 static int dissect_ENBConfigurationUpdateFailure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3547 int offset = 0;
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;
3552 return offset;
3554 static int dissect_MCEConfigurationUpdate_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3555 int offset = 0;
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;
3560 return offset;
3562 static int dissect_MCEConfigurationUpdateAcknowledge_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3563 int offset = 0;
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;
3568 return offset;
3570 static int dissect_MCEConfigurationUpdateFailure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3571 int offset = 0;
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;
3576 return offset;
3578 static int dissect_ErrorIndication_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3579 int offset = 0;
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;
3584 return offset;
3586 static int dissect_Reset_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3587 int offset = 0;
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;
3592 return offset;
3594 static int dissect_ResetType_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3595 int offset = 0;
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;
3600 return offset;
3602 static int dissect_ResetAcknowledge_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3603 int offset = 0;
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;
3608 return offset;
3610 static int dissect_MBMS_Service_associatedLogicalM2_ConnectionListResAck_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3611 int offset = 0;
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;
3616 return offset;
3618 static int dissect_PrivateMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3619 int offset = 0;
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;
3624 return offset;
3626 static int dissect_MbmsServiceCountingRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3627 int offset = 0;
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;
3632 return offset;
3634 static int dissect_MBMS_Counting_Request_Session_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3635 int offset = 0;
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;
3640 return offset;
3642 static int dissect_MBMS_Counting_Request_SessionIE_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3643 int offset = 0;
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;
3648 return offset;
3650 static int dissect_MbmsServiceCountingResponse_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3651 int offset = 0;
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;
3656 return offset;
3658 static int dissect_MbmsServiceCountingFailure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3659 int offset = 0;
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;
3664 return offset;
3666 static int dissect_MbmsServiceCountingResultsReport_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3667 int offset = 0;
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;
3672 return offset;
3674 static int dissect_MBMS_Counting_Result_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3675 int offset = 0;
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;
3680 return offset;
3682 static int dissect_MBMS_Counting_Result_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3683 int offset = 0;
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;
3688 return offset;
3690 static int dissect_MbmsOverloadNotification_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3691 int offset = 0;
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;
3696 return offset;
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_) {
3699 int offset = 0;
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;
3704 return offset;
3706 static int dissect_PMCH_Overload_Status_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3707 int offset = 0;
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;
3712 return offset;
3714 static int dissect_Active_MBMS_Session_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3715 int offset = 0;
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;
3720 return offset;
3722 static int dissect_M2AP_PDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
3723 int offset = 0;
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;
3728 return offset;
3732 static int
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;
3738 static int
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;
3744 static int
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;
3750 static int
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;
3756 static int
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;
3763 static int
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);
3782 void
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,
3790 NULL, HFILL }
3792 { &hf_m2ap_IPAddress_v6,
3793 { "IPAddress", "m2ap.IPAddress_v6",
3794 FT_IPv6, BASE_NONE, NULL, 0,
3795 NULL, HFILL }
3797 { &hf_m2ap_AdditionalConfigParameters_PDU,
3798 { "AdditionalConfigParameters", "m2ap.AdditionalConfigParameters_element",
3799 FT_NONE, BASE_NONE, NULL, 0,
3800 NULL, HFILL }},
3801 { &hf_m2ap_Cause_PDU,
3802 { "Cause", "m2ap.Cause",
3803 FT_UINT32, BASE_DEC, VALS(m2ap_Cause_vals), 0,
3804 NULL, HFILL }},
3805 { &hf_m2ap_CriticalityDiagnostics_PDU,
3806 { "CriticalityDiagnostics", "m2ap.CriticalityDiagnostics_element",
3807 FT_NONE, BASE_NONE, NULL, 0,
3808 NULL, HFILL }},
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,
3812 NULL, HFILL }},
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,
3816 NULL, HFILL }},
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,
3820 NULL, HFILL }},
3821 { &hf_m2ap_ENBname_PDU,
3822 { "ENBname", "m2ap.ENBname",
3823 FT_STRING, BASE_NONE, NULL, 0,
3824 NULL, HFILL }},
3825 { &hf_m2ap_GlobalENB_ID_PDU,
3826 { "GlobalENB-ID", "m2ap.GlobalENB_ID_element",
3827 FT_NONE, BASE_NONE, NULL, 0,
3828 NULL, HFILL }},
3829 { &hf_m2ap_GlobalMCE_ID_PDU,
3830 { "GlobalMCE-ID", "m2ap.GlobalMCE_ID_element",
3831 FT_NONE, BASE_NONE, NULL, 0,
3832 NULL, HFILL }},
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,
3836 NULL, HFILL }},
3837 { &hf_m2ap_MBMS_Service_Area_PDU,
3838 { "MBMS-Service-Area", "m2ap.MBMS_Service_Area",
3839 FT_BYTES, BASE_NONE, NULL, 0,
3840 NULL, HFILL }},
3841 { &hf_m2ap_MBMS_Session_ID_PDU,
3842 { "MBMS-Session-ID", "m2ap.MBMS_Session_ID",
3843 FT_BYTES, BASE_NONE, NULL, 0,
3844 NULL, HFILL }},
3845 { &hf_m2ap_MBSFN_Area_ID_PDU,
3846 { "MBSFN-Area-ID", "m2ap.MBSFN_Area_ID",
3847 FT_UINT32, BASE_DEC, NULL, 0,
3848 NULL, HFILL }},
3849 { &hf_m2ap_MBSFN_Subframe_Configuration_PDU,
3850 { "MBSFN-Subframe-Configuration", "m2ap.MBSFN_Subframe_Configuration_element",
3851 FT_NONE, BASE_NONE, NULL, 0,
3852 NULL, HFILL }},
3853 { &hf_m2ap_MCCH_Update_Time_PDU,
3854 { "MCCH-Update-Time", "m2ap.MCCH_Update_Time",
3855 FT_UINT32, BASE_DEC, NULL, 0,
3856 NULL, HFILL }},
3857 { &hf_m2ap_MCCHrelatedBCCH_ConfigPerMBSFNArea_Item_PDU,
3858 { "MCCHrelatedBCCH-ConfigPerMBSFNArea-Item", "m2ap.MCCHrelatedBCCH_ConfigPerMBSFNArea_Item_element",
3859 FT_NONE, BASE_NONE, NULL, 0,
3860 NULL, HFILL }},
3861 { &hf_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item_PDU,
3862 { "MCCHrelatedBCCH-ExtConfigPerMBSFNArea-Item", "m2ap.MCCHrelatedBCCH_ExtConfigPerMBSFNArea_Item_element",
3863 FT_NONE, BASE_NONE, NULL, 0,
3864 NULL, HFILL }},
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,
3868 NULL, HFILL }},
3869 { &hf_m2ap_MCEname_PDU,
3870 { "MCEname", "m2ap.MCEname",
3871 FT_STRING, BASE_NONE, NULL, 0,
3872 NULL, HFILL }},
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,
3876 NULL, HFILL }},
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,
3880 NULL, HFILL }},
3881 { &hf_m2ap_Modulation_Coding_Scheme2_PDU,
3882 { "Modulation-Coding-Scheme2", "m2ap.Modulation_Coding_Scheme2",
3883 FT_UINT32, BASE_DEC, NULL, 0,
3884 NULL, HFILL }},
3885 { &hf_m2ap_Modification_PeriodExtended_PDU,
3886 { "Modification-PeriodExtended", "m2ap.Modification_PeriodExtended",
3887 FT_UINT32, BASE_DEC, VALS(m2ap_Modification_PeriodExtended_vals), 0,
3888 NULL, HFILL }},
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,
3892 NULL, HFILL }},
3893 { &hf_m2ap_Repetition_PeriodExtended_PDU,
3894 { "Repetition-PeriodExtended", "m2ap.Repetition_PeriodExtended",
3895 FT_UINT32, BASE_DEC, VALS(m2ap_Repetition_PeriodExtended_vals), 0,
3896 NULL, HFILL }},
3897 { &hf_m2ap_SC_PTM_Information_PDU,
3898 { "SC-PTM-Information", "m2ap.SC_PTM_Information_element",
3899 FT_NONE, BASE_NONE, NULL, 0,
3900 NULL, HFILL }},
3901 { &hf_m2ap_Subcarrier_SpacingMBMS_PDU,
3902 { "Subcarrier-SpacingMBMS", "m2ap.Subcarrier_SpacingMBMS",
3903 FT_UINT32, BASE_DEC, VALS(m2ap_Subcarrier_SpacingMBMS_vals), 0,
3904 NULL, HFILL }},
3905 { &hf_m2ap_SubframeAllocationExtended_PDU,
3906 { "SubframeAllocationExtended", "m2ap.SubframeAllocationExtended",
3907 FT_UINT32, BASE_DEC, VALS(m2ap_SubframeAllocationExtended_vals), 0,
3908 NULL, HFILL }},
3909 { &hf_m2ap_SubframeAllocationFurtherExtension_PDU,
3910 { "SubframeAllocationFurtherExtension", "m2ap.SubframeAllocationFurtherExtension",
3911 FT_UINT32, BASE_DEC, VALS(m2ap_SubframeAllocationFurtherExtension_vals), 0,
3912 NULL, HFILL }},
3913 { &hf_m2ap_TimeToWait_PDU,
3914 { "TimeToWait", "m2ap.TimeToWait",
3915 FT_UINT32, BASE_DEC, VALS(m2ap_TimeToWait_vals), 0,
3916 NULL, HFILL }},
3917 { &hf_m2ap_TMGI_PDU,
3918 { "TMGI", "m2ap.TMGI_element",
3919 FT_NONE, BASE_NONE, NULL, 0,
3920 NULL, HFILL }},
3921 { &hf_m2ap_TNL_Information_PDU,
3922 { "TNL-Information", "m2ap.TNL_Information_element",
3923 FT_NONE, BASE_NONE, NULL, 0,
3924 NULL, HFILL }},
3925 { &hf_m2ap_SessionStartRequest_PDU,
3926 { "SessionStartRequest", "m2ap.SessionStartRequest_element",
3927 FT_NONE, BASE_NONE, NULL, 0,
3928 NULL, HFILL }},
3929 { &hf_m2ap_SessionStartResponse_PDU,
3930 { "SessionStartResponse", "m2ap.SessionStartResponse_element",
3931 FT_NONE, BASE_NONE, NULL, 0,
3932 NULL, HFILL }},
3933 { &hf_m2ap_SessionStartFailure_PDU,
3934 { "SessionStartFailure", "m2ap.SessionStartFailure_element",
3935 FT_NONE, BASE_NONE, NULL, 0,
3936 NULL, HFILL }},
3937 { &hf_m2ap_SessionStopRequest_PDU,
3938 { "SessionStopRequest", "m2ap.SessionStopRequest_element",
3939 FT_NONE, BASE_NONE, NULL, 0,
3940 NULL, HFILL }},
3941 { &hf_m2ap_SessionStopResponse_PDU,
3942 { "SessionStopResponse", "m2ap.SessionStopResponse_element",
3943 FT_NONE, BASE_NONE, NULL, 0,
3944 NULL, HFILL }},
3945 { &hf_m2ap_SessionUpdateRequest_PDU,
3946 { "SessionUpdateRequest", "m2ap.SessionUpdateRequest_element",
3947 FT_NONE, BASE_NONE, NULL, 0,
3948 NULL, HFILL }},
3949 { &hf_m2ap_SessionUpdateResponse_PDU,
3950 { "SessionUpdateResponse", "m2ap.SessionUpdateResponse_element",
3951 FT_NONE, BASE_NONE, NULL, 0,
3952 NULL, HFILL }},
3953 { &hf_m2ap_SessionUpdateFailure_PDU,
3954 { "SessionUpdateFailure", "m2ap.SessionUpdateFailure_element",
3955 FT_NONE, BASE_NONE, NULL, 0,
3956 NULL, HFILL }},
3957 { &hf_m2ap_MbmsSchedulingInformation_PDU,
3958 { "MbmsSchedulingInformation", "m2ap.MbmsSchedulingInformation_element",
3959 FT_NONE, BASE_NONE, NULL, 0,
3960 NULL, HFILL }},
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,
3964 NULL, HFILL }},
3965 { &hf_m2ap_PMCH_Configuration_List_PDU,
3966 { "PMCH-Configuration-List", "m2ap.PMCH_Configuration_List",
3967 FT_UINT32, BASE_DEC, NULL, 0,
3968 NULL, HFILL }},
3969 { &hf_m2ap_PMCH_Configuration_Item_PDU,
3970 { "PMCH-Configuration-Item", "m2ap.PMCH_Configuration_Item_element",
3971 FT_NONE, BASE_NONE, NULL, 0,
3972 NULL, HFILL }},
3973 { &hf_m2ap_MBSFN_Subframe_ConfigurationList_PDU,
3974 { "MBSFN-Subframe-ConfigurationList", "m2ap.MBSFN_Subframe_ConfigurationList",
3975 FT_UINT32, BASE_DEC, NULL, 0,
3976 NULL, HFILL }},
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,
3980 NULL, HFILL }},
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,
3984 NULL, HFILL }},
3985 { &hf_m2ap_MbmsSchedulingInformationResponse_PDU,
3986 { "MbmsSchedulingInformationResponse", "m2ap.MbmsSchedulingInformationResponse_element",
3987 FT_NONE, BASE_NONE, NULL, 0,
3988 NULL, HFILL }},
3989 { &hf_m2ap_M2SetupRequest_PDU,
3990 { "M2SetupRequest", "m2ap.M2SetupRequest_element",
3991 FT_NONE, BASE_NONE, NULL, 0,
3992 NULL, HFILL }},
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,
3996 NULL, HFILL }},
3997 { &hf_m2ap_M2SetupResponse_PDU,
3998 { "M2SetupResponse", "m2ap.M2SetupResponse_element",
3999 FT_NONE, BASE_NONE, NULL, 0,
4000 NULL, HFILL }},
4001 { &hf_m2ap_MCCHrelatedBCCH_ConfigPerMBSFNArea_PDU,
4002 { "MCCHrelatedBCCH-ConfigPerMBSFNArea", "m2ap.MCCHrelatedBCCH_ConfigPerMBSFNArea",
4003 FT_UINT32, BASE_DEC, NULL, 0,
4004 NULL, HFILL }},
4005 { &hf_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_PDU,
4006 { "MCCHrelatedBCCH-ExtConfigPerMBSFNArea", "m2ap.MCCHrelatedBCCH_ExtConfigPerMBSFNArea",
4007 FT_UINT32, BASE_DEC, NULL, 0,
4008 NULL, HFILL }},
4009 { &hf_m2ap_M2SetupFailure_PDU,
4010 { "M2SetupFailure", "m2ap.M2SetupFailure_element",
4011 FT_NONE, BASE_NONE, NULL, 0,
4012 NULL, HFILL }},
4013 { &hf_m2ap_ENBConfigurationUpdate_PDU,
4014 { "ENBConfigurationUpdate", "m2ap.ENBConfigurationUpdate_element",
4015 FT_NONE, BASE_NONE, NULL, 0,
4016 NULL, HFILL }},
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,
4020 NULL, HFILL }},
4021 { &hf_m2ap_ENBConfigurationUpdateAcknowledge_PDU,
4022 { "ENBConfigurationUpdateAcknowledge", "m2ap.ENBConfigurationUpdateAcknowledge_element",
4023 FT_NONE, BASE_NONE, NULL, 0,
4024 NULL, HFILL }},
4025 { &hf_m2ap_ENBConfigurationUpdateFailure_PDU,
4026 { "ENBConfigurationUpdateFailure", "m2ap.ENBConfigurationUpdateFailure_element",
4027 FT_NONE, BASE_NONE, NULL, 0,
4028 NULL, HFILL }},
4029 { &hf_m2ap_MCEConfigurationUpdate_PDU,
4030 { "MCEConfigurationUpdate", "m2ap.MCEConfigurationUpdate_element",
4031 FT_NONE, BASE_NONE, NULL, 0,
4032 NULL, HFILL }},
4033 { &hf_m2ap_MCEConfigurationUpdateAcknowledge_PDU,
4034 { "MCEConfigurationUpdateAcknowledge", "m2ap.MCEConfigurationUpdateAcknowledge_element",
4035 FT_NONE, BASE_NONE, NULL, 0,
4036 NULL, HFILL }},
4037 { &hf_m2ap_MCEConfigurationUpdateFailure_PDU,
4038 { "MCEConfigurationUpdateFailure", "m2ap.MCEConfigurationUpdateFailure_element",
4039 FT_NONE, BASE_NONE, NULL, 0,
4040 NULL, HFILL }},
4041 { &hf_m2ap_ErrorIndication_PDU,
4042 { "ErrorIndication", "m2ap.ErrorIndication_element",
4043 FT_NONE, BASE_NONE, NULL, 0,
4044 NULL, HFILL }},
4045 { &hf_m2ap_Reset_PDU,
4046 { "Reset", "m2ap.Reset_element",
4047 FT_NONE, BASE_NONE, NULL, 0,
4048 NULL, HFILL }},
4049 { &hf_m2ap_ResetType_PDU,
4050 { "ResetType", "m2ap.ResetType",
4051 FT_UINT32, BASE_DEC, VALS(m2ap_ResetType_vals), 0,
4052 NULL, HFILL }},
4053 { &hf_m2ap_ResetAcknowledge_PDU,
4054 { "ResetAcknowledge", "m2ap.ResetAcknowledge_element",
4055 FT_NONE, BASE_NONE, NULL, 0,
4056 NULL, HFILL }},
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,
4060 NULL, HFILL }},
4061 { &hf_m2ap_PrivateMessage_PDU,
4062 { "PrivateMessage", "m2ap.PrivateMessage_element",
4063 FT_NONE, BASE_NONE, NULL, 0,
4064 NULL, HFILL }},
4065 { &hf_m2ap_MbmsServiceCountingRequest_PDU,
4066 { "MbmsServiceCountingRequest", "m2ap.MbmsServiceCountingRequest_element",
4067 FT_NONE, BASE_NONE, NULL, 0,
4068 NULL, HFILL }},
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,
4072 NULL, HFILL }},
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,
4076 NULL, HFILL }},
4077 { &hf_m2ap_MbmsServiceCountingResponse_PDU,
4078 { "MbmsServiceCountingResponse", "m2ap.MbmsServiceCountingResponse_element",
4079 FT_NONE, BASE_NONE, NULL, 0,
4080 NULL, HFILL }},
4081 { &hf_m2ap_MbmsServiceCountingFailure_PDU,
4082 { "MbmsServiceCountingFailure", "m2ap.MbmsServiceCountingFailure_element",
4083 FT_NONE, BASE_NONE, NULL, 0,
4084 NULL, HFILL }},
4085 { &hf_m2ap_MbmsServiceCountingResultsReport_PDU,
4086 { "MbmsServiceCountingResultsReport", "m2ap.MbmsServiceCountingResultsReport_element",
4087 FT_NONE, BASE_NONE, NULL, 0,
4088 NULL, HFILL }},
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,
4092 NULL, HFILL }},
4093 { &hf_m2ap_MBMS_Counting_Result_PDU,
4094 { "MBMS-Counting-Result", "m2ap.MBMS_Counting_Result_element",
4095 FT_NONE, BASE_NONE, NULL, 0,
4096 NULL, HFILL }},
4097 { &hf_m2ap_MbmsOverloadNotification_PDU,
4098 { "MbmsOverloadNotification", "m2ap.MbmsOverloadNotification_element",
4099 FT_NONE, BASE_NONE, NULL, 0,
4100 NULL, HFILL }},
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,
4104 NULL, HFILL }},
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,
4108 NULL, HFILL }},
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,
4112 NULL, HFILL }},
4113 { &hf_m2ap_M2AP_PDU_PDU,
4114 { "M2AP-PDU", "m2ap.M2AP_PDU",
4115 FT_UINT32, BASE_DEC, VALS(m2ap_M2AP_PDU_vals), 0,
4116 NULL, HFILL }},
4117 { &hf_m2ap_local,
4118 { "local", "m2ap.local",
4119 FT_UINT32, BASE_DEC, NULL, 0,
4120 "INTEGER_0_maxPrivateIEs", HFILL }},
4121 { &hf_m2ap_global,
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,
4128 NULL, HFILL }},
4129 { &hf_m2ap_id,
4130 { "id", "m2ap.id",
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,
4136 NULL, HFILL }},
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,
4144 NULL, HFILL }},
4145 { &hf_m2ap_ext_id,
4146 { "id", "m2ap.id",
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,
4152 NULL, HFILL }},
4153 { &hf_m2ap_PrivateIE_Container_item,
4154 { "PrivateIE-Field", "m2ap.PrivateIE_Field_element",
4155 FT_NONE, BASE_NONE, NULL, 0,
4156 NULL, HFILL }},
4157 { &hf_m2ap_private_id,
4158 { "id", "m2ap.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,
4168 NULL, HFILL }},
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,
4176 NULL, HFILL }},
4177 { &hf_m2ap_pre_emptionCapability,
4178 { "pre-emptionCapability", "m2ap.pre_emptionCapability",
4179 FT_UINT32, BASE_DEC, VALS(m2ap_Pre_emptionCapability_vals), 0,
4180 NULL, HFILL }},
4181 { &hf_m2ap_pre_emptionVulnerability,
4182 { "pre-emptionVulnerability", "m2ap.pre_emptionVulnerability",
4183 FT_UINT32, BASE_DEC, VALS(m2ap_Pre_emptionVulnerability_vals), 0,
4184 NULL, HFILL }},
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 }},
4193 { &hf_m2ap_nAS,
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 }},
4201 { &hf_m2ap_misc,
4202 { "misc", "m2ap.misc",
4203 FT_UINT32, BASE_DEC, VALS(m2ap_CauseMisc_vals), 0,
4204 "CauseMisc", HFILL }},
4205 { &hf_m2ap_eCGI,
4206 { "eCGI", "m2ap.eCGI_element",
4207 FT_NONE, BASE_NONE, NULL, 0,
4208 NULL, HFILL }},
4209 { &hf_m2ap_cellReservationInfo,
4210 { "cellReservationInfo", "m2ap.cellReservationInfo",
4211 FT_UINT32, BASE_DEC, VALS(m2ap_T_cellReservationInfo_vals), 0,
4212 NULL, HFILL }},
4213 { &hf_m2ap_Cell_Information_List_item,
4214 { "Cell-Information", "m2ap.Cell_Information_element",
4215 FT_NONE, BASE_NONE, NULL, 0,
4216 NULL, HFILL }},
4217 { &hf_m2ap_procedureCode,
4218 { "procedureCode", "m2ap.procedureCode",
4219 FT_UINT32, BASE_DEC|BASE_EXT_STRING, &m2ap_ProcedureCode_vals_ext, 0,
4220 NULL, HFILL }},
4221 { &hf_m2ap_triggeringMessage,
4222 { "triggeringMessage", "m2ap.triggeringMessage",
4223 FT_UINT32, BASE_DEC, VALS(m2ap_TriggeringMessage_vals), 0,
4224 NULL, HFILL }},
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,
4236 NULL, HFILL }},
4237 { &hf_m2ap_iECriticality,
4238 { "iECriticality", "m2ap.iECriticality",
4239 FT_UINT32, BASE_DEC, VALS(m2ap_Criticality_vals), 0,
4240 "Criticality", HFILL }},
4241 { &hf_m2ap_iE_ID,
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,
4248 NULL, HFILL }},
4249 { &hf_m2ap_pLMN_Identity,
4250 { "pLMN-Identity", "m2ap.pLMN_Identity",
4251 FT_BYTES, BASE_NONE, NULL, 0,
4252 NULL, HFILL }},
4253 { &hf_m2ap_eUTRANcellIdentifier,
4254 { "eUTRANcellIdentifier", "m2ap.eUTRANcellIdentifier",
4255 FT_BYTES, BASE_NONE, NULL, 0,
4256 NULL, HFILL }},
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 }},
4289 { &hf_m2ap_eNB_ID,
4290 { "eNB-ID", "m2ap.eNB_ID",
4291 FT_UINT32, BASE_DEC, VALS(m2ap_ENB_ID_vals), 0,
4292 NULL, HFILL }},
4293 { &hf_m2ap_mCE_ID,
4294 { "mCE-ID", "m2ap.mCE_ID",
4295 FT_BYTES, BASE_NONE, NULL, 0,
4296 NULL, HFILL }},
4297 { &hf_m2ap_MBMS_Cell_List_item,
4298 { "ECGI", "m2ap.ECGI_element",
4299 FT_NONE, BASE_NONE, NULL, 0,
4300 NULL, HFILL }},
4301 { &hf_m2ap_qCI,
4302 { "qCI", "m2ap.qCI",
4303 FT_UINT32, BASE_DEC, NULL, 0,
4304 NULL, HFILL }},
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,
4312 NULL, HFILL }},
4313 { &hf_m2ap_eNB_MBMS_M2AP_ID,
4314 { "eNB-MBMS-M2AP-ID", "m2ap.eNB_MBMS_M2AP_ID",
4315 FT_UINT32, BASE_DEC, NULL, 0,
4316 NULL, HFILL }},
4317 { &hf_m2ap_mCE_MBMS_M2AP_ID,
4318 { "mCE-MBMS-M2AP-ID", "m2ap.mCE_MBMS_M2AP_ID",
4319 FT_UINT32, BASE_DEC, NULL, 0,
4320 NULL, HFILL }},
4321 { &hf_m2ap_MBMS_Service_Area_ID_List_item,
4322 { "MBMS-Service-Area", "m2ap.MBMS_Service_Area",
4323 FT_BYTES, BASE_NONE, NULL, 0,
4324 NULL, HFILL }},
4325 { &hf_m2ap_MBMSsessionListPerPMCH_Item_item,
4326 { "MBMSsessionListPerPMCH-Item item", "m2ap.MBMSsessionListPerPMCH_Item_item_element",
4327 FT_NONE, BASE_NONE, NULL, 0,
4328 NULL, HFILL }},
4329 { &hf_m2ap_tmgi,
4330 { "tmgi", "m2ap.tmgi_element",
4331 FT_NONE, BASE_NONE, NULL, 0,
4332 NULL, HFILL }},
4333 { &hf_m2ap_lcid,
4334 { "lcid", "m2ap.lcid",
4335 FT_UINT32, BASE_DEC, NULL, 0,
4336 NULL, HFILL }},
4337 { &hf_m2ap_MBMSsessionsToBeSuspendedListPerPMCH_Item_item,
4338 { "MBMSsessionsToBeSuspendedListPerPMCH-Item item", "m2ap.MBMSsessionsToBeSuspendedListPerPMCH_Item_item_element",
4339 FT_NONE, BASE_NONE, NULL, 0,
4340 NULL, HFILL }},
4341 { &hf_m2ap_radioframeAllocationPeriod,
4342 { "radioframeAllocationPeriod", "m2ap.radioframeAllocationPeriod",
4343 FT_UINT32, BASE_DEC, VALS(m2ap_T_radioframeAllocationPeriod_vals), 0,
4344 NULL, HFILL }},
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,
4352 NULL, HFILL }},
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,
4368 NULL, HFILL }},
4369 { &hf_m2ap_repetitionPeriod,
4370 { "repetitionPeriod", "m2ap.repetitionPeriod",
4371 FT_UINT32, BASE_DEC, VALS(m2ap_T_repetitionPeriod_vals), 0,
4372 NULL, HFILL }},
4373 { &hf_m2ap_offset,
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,
4380 NULL, HFILL }},
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,
4388 NULL, HFILL }},
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,
4396 NULL, HFILL }},
4397 { &hf_m2ap_modificationPeriodExpanded,
4398 { "modificationPeriodExpanded", "m2ap.modificationPeriodExpanded",
4399 FT_UINT32, BASE_DEC, VALS(m2ap_T_modificationPeriodExpanded_vals), 0,
4400 NULL, HFILL }},
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,
4412 NULL, HFILL }},
4413 { &hf_m2ap_timeSeparation,
4414 { "timeSeparation", "m2ap.timeSeparation",
4415 FT_UINT32, BASE_DEC, VALS(m2ap_T_timeSeparation_vals), 0,
4416 NULL, HFILL }},
4417 { &hf_m2ap_allocatedSubframesEnd,
4418 { "allocatedSubframesEnd", "m2ap.allocatedSubframesEnd",
4419 FT_UINT32, BASE_DEC, NULL, 0,
4420 NULL, HFILL }},
4421 { &hf_m2ap_dataMCS,
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,
4436 NULL, HFILL }},
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,
4476 NULL, HFILL }},
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,
4484 NULL, HFILL }},
4485 { &hf_m2ap_PMCH_Configuration_List_item,
4486 { "ProtocolIE-Single-Container", "m2ap.ProtocolIE_Single_Container_element",
4487 FT_NONE, BASE_NONE, NULL, 0,
4488 NULL, HFILL }},
4489 { &hf_m2ap_pmch_Configuration,
4490 { "pmch-Configuration", "m2ap.pmch_Configuration_element",
4491 FT_NONE, BASE_NONE, NULL, 0,
4492 NULL, HFILL }},
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,
4500 NULL, HFILL }},
4501 { &hf_m2ap_MBMS_Suspension_Notification_List_item,
4502 { "ProtocolIE-Single-Container", "m2ap.ProtocolIE_Single_Container_element",
4503 FT_NONE, BASE_NONE, NULL, 0,
4504 NULL, HFILL }},
4505 { &hf_m2ap_sfn,
4506 { "sfn", "m2ap.sfn",
4507 FT_UINT32, BASE_DEC, NULL, 0,
4508 NULL, HFILL }},
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,
4516 NULL, HFILL }},
4517 { &hf_m2ap_MCCHrelatedBCCH_ConfigPerMBSFNArea_item,
4518 { "ProtocolIE-Single-Container", "m2ap.ProtocolIE_Single_Container_element",
4519 FT_NONE, BASE_NONE, NULL, 0,
4520 NULL, HFILL }},
4521 { &hf_m2ap_MCCHrelatedBCCH_ExtConfigPerMBSFNArea_item,
4522 { "ProtocolIE-Single-Container", "m2ap.ProtocolIE_Single_Container_element",
4523 FT_NONE, BASE_NONE, NULL, 0,
4524 NULL, HFILL }},
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,
4528 NULL, HFILL }},
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,
4540 NULL, HFILL }},
4541 { &hf_m2ap_MBMS_Service_associatedLogicalM2_ConnectionListResAck_item,
4542 { "ProtocolIE-Single-Container", "m2ap.ProtocolIE_Single_Container_element",
4543 FT_NONE, BASE_NONE, NULL, 0,
4544 NULL, HFILL }},
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,
4552 NULL, HFILL }},
4553 { &hf_m2ap_MBMS_Counting_Result_List_item,
4554 { "ProtocolIE-Container", "m2ap.ProtocolIE_Container",
4555 FT_UINT32, BASE_DEC, NULL, 0,
4556 NULL, HFILL }},
4557 { &hf_m2ap_countingResult,
4558 { "countingResult", "m2ap.countingResult",
4559 FT_UINT32, BASE_DEC, NULL, 0,
4560 NULL, HFILL }},
4561 { &hf_m2ap_Overload_Status_Per_PMCH_List_item,
4562 { "ProtocolIE-Container", "m2ap.ProtocolIE_Container",
4563 FT_UINT32, BASE_DEC, NULL, 0,
4564 NULL, HFILL }},
4565 { &hf_m2ap_Active_MBMS_Session_List_item,
4566 { "ProtocolIE-Container", "m2ap.ProtocolIE_Container",
4567 FT_UINT32, BASE_DEC, NULL, 0,
4568 NULL, HFILL }},
4569 { &hf_m2ap_initiatingMessage,
4570 { "initiatingMessage", "m2ap.initiatingMessage_element",
4571 FT_NONE, BASE_NONE, NULL, 0,
4572 NULL, HFILL }},
4573 { &hf_m2ap_successfulOutcome,
4574 { "successfulOutcome", "m2ap.successfulOutcome_element",
4575 FT_NONE, BASE_NONE, NULL, 0,
4576 NULL, HFILL }},
4577 { &hf_m2ap_unsuccessfulOutcome,
4578 { "unsuccessfulOutcome", "m2ap.unsuccessfulOutcome_element",
4579 FT_NONE, BASE_NONE, NULL, 0,
4580 NULL, HFILL }},
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[] = {
4597 &ett_m2ap,
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,
4609 &ett_m2ap_Cause,
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,
4615 &ett_m2ap_ECGI,
4616 &ett_m2ap_ENB_ID,
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,
4638 &ett_m2ap_TMGI,
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,
4670 &ett_m2ap_Reset,
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,
4687 &ett_m2ap_M2AP_PDU,
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);
4717 void
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));