MSWSP: fix dissect_mswsp_smb()
[wireshark-wip.git] / epan / dissectors / packet-m3ap.c
blobdacf36073f0d9325e88b68002ef7962856257ea6
1 /* Do not modify this file. Changes will be overwritten. */
2 /* Generated automatically by the ASN.1 to Wireshark dissector compiler */
3 /* packet-m3ap.c */
4 /* ../../tools/asn2wrs.py -p m3ap -c ./m3ap.cnf -s ./packet-m3ap-template -D . -O ../../epan/dissectors M3AP-CommonDataTypes.asn M3AP-Constants.asn M3AP-Containers.asn M3AP-IEs.asn M3AP-PDU-Contents.asn M3AP-PDU-Descriptions.asn */
6 /* Input file: packet-m3ap-template.c */
8 #line 1 "../../asn1/m3ap/packet-m3ap-template.c"
9 /* packet-m3ap.c
10 * Routines for M3 Application Protocol packet dissection
12 * $Id$
14 * Wireshark - Network traffic analyzer
15 * By Gerald Combs <gerald@wireshark.org>
16 * Copyright 1998 Gerald Combs
18 * This program is free software; you can redistribute it and/or
19 * modify it under the terms of the GNU General Public License
20 * as published by the Free Software Foundation; either version 2
21 * of the License, or (at your option) any later version.
23 * This program is distributed in the hope that it will be useful,
24 * but WITHOUT ANY WARRANTY; without even the implied warranty of
25 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26 * GNU General Public License for more details.
28 * You should have received a copy of the GNU General Public License
29 * along with this program; if not, write to the Free Software
30 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
32 * Reference: 3GPP TS 36.444 v11.0.0
35 #include "config.h"
37 #include <glib.h>
38 #include <epan/packet.h>
40 #include <epan/strutil.h>
41 #include <epan/asn1.h>
42 #include <epan/sctpppids.h>
44 #include "packet-ber.h"
45 #include "packet-per.h"
46 #include "packet-e212.h"
47 #include "packet-gtpv2.h"
48 #include "packet-ntp.h"
50 #define PNAME "M3 Application Protocol"
51 #define PSNAME "M3AP"
52 #define PFNAME "m3ap"
54 void proto_register_m3ap(void);
55 void proto_reg_handoff_m3ap(void);
57 /* M3AP uses port 36444 as recommended by IANA. */
58 #define M3AP_PORT 36444
59 static dissector_handle_t m3ap_handle=NULL;
62 /*--- Included file: packet-m3ap-val.h ---*/
63 #line 1 "../../asn1/m3ap/packet-m3ap-val.h"
64 #define maxPrivateIEs 65535
65 #define maxProtocolExtensions 65535
66 #define maxProtocolIEs 65535
67 #define maxnoofMBMSServiceAreaIdentitiesPerMCE 65536
68 #define maxnooferrors 256
69 #define maxNrOfIndividualM3ConnectionsToReset 256
71 typedef enum _ProcedureCode_enum {
72 id_mBMSsessionStart = 0,
73 id_mBMSsessionStop = 1,
74 id_errorIndication = 2,
75 id_privateMessage = 3,
76 id_Reset = 4,
77 id_mBMSsessionUpdate = 5,
78 id_mCEConfigurationUpdate = 6,
79 id_m3Setup = 7
80 } ProcedureCode_enum;
82 typedef enum _ProtocolIE_ID_enum {
83 id_MME_MBMS_M3AP_ID = 0,
84 id_MCE_MBMS_M3AP_ID = 1,
85 id_TMGI = 2,
86 id_MBMS_Session_ID = 3,
87 id_MBMS_E_RAB_QoS_Parameters = 4,
88 id_MBMS_Session_Duration = 5,
89 id_MBMS_Service_Area = 6,
90 id_TNL_Information = 7,
91 id_CriticalityDiagnostics = 8,
92 id_Cause = 9,
93 id_MBMS_Service_Area_List = 10,
94 id_MBMS_Service_Area_List_Item = 11,
95 id_TimeToWait = 12,
96 id_ResetType = 13,
97 id_MBMS_Service_associatedLogicalM3_ConnectionItem = 14,
98 id_MBMS_Service_associatedLogicalM3_ConnectionListResAck = 15,
99 id_MinimumTimeToMBMSDataTransfer = 16,
100 id_AllocationAndRetentionPriority = 17,
101 id_Global_MCE_ID = 18,
102 id_MCEname = 19,
103 id_MBMSServiceAreaList = 20,
104 id_Time_ofMBMS_DataTransfer = 21,
105 id_Time_ofMBMS_DataStop = 22
106 } ProtocolIE_ID_enum;
108 /*--- End of included file: packet-m3ap-val.h ---*/
109 #line 54 "../../asn1/m3ap/packet-m3ap-template.c"
111 /* Initialize the protocol and registered fields */
112 static int proto_m3ap = -1;
114 static int hf_m3ap_Absolute_Time_ofMBMS_Data_value = -1;
115 static int hf_m3ap_IPAddress = -1;
118 /*--- Included file: packet-m3ap-hf.c ---*/
119 #line 1 "../../asn1/m3ap/packet-m3ap-hf.c"
120 static int hf_m3ap_Absolute_Time_ofMBMS_Data_PDU = -1; /* Absolute_Time_ofMBMS_Data */
121 static int hf_m3ap_AllocationAndRetentionPriority_PDU = -1; /* AllocationAndRetentionPriority */
122 static int hf_m3ap_Cause_PDU = -1; /* Cause */
123 static int hf_m3ap_CriticalityDiagnostics_PDU = -1; /* CriticalityDiagnostics */
124 static int hf_m3ap_Global_MCE_ID_PDU = -1; /* Global_MCE_ID */
125 static int hf_m3ap_MBMS_E_RAB_QoS_Parameters_PDU = -1; /* MBMS_E_RAB_QoS_Parameters */
126 static int hf_m3ap_MBMS_Service_associatedLogicalM3_ConnectionItem_PDU = -1; /* MBMS_Service_associatedLogicalM3_ConnectionItem */
127 static int hf_m3ap_MBMS_Service_Area_PDU = -1; /* MBMS_Service_Area */
128 static int hf_m3ap_MBMS_Session_Duration_PDU = -1; /* MBMS_Session_Duration */
129 static int hf_m3ap_MBMS_Session_ID_PDU = -1; /* MBMS_Session_ID */
130 static int hf_m3ap_MCE_MBMS_M3AP_ID_PDU = -1; /* MCE_MBMS_M3AP_ID */
131 static int hf_m3ap_MCEname_PDU = -1; /* MCEname */
132 static int hf_m3ap_MinimumTimeToMBMSDataTransfer_PDU = -1; /* MinimumTimeToMBMSDataTransfer */
133 static int hf_m3ap_MME_MBMS_M3AP_ID_PDU = -1; /* MME_MBMS_M3AP_ID */
134 static int hf_m3ap_TimeToWait_PDU = -1; /* TimeToWait */
135 static int hf_m3ap_TMGI_PDU = -1; /* TMGI */
136 static int hf_m3ap_TNL_Information_PDU = -1; /* TNL_Information */
137 static int hf_m3ap_MBMSSessionStartRequest_PDU = -1; /* MBMSSessionStartRequest */
138 static int hf_m3ap_MBMSSessionStartResponse_PDU = -1; /* MBMSSessionStartResponse */
139 static int hf_m3ap_MBMSSessionStartFailure_PDU = -1; /* MBMSSessionStartFailure */
140 static int hf_m3ap_MBMSSessionStopRequest_PDU = -1; /* MBMSSessionStopRequest */
141 static int hf_m3ap_MBMSSessionStopResponse_PDU = -1; /* MBMSSessionStopResponse */
142 static int hf_m3ap_MBMSSessionUpdateRequest_PDU = -1; /* MBMSSessionUpdateRequest */
143 static int hf_m3ap_MBMSSessionUpdateResponse_PDU = -1; /* MBMSSessionUpdateResponse */
144 static int hf_m3ap_MBMSSessionUpdateFailure_PDU = -1; /* MBMSSessionUpdateFailure */
145 static int hf_m3ap_ErrorIndication_PDU = -1; /* ErrorIndication */
146 static int hf_m3ap_Reset_PDU = -1; /* Reset */
147 static int hf_m3ap_ResetType_PDU = -1; /* ResetType */
148 static int hf_m3ap_ResetAcknowledge_PDU = -1; /* ResetAcknowledge */
149 static int hf_m3ap_MBMS_Service_associatedLogicalM3_ConnectionListResAck_PDU = -1; /* MBMS_Service_associatedLogicalM3_ConnectionListResAck */
150 static int hf_m3ap_PrivateMessage_PDU = -1; /* PrivateMessage */
151 static int hf_m3ap_M3SetupRequest_PDU = -1; /* M3SetupRequest */
152 static int hf_m3ap_MBMSServiceAreaListItem_PDU = -1; /* MBMSServiceAreaListItem */
153 static int hf_m3ap_M3SetupResponse_PDU = -1; /* M3SetupResponse */
154 static int hf_m3ap_M3SetupFailure_PDU = -1; /* M3SetupFailure */
155 static int hf_m3ap_MCEConfigurationUpdate_PDU = -1; /* MCEConfigurationUpdate */
156 static int hf_m3ap_MCEConfigurationUpdateAcknowledge_PDU = -1; /* MCEConfigurationUpdateAcknowledge */
157 static int hf_m3ap_MCEConfigurationUpdateFailure_PDU = -1; /* MCEConfigurationUpdateFailure */
158 static int hf_m3ap_M3AP_PDU_PDU = -1; /* M3AP_PDU */
159 static int hf_m3ap_local = -1; /* INTEGER_0_maxPrivateIEs */
160 static int hf_m3ap_global = -1; /* OBJECT_IDENTIFIER */
161 static int hf_m3ap_ProtocolIE_Container_item = -1; /* ProtocolIE_Field */
162 static int hf_m3ap_id = -1; /* ProtocolIE_ID */
163 static int hf_m3ap_criticality = -1; /* Criticality */
164 static int hf_m3ap_ie_field_value = -1; /* T_ie_field_value */
165 static int hf_m3ap_ProtocolIE_ContainerList_item = -1; /* ProtocolIE_Container */
166 static int hf_m3ap_ProtocolExtensionContainer_item = -1; /* ProtocolExtensionField */
167 static int hf_m3ap_ext_id = -1; /* ProtocolIE_ID */
168 static int hf_m3ap_extensionValue = -1; /* T_extensionValue */
169 static int hf_m3ap_PrivateIE_Container_item = -1; /* PrivateIE_Field */
170 static int hf_m3ap_private_id = -1; /* PrivateIE_ID */
171 static int hf_m3ap_private_value = -1; /* T_private_value */
172 static int hf_m3ap_priorityLevel = -1; /* PriorityLevel */
173 static int hf_m3ap_pre_emptionCapability = -1; /* Pre_emptionCapability */
174 static int hf_m3ap_pre_emptionVulnerability = -1; /* Pre_emptionVulnerability */
175 static int hf_m3ap_iE_Extensions = -1; /* ProtocolExtensionContainer */
176 static int hf_m3ap_radioNetwork = -1; /* CauseRadioNetwork */
177 static int hf_m3ap_transport = -1; /* CauseTransport */
178 static int hf_m3ap_nAS = -1; /* CauseNAS */
179 static int hf_m3ap_protocol = -1; /* CauseProtocol */
180 static int hf_m3ap_misc = -1; /* CauseMisc */
181 static int hf_m3ap_procedureCode = -1; /* ProcedureCode */
182 static int hf_m3ap_triggeringMessage = -1; /* TriggeringMessage */
183 static int hf_m3ap_procedureCriticality = -1; /* Criticality */
184 static int hf_m3ap_iEsCriticalityDiagnostics = -1; /* CriticalityDiagnostics_IE_List */
185 static int hf_m3ap_CriticalityDiagnostics_IE_List_item = -1; /* CriticalityDiagnostics_IE_List_item */
186 static int hf_m3ap_iECriticality = -1; /* Criticality */
187 static int hf_m3ap_iE_ID = -1; /* ProtocolIE_ID */
188 static int hf_m3ap_typeOfError = -1; /* TypeOfError */
189 static int hf_m3ap_pLMN_Identity = -1; /* PLMN_Identity */
190 static int hf_m3ap_mCE_ID = -1; /* MCE_ID */
191 static int hf_m3ap_extendedMCE_ID = -1; /* ExtendedMCE_ID */
192 static int hf_m3ap_mBMS_E_RAB_MaximumBitrateDL = -1; /* BitRate */
193 static int hf_m3ap_mBMS_E_RAB_GuaranteedBitrateDL = -1; /* BitRate */
194 static int hf_m3ap_qCI = -1; /* QCI */
195 static int hf_m3ap_gbrQosInformation = -1; /* GBR_QosInformation */
196 static int hf_m3ap_mME_MBMS_M3AP_ID = -1; /* MME_MBMS_M3AP_ID */
197 static int hf_m3ap_mCE_MBMS_M3AP_ID = -1; /* MCE_MBMS_M3AP_ID */
198 static int hf_m3ap_pLMNidentity = -1; /* PLMN_Identity */
199 static int hf_m3ap_serviceID = -1; /* OCTET_STRING_SIZE_3 */
200 static int hf_m3ap_iPMCAddress = -1; /* IPAddress */
201 static int hf_m3ap_iPSourceAddress = -1; /* IPAddress */
202 static int hf_m3ap_gTP_DLTEID = -1; /* GTP_TEID */
203 static int hf_m3ap_protocolIEs = -1; /* ProtocolIE_Container */
204 static int hf_m3ap_m3_Interface = -1; /* ResetAll */
205 static int hf_m3ap_partOfM3_Interface = -1; /* MBMS_Service_associatedLogicalM3_ConnectionListRes */
206 static int hf_m3ap_MBMS_Service_associatedLogicalM3_ConnectionListRes_item = -1; /* ProtocolIE_Single_Container */
207 static int hf_m3ap_MBMS_Service_associatedLogicalM3_ConnectionListResAck_item = -1; /* ProtocolIE_Single_Container */
208 static int hf_m3ap_privateIEs = -1; /* PrivateIE_Container */
209 static int hf_m3ap_MBMSServiceAreaListItem_item = -1; /* MBMSServiceArea1 */
210 static int hf_m3ap_initiatingMessage = -1; /* InitiatingMessage */
211 static int hf_m3ap_successfulOutcome = -1; /* SuccessfulOutcome */
212 static int hf_m3ap_unsuccessfulOutcome = -1; /* UnsuccessfulOutcome */
213 static int hf_m3ap_initiatingMessagevalue = -1; /* InitiatingMessage_value */
214 static int hf_m3ap_successfulOutcome_value = -1; /* SuccessfulOutcome_value */
215 static int hf_m3ap_unsuccessfulOutcome_value = -1; /* UnsuccessfulOutcome_value */
217 /*--- End of included file: packet-m3ap-hf.c ---*/
218 #line 62 "../../asn1/m3ap/packet-m3ap-template.c"
220 /* Initialize the subtree pointers */
221 static int ett_m3ap = -1;
224 /*--- Included file: packet-m3ap-ett.c ---*/
225 #line 1 "../../asn1/m3ap/packet-m3ap-ett.c"
226 static gint ett_m3ap_PrivateIE_ID = -1;
227 static gint ett_m3ap_ProtocolIE_Container = -1;
228 static gint ett_m3ap_ProtocolIE_Field = -1;
229 static gint ett_m3ap_ProtocolIE_ContainerList = -1;
230 static gint ett_m3ap_ProtocolExtensionContainer = -1;
231 static gint ett_m3ap_ProtocolExtensionField = -1;
232 static gint ett_m3ap_PrivateIE_Container = -1;
233 static gint ett_m3ap_PrivateIE_Field = -1;
234 static gint ett_m3ap_AllocationAndRetentionPriority = -1;
235 static gint ett_m3ap_Cause = -1;
236 static gint ett_m3ap_CriticalityDiagnostics = -1;
237 static gint ett_m3ap_CriticalityDiagnostics_IE_List = -1;
238 static gint ett_m3ap_CriticalityDiagnostics_IE_List_item = -1;
239 static gint ett_m3ap_Global_MCE_ID = -1;
240 static gint ett_m3ap_GBR_QosInformation = -1;
241 static gint ett_m3ap_MBMS_E_RAB_QoS_Parameters = -1;
242 static gint ett_m3ap_MBMS_Service_associatedLogicalM3_ConnectionItem = -1;
243 static gint ett_m3ap_TMGI = -1;
244 static gint ett_m3ap_TNL_Information = -1;
245 static gint ett_m3ap_MBMSSessionStartRequest = -1;
246 static gint ett_m3ap_MBMSSessionStartResponse = -1;
247 static gint ett_m3ap_MBMSSessionStartFailure = -1;
248 static gint ett_m3ap_MBMSSessionStopRequest = -1;
249 static gint ett_m3ap_MBMSSessionStopResponse = -1;
250 static gint ett_m3ap_MBMSSessionUpdateRequest = -1;
251 static gint ett_m3ap_MBMSSessionUpdateResponse = -1;
252 static gint ett_m3ap_MBMSSessionUpdateFailure = -1;
253 static gint ett_m3ap_ErrorIndication = -1;
254 static gint ett_m3ap_Reset = -1;
255 static gint ett_m3ap_ResetType = -1;
256 static gint ett_m3ap_MBMS_Service_associatedLogicalM3_ConnectionListRes = -1;
257 static gint ett_m3ap_ResetAcknowledge = -1;
258 static gint ett_m3ap_MBMS_Service_associatedLogicalM3_ConnectionListResAck = -1;
259 static gint ett_m3ap_PrivateMessage = -1;
260 static gint ett_m3ap_M3SetupRequest = -1;
261 static gint ett_m3ap_MBMSServiceAreaListItem = -1;
262 static gint ett_m3ap_M3SetupResponse = -1;
263 static gint ett_m3ap_M3SetupFailure = -1;
264 static gint ett_m3ap_MCEConfigurationUpdate = -1;
265 static gint ett_m3ap_MCEConfigurationUpdateAcknowledge = -1;
266 static gint ett_m3ap_MCEConfigurationUpdateFailure = -1;
267 static gint ett_m3ap_M3AP_PDU = -1;
268 static gint ett_m3ap_InitiatingMessage = -1;
269 static gint ett_m3ap_SuccessfulOutcome = -1;
270 static gint ett_m3ap_UnsuccessfulOutcome = -1;
272 /*--- End of included file: packet-m3ap-ett.c ---*/
273 #line 67 "../../asn1/m3ap/packet-m3ap-template.c"
275 enum{
276 INITIATING_MESSAGE,
277 SUCCESSFUL_OUTCOME,
278 UNSUCCESSFUL_OUTCOME
281 /* Global variables */
282 static guint32 ProcedureCode;
283 static guint32 ProtocolIE_ID;
284 static guint32 ProtocolExtensionID;
285 static int global_m3ap_port = M3AP_PORT;
286 static guint32 message_type;
288 /* Dissector tables */
289 static dissector_table_t m3ap_ies_dissector_table;
290 static dissector_table_t m3ap_extension_dissector_table;
291 static dissector_table_t m3ap_proc_imsg_dissector_table;
292 static dissector_table_t m3ap_proc_sout_dissector_table;
293 static dissector_table_t m3ap_proc_uout_dissector_table;
295 static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
296 static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
297 static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
298 static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
299 static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
302 /*--- Included file: packet-m3ap-fn.c ---*/
303 #line 1 "../../asn1/m3ap/packet-m3ap-fn.c"
305 static const value_string m3ap_Criticality_vals[] = {
306 { 0, "reject" },
307 { 1, "ignore" },
308 { 2, "notify" },
309 { 0, NULL }
313 static int
314 dissect_m3ap_Criticality(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
315 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
316 3, NULL, FALSE, 0, NULL);
318 return offset;
323 static int
324 dissect_m3ap_INTEGER_0_maxPrivateIEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
325 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
326 0U, maxPrivateIEs, NULL, FALSE);
328 return offset;
333 static int
334 dissect_m3ap_OBJECT_IDENTIFIER(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
335 offset = dissect_per_object_identifier(tvb, offset, actx, tree, hf_index, NULL);
337 return offset;
341 static const value_string m3ap_PrivateIE_ID_vals[] = {
342 { 0, "local" },
343 { 1, "global" },
344 { 0, NULL }
347 static const per_choice_t PrivateIE_ID_choice[] = {
348 { 0, &hf_m3ap_local , ASN1_NO_EXTENSIONS , dissect_m3ap_INTEGER_0_maxPrivateIEs },
349 { 1, &hf_m3ap_global , ASN1_NO_EXTENSIONS , dissect_m3ap_OBJECT_IDENTIFIER },
350 { 0, NULL, 0, NULL }
353 static int
354 dissect_m3ap_PrivateIE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
355 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
356 ett_m3ap_PrivateIE_ID, PrivateIE_ID_choice,
357 NULL);
359 return offset;
363 static const value_string m3ap_ProcedureCode_vals[] = {
364 { id_mBMSsessionStart, "id-mBMSsessionStart" },
365 { id_mBMSsessionStop, "id-mBMSsessionStop" },
366 { id_errorIndication, "id-errorIndication" },
367 { id_privateMessage, "id-privateMessage" },
368 { id_Reset, "id-Reset" },
369 { id_mBMSsessionUpdate, "id-mBMSsessionUpdate" },
370 { id_mCEConfigurationUpdate, "id-mCEConfigurationUpdate" },
371 { id_m3Setup, "id-m3Setup" },
372 { 0, NULL }
375 static value_string_ext m3ap_ProcedureCode_vals_ext = VALUE_STRING_EXT_INIT(m3ap_ProcedureCode_vals);
378 static int
379 dissect_m3ap_ProcedureCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
380 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
381 0U, 255U, &ProcedureCode, FALSE);
383 #line 66 "../../asn1/m3ap/m3ap.cnf"
384 col_add_fstr(actx->pinfo->cinfo, COL_INFO, "%s",
385 val_to_str_ext(ProcedureCode, &m3ap_ProcedureCode_vals_ext,
386 "unknown message"));
388 return offset;
392 static const value_string m3ap_ProtocolIE_ID_vals[] = {
393 { id_MME_MBMS_M3AP_ID, "id-MME-MBMS-M3AP-ID" },
394 { id_MCE_MBMS_M3AP_ID, "id-MCE-MBMS-M3AP-ID" },
395 { id_TMGI, "id-TMGI" },
396 { id_MBMS_Session_ID, "id-MBMS-Session-ID" },
397 { id_MBMS_E_RAB_QoS_Parameters, "id-MBMS-E-RAB-QoS-Parameters" },
398 { id_MBMS_Session_Duration, "id-MBMS-Session-Duration" },
399 { id_MBMS_Service_Area, "id-MBMS-Service-Area" },
400 { id_TNL_Information, "id-TNL-Information" },
401 { id_CriticalityDiagnostics, "id-CriticalityDiagnostics" },
402 { id_Cause, "id-Cause" },
403 { id_MBMS_Service_Area_List, "id-MBMS-Service-Area-List" },
404 { id_MBMS_Service_Area_List_Item, "id-MBMS-Service-Area-List-Item" },
405 { id_TimeToWait, "id-TimeToWait" },
406 { id_ResetType, "id-ResetType" },
407 { id_MBMS_Service_associatedLogicalM3_ConnectionItem, "id-MBMS-Service-associatedLogicalM3-ConnectionItem" },
408 { id_MBMS_Service_associatedLogicalM3_ConnectionListResAck, "id-MBMS-Service-associatedLogicalM3-ConnectionListResAck" },
409 { id_MinimumTimeToMBMSDataTransfer, "id-MinimumTimeToMBMSDataTransfer" },
410 { id_AllocationAndRetentionPriority, "id-AllocationAndRetentionPriority" },
411 { id_Global_MCE_ID, "id-Global-MCE-ID" },
412 { id_MCEname, "id-MCEname" },
413 { id_MBMSServiceAreaList, "id-MBMSServiceAreaList" },
414 { id_Time_ofMBMS_DataTransfer, "id-Time-ofMBMS-DataTransfer" },
415 { id_Time_ofMBMS_DataStop, "id-Time-ofMBMS-DataStop" },
416 { 0, NULL }
419 static value_string_ext m3ap_ProtocolIE_ID_vals_ext = VALUE_STRING_EXT_INIT(m3ap_ProtocolIE_ID_vals);
422 static int
423 dissect_m3ap_ProtocolIE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
424 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
425 0U, maxProtocolIEs, &ProtocolIE_ID, FALSE);
427 #line 51 "../../asn1/m3ap/m3ap.cnf"
428 if (tree) {
429 proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", val_to_str_ext(ProtocolIE_ID, &m3ap_ProtocolIE_ID_vals_ext, "unknown (%d)"));
432 return offset;
436 static const value_string m3ap_TriggeringMessage_vals[] = {
437 { 0, "initiating-message" },
438 { 1, "successful-outcome" },
439 { 2, "unsuccessful-outcome" },
440 { 0, NULL }
444 static int
445 dissect_m3ap_TriggeringMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
446 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
447 3, NULL, FALSE, 0, NULL);
449 return offset;
454 static int
455 dissect_m3ap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
456 offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue);
458 return offset;
462 static const per_sequence_t ProtocolIE_Field_sequence[] = {
463 { &hf_m3ap_id , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m3ap_ProtocolIE_ID },
464 { &hf_m3ap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m3ap_Criticality },
465 { &hf_m3ap_ie_field_value , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m3ap_T_ie_field_value },
466 { NULL, 0, 0, NULL }
469 static int
470 dissect_m3ap_ProtocolIE_Field(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
471 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
472 ett_m3ap_ProtocolIE_Field, ProtocolIE_Field_sequence);
474 return offset;
478 static const per_sequence_t ProtocolIE_Container_sequence_of[1] = {
479 { &hf_m3ap_ProtocolIE_Container_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m3ap_ProtocolIE_Field },
482 static int
483 dissect_m3ap_ProtocolIE_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
484 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
485 ett_m3ap_ProtocolIE_Container, ProtocolIE_Container_sequence_of,
486 0, maxProtocolIEs, FALSE);
488 return offset;
493 static int
494 dissect_m3ap_ProtocolIE_Single_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
495 offset = dissect_m3ap_ProtocolIE_Field(tvb, offset, actx, tree, hf_index);
497 return offset;
501 static const per_sequence_t ProtocolIE_ContainerList_sequence_of[1] = {
502 { &hf_m3ap_ProtocolIE_ContainerList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m3ap_ProtocolIE_Container },
505 static int
506 dissect_m3ap_ProtocolIE_ContainerList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
507 #line 91 "../../asn1/m3ap/m3ap.cnf"
508 static const asn1_par_def_t ProtocolIE_ContainerList_pars[] = {
509 { "lowerBound", ASN1_PAR_INTEGER },
510 { "upperBound", ASN1_PAR_INTEGER },
511 { NULL, (asn1_par_type)0 }
513 asn1_stack_frame_check(actx, "ProtocolIE-ContainerList", ProtocolIE_ContainerList_pars);
515 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
516 ett_m3ap_ProtocolIE_ContainerList, ProtocolIE_ContainerList_sequence_of,
517 asn1_param_get_integer(actx,"lowerBound"), asn1_param_get_integer(actx,"upperBound"), FALSE);
519 return offset;
524 static int
525 dissect_m3ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
526 offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue);
528 return offset;
532 static const per_sequence_t ProtocolExtensionField_sequence[] = {
533 { &hf_m3ap_ext_id , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m3ap_ProtocolIE_ID },
534 { &hf_m3ap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m3ap_Criticality },
535 { &hf_m3ap_extensionValue , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m3ap_T_extensionValue },
536 { NULL, 0, 0, NULL }
539 static int
540 dissect_m3ap_ProtocolExtensionField(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
541 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
542 ett_m3ap_ProtocolExtensionField, ProtocolExtensionField_sequence);
544 return offset;
548 static const per_sequence_t ProtocolExtensionContainer_sequence_of[1] = {
549 { &hf_m3ap_ProtocolExtensionContainer_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m3ap_ProtocolExtensionField },
552 static int
553 dissect_m3ap_ProtocolExtensionContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
554 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
555 ett_m3ap_ProtocolExtensionContainer, ProtocolExtensionContainer_sequence_of,
556 1, maxProtocolExtensions, FALSE);
558 return offset;
563 static int
564 dissect_m3ap_T_private_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
565 offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL);
567 return offset;
571 static const per_sequence_t PrivateIE_Field_sequence[] = {
572 { &hf_m3ap_private_id , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m3ap_PrivateIE_ID },
573 { &hf_m3ap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m3ap_Criticality },
574 { &hf_m3ap_private_value , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m3ap_T_private_value },
575 { NULL, 0, 0, NULL }
578 static int
579 dissect_m3ap_PrivateIE_Field(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
580 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
581 ett_m3ap_PrivateIE_Field, PrivateIE_Field_sequence);
583 return offset;
587 static const per_sequence_t PrivateIE_Container_sequence_of[1] = {
588 { &hf_m3ap_PrivateIE_Container_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m3ap_PrivateIE_Field },
591 static int
592 dissect_m3ap_PrivateIE_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
593 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
594 ett_m3ap_PrivateIE_Container, PrivateIE_Container_sequence_of,
595 1, maxPrivateIEs, FALSE);
597 return offset;
602 static int
603 dissect_m3ap_Absolute_Time_ofMBMS_Data(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
604 #line 146 "../../asn1/m3ap/m3ap.cnf"
605 tvbuff_t *parameter_tvb=NULL;
606 const gchar *time_str;
607 gint tvb_len;
609 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
610 64, 64, FALSE, &parameter_tvb);
613 if (!parameter_tvb)
614 return offset;
616 tvb_len = tvb_length(parameter_tvb);
618 time_str = tvb_ntp_fmt_ts(parameter_tvb, 0);
619 proto_tree_add_string(tree, hf_m3ap_Absolute_Time_ofMBMS_Data_value, parameter_tvb, 0, tvb_len, time_str);
622 return offset;
626 static const value_string m3ap_PriorityLevel_vals[] = {
627 { 0, "spare" },
628 { 1, "highest" },
629 { 14, "lowest" },
630 { 15, "no-priority" },
631 { 0, NULL }
635 static int
636 dissect_m3ap_PriorityLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
637 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
638 0U, 15U, NULL, FALSE);
640 return offset;
644 static const value_string m3ap_Pre_emptionCapability_vals[] = {
645 { 0, "shall-not-trigger-pre-emption" },
646 { 1, "may-trigger-pre-emption" },
647 { 0, NULL }
651 static int
652 dissect_m3ap_Pre_emptionCapability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
653 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
654 2, NULL, FALSE, 0, NULL);
656 return offset;
660 static const value_string m3ap_Pre_emptionVulnerability_vals[] = {
661 { 0, "not-pre-emptable" },
662 { 1, "pre-emptable" },
663 { 0, NULL }
667 static int
668 dissect_m3ap_Pre_emptionVulnerability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
669 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
670 2, NULL, FALSE, 0, NULL);
672 return offset;
676 static const per_sequence_t AllocationAndRetentionPriority_sequence[] = {
677 { &hf_m3ap_priorityLevel , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m3ap_PriorityLevel },
678 { &hf_m3ap_pre_emptionCapability, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m3ap_Pre_emptionCapability },
679 { &hf_m3ap_pre_emptionVulnerability, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m3ap_Pre_emptionVulnerability },
680 { &hf_m3ap_iE_Extensions , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_m3ap_ProtocolExtensionContainer },
681 { NULL, 0, 0, NULL }
684 static int
685 dissect_m3ap_AllocationAndRetentionPriority(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
686 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
687 ett_m3ap_AllocationAndRetentionPriority, AllocationAndRetentionPriority_sequence);
689 return offset;
694 static int
695 dissect_m3ap_BitRate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
696 offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index,
697 0U, G_GINT64_CONSTANT(10000000000U), NULL, FALSE);
699 return offset;
703 static const value_string m3ap_CauseRadioNetwork_vals[] = {
704 { 0, "unknown-or-already-allocated-MME-MBMS-M3AP-ID" },
705 { 1, "unknown-or-already-allocated-MCE-MBMS-M3AP-ID" },
706 { 2, "unknown-or-inconsistent-pair-of-MBMS-M3AP-IDs" },
707 { 3, "radio-resources-not-available" },
708 { 4, "invalid-QoS-combination" },
709 { 5, "interaction-with-other-procedure" },
710 { 6, "not-supported-QCI-value" },
711 { 7, "unspecified" },
712 { 0, NULL }
716 static int
717 dissect_m3ap_CauseRadioNetwork(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
718 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
719 8, NULL, TRUE, 0, NULL);
721 return offset;
725 static const value_string m3ap_CauseTransport_vals[] = {
726 { 0, "transport-resource-unavailable" },
727 { 1, "unspecified" },
728 { 0, NULL }
732 static int
733 dissect_m3ap_CauseTransport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
734 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
735 2, NULL, TRUE, 0, NULL);
737 return offset;
741 static const value_string m3ap_CauseNAS_vals[] = {
742 { 0, "unspecified" },
743 { 0, NULL }
747 static int
748 dissect_m3ap_CauseNAS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
749 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
750 1, NULL, TRUE, 0, NULL);
752 return offset;
756 static const value_string m3ap_CauseProtocol_vals[] = {
757 { 0, "transfer-syntax-error" },
758 { 1, "abstract-syntax-error-reject" },
759 { 2, "abstract-syntax-error-ignore-and-notify" },
760 { 3, "message-not-compatible-with-receiver-state" },
761 { 4, "semantic-error" },
762 { 5, "abstract-syntax-error-falsely-constructed-message" },
763 { 6, "unspecified" },
764 { 0, NULL }
768 static int
769 dissect_m3ap_CauseProtocol(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
770 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
771 7, NULL, TRUE, 0, NULL);
773 return offset;
777 static const value_string m3ap_CauseMisc_vals[] = {
778 { 0, "control-processing-overload" },
779 { 1, "not-enough-user-plane-processing-resources" },
780 { 2, "hardware-failure" },
781 { 3, "om-intervention" },
782 { 4, "unspecified" },
783 { 0, NULL }
787 static int
788 dissect_m3ap_CauseMisc(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
789 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
790 5, NULL, TRUE, 0, NULL);
792 return offset;
796 static const value_string m3ap_Cause_vals[] = {
797 { 0, "radioNetwork" },
798 { 1, "transport" },
799 { 2, "nAS" },
800 { 3, "protocol" },
801 { 4, "misc" },
802 { 0, NULL }
805 static const per_choice_t Cause_choice[] = {
806 { 0, &hf_m3ap_radioNetwork , ASN1_EXTENSION_ROOT , dissect_m3ap_CauseRadioNetwork },
807 { 1, &hf_m3ap_transport , ASN1_EXTENSION_ROOT , dissect_m3ap_CauseTransport },
808 { 2, &hf_m3ap_nAS , ASN1_EXTENSION_ROOT , dissect_m3ap_CauseNAS },
809 { 3, &hf_m3ap_protocol , ASN1_EXTENSION_ROOT , dissect_m3ap_CauseProtocol },
810 { 4, &hf_m3ap_misc , ASN1_EXTENSION_ROOT , dissect_m3ap_CauseMisc },
811 { 0, NULL, 0, NULL }
814 static int
815 dissect_m3ap_Cause(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
816 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
817 ett_m3ap_Cause, Cause_choice,
818 NULL);
820 return offset;
824 static const value_string m3ap_TypeOfError_vals[] = {
825 { 0, "not-understood" },
826 { 1, "missing" },
827 { 0, NULL }
831 static int
832 dissect_m3ap_TypeOfError(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
833 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
834 2, NULL, TRUE, 0, NULL);
836 return offset;
840 static const per_sequence_t CriticalityDiagnostics_IE_List_item_sequence[] = {
841 { &hf_m3ap_iECriticality , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m3ap_Criticality },
842 { &hf_m3ap_iE_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m3ap_ProtocolIE_ID },
843 { &hf_m3ap_typeOfError , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m3ap_TypeOfError },
844 { &hf_m3ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_m3ap_ProtocolExtensionContainer },
845 { NULL, 0, 0, NULL }
848 static int
849 dissect_m3ap_CriticalityDiagnostics_IE_List_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
850 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
851 ett_m3ap_CriticalityDiagnostics_IE_List_item, CriticalityDiagnostics_IE_List_item_sequence);
853 return offset;
857 static const per_sequence_t CriticalityDiagnostics_IE_List_sequence_of[1] = {
858 { &hf_m3ap_CriticalityDiagnostics_IE_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m3ap_CriticalityDiagnostics_IE_List_item },
861 static int
862 dissect_m3ap_CriticalityDiagnostics_IE_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
863 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
864 ett_m3ap_CriticalityDiagnostics_IE_List, CriticalityDiagnostics_IE_List_sequence_of,
865 1, maxnooferrors, FALSE);
867 return offset;
871 static const per_sequence_t CriticalityDiagnostics_sequence[] = {
872 { &hf_m3ap_procedureCode , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_m3ap_ProcedureCode },
873 { &hf_m3ap_triggeringMessage, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_m3ap_TriggeringMessage },
874 { &hf_m3ap_procedureCriticality, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_m3ap_Criticality },
875 { &hf_m3ap_iEsCriticalityDiagnostics, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_m3ap_CriticalityDiagnostics_IE_List },
876 { &hf_m3ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_m3ap_ProtocolExtensionContainer },
877 { NULL, 0, 0, NULL }
880 static int
881 dissect_m3ap_CriticalityDiagnostics(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
882 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
883 ett_m3ap_CriticalityDiagnostics, CriticalityDiagnostics_sequence);
885 return offset;
890 static int
891 dissect_m3ap_ExtendedMCE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
892 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
893 1, 1, FALSE, NULL);
895 return offset;
900 static int
901 dissect_m3ap_PLMN_Identity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
902 #line 122 "../../asn1/m3ap/m3ap.cnf"
903 tvbuff_t *parameter_tvb=NULL;
905 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
906 3, 3, FALSE, &parameter_tvb);
908 if (!parameter_tvb)
909 return offset;
910 dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, tree, 0, FALSE);
913 return offset;
918 static int
919 dissect_m3ap_MCE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
920 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
921 2, 2, FALSE, NULL);
923 return offset;
927 static const per_sequence_t Global_MCE_ID_sequence[] = {
928 { &hf_m3ap_pLMN_Identity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m3ap_PLMN_Identity },
929 { &hf_m3ap_mCE_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m3ap_MCE_ID },
930 { &hf_m3ap_extendedMCE_ID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_m3ap_ExtendedMCE_ID },
931 { &hf_m3ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_m3ap_ProtocolExtensionContainer },
932 { NULL, 0, 0, NULL }
935 static int
936 dissect_m3ap_Global_MCE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
937 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
938 ett_m3ap_Global_MCE_ID, Global_MCE_ID_sequence);
940 return offset;
944 static const per_sequence_t GBR_QosInformation_sequence[] = {
945 { &hf_m3ap_mBMS_E_RAB_MaximumBitrateDL, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m3ap_BitRate },
946 { &hf_m3ap_mBMS_E_RAB_GuaranteedBitrateDL, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m3ap_BitRate },
947 { &hf_m3ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_m3ap_ProtocolExtensionContainer },
948 { NULL, 0, 0, NULL }
951 static int
952 dissect_m3ap_GBR_QosInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
953 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
954 ett_m3ap_GBR_QosInformation, GBR_QosInformation_sequence);
956 return offset;
961 static int
962 dissect_m3ap_GTP_TEID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
963 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
964 4, 4, FALSE, NULL);
966 return offset;
971 static int
972 dissect_m3ap_IPAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
973 #line 133 "../../asn1/m3ap/m3ap.cnf"
974 tvbuff_t *parameter_tvb=NULL;
975 gint tvb_len;
977 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
978 4, 16, TRUE, &parameter_tvb);
981 if (!parameter_tvb)
982 return offset;
984 tvb_len = tvb_length(parameter_tvb);
985 proto_tree_add_item(tree, hf_m3ap_IPAddress, parameter_tvb, 0, tvb_len, ENC_BIG_ENDIAN);
988 return offset;
993 static int
994 dissect_m3ap_QCI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
995 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
996 0U, 255U, NULL, FALSE);
998 return offset;
1002 static const per_sequence_t MBMS_E_RAB_QoS_Parameters_sequence[] = {
1003 { &hf_m3ap_qCI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m3ap_QCI },
1004 { &hf_m3ap_gbrQosInformation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_m3ap_GBR_QosInformation },
1005 { &hf_m3ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_m3ap_ProtocolExtensionContainer },
1006 { NULL, 0, 0, NULL }
1009 static int
1010 dissect_m3ap_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_) {
1011 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1012 ett_m3ap_MBMS_E_RAB_QoS_Parameters, MBMS_E_RAB_QoS_Parameters_sequence);
1014 return offset;
1019 static int
1020 dissect_m3ap_MME_MBMS_M3AP_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1021 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1022 0U, 65535U, NULL, FALSE);
1024 return offset;
1029 static int
1030 dissect_m3ap_MCE_MBMS_M3AP_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1031 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1032 0U, 65535U, NULL, FALSE);
1034 return offset;
1038 static const per_sequence_t MBMS_Service_associatedLogicalM3_ConnectionItem_sequence[] = {
1039 { &hf_m3ap_mME_MBMS_M3AP_ID, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_m3ap_MME_MBMS_M3AP_ID },
1040 { &hf_m3ap_mCE_MBMS_M3AP_ID, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_m3ap_MCE_MBMS_M3AP_ID },
1041 { &hf_m3ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_m3ap_ProtocolExtensionContainer },
1042 { NULL, 0, 0, NULL }
1045 static int
1046 dissect_m3ap_MBMS_Service_associatedLogicalM3_ConnectionItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1047 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1048 ett_m3ap_MBMS_Service_associatedLogicalM3_ConnectionItem, MBMS_Service_associatedLogicalM3_ConnectionItem_sequence);
1050 return offset;
1055 static int
1056 dissect_m3ap_MBMSServiceArea1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1057 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1058 2, 2, FALSE, NULL);
1060 return offset;
1065 static int
1066 dissect_m3ap_MBMS_Service_Area(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1067 #line 162 "../../asn1/m3ap/m3ap.cnf"
1068 tvbuff_t *parameter_tvb=NULL;
1069 guint16 tvb_len;
1071 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1072 NO_BOUND, NO_BOUND, FALSE, &parameter_tvb);
1075 if (!parameter_tvb)
1076 return offset;
1078 tvb_len = tvb_length(parameter_tvb);
1080 dissect_gtpv2_mbms_service_area(parameter_tvb, actx->pinfo, tree, actx->created_item, tvb_len, 0, 0);
1083 return offset;
1088 static int
1089 dissect_m3ap_MBMS_Session_Duration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1090 #line 176 "../../asn1/m3ap/m3ap.cnf"
1091 tvbuff_t *parameter_tvb=NULL;
1092 guint16 tvb_len;
1094 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1095 3, 3, FALSE, &parameter_tvb);
1097 if (!parameter_tvb)
1098 return offset;
1100 tvb_len = tvb_length(parameter_tvb);
1102 proto_item_append_text(actx->created_item, " ");
1103 dissect_gtpv2_mbms_session_duration(parameter_tvb, actx->pinfo, tree, actx->created_item, tvb_len, 0, 0);
1106 return offset;
1111 static int
1112 dissect_m3ap_MBMS_Session_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1113 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1114 1, 1, FALSE, NULL);
1116 return offset;
1121 static int
1122 dissect_m3ap_MCEname(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1123 offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index,
1124 1, 150, TRUE);
1126 return offset;
1131 static int
1132 dissect_m3ap_MinimumTimeToMBMSDataTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1133 #line 192 "../../asn1/m3ap/m3ap.cnf"
1134 tvbuff_t *parameter_tvb=NULL;
1135 guint16 tvb_len;
1137 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1138 1, 1, FALSE, &parameter_tvb);
1141 if (!parameter_tvb)
1142 return offset;
1144 tvb_len = tvb_length(parameter_tvb);
1145 dissect_gtpv2_mbms_time_to_data_xfer(parameter_tvb, actx->pinfo, tree, actx->created_item, tvb_len, 0, 0);
1148 return offset;
1152 static const value_string m3ap_TimeToWait_vals[] = {
1153 { 0, "v1s" },
1154 { 1, "v2s" },
1155 { 2, "v5s" },
1156 { 3, "v10s" },
1157 { 4, "v20s" },
1158 { 5, "v60s" },
1159 { 0, NULL }
1163 static int
1164 dissect_m3ap_TimeToWait(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1165 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1166 6, NULL, TRUE, 0, NULL);
1168 return offset;
1173 static int
1174 dissect_m3ap_OCTET_STRING_SIZE_3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1175 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1176 3, 3, FALSE, NULL);
1178 return offset;
1182 static const per_sequence_t TMGI_sequence[] = {
1183 { &hf_m3ap_pLMNidentity , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m3ap_PLMN_Identity },
1184 { &hf_m3ap_serviceID , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m3ap_OCTET_STRING_SIZE_3 },
1185 { &hf_m3ap_iE_Extensions , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_m3ap_ProtocolExtensionContainer },
1186 { NULL, 0, 0, NULL }
1189 static int
1190 dissect_m3ap_TMGI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1191 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1192 ett_m3ap_TMGI, TMGI_sequence);
1194 return offset;
1198 static const per_sequence_t TNL_Information_sequence[] = {
1199 { &hf_m3ap_iPMCAddress , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m3ap_IPAddress },
1200 { &hf_m3ap_iPSourceAddress, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m3ap_IPAddress },
1201 { &hf_m3ap_gTP_DLTEID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m3ap_GTP_TEID },
1202 { &hf_m3ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_m3ap_ProtocolExtensionContainer },
1203 { NULL, 0, 0, NULL }
1206 static int
1207 dissect_m3ap_TNL_Information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1208 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1209 ett_m3ap_TNL_Information, TNL_Information_sequence);
1211 return offset;
1215 static const per_sequence_t MBMSSessionStartRequest_sequence[] = {
1216 { &hf_m3ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m3ap_ProtocolIE_Container },
1217 { NULL, 0, 0, NULL }
1220 static int
1221 dissect_m3ap_MBMSSessionStartRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1222 #line 206 "../../asn1/m3ap/m3ap.cnf"
1223 col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Start Request ");
1225 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1226 ett_m3ap_MBMSSessionStartRequest, MBMSSessionStartRequest_sequence);
1228 return offset;
1232 static const per_sequence_t MBMSSessionStartResponse_sequence[] = {
1233 { &hf_m3ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m3ap_ProtocolIE_Container },
1234 { NULL, 0, 0, NULL }
1237 static int
1238 dissect_m3ap_MBMSSessionStartResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1239 #line 208 "../../asn1/m3ap/m3ap.cnf"
1240 col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Start Response ");
1242 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1243 ett_m3ap_MBMSSessionStartResponse, MBMSSessionStartResponse_sequence);
1245 return offset;
1249 static const per_sequence_t MBMSSessionStartFailure_sequence[] = {
1250 { &hf_m3ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m3ap_ProtocolIE_Container },
1251 { NULL, 0, 0, NULL }
1254 static int
1255 dissect_m3ap_MBMSSessionStartFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1256 #line 210 "../../asn1/m3ap/m3ap.cnf"
1257 col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Start Failure ");
1259 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1260 ett_m3ap_MBMSSessionStartFailure, MBMSSessionStartFailure_sequence);
1262 return offset;
1266 static const per_sequence_t MBMSSessionStopRequest_sequence[] = {
1267 { &hf_m3ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m3ap_ProtocolIE_Container },
1268 { NULL, 0, 0, NULL }
1271 static int
1272 dissect_m3ap_MBMSSessionStopRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1273 #line 212 "../../asn1/m3ap/m3ap.cnf"
1274 col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Stop Request ");
1276 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1277 ett_m3ap_MBMSSessionStopRequest, MBMSSessionStopRequest_sequence);
1279 return offset;
1283 static const per_sequence_t MBMSSessionStopResponse_sequence[] = {
1284 { &hf_m3ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m3ap_ProtocolIE_Container },
1285 { NULL, 0, 0, NULL }
1288 static int
1289 dissect_m3ap_MBMSSessionStopResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1290 #line 214 "../../asn1/m3ap/m3ap.cnf"
1291 col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Stop Response ");
1293 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1294 ett_m3ap_MBMSSessionStopResponse, MBMSSessionStopResponse_sequence);
1296 return offset;
1300 static const per_sequence_t MBMSSessionUpdateRequest_sequence[] = {
1301 { &hf_m3ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m3ap_ProtocolIE_Container },
1302 { NULL, 0, 0, NULL }
1305 static int
1306 dissect_m3ap_MBMSSessionUpdateRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1307 #line 216 "../../asn1/m3ap/m3ap.cnf"
1308 col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Update Request ");
1310 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1311 ett_m3ap_MBMSSessionUpdateRequest, MBMSSessionUpdateRequest_sequence);
1313 return offset;
1317 static const per_sequence_t MBMSSessionUpdateResponse_sequence[] = {
1318 { &hf_m3ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m3ap_ProtocolIE_Container },
1319 { NULL, 0, 0, NULL }
1322 static int
1323 dissect_m3ap_MBMSSessionUpdateResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1324 #line 218 "../../asn1/m3ap/m3ap.cnf"
1325 col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Update Response ");
1327 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1328 ett_m3ap_MBMSSessionUpdateResponse, MBMSSessionUpdateResponse_sequence);
1330 return offset;
1334 static const per_sequence_t MBMSSessionUpdateFailure_sequence[] = {
1335 { &hf_m3ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m3ap_ProtocolIE_Container },
1336 { NULL, 0, 0, NULL }
1339 static int
1340 dissect_m3ap_MBMSSessionUpdateFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1341 #line 220 "../../asn1/m3ap/m3ap.cnf"
1342 col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMS Session Update Failure ");
1344 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1345 ett_m3ap_MBMSSessionUpdateFailure, MBMSSessionUpdateFailure_sequence);
1347 return offset;
1351 static const per_sequence_t ErrorIndication_sequence[] = {
1352 { &hf_m3ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m3ap_ProtocolIE_Container },
1353 { NULL, 0, 0, NULL }
1356 static int
1357 dissect_m3ap_ErrorIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1358 #line 222 "../../asn1/m3ap/m3ap.cnf"
1359 col_set_str(actx->pinfo->cinfo, COL_INFO,"Error Indication ");
1361 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1362 ett_m3ap_ErrorIndication, ErrorIndication_sequence);
1364 return offset;
1368 static const per_sequence_t Reset_sequence[] = {
1369 { &hf_m3ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m3ap_ProtocolIE_Container },
1370 { NULL, 0, 0, NULL }
1373 static int
1374 dissect_m3ap_Reset(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1375 #line 224 "../../asn1/m3ap/m3ap.cnf"
1376 col_set_str(actx->pinfo->cinfo, COL_INFO,"Reset ");
1378 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1379 ett_m3ap_Reset, Reset_sequence);
1381 return offset;
1385 static const value_string m3ap_ResetAll_vals[] = {
1386 { 0, "reset-all" },
1387 { 0, NULL }
1391 static int
1392 dissect_m3ap_ResetAll(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1393 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1394 1, NULL, TRUE, 0, NULL);
1396 return offset;
1400 static const per_sequence_t MBMS_Service_associatedLogicalM3_ConnectionListRes_sequence_of[1] = {
1401 { &hf_m3ap_MBMS_Service_associatedLogicalM3_ConnectionListRes_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m3ap_ProtocolIE_Single_Container },
1404 static int
1405 dissect_m3ap_MBMS_Service_associatedLogicalM3_ConnectionListRes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1406 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1407 ett_m3ap_MBMS_Service_associatedLogicalM3_ConnectionListRes, MBMS_Service_associatedLogicalM3_ConnectionListRes_sequence_of,
1408 1, maxNrOfIndividualM3ConnectionsToReset, FALSE);
1410 return offset;
1414 static const value_string m3ap_ResetType_vals[] = {
1415 { 0, "m3-Interface" },
1416 { 1, "partOfM3-Interface" },
1417 { 0, NULL }
1420 static const per_choice_t ResetType_choice[] = {
1421 { 0, &hf_m3ap_m3_Interface , ASN1_EXTENSION_ROOT , dissect_m3ap_ResetAll },
1422 { 1, &hf_m3ap_partOfM3_Interface, ASN1_EXTENSION_ROOT , dissect_m3ap_MBMS_Service_associatedLogicalM3_ConnectionListRes },
1423 { 0, NULL, 0, NULL }
1426 static int
1427 dissect_m3ap_ResetType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1428 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1429 ett_m3ap_ResetType, ResetType_choice,
1430 NULL);
1432 return offset;
1436 static const per_sequence_t ResetAcknowledge_sequence[] = {
1437 { &hf_m3ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m3ap_ProtocolIE_Container },
1438 { NULL, 0, 0, NULL }
1441 static int
1442 dissect_m3ap_ResetAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1443 #line 226 "../../asn1/m3ap/m3ap.cnf"
1444 col_set_str(actx->pinfo->cinfo, COL_INFO,"Reset Acknowledge ");
1446 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1447 ett_m3ap_ResetAcknowledge, ResetAcknowledge_sequence);
1449 return offset;
1453 static const per_sequence_t MBMS_Service_associatedLogicalM3_ConnectionListResAck_sequence_of[1] = {
1454 { &hf_m3ap_MBMS_Service_associatedLogicalM3_ConnectionListResAck_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m3ap_ProtocolIE_Single_Container },
1457 static int
1458 dissect_m3ap_MBMS_Service_associatedLogicalM3_ConnectionListResAck(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1459 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1460 ett_m3ap_MBMS_Service_associatedLogicalM3_ConnectionListResAck, MBMS_Service_associatedLogicalM3_ConnectionListResAck_sequence_of,
1461 1, maxNrOfIndividualM3ConnectionsToReset, FALSE);
1463 return offset;
1467 static const per_sequence_t PrivateMessage_sequence[] = {
1468 { &hf_m3ap_privateIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m3ap_PrivateIE_Container },
1469 { NULL, 0, 0, NULL }
1472 static int
1473 dissect_m3ap_PrivateMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1474 #line 228 "../../asn1/m3ap/m3ap.cnf"
1475 col_set_str(actx->pinfo->cinfo, COL_INFO,"Private Message ");
1477 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1478 ett_m3ap_PrivateMessage, PrivateMessage_sequence);
1480 return offset;
1484 static const per_sequence_t M3SetupRequest_sequence[] = {
1485 { &hf_m3ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m3ap_ProtocolIE_Container },
1486 { NULL, 0, 0, NULL }
1489 static int
1490 dissect_m3ap_M3SetupRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1491 #line 236 "../../asn1/m3ap/m3ap.cnf"
1492 col_set_str(actx->pinfo->cinfo, COL_INFO,"M3 Setup Request ");
1494 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1495 ett_m3ap_M3SetupRequest, M3SetupRequest_sequence);
1497 return offset;
1501 static const per_sequence_t MBMSServiceAreaListItem_sequence_of[1] = {
1502 { &hf_m3ap_MBMSServiceAreaListItem_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m3ap_MBMSServiceArea1 },
1505 static int
1506 dissect_m3ap_MBMSServiceAreaListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1507 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1508 ett_m3ap_MBMSServiceAreaListItem, MBMSServiceAreaListItem_sequence_of,
1509 1, maxnoofMBMSServiceAreaIdentitiesPerMCE, FALSE);
1511 return offset;
1515 static const per_sequence_t M3SetupResponse_sequence[] = {
1516 { &hf_m3ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m3ap_ProtocolIE_Container },
1517 { NULL, 0, 0, NULL }
1520 static int
1521 dissect_m3ap_M3SetupResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1522 #line 238 "../../asn1/m3ap/m3ap.cnf"
1523 col_set_str(actx->pinfo->cinfo, COL_INFO,"M3 Setup Response ");
1525 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1526 ett_m3ap_M3SetupResponse, M3SetupResponse_sequence);
1528 return offset;
1532 static const per_sequence_t M3SetupFailure_sequence[] = {
1533 { &hf_m3ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m3ap_ProtocolIE_Container },
1534 { NULL, 0, 0, NULL }
1537 static int
1538 dissect_m3ap_M3SetupFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1539 #line 240 "../../asn1/m3ap/m3ap.cnf"
1540 col_set_str(actx->pinfo->cinfo, COL_INFO,"M3 Setup Failure ");
1544 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1545 ett_m3ap_M3SetupFailure, M3SetupFailure_sequence);
1547 return offset;
1551 static const per_sequence_t MCEConfigurationUpdate_sequence[] = {
1552 { &hf_m3ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m3ap_ProtocolIE_Container },
1553 { NULL, 0, 0, NULL }
1556 static int
1557 dissect_m3ap_MCEConfigurationUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1558 #line 230 "../../asn1/m3ap/m3ap.cnf"
1559 col_set_str(actx->pinfo->cinfo, COL_INFO,"MCE Configuration Update ");
1561 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1562 ett_m3ap_MCEConfigurationUpdate, MCEConfigurationUpdate_sequence);
1564 return offset;
1568 static const per_sequence_t MCEConfigurationUpdateAcknowledge_sequence[] = {
1569 { &hf_m3ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m3ap_ProtocolIE_Container },
1570 { NULL, 0, 0, NULL }
1573 static int
1574 dissect_m3ap_MCEConfigurationUpdateAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1575 #line 232 "../../asn1/m3ap/m3ap.cnf"
1576 col_set_str(actx->pinfo->cinfo, COL_INFO,"MCE Configuration Update Acknowledge ");
1578 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1579 ett_m3ap_MCEConfigurationUpdateAcknowledge, MCEConfigurationUpdateAcknowledge_sequence);
1581 return offset;
1585 static const per_sequence_t MCEConfigurationUpdateFailure_sequence[] = {
1586 { &hf_m3ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_m3ap_ProtocolIE_Container },
1587 { NULL, 0, 0, NULL }
1590 static int
1591 dissect_m3ap_MCEConfigurationUpdateFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1592 #line 234 "../../asn1/m3ap/m3ap.cnf"
1593 col_set_str(actx->pinfo->cinfo, COL_INFO,"MCE Configuration Update Failure ");
1595 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1596 ett_m3ap_MCEConfigurationUpdateFailure, MCEConfigurationUpdateFailure_sequence);
1598 return offset;
1603 static int
1604 dissect_m3ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1605 #line 73 "../../asn1/m3ap/m3ap.cnf"
1606 message_type = INITIATING_MESSAGE;
1608 offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue);
1610 return offset;
1614 static const per_sequence_t InitiatingMessage_sequence[] = {
1615 { &hf_m3ap_procedureCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m3ap_ProcedureCode },
1616 { &hf_m3ap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m3ap_Criticality },
1617 { &hf_m3ap_initiatingMessagevalue, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m3ap_InitiatingMessage_value },
1618 { NULL, 0, 0, NULL }
1621 static int
1622 dissect_m3ap_InitiatingMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1623 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1624 ett_m3ap_InitiatingMessage, InitiatingMessage_sequence);
1626 return offset;
1631 static int
1632 dissect_m3ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1633 #line 76 "../../asn1/m3ap/m3ap.cnf"
1634 message_type = SUCCESSFUL_OUTCOME;
1636 offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue);
1638 return offset;
1642 static const per_sequence_t SuccessfulOutcome_sequence[] = {
1643 { &hf_m3ap_procedureCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m3ap_ProcedureCode },
1644 { &hf_m3ap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m3ap_Criticality },
1645 { &hf_m3ap_successfulOutcome_value, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m3ap_SuccessfulOutcome_value },
1646 { NULL, 0, 0, NULL }
1649 static int
1650 dissect_m3ap_SuccessfulOutcome(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1651 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1652 ett_m3ap_SuccessfulOutcome, SuccessfulOutcome_sequence);
1654 return offset;
1659 static int
1660 dissect_m3ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1661 #line 79 "../../asn1/m3ap/m3ap.cnf"
1662 message_type = UNSUCCESSFUL_OUTCOME;
1667 offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue);
1669 return offset;
1673 static const per_sequence_t UnsuccessfulOutcome_sequence[] = {
1674 { &hf_m3ap_procedureCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m3ap_ProcedureCode },
1675 { &hf_m3ap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m3ap_Criticality },
1676 { &hf_m3ap_unsuccessfulOutcome_value, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_m3ap_UnsuccessfulOutcome_value },
1677 { NULL, 0, 0, NULL }
1680 static int
1681 dissect_m3ap_UnsuccessfulOutcome(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1682 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1683 ett_m3ap_UnsuccessfulOutcome, UnsuccessfulOutcome_sequence);
1685 return offset;
1689 static const value_string m3ap_M3AP_PDU_vals[] = {
1690 { 0, "initiatingMessage" },
1691 { 1, "successfulOutcome" },
1692 { 2, "unsuccessfulOutcome" },
1693 { 0, NULL }
1696 static const per_choice_t M3AP_PDU_choice[] = {
1697 { 0, &hf_m3ap_initiatingMessage, ASN1_EXTENSION_ROOT , dissect_m3ap_InitiatingMessage },
1698 { 1, &hf_m3ap_successfulOutcome, ASN1_EXTENSION_ROOT , dissect_m3ap_SuccessfulOutcome },
1699 { 2, &hf_m3ap_unsuccessfulOutcome, ASN1_EXTENSION_ROOT , dissect_m3ap_UnsuccessfulOutcome },
1700 { 0, NULL, 0, NULL }
1703 static int
1704 dissect_m3ap_M3AP_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1705 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1706 ett_m3ap_M3AP_PDU, M3AP_PDU_choice,
1707 NULL);
1709 return offset;
1712 /*--- PDUs ---*/
1714 static int dissect_Absolute_Time_ofMBMS_Data_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1715 int offset = 0;
1716 asn1_ctx_t asn1_ctx;
1717 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1718 offset = dissect_m3ap_Absolute_Time_ofMBMS_Data(tvb, offset, &asn1_ctx, tree, hf_m3ap_Absolute_Time_ofMBMS_Data_PDU);
1719 offset += 7; offset >>= 3;
1720 return offset;
1722 static int dissect_AllocationAndRetentionPriority_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1723 int offset = 0;
1724 asn1_ctx_t asn1_ctx;
1725 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1726 offset = dissect_m3ap_AllocationAndRetentionPriority(tvb, offset, &asn1_ctx, tree, hf_m3ap_AllocationAndRetentionPriority_PDU);
1727 offset += 7; offset >>= 3;
1728 return offset;
1730 static int dissect_Cause_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1731 int offset = 0;
1732 asn1_ctx_t asn1_ctx;
1733 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1734 offset = dissect_m3ap_Cause(tvb, offset, &asn1_ctx, tree, hf_m3ap_Cause_PDU);
1735 offset += 7; offset >>= 3;
1736 return offset;
1738 static int dissect_CriticalityDiagnostics_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1739 int offset = 0;
1740 asn1_ctx_t asn1_ctx;
1741 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1742 offset = dissect_m3ap_CriticalityDiagnostics(tvb, offset, &asn1_ctx, tree, hf_m3ap_CriticalityDiagnostics_PDU);
1743 offset += 7; offset >>= 3;
1744 return offset;
1746 static int dissect_Global_MCE_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1747 int offset = 0;
1748 asn1_ctx_t asn1_ctx;
1749 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1750 offset = dissect_m3ap_Global_MCE_ID(tvb, offset, &asn1_ctx, tree, hf_m3ap_Global_MCE_ID_PDU);
1751 offset += 7; offset >>= 3;
1752 return offset;
1754 static int dissect_MBMS_E_RAB_QoS_Parameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1755 int offset = 0;
1756 asn1_ctx_t asn1_ctx;
1757 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1758 offset = dissect_m3ap_MBMS_E_RAB_QoS_Parameters(tvb, offset, &asn1_ctx, tree, hf_m3ap_MBMS_E_RAB_QoS_Parameters_PDU);
1759 offset += 7; offset >>= 3;
1760 return offset;
1762 static int dissect_MBMS_Service_associatedLogicalM3_ConnectionItem_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1763 int offset = 0;
1764 asn1_ctx_t asn1_ctx;
1765 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1766 offset = dissect_m3ap_MBMS_Service_associatedLogicalM3_ConnectionItem(tvb, offset, &asn1_ctx, tree, hf_m3ap_MBMS_Service_associatedLogicalM3_ConnectionItem_PDU);
1767 offset += 7; offset >>= 3;
1768 return offset;
1770 static int dissect_MBMS_Service_Area_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1771 int offset = 0;
1772 asn1_ctx_t asn1_ctx;
1773 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1774 offset = dissect_m3ap_MBMS_Service_Area(tvb, offset, &asn1_ctx, tree, hf_m3ap_MBMS_Service_Area_PDU);
1775 offset += 7; offset >>= 3;
1776 return offset;
1778 static int dissect_MBMS_Session_Duration_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1779 int offset = 0;
1780 asn1_ctx_t asn1_ctx;
1781 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1782 offset = dissect_m3ap_MBMS_Session_Duration(tvb, offset, &asn1_ctx, tree, hf_m3ap_MBMS_Session_Duration_PDU);
1783 offset += 7; offset >>= 3;
1784 return offset;
1786 static int dissect_MBMS_Session_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1787 int offset = 0;
1788 asn1_ctx_t asn1_ctx;
1789 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1790 offset = dissect_m3ap_MBMS_Session_ID(tvb, offset, &asn1_ctx, tree, hf_m3ap_MBMS_Session_ID_PDU);
1791 offset += 7; offset >>= 3;
1792 return offset;
1794 static int dissect_MCE_MBMS_M3AP_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1795 int offset = 0;
1796 asn1_ctx_t asn1_ctx;
1797 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1798 offset = dissect_m3ap_MCE_MBMS_M3AP_ID(tvb, offset, &asn1_ctx, tree, hf_m3ap_MCE_MBMS_M3AP_ID_PDU);
1799 offset += 7; offset >>= 3;
1800 return offset;
1802 static int dissect_MCEname_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1803 int offset = 0;
1804 asn1_ctx_t asn1_ctx;
1805 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1806 offset = dissect_m3ap_MCEname(tvb, offset, &asn1_ctx, tree, hf_m3ap_MCEname_PDU);
1807 offset += 7; offset >>= 3;
1808 return offset;
1810 static int dissect_MinimumTimeToMBMSDataTransfer_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1811 int offset = 0;
1812 asn1_ctx_t asn1_ctx;
1813 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1814 offset = dissect_m3ap_MinimumTimeToMBMSDataTransfer(tvb, offset, &asn1_ctx, tree, hf_m3ap_MinimumTimeToMBMSDataTransfer_PDU);
1815 offset += 7; offset >>= 3;
1816 return offset;
1818 static int dissect_MME_MBMS_M3AP_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1819 int offset = 0;
1820 asn1_ctx_t asn1_ctx;
1821 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1822 offset = dissect_m3ap_MME_MBMS_M3AP_ID(tvb, offset, &asn1_ctx, tree, hf_m3ap_MME_MBMS_M3AP_ID_PDU);
1823 offset += 7; offset >>= 3;
1824 return offset;
1826 static int dissect_TimeToWait_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1827 int offset = 0;
1828 asn1_ctx_t asn1_ctx;
1829 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1830 offset = dissect_m3ap_TimeToWait(tvb, offset, &asn1_ctx, tree, hf_m3ap_TimeToWait_PDU);
1831 offset += 7; offset >>= 3;
1832 return offset;
1834 static int dissect_TMGI_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1835 int offset = 0;
1836 asn1_ctx_t asn1_ctx;
1837 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1838 offset = dissect_m3ap_TMGI(tvb, offset, &asn1_ctx, tree, hf_m3ap_TMGI_PDU);
1839 offset += 7; offset >>= 3;
1840 return offset;
1842 static int dissect_TNL_Information_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1843 int offset = 0;
1844 asn1_ctx_t asn1_ctx;
1845 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1846 offset = dissect_m3ap_TNL_Information(tvb, offset, &asn1_ctx, tree, hf_m3ap_TNL_Information_PDU);
1847 offset += 7; offset >>= 3;
1848 return offset;
1850 static int dissect_MBMSSessionStartRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1851 int offset = 0;
1852 asn1_ctx_t asn1_ctx;
1853 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1854 offset = dissect_m3ap_MBMSSessionStartRequest(tvb, offset, &asn1_ctx, tree, hf_m3ap_MBMSSessionStartRequest_PDU);
1855 offset += 7; offset >>= 3;
1856 return offset;
1858 static int dissect_MBMSSessionStartResponse_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1859 int offset = 0;
1860 asn1_ctx_t asn1_ctx;
1861 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1862 offset = dissect_m3ap_MBMSSessionStartResponse(tvb, offset, &asn1_ctx, tree, hf_m3ap_MBMSSessionStartResponse_PDU);
1863 offset += 7; offset >>= 3;
1864 return offset;
1866 static int dissect_MBMSSessionStartFailure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1867 int offset = 0;
1868 asn1_ctx_t asn1_ctx;
1869 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1870 offset = dissect_m3ap_MBMSSessionStartFailure(tvb, offset, &asn1_ctx, tree, hf_m3ap_MBMSSessionStartFailure_PDU);
1871 offset += 7; offset >>= 3;
1872 return offset;
1874 static int dissect_MBMSSessionStopRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1875 int offset = 0;
1876 asn1_ctx_t asn1_ctx;
1877 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1878 offset = dissect_m3ap_MBMSSessionStopRequest(tvb, offset, &asn1_ctx, tree, hf_m3ap_MBMSSessionStopRequest_PDU);
1879 offset += 7; offset >>= 3;
1880 return offset;
1882 static int dissect_MBMSSessionStopResponse_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1883 int offset = 0;
1884 asn1_ctx_t asn1_ctx;
1885 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1886 offset = dissect_m3ap_MBMSSessionStopResponse(tvb, offset, &asn1_ctx, tree, hf_m3ap_MBMSSessionStopResponse_PDU);
1887 offset += 7; offset >>= 3;
1888 return offset;
1890 static int dissect_MBMSSessionUpdateRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1891 int offset = 0;
1892 asn1_ctx_t asn1_ctx;
1893 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1894 offset = dissect_m3ap_MBMSSessionUpdateRequest(tvb, offset, &asn1_ctx, tree, hf_m3ap_MBMSSessionUpdateRequest_PDU);
1895 offset += 7; offset >>= 3;
1896 return offset;
1898 static int dissect_MBMSSessionUpdateResponse_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1899 int offset = 0;
1900 asn1_ctx_t asn1_ctx;
1901 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1902 offset = dissect_m3ap_MBMSSessionUpdateResponse(tvb, offset, &asn1_ctx, tree, hf_m3ap_MBMSSessionUpdateResponse_PDU);
1903 offset += 7; offset >>= 3;
1904 return offset;
1906 static int dissect_MBMSSessionUpdateFailure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1907 int offset = 0;
1908 asn1_ctx_t asn1_ctx;
1909 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1910 offset = dissect_m3ap_MBMSSessionUpdateFailure(tvb, offset, &asn1_ctx, tree, hf_m3ap_MBMSSessionUpdateFailure_PDU);
1911 offset += 7; offset >>= 3;
1912 return offset;
1914 static int dissect_ErrorIndication_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1915 int offset = 0;
1916 asn1_ctx_t asn1_ctx;
1917 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1918 offset = dissect_m3ap_ErrorIndication(tvb, offset, &asn1_ctx, tree, hf_m3ap_ErrorIndication_PDU);
1919 offset += 7; offset >>= 3;
1920 return offset;
1922 static int dissect_Reset_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1923 int offset = 0;
1924 asn1_ctx_t asn1_ctx;
1925 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1926 offset = dissect_m3ap_Reset(tvb, offset, &asn1_ctx, tree, hf_m3ap_Reset_PDU);
1927 offset += 7; offset >>= 3;
1928 return offset;
1930 static int dissect_ResetType_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1931 int offset = 0;
1932 asn1_ctx_t asn1_ctx;
1933 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1934 offset = dissect_m3ap_ResetType(tvb, offset, &asn1_ctx, tree, hf_m3ap_ResetType_PDU);
1935 offset += 7; offset >>= 3;
1936 return offset;
1938 static int dissect_ResetAcknowledge_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1939 int offset = 0;
1940 asn1_ctx_t asn1_ctx;
1941 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1942 offset = dissect_m3ap_ResetAcknowledge(tvb, offset, &asn1_ctx, tree, hf_m3ap_ResetAcknowledge_PDU);
1943 offset += 7; offset >>= 3;
1944 return offset;
1946 static int dissect_MBMS_Service_associatedLogicalM3_ConnectionListResAck_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1947 int offset = 0;
1948 asn1_ctx_t asn1_ctx;
1949 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1950 offset = dissect_m3ap_MBMS_Service_associatedLogicalM3_ConnectionListResAck(tvb, offset, &asn1_ctx, tree, hf_m3ap_MBMS_Service_associatedLogicalM3_ConnectionListResAck_PDU);
1951 offset += 7; offset >>= 3;
1952 return offset;
1954 static int dissect_PrivateMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1955 int offset = 0;
1956 asn1_ctx_t asn1_ctx;
1957 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1958 offset = dissect_m3ap_PrivateMessage(tvb, offset, &asn1_ctx, tree, hf_m3ap_PrivateMessage_PDU);
1959 offset += 7; offset >>= 3;
1960 return offset;
1962 static int dissect_M3SetupRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1963 int offset = 0;
1964 asn1_ctx_t asn1_ctx;
1965 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1966 offset = dissect_m3ap_M3SetupRequest(tvb, offset, &asn1_ctx, tree, hf_m3ap_M3SetupRequest_PDU);
1967 offset += 7; offset >>= 3;
1968 return offset;
1970 static int dissect_MBMSServiceAreaListItem_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1971 int offset = 0;
1972 asn1_ctx_t asn1_ctx;
1973 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1974 offset = dissect_m3ap_MBMSServiceAreaListItem(tvb, offset, &asn1_ctx, tree, hf_m3ap_MBMSServiceAreaListItem_PDU);
1975 offset += 7; offset >>= 3;
1976 return offset;
1978 static int dissect_M3SetupResponse_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1979 int offset = 0;
1980 asn1_ctx_t asn1_ctx;
1981 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1982 offset = dissect_m3ap_M3SetupResponse(tvb, offset, &asn1_ctx, tree, hf_m3ap_M3SetupResponse_PDU);
1983 offset += 7; offset >>= 3;
1984 return offset;
1986 static int dissect_M3SetupFailure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1987 int offset = 0;
1988 asn1_ctx_t asn1_ctx;
1989 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1990 offset = dissect_m3ap_M3SetupFailure(tvb, offset, &asn1_ctx, tree, hf_m3ap_M3SetupFailure_PDU);
1991 offset += 7; offset >>= 3;
1992 return offset;
1994 static int dissect_MCEConfigurationUpdate_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1995 int offset = 0;
1996 asn1_ctx_t asn1_ctx;
1997 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1998 offset = dissect_m3ap_MCEConfigurationUpdate(tvb, offset, &asn1_ctx, tree, hf_m3ap_MCEConfigurationUpdate_PDU);
1999 offset += 7; offset >>= 3;
2000 return offset;
2002 static int dissect_MCEConfigurationUpdateAcknowledge_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2003 int offset = 0;
2004 asn1_ctx_t asn1_ctx;
2005 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2006 offset = dissect_m3ap_MCEConfigurationUpdateAcknowledge(tvb, offset, &asn1_ctx, tree, hf_m3ap_MCEConfigurationUpdateAcknowledge_PDU);
2007 offset += 7; offset >>= 3;
2008 return offset;
2010 static int dissect_MCEConfigurationUpdateFailure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2011 int offset = 0;
2012 asn1_ctx_t asn1_ctx;
2013 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2014 offset = dissect_m3ap_MCEConfigurationUpdateFailure(tvb, offset, &asn1_ctx, tree, hf_m3ap_MCEConfigurationUpdateFailure_PDU);
2015 offset += 7; offset >>= 3;
2016 return offset;
2018 static int dissect_M3AP_PDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2019 int offset = 0;
2020 asn1_ctx_t asn1_ctx;
2021 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2022 offset = dissect_m3ap_M3AP_PDU(tvb, offset, &asn1_ctx, tree, hf_m3ap_M3AP_PDU_PDU);
2023 offset += 7; offset >>= 3;
2024 return offset;
2028 /*--- End of included file: packet-m3ap-fn.c ---*/
2029 #line 95 "../../asn1/m3ap/packet-m3ap-template.c"
2031 static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
2033 return (dissector_try_uint(m3ap_ies_dissector_table, ProtocolIE_ID, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
2036 static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
2038 return (dissector_try_uint(m3ap_extension_dissector_table, ProtocolIE_ID, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
2041 static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
2043 return (dissector_try_uint(m3ap_proc_imsg_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
2046 static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
2048 return (dissector_try_uint(m3ap_proc_sout_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
2051 static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
2053 return (dissector_try_uint(m3ap_proc_uout_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
2057 static void
2058 dissect_m3ap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
2060 proto_item *m3ap_item = NULL;
2061 proto_tree *m3ap_tree = NULL;
2063 /* make entry in the Protocol column on summary display */
2064 col_set_str(pinfo->cinfo, COL_PROTOCOL, PNAME);
2066 /* create the m3ap protocol tree */
2067 if (tree) {
2068 m3ap_item = proto_tree_add_item(tree, proto_m3ap, tvb, 0, -1, ENC_NA);
2069 m3ap_tree = proto_item_add_subtree(m3ap_item, ett_m3ap);
2071 dissect_M3AP_PDU_PDU(tvb, pinfo, m3ap_tree, NULL);
2074 /*--- proto_register_m3ap -------------------------------------------*/
2075 void proto_register_m3ap(void) {
2077 /* List of fields */
2078 static hf_register_info hf[] = {
2079 { &hf_m3ap_Absolute_Time_ofMBMS_Data_value,
2080 { "Absolute-Time-ofMBMS-Data-value", "m3ap.Absolute_Time_ofMBMS_Data_value",
2081 FT_STRING, BASE_NONE, NULL, 0,
2082 NULL, HFILL }
2084 { &hf_m3ap_IPAddress,
2085 { "IPAddress", "m3ap.IPAddress",
2086 FT_IPv6, BASE_NONE, NULL, 0,
2087 NULL, HFILL }
2091 /*--- Included file: packet-m3ap-hfarr.c ---*/
2092 #line 1 "../../asn1/m3ap/packet-m3ap-hfarr.c"
2093 { &hf_m3ap_Absolute_Time_ofMBMS_Data_PDU,
2094 { "Absolute-Time-ofMBMS-Data", "m3ap.Absolute_Time_ofMBMS_Data",
2095 FT_BYTES, BASE_NONE, NULL, 0,
2096 NULL, HFILL }},
2097 { &hf_m3ap_AllocationAndRetentionPriority_PDU,
2098 { "AllocationAndRetentionPriority", "m3ap.AllocationAndRetentionPriority_element",
2099 FT_NONE, BASE_NONE, NULL, 0,
2100 NULL, HFILL }},
2101 { &hf_m3ap_Cause_PDU,
2102 { "Cause", "m3ap.Cause",
2103 FT_UINT32, BASE_DEC, VALS(m3ap_Cause_vals), 0,
2104 NULL, HFILL }},
2105 { &hf_m3ap_CriticalityDiagnostics_PDU,
2106 { "CriticalityDiagnostics", "m3ap.CriticalityDiagnostics_element",
2107 FT_NONE, BASE_NONE, NULL, 0,
2108 NULL, HFILL }},
2109 { &hf_m3ap_Global_MCE_ID_PDU,
2110 { "Global-MCE-ID", "m3ap.Global_MCE_ID_element",
2111 FT_NONE, BASE_NONE, NULL, 0,
2112 NULL, HFILL }},
2113 { &hf_m3ap_MBMS_E_RAB_QoS_Parameters_PDU,
2114 { "MBMS-E-RAB-QoS-Parameters", "m3ap.MBMS_E_RAB_QoS_Parameters_element",
2115 FT_NONE, BASE_NONE, NULL, 0,
2116 NULL, HFILL }},
2117 { &hf_m3ap_MBMS_Service_associatedLogicalM3_ConnectionItem_PDU,
2118 { "MBMS-Service-associatedLogicalM3-ConnectionItem", "m3ap.MBMS_Service_associatedLogicalM3_ConnectionItem_element",
2119 FT_NONE, BASE_NONE, NULL, 0,
2120 NULL, HFILL }},
2121 { &hf_m3ap_MBMS_Service_Area_PDU,
2122 { "MBMS-Service-Area", "m3ap.MBMS_Service_Area",
2123 FT_BYTES, BASE_NONE, NULL, 0,
2124 NULL, HFILL }},
2125 { &hf_m3ap_MBMS_Session_Duration_PDU,
2126 { "MBMS-Session-Duration", "m3ap.MBMS_Session_Duration",
2127 FT_BYTES, BASE_NONE, NULL, 0,
2128 NULL, HFILL }},
2129 { &hf_m3ap_MBMS_Session_ID_PDU,
2130 { "MBMS-Session-ID", "m3ap.MBMS_Session_ID",
2131 FT_BYTES, BASE_NONE, NULL, 0,
2132 NULL, HFILL }},
2133 { &hf_m3ap_MCE_MBMS_M3AP_ID_PDU,
2134 { "MCE-MBMS-M3AP-ID", "m3ap.MCE_MBMS_M3AP_ID",
2135 FT_UINT32, BASE_DEC, NULL, 0,
2136 NULL, HFILL }},
2137 { &hf_m3ap_MCEname_PDU,
2138 { "MCEname", "m3ap.MCEname",
2139 FT_STRING, BASE_NONE, NULL, 0,
2140 NULL, HFILL }},
2141 { &hf_m3ap_MinimumTimeToMBMSDataTransfer_PDU,
2142 { "MinimumTimeToMBMSDataTransfer", "m3ap.MinimumTimeToMBMSDataTransfer",
2143 FT_BYTES, BASE_NONE, NULL, 0,
2144 NULL, HFILL }},
2145 { &hf_m3ap_MME_MBMS_M3AP_ID_PDU,
2146 { "MME-MBMS-M3AP-ID", "m3ap.MME_MBMS_M3AP_ID",
2147 FT_UINT32, BASE_DEC, NULL, 0,
2148 NULL, HFILL }},
2149 { &hf_m3ap_TimeToWait_PDU,
2150 { "TimeToWait", "m3ap.TimeToWait",
2151 FT_UINT32, BASE_DEC, VALS(m3ap_TimeToWait_vals), 0,
2152 NULL, HFILL }},
2153 { &hf_m3ap_TMGI_PDU,
2154 { "TMGI", "m3ap.TMGI_element",
2155 FT_NONE, BASE_NONE, NULL, 0,
2156 NULL, HFILL }},
2157 { &hf_m3ap_TNL_Information_PDU,
2158 { "TNL-Information", "m3ap.TNL_Information_element",
2159 FT_NONE, BASE_NONE, NULL, 0,
2160 NULL, HFILL }},
2161 { &hf_m3ap_MBMSSessionStartRequest_PDU,
2162 { "MBMSSessionStartRequest", "m3ap.MBMSSessionStartRequest_element",
2163 FT_NONE, BASE_NONE, NULL, 0,
2164 NULL, HFILL }},
2165 { &hf_m3ap_MBMSSessionStartResponse_PDU,
2166 { "MBMSSessionStartResponse", "m3ap.MBMSSessionStartResponse_element",
2167 FT_NONE, BASE_NONE, NULL, 0,
2168 NULL, HFILL }},
2169 { &hf_m3ap_MBMSSessionStartFailure_PDU,
2170 { "MBMSSessionStartFailure", "m3ap.MBMSSessionStartFailure_element",
2171 FT_NONE, BASE_NONE, NULL, 0,
2172 NULL, HFILL }},
2173 { &hf_m3ap_MBMSSessionStopRequest_PDU,
2174 { "MBMSSessionStopRequest", "m3ap.MBMSSessionStopRequest_element",
2175 FT_NONE, BASE_NONE, NULL, 0,
2176 NULL, HFILL }},
2177 { &hf_m3ap_MBMSSessionStopResponse_PDU,
2178 { "MBMSSessionStopResponse", "m3ap.MBMSSessionStopResponse_element",
2179 FT_NONE, BASE_NONE, NULL, 0,
2180 NULL, HFILL }},
2181 { &hf_m3ap_MBMSSessionUpdateRequest_PDU,
2182 { "MBMSSessionUpdateRequest", "m3ap.MBMSSessionUpdateRequest_element",
2183 FT_NONE, BASE_NONE, NULL, 0,
2184 NULL, HFILL }},
2185 { &hf_m3ap_MBMSSessionUpdateResponse_PDU,
2186 { "MBMSSessionUpdateResponse", "m3ap.MBMSSessionUpdateResponse_element",
2187 FT_NONE, BASE_NONE, NULL, 0,
2188 NULL, HFILL }},
2189 { &hf_m3ap_MBMSSessionUpdateFailure_PDU,
2190 { "MBMSSessionUpdateFailure", "m3ap.MBMSSessionUpdateFailure_element",
2191 FT_NONE, BASE_NONE, NULL, 0,
2192 NULL, HFILL }},
2193 { &hf_m3ap_ErrorIndication_PDU,
2194 { "ErrorIndication", "m3ap.ErrorIndication_element",
2195 FT_NONE, BASE_NONE, NULL, 0,
2196 NULL, HFILL }},
2197 { &hf_m3ap_Reset_PDU,
2198 { "Reset", "m3ap.Reset_element",
2199 FT_NONE, BASE_NONE, NULL, 0,
2200 NULL, HFILL }},
2201 { &hf_m3ap_ResetType_PDU,
2202 { "ResetType", "m3ap.ResetType",
2203 FT_UINT32, BASE_DEC, VALS(m3ap_ResetType_vals), 0,
2204 NULL, HFILL }},
2205 { &hf_m3ap_ResetAcknowledge_PDU,
2206 { "ResetAcknowledge", "m3ap.ResetAcknowledge_element",
2207 FT_NONE, BASE_NONE, NULL, 0,
2208 NULL, HFILL }},
2209 { &hf_m3ap_MBMS_Service_associatedLogicalM3_ConnectionListResAck_PDU,
2210 { "MBMS-Service-associatedLogicalM3-ConnectionListResAck", "m3ap.MBMS_Service_associatedLogicalM3_ConnectionListResAck",
2211 FT_UINT32, BASE_DEC, NULL, 0,
2212 NULL, HFILL }},
2213 { &hf_m3ap_PrivateMessage_PDU,
2214 { "PrivateMessage", "m3ap.PrivateMessage_element",
2215 FT_NONE, BASE_NONE, NULL, 0,
2216 NULL, HFILL }},
2217 { &hf_m3ap_M3SetupRequest_PDU,
2218 { "M3SetupRequest", "m3ap.M3SetupRequest_element",
2219 FT_NONE, BASE_NONE, NULL, 0,
2220 NULL, HFILL }},
2221 { &hf_m3ap_MBMSServiceAreaListItem_PDU,
2222 { "MBMSServiceAreaListItem", "m3ap.MBMSServiceAreaListItem",
2223 FT_UINT32, BASE_DEC, NULL, 0,
2224 NULL, HFILL }},
2225 { &hf_m3ap_M3SetupResponse_PDU,
2226 { "M3SetupResponse", "m3ap.M3SetupResponse_element",
2227 FT_NONE, BASE_NONE, NULL, 0,
2228 NULL, HFILL }},
2229 { &hf_m3ap_M3SetupFailure_PDU,
2230 { "M3SetupFailure", "m3ap.M3SetupFailure_element",
2231 FT_NONE, BASE_NONE, NULL, 0,
2232 NULL, HFILL }},
2233 { &hf_m3ap_MCEConfigurationUpdate_PDU,
2234 { "MCEConfigurationUpdate", "m3ap.MCEConfigurationUpdate_element",
2235 FT_NONE, BASE_NONE, NULL, 0,
2236 NULL, HFILL }},
2237 { &hf_m3ap_MCEConfigurationUpdateAcknowledge_PDU,
2238 { "MCEConfigurationUpdateAcknowledge", "m3ap.MCEConfigurationUpdateAcknowledge_element",
2239 FT_NONE, BASE_NONE, NULL, 0,
2240 NULL, HFILL }},
2241 { &hf_m3ap_MCEConfigurationUpdateFailure_PDU,
2242 { "MCEConfigurationUpdateFailure", "m3ap.MCEConfigurationUpdateFailure_element",
2243 FT_NONE, BASE_NONE, NULL, 0,
2244 NULL, HFILL }},
2245 { &hf_m3ap_M3AP_PDU_PDU,
2246 { "M3AP-PDU", "m3ap.M3AP_PDU",
2247 FT_UINT32, BASE_DEC, VALS(m3ap_M3AP_PDU_vals), 0,
2248 NULL, HFILL }},
2249 { &hf_m3ap_local,
2250 { "local", "m3ap.local",
2251 FT_UINT32, BASE_DEC, NULL, 0,
2252 "INTEGER_0_maxPrivateIEs", HFILL }},
2253 { &hf_m3ap_global,
2254 { "global", "m3ap.global",
2255 FT_OID, BASE_NONE, NULL, 0,
2256 "OBJECT_IDENTIFIER", HFILL }},
2257 { &hf_m3ap_ProtocolIE_Container_item,
2258 { "ProtocolIE-Field", "m3ap.ProtocolIE_Field_element",
2259 FT_NONE, BASE_NONE, NULL, 0,
2260 NULL, HFILL }},
2261 { &hf_m3ap_id,
2262 { "id", "m3ap.id",
2263 FT_UINT32, BASE_DEC|BASE_EXT_STRING, &m3ap_ProtocolIE_ID_vals_ext, 0,
2264 "ProtocolIE_ID", HFILL }},
2265 { &hf_m3ap_criticality,
2266 { "criticality", "m3ap.criticality",
2267 FT_UINT32, BASE_DEC, VALS(m3ap_Criticality_vals), 0,
2268 NULL, HFILL }},
2269 { &hf_m3ap_ie_field_value,
2270 { "value", "m3ap.value_element",
2271 FT_NONE, BASE_NONE, NULL, 0,
2272 "T_ie_field_value", HFILL }},
2273 { &hf_m3ap_ProtocolIE_ContainerList_item,
2274 { "ProtocolIE-Container", "m3ap.ProtocolIE_Container",
2275 FT_UINT32, BASE_DEC, NULL, 0,
2276 NULL, HFILL }},
2277 { &hf_m3ap_ProtocolExtensionContainer_item,
2278 { "ProtocolExtensionField", "m3ap.ProtocolExtensionField_element",
2279 FT_NONE, BASE_NONE, NULL, 0,
2280 NULL, HFILL }},
2281 { &hf_m3ap_ext_id,
2282 { "id", "m3ap.id",
2283 FT_UINT32, BASE_DEC|BASE_EXT_STRING, &m3ap_ProtocolIE_ID_vals_ext, 0,
2284 "ProtocolIE_ID", HFILL }},
2285 { &hf_m3ap_extensionValue,
2286 { "extensionValue", "m3ap.extensionValue_element",
2287 FT_NONE, BASE_NONE, NULL, 0,
2288 NULL, HFILL }},
2289 { &hf_m3ap_PrivateIE_Container_item,
2290 { "PrivateIE-Field", "m3ap.PrivateIE_Field_element",
2291 FT_NONE, BASE_NONE, NULL, 0,
2292 NULL, HFILL }},
2293 { &hf_m3ap_private_id,
2294 { "id", "m3ap.id",
2295 FT_UINT32, BASE_DEC, VALS(m3ap_PrivateIE_ID_vals), 0,
2296 "PrivateIE_ID", HFILL }},
2297 { &hf_m3ap_private_value,
2298 { "value", "m3ap.value_element",
2299 FT_NONE, BASE_NONE, NULL, 0,
2300 "T_private_value", HFILL }},
2301 { &hf_m3ap_priorityLevel,
2302 { "priorityLevel", "m3ap.priorityLevel",
2303 FT_UINT32, BASE_DEC, VALS(m3ap_PriorityLevel_vals), 0,
2304 NULL, HFILL }},
2305 { &hf_m3ap_pre_emptionCapability,
2306 { "pre-emptionCapability", "m3ap.pre_emptionCapability",
2307 FT_UINT32, BASE_DEC, VALS(m3ap_Pre_emptionCapability_vals), 0,
2308 NULL, HFILL }},
2309 { &hf_m3ap_pre_emptionVulnerability,
2310 { "pre-emptionVulnerability", "m3ap.pre_emptionVulnerability",
2311 FT_UINT32, BASE_DEC, VALS(m3ap_Pre_emptionVulnerability_vals), 0,
2312 NULL, HFILL }},
2313 { &hf_m3ap_iE_Extensions,
2314 { "iE-Extensions", "m3ap.iE_Extensions",
2315 FT_UINT32, BASE_DEC, NULL, 0,
2316 "ProtocolExtensionContainer", HFILL }},
2317 { &hf_m3ap_radioNetwork,
2318 { "radioNetwork", "m3ap.radioNetwork",
2319 FT_UINT32, BASE_DEC, VALS(m3ap_CauseRadioNetwork_vals), 0,
2320 "CauseRadioNetwork", HFILL }},
2321 { &hf_m3ap_transport,
2322 { "transport", "m3ap.transport",
2323 FT_UINT32, BASE_DEC, VALS(m3ap_CauseTransport_vals), 0,
2324 "CauseTransport", HFILL }},
2325 { &hf_m3ap_nAS,
2326 { "nAS", "m3ap.nAS",
2327 FT_UINT32, BASE_DEC, VALS(m3ap_CauseNAS_vals), 0,
2328 "CauseNAS", HFILL }},
2329 { &hf_m3ap_protocol,
2330 { "protocol", "m3ap.protocol",
2331 FT_UINT32, BASE_DEC, VALS(m3ap_CauseProtocol_vals), 0,
2332 "CauseProtocol", HFILL }},
2333 { &hf_m3ap_misc,
2334 { "misc", "m3ap.misc",
2335 FT_UINT32, BASE_DEC, VALS(m3ap_CauseMisc_vals), 0,
2336 "CauseMisc", HFILL }},
2337 { &hf_m3ap_procedureCode,
2338 { "procedureCode", "m3ap.procedureCode",
2339 FT_UINT32, BASE_DEC|BASE_EXT_STRING, &m3ap_ProcedureCode_vals_ext, 0,
2340 NULL, HFILL }},
2341 { &hf_m3ap_triggeringMessage,
2342 { "triggeringMessage", "m3ap.triggeringMessage",
2343 FT_UINT32, BASE_DEC, VALS(m3ap_TriggeringMessage_vals), 0,
2344 NULL, HFILL }},
2345 { &hf_m3ap_procedureCriticality,
2346 { "procedureCriticality", "m3ap.procedureCriticality",
2347 FT_UINT32, BASE_DEC, VALS(m3ap_Criticality_vals), 0,
2348 "Criticality", HFILL }},
2349 { &hf_m3ap_iEsCriticalityDiagnostics,
2350 { "iEsCriticalityDiagnostics", "m3ap.iEsCriticalityDiagnostics",
2351 FT_UINT32, BASE_DEC, NULL, 0,
2352 "CriticalityDiagnostics_IE_List", HFILL }},
2353 { &hf_m3ap_CriticalityDiagnostics_IE_List_item,
2354 { "CriticalityDiagnostics-IE-List item", "m3ap.CriticalityDiagnostics_IE_List_item_element",
2355 FT_NONE, BASE_NONE, NULL, 0,
2356 NULL, HFILL }},
2357 { &hf_m3ap_iECriticality,
2358 { "iECriticality", "m3ap.iECriticality",
2359 FT_UINT32, BASE_DEC, VALS(m3ap_Criticality_vals), 0,
2360 "Criticality", HFILL }},
2361 { &hf_m3ap_iE_ID,
2362 { "iE-ID", "m3ap.iE_ID",
2363 FT_UINT32, BASE_DEC|BASE_EXT_STRING, &m3ap_ProtocolIE_ID_vals_ext, 0,
2364 "ProtocolIE_ID", HFILL }},
2365 { &hf_m3ap_typeOfError,
2366 { "typeOfError", "m3ap.typeOfError",
2367 FT_UINT32, BASE_DEC, VALS(m3ap_TypeOfError_vals), 0,
2368 NULL, HFILL }},
2369 { &hf_m3ap_pLMN_Identity,
2370 { "pLMN-Identity", "m3ap.pLMN_Identity",
2371 FT_BYTES, BASE_NONE, NULL, 0,
2372 NULL, HFILL }},
2373 { &hf_m3ap_mCE_ID,
2374 { "mCE-ID", "m3ap.mCE_ID",
2375 FT_BYTES, BASE_NONE, NULL, 0,
2376 NULL, HFILL }},
2377 { &hf_m3ap_extendedMCE_ID,
2378 { "extendedMCE-ID", "m3ap.extendedMCE_ID",
2379 FT_BYTES, BASE_NONE, NULL, 0,
2380 NULL, HFILL }},
2381 { &hf_m3ap_mBMS_E_RAB_MaximumBitrateDL,
2382 { "mBMS-E-RAB-MaximumBitrateDL", "m3ap.mBMS_E_RAB_MaximumBitrateDL",
2383 FT_UINT64, BASE_DEC, NULL, 0,
2384 "BitRate", HFILL }},
2385 { &hf_m3ap_mBMS_E_RAB_GuaranteedBitrateDL,
2386 { "mBMS-E-RAB-GuaranteedBitrateDL", "m3ap.mBMS_E_RAB_GuaranteedBitrateDL",
2387 FT_UINT64, BASE_DEC, NULL, 0,
2388 "BitRate", HFILL }},
2389 { &hf_m3ap_qCI,
2390 { "qCI", "m3ap.qCI",
2391 FT_UINT32, BASE_DEC, NULL, 0,
2392 NULL, HFILL }},
2393 { &hf_m3ap_gbrQosInformation,
2394 { "gbrQosInformation", "m3ap.gbrQosInformation_element",
2395 FT_NONE, BASE_NONE, NULL, 0,
2396 "GBR_QosInformation", HFILL }},
2397 { &hf_m3ap_mME_MBMS_M3AP_ID,
2398 { "mME-MBMS-M3AP-ID", "m3ap.mME_MBMS_M3AP_ID",
2399 FT_UINT32, BASE_DEC, NULL, 0,
2400 NULL, HFILL }},
2401 { &hf_m3ap_mCE_MBMS_M3AP_ID,
2402 { "mCE-MBMS-M3AP-ID", "m3ap.mCE_MBMS_M3AP_ID",
2403 FT_UINT32, BASE_DEC, NULL, 0,
2404 NULL, HFILL }},
2405 { &hf_m3ap_pLMNidentity,
2406 { "pLMNidentity", "m3ap.pLMNidentity",
2407 FT_BYTES, BASE_NONE, NULL, 0,
2408 "PLMN_Identity", HFILL }},
2409 { &hf_m3ap_serviceID,
2410 { "serviceID", "m3ap.serviceID",
2411 FT_BYTES, BASE_NONE, NULL, 0,
2412 "OCTET_STRING_SIZE_3", HFILL }},
2413 { &hf_m3ap_iPMCAddress,
2414 { "iPMCAddress", "m3ap.iPMCAddress",
2415 FT_BYTES, BASE_NONE, NULL, 0,
2416 "IPAddress", HFILL }},
2417 { &hf_m3ap_iPSourceAddress,
2418 { "iPSourceAddress", "m3ap.iPSourceAddress",
2419 FT_BYTES, BASE_NONE, NULL, 0,
2420 "IPAddress", HFILL }},
2421 { &hf_m3ap_gTP_DLTEID,
2422 { "gTP-DLTEID", "m3ap.gTP_DLTEID",
2423 FT_BYTES, BASE_NONE, NULL, 0,
2424 "GTP_TEID", HFILL }},
2425 { &hf_m3ap_protocolIEs,
2426 { "protocolIEs", "m3ap.protocolIEs",
2427 FT_UINT32, BASE_DEC, NULL, 0,
2428 "ProtocolIE_Container", HFILL }},
2429 { &hf_m3ap_m3_Interface,
2430 { "m3-Interface", "m3ap.m3_Interface",
2431 FT_UINT32, BASE_DEC, VALS(m3ap_ResetAll_vals), 0,
2432 "ResetAll", HFILL }},
2433 { &hf_m3ap_partOfM3_Interface,
2434 { "partOfM3-Interface", "m3ap.partOfM3_Interface",
2435 FT_UINT32, BASE_DEC, NULL, 0,
2436 "MBMS_Service_associatedLogicalM3_ConnectionListRes", HFILL }},
2437 { &hf_m3ap_MBMS_Service_associatedLogicalM3_ConnectionListRes_item,
2438 { "ProtocolIE-Single-Container", "m3ap.ProtocolIE_Single_Container_element",
2439 FT_NONE, BASE_NONE, NULL, 0,
2440 NULL, HFILL }},
2441 { &hf_m3ap_MBMS_Service_associatedLogicalM3_ConnectionListResAck_item,
2442 { "ProtocolIE-Single-Container", "m3ap.ProtocolIE_Single_Container_element",
2443 FT_NONE, BASE_NONE, NULL, 0,
2444 NULL, HFILL }},
2445 { &hf_m3ap_privateIEs,
2446 { "privateIEs", "m3ap.privateIEs",
2447 FT_UINT32, BASE_DEC, NULL, 0,
2448 "PrivateIE_Container", HFILL }},
2449 { &hf_m3ap_MBMSServiceAreaListItem_item,
2450 { "MBMSServiceArea1", "m3ap.MBMSServiceArea1",
2451 FT_BYTES, BASE_NONE, NULL, 0,
2452 NULL, HFILL }},
2453 { &hf_m3ap_initiatingMessage,
2454 { "initiatingMessage", "m3ap.initiatingMessage_element",
2455 FT_NONE, BASE_NONE, NULL, 0,
2456 NULL, HFILL }},
2457 { &hf_m3ap_successfulOutcome,
2458 { "successfulOutcome", "m3ap.successfulOutcome_element",
2459 FT_NONE, BASE_NONE, NULL, 0,
2460 NULL, HFILL }},
2461 { &hf_m3ap_unsuccessfulOutcome,
2462 { "unsuccessfulOutcome", "m3ap.unsuccessfulOutcome_element",
2463 FT_NONE, BASE_NONE, NULL, 0,
2464 NULL, HFILL }},
2465 { &hf_m3ap_initiatingMessagevalue,
2466 { "value", "m3ap.value_element",
2467 FT_NONE, BASE_NONE, NULL, 0,
2468 "InitiatingMessage_value", HFILL }},
2469 { &hf_m3ap_successfulOutcome_value,
2470 { "value", "m3ap.value_element",
2471 FT_NONE, BASE_NONE, NULL, 0,
2472 "SuccessfulOutcome_value", HFILL }},
2473 { &hf_m3ap_unsuccessfulOutcome_value,
2474 { "value", "m3ap.value_element",
2475 FT_NONE, BASE_NONE, NULL, 0,
2476 "UnsuccessfulOutcome_value", HFILL }},
2478 /*--- End of included file: packet-m3ap-hfarr.c ---*/
2479 #line 156 "../../asn1/m3ap/packet-m3ap-template.c"
2482 /* List of subtrees */
2483 static gint *ett[] = {
2484 &ett_m3ap,
2486 /*--- Included file: packet-m3ap-ettarr.c ---*/
2487 #line 1 "../../asn1/m3ap/packet-m3ap-ettarr.c"
2488 &ett_m3ap_PrivateIE_ID,
2489 &ett_m3ap_ProtocolIE_Container,
2490 &ett_m3ap_ProtocolIE_Field,
2491 &ett_m3ap_ProtocolIE_ContainerList,
2492 &ett_m3ap_ProtocolExtensionContainer,
2493 &ett_m3ap_ProtocolExtensionField,
2494 &ett_m3ap_PrivateIE_Container,
2495 &ett_m3ap_PrivateIE_Field,
2496 &ett_m3ap_AllocationAndRetentionPriority,
2497 &ett_m3ap_Cause,
2498 &ett_m3ap_CriticalityDiagnostics,
2499 &ett_m3ap_CriticalityDiagnostics_IE_List,
2500 &ett_m3ap_CriticalityDiagnostics_IE_List_item,
2501 &ett_m3ap_Global_MCE_ID,
2502 &ett_m3ap_GBR_QosInformation,
2503 &ett_m3ap_MBMS_E_RAB_QoS_Parameters,
2504 &ett_m3ap_MBMS_Service_associatedLogicalM3_ConnectionItem,
2505 &ett_m3ap_TMGI,
2506 &ett_m3ap_TNL_Information,
2507 &ett_m3ap_MBMSSessionStartRequest,
2508 &ett_m3ap_MBMSSessionStartResponse,
2509 &ett_m3ap_MBMSSessionStartFailure,
2510 &ett_m3ap_MBMSSessionStopRequest,
2511 &ett_m3ap_MBMSSessionStopResponse,
2512 &ett_m3ap_MBMSSessionUpdateRequest,
2513 &ett_m3ap_MBMSSessionUpdateResponse,
2514 &ett_m3ap_MBMSSessionUpdateFailure,
2515 &ett_m3ap_ErrorIndication,
2516 &ett_m3ap_Reset,
2517 &ett_m3ap_ResetType,
2518 &ett_m3ap_MBMS_Service_associatedLogicalM3_ConnectionListRes,
2519 &ett_m3ap_ResetAcknowledge,
2520 &ett_m3ap_MBMS_Service_associatedLogicalM3_ConnectionListResAck,
2521 &ett_m3ap_PrivateMessage,
2522 &ett_m3ap_M3SetupRequest,
2523 &ett_m3ap_MBMSServiceAreaListItem,
2524 &ett_m3ap_M3SetupResponse,
2525 &ett_m3ap_M3SetupFailure,
2526 &ett_m3ap_MCEConfigurationUpdate,
2527 &ett_m3ap_MCEConfigurationUpdateAcknowledge,
2528 &ett_m3ap_MCEConfigurationUpdateFailure,
2529 &ett_m3ap_M3AP_PDU,
2530 &ett_m3ap_InitiatingMessage,
2531 &ett_m3ap_SuccessfulOutcome,
2532 &ett_m3ap_UnsuccessfulOutcome,
2534 /*--- End of included file: packet-m3ap-ettarr.c ---*/
2535 #line 162 "../../asn1/m3ap/packet-m3ap-template.c"
2539 /* Register protocol */
2540 proto_m3ap = proto_register_protocol(PNAME, PSNAME, PFNAME);
2541 /* Register fields and subtrees */
2542 proto_register_field_array(proto_m3ap, hf, array_length(hf));
2543 proto_register_subtree_array(ett, array_length(ett));
2545 /* Register dissector tables */
2546 m3ap_ies_dissector_table = register_dissector_table("m3ap.ies", "M3AP-PROTOCOL-IES", FT_UINT32, BASE_DEC);
2547 m3ap_extension_dissector_table = register_dissector_table("m3ap.extension", "M3AP-PROTOCOL-EXTENSION", FT_UINT32, BASE_DEC);
2548 m3ap_proc_imsg_dissector_table = register_dissector_table("m3ap.proc.imsg", "M3AP-ELEMENTARY-PROCEDURE InitiatingMessage", FT_UINT32, BASE_DEC);
2549 m3ap_proc_sout_dissector_table = register_dissector_table("m3ap.proc.sout", "M3AP-ELEMENTARY-PROCEDURE SuccessfulOutcome", FT_UINT32, BASE_DEC);
2550 m3ap_proc_uout_dissector_table = register_dissector_table("m3ap.proc.uout", "M3AP-ELEMENTARY-PROCEDURE UnsuccessfulOutcome", FT_UINT32, BASE_DEC);
2554 /*--- proto_reg_handoff_m3ap ---------------------------------------*/
2555 void
2556 proto_reg_handoff_m3ap(void)
2558 static gboolean inited = FALSE;
2559 static guint SctpPort;
2561 if( !inited ) {
2562 m3ap_handle = create_dissector_handle(dissect_m3ap, proto_m3ap);
2563 dissector_add_uint("sctp.ppi", PROTO_3GPP_M3AP_PROTOCOL_ID, m3ap_handle);
2564 inited = TRUE;
2566 /*--- Included file: packet-m3ap-dis-tab.c ---*/
2567 #line 1 "../../asn1/m3ap/packet-m3ap-dis-tab.c"
2568 dissector_add_uint("m3ap.ies", id_MME_MBMS_M3AP_ID, new_create_dissector_handle(dissect_MME_MBMS_M3AP_ID_PDU, proto_m3ap));
2569 dissector_add_uint("m3ap.ies", id_MCE_MBMS_M3AP_ID, new_create_dissector_handle(dissect_MCE_MBMS_M3AP_ID_PDU, proto_m3ap));
2570 dissector_add_uint("m3ap.ies", id_TMGI, new_create_dissector_handle(dissect_TMGI_PDU, proto_m3ap));
2571 dissector_add_uint("m3ap.ies", id_MBMS_Session_ID, new_create_dissector_handle(dissect_MBMS_Session_ID_PDU, proto_m3ap));
2572 dissector_add_uint("m3ap.ies", id_MBMS_E_RAB_QoS_Parameters, new_create_dissector_handle(dissect_MBMS_E_RAB_QoS_Parameters_PDU, proto_m3ap));
2573 dissector_add_uint("m3ap.ies", id_MBMS_Session_Duration, new_create_dissector_handle(dissect_MBMS_Session_Duration_PDU, proto_m3ap));
2574 dissector_add_uint("m3ap.ies", id_MBMS_Service_Area, new_create_dissector_handle(dissect_MBMS_Service_Area_PDU, proto_m3ap));
2575 dissector_add_uint("m3ap.ies", id_TNL_Information, new_create_dissector_handle(dissect_TNL_Information_PDU, proto_m3ap));
2576 dissector_add_uint("m3ap.ies", id_CriticalityDiagnostics, new_create_dissector_handle(dissect_CriticalityDiagnostics_PDU, proto_m3ap));
2577 dissector_add_uint("m3ap.ies", id_Cause, new_create_dissector_handle(dissect_Cause_PDU, proto_m3ap));
2578 dissector_add_uint("m3ap.ies", id_TimeToWait, new_create_dissector_handle(dissect_TimeToWait_PDU, proto_m3ap));
2579 dissector_add_uint("m3ap.ies", id_ResetType, new_create_dissector_handle(dissect_ResetType_PDU, proto_m3ap));
2580 dissector_add_uint("m3ap.ies", id_MBMS_Service_associatedLogicalM3_ConnectionItem, new_create_dissector_handle(dissect_MBMS_Service_associatedLogicalM3_ConnectionItem_PDU, proto_m3ap));
2581 dissector_add_uint("m3ap.ies", id_MBMS_Service_associatedLogicalM3_ConnectionListResAck, new_create_dissector_handle(dissect_MBMS_Service_associatedLogicalM3_ConnectionListResAck_PDU, proto_m3ap));
2582 dissector_add_uint("m3ap.ies", id_MinimumTimeToMBMSDataTransfer, new_create_dissector_handle(dissect_MinimumTimeToMBMSDataTransfer_PDU, proto_m3ap));
2583 dissector_add_uint("m3ap.ies", id_AllocationAndRetentionPriority, new_create_dissector_handle(dissect_AllocationAndRetentionPriority_PDU, proto_m3ap));
2584 dissector_add_uint("m3ap.ies", id_Global_MCE_ID, new_create_dissector_handle(dissect_Global_MCE_ID_PDU, proto_m3ap));
2585 dissector_add_uint("m3ap.ies", id_MCEname, new_create_dissector_handle(dissect_MCEname_PDU, proto_m3ap));
2586 dissector_add_uint("m3ap.ies", id_MBMSServiceAreaList, new_create_dissector_handle(dissect_MBMSServiceAreaListItem_PDU, proto_m3ap));
2587 dissector_add_uint("m3ap.ies", id_Time_ofMBMS_DataTransfer, new_create_dissector_handle(dissect_Absolute_Time_ofMBMS_Data_PDU, proto_m3ap));
2588 dissector_add_uint("m3ap.ies", id_Time_ofMBMS_DataStop, new_create_dissector_handle(dissect_Absolute_Time_ofMBMS_Data_PDU, proto_m3ap));
2589 dissector_add_uint("m3ap.proc.imsg", id_mBMSsessionStart, new_create_dissector_handle(dissect_MBMSSessionStartRequest_PDU, proto_m3ap));
2590 dissector_add_uint("m3ap.proc.sout", id_mBMSsessionStart, new_create_dissector_handle(dissect_MBMSSessionStartResponse_PDU, proto_m3ap));
2591 dissector_add_uint("m3ap.proc.uout", id_mBMSsessionStart, new_create_dissector_handle(dissect_MBMSSessionStartFailure_PDU, proto_m3ap));
2592 dissector_add_uint("m3ap.proc.imsg", id_mBMSsessionStop, new_create_dissector_handle(dissect_MBMSSessionStopRequest_PDU, proto_m3ap));
2593 dissector_add_uint("m3ap.proc.sout", id_mBMSsessionStop, new_create_dissector_handle(dissect_MBMSSessionStopResponse_PDU, proto_m3ap));
2594 dissector_add_uint("m3ap.proc.imsg", id_mBMSsessionUpdate, new_create_dissector_handle(dissect_MBMSSessionUpdateRequest_PDU, proto_m3ap));
2595 dissector_add_uint("m3ap.proc.sout", id_mBMSsessionUpdate, new_create_dissector_handle(dissect_MBMSSessionUpdateResponse_PDU, proto_m3ap));
2596 dissector_add_uint("m3ap.proc.uout", id_mBMSsessionUpdate, new_create_dissector_handle(dissect_MBMSSessionUpdateFailure_PDU, proto_m3ap));
2597 dissector_add_uint("m3ap.proc.imsg", id_errorIndication, new_create_dissector_handle(dissect_ErrorIndication_PDU, proto_m3ap));
2598 dissector_add_uint("m3ap.proc.imsg", id_Reset, new_create_dissector_handle(dissect_Reset_PDU, proto_m3ap));
2599 dissector_add_uint("m3ap.proc.sout", id_Reset, new_create_dissector_handle(dissect_ResetAcknowledge_PDU, proto_m3ap));
2600 dissector_add_uint("m3ap.proc.imsg", id_privateMessage, new_create_dissector_handle(dissect_PrivateMessage_PDU, proto_m3ap));
2601 dissector_add_uint("m3ap.proc.imsg", id_mCEConfigurationUpdate, new_create_dissector_handle(dissect_MCEConfigurationUpdate_PDU, proto_m3ap));
2602 dissector_add_uint("m3ap.proc.sout", id_mCEConfigurationUpdate, new_create_dissector_handle(dissect_MCEConfigurationUpdateAcknowledge_PDU, proto_m3ap));
2603 dissector_add_uint("m3ap.proc.uout", id_mCEConfigurationUpdate, new_create_dissector_handle(dissect_MCEConfigurationUpdateFailure_PDU, proto_m3ap));
2604 dissector_add_uint("m3ap.proc.imsg", id_m3Setup, new_create_dissector_handle(dissect_M3SetupRequest_PDU, proto_m3ap));
2605 dissector_add_uint("m3ap.proc.sout", id_m3Setup, new_create_dissector_handle(dissect_M3SetupResponse_PDU, proto_m3ap));
2606 dissector_add_uint("m3ap.proc.uout", id_m3Setup, new_create_dissector_handle(dissect_M3SetupFailure_PDU, proto_m3ap));
2609 /*--- End of included file: packet-m3ap-dis-tab.c ---*/
2610 #line 192 "../../asn1/m3ap/packet-m3ap-template.c"
2611 dissector_add_uint("m3ap.extension", 17, new_create_dissector_handle(dissect_AllocationAndRetentionPriority_PDU, proto_m3ap));
2613 else {
2614 if (SctpPort != 0) {
2615 dissector_delete_uint("sctp.port", SctpPort, m3ap_handle);
2619 SctpPort = global_m3ap_port;
2620 if (SctpPort != 0) {
2621 dissector_add_uint("sctp.port", SctpPort, m3ap_handle);