#include <epan/conversation.h> and/or #include <epan/emem.h> not req'd ...
[obnox/wireshark/wip.git] / epan / dissectors / packet-x2ap.c
1 /* Do not modify this file.                                                   */
2 /* It is created automatically by the ASN.1 to Wireshark dissector compiler   */
3 /* packet-x2ap.c                                                              */
4 /* ../../tools/asn2wrs.py -p x2ap -c x2ap.cnf -s packet-x2ap-template X2AP-CommonDataTypes.asn X2AP-Constants.asn X2AP-Containers.asn X2AP-IEs.asn X2AP-PDU-Contents.asn X2AP-PDU-Descriptions.asn */
5
6 /* Input file: packet-x2ap-template.c */
7
8 #line 1 "packet-x2ap-template.c"
9 /* packet-x2ap.c
10  * Routines for dissecting Evolved Universal Terrestrial Radio Access Network (EUTRAN);
11  * X2 Application Protocol (X2AP);
12  * 3GPP TS 36.423 packet dissection
13  * Copyright 2007-2008, Anders Broman <anders.broman@ericsson.com>
14  *
15  * $Id$
16  *
17  * Wireshark - Network traffic analyzer
18  * By Gerald Combs <gerald@wireshark.org>
19  * Copyright 1998 Gerald Combs
20  *
21  * This program is free software; you can redistribute it and/or
22  * modify it under the terms of the GNU General Public License
23  * as published by the Free Software Foundation; either version 2
24  * of the License, or (at your option) any later version.
25  *
26  * This program is distributed in the hope that it will be useful,
27  * but WITHOUT ANY WARRANTY; without even the implied warranty of
28  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
29  * GNU General Public License for more details.
30  *
31  * You should have received a copy of the GNU General Public License
32  * along with this program; if not, write to the Free Software
33  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
34  *
35  * Ref: 
36  * 3GPP TS 36.423 V8.0.0 (2007-12)
37  */
38
39 #ifdef HAVE_CONFIG_H
40 # include "config.h"
41 #endif
42
43 #include <glib.h>
44 #include <epan/packet.h>
45
46 #include <stdio.h>
47 #include <string.h>
48
49 #include <epan/asn1.h>
50
51 #include "packet-per.h"
52
53 #ifdef _MSC_VER
54 /* disable: "warning C4146: unary minus operator applied to unsigned type, result still unsigned" */
55 #pragma warning(disable:4146)
56 #endif
57
58 #define PNAME  "EUTRAN X2 Application Protocol (X2AP)"
59 #define PSNAME "X2AP"
60 #define PFNAME "x2ap"
61
62 #define SCCP_SSN_X2AP 143
63
64
65 /*--- Included file: packet-x2ap-val.h ---*/
66 #line 1 "packet-x2ap-val.h"
67 #define maxPrivateIEs                  65535
68 #define maxProtocolExtensions          65535
69 #define maxProtocolIEs                 65535
70 #define maxEARFCN                      32767
71 #define maxInterfaces                  16
72 #define maxCellineNB                   256
73 #define maxnoofCells                   16
74 #define maxnoofBearers                 256
75 #define maxNrOfErrors                  256
76 #define maxnoofPDCP_SN                 16
77 #define maxnoofEPLMNs                  15
78 #define maxnoofEPLMNsPlusOne           16
79 #define maxnoofForbLACs                4096
80 #define maxnoofForbTACs                4096
81 #define maxnoofBPLMNs                  6
82 #define maxnoofPRBs                    110
83 #define maxPools                       16
84
85 /* enumerated values for ProcedureCode */
86 #define X2AP_ID_HANDOVERPREPARATION   0
87 #define X2AP_ID_HANDOVERCANCEL   1
88 #define X2AP_ID_LOADINDICATION   2
89 #define X2AP_ID_ERRORINDICATION   3
90 #define X2AP_ID_SNSTATUSTRANSFER   4
91 #define X2AP_ID_UECONTEXTRELEASE   5
92 #define X2AP_ID_X2SETUP   6
93 #define X2AP_ID_RESET   7
94 #define X2AP_ID_ENBCONFIGURATIONUPDATE   8
95 #define X2AP_ID_RESOURCESTATUSUPDATEINITIATION   9
96 #define X2AP_ID_RESOURCESTATUSREPORTING  10
97
98 typedef enum _ProtocolIE_ID_enum {
99   id_Bearers_Admitted_Item =   0,
100   id_Bearers_Admitted_List =   1,
101   id_Bearers_NotAdmitted_Item =   2,
102   id_Bearers_NotAdmitted_List =   3,
103   id_Bearers_ToBeSetup_Item =   4,
104   id_Cause     =   5,
105   id_CellInformation =   6,
106   id_CellInformation_Item =   7,
107   id_InterfacesToTrace_Item =   8,
108   id_New_eNB_UE_X2AP_ID =   9,
109   id_Old_eNB_UE_X2AP_ID =  10,
110   id_TargetCell_ID =  11,
111   id_TargeteNBtoSource_eNBTransparentContainer =  12,
112   id_TraceActivation =  13,
113   id_UE_ContextInformation =  14,
114   id_UE_HistoryInformation =  15,
115   id_UE_X2AP_ID =  16,
116   id_CriticalityDiagnostics =  17,
117   id_Bearers_SubjectToStatusTransfer_List =  18,
118   id_Bearers_SubjectToStatusTransfer_Item =  19,
119   id_ServedCells =  20,
120   id_GlobalENB_ID =  21,
121   id_TimeToWait =  22,
122   id_GUMMEI_ID =  23,
123   id_GUGroupIDList =  24,
124   id_ServedCellsToAdd =  25,
125   id_ServedCellsToModify =  26,
126   id_ServedCellsToDelete =  27,
127   id_Registration_Request =  28,
128   id_CellToReport =  29,
129   id_ReportingPeriodicity =  30,
130   id_CellToReport_Item =  31,
131   id_CellMeasurementResult =  32,
132   id_CellMeasurementResult_Item =  33,
133   id_GUGroupIDListToAdd =  34,
134   id_GUGroupIDListToDelete =  35
135 } ProtocolIE_ID_enum;
136
137 /*--- End of included file: packet-x2ap-val.h ---*/
138 #line 57 "packet-x2ap-template.c"
139
140 /* Initialize the protocol and registered fields */
141 static int proto_x2ap = -1;
142
143
144 /*--- Included file: packet-x2ap-hf.c ---*/
145 #line 1 "packet-x2ap-hf.c"
146 static int hf_x2ap_Cause_PDU = -1;                /* Cause */
147 static int hf_x2ap_CriticalityDiagnostics_PDU = -1;  /* CriticalityDiagnostics */
148 static int hf_x2ap_ECGI_PDU = -1;                 /* ECGI */
149 static int hf_x2ap_GlobalENB_ID_PDU = -1;         /* GlobalENB_ID */
150 static int hf_x2ap_GUGroupIDList_PDU = -1;        /* GUGroupIDList */
151 static int hf_x2ap_GUMMEI_PDU = -1;               /* GUMMEI */
152 static int hf_x2ap_InterfacesToTrace_Item_PDU = -1;  /* InterfacesToTrace_Item */
153 static int hf_x2ap_Registration_Request_PDU = -1;  /* Registration_Request */
154 static int hf_x2ap_ServedCells_PDU = -1;          /* ServedCells */
155 static int hf_x2ap_TargeteNBtoSource_eNBTransparentContainer_PDU = -1;  /* TargeteNBtoSource_eNBTransparentContainer */
156 static int hf_x2ap_TimeToWait_PDU = -1;           /* TimeToWait */
157 static int hf_x2ap_TraceActivation_PDU = -1;      /* TraceActivation */
158 static int hf_x2ap_UE_HistoryInformation_PDU = -1;  /* UE_HistoryInformation */
159 static int hf_x2ap_UE_X2AP_ID_PDU = -1;           /* UE_X2AP_ID */
160 static int hf_x2ap_HandoverRequest_PDU = -1;      /* HandoverRequest */
161 static int hf_x2ap_UE_ContextInformation_PDU = -1;  /* UE_ContextInformation */
162 static int hf_x2ap_Bearers_ToBeSetup_Item_PDU = -1;  /* Bearers_ToBeSetup_Item */
163 static int hf_x2ap_HandoverRequestAcknowledge_PDU = -1;  /* HandoverRequestAcknowledge */
164 static int hf_x2ap_Bearers_Admitted_List_PDU = -1;  /* Bearers_Admitted_List */
165 static int hf_x2ap_Bearers_Admitted_Item_PDU = -1;  /* Bearers_Admitted_Item */
166 static int hf_x2ap_Bearers_NotAdmitted_List_PDU = -1;  /* Bearers_NotAdmitted_List */
167 static int hf_x2ap_Bearers_NotAdmitted_Item_PDU = -1;  /* Bearers_NotAdmitted_Item */
168 static int hf_x2ap_HandoverPreparationFailure_PDU = -1;  /* HandoverPreparationFailure */
169 static int hf_x2ap_SNStatusTransfer_PDU = -1;     /* SNStatusTransfer */
170 static int hf_x2ap_Bearers_SubjectToStatusTransfer_List_PDU = -1;  /* Bearers_SubjectToStatusTransfer_List */
171 static int hf_x2ap_Bearers_SubjectToStatusTransfer_Item_PDU = -1;  /* Bearers_SubjectToStatusTransfer_Item */
172 static int hf_x2ap_UEContextRelease_PDU = -1;     /* UEContextRelease */
173 static int hf_x2ap_HandoverCancel_PDU = -1;       /* HandoverCancel */
174 static int hf_x2ap_ErrorIndication_PDU = -1;      /* ErrorIndication */
175 static int hf_x2ap_ResetRequest_PDU = -1;         /* ResetRequest */
176 static int hf_x2ap_ResetResponse_PDU = -1;        /* ResetResponse */
177 static int hf_x2ap_X2SetupRequest_PDU = -1;       /* X2SetupRequest */
178 static int hf_x2ap_X2SetupResponse_PDU = -1;      /* X2SetupResponse */
179 static int hf_x2ap_X2SetupFailure_PDU = -1;       /* X2SetupFailure */
180 static int hf_x2ap_LoadInformation_PDU = -1;      /* LoadInformation */
181 static int hf_x2ap_CellInformation_List_PDU = -1;  /* CellInformation_List */
182 static int hf_x2ap_CellInformation_Item_PDU = -1;  /* CellInformation_Item */
183 static int hf_x2ap_ENBConfigurationUpdate_PDU = -1;  /* ENBConfigurationUpdate */
184 static int hf_x2ap_ServedCellsToModify_PDU = -1;  /* ServedCellsToModify */
185 static int hf_x2ap_Old_ECGIs_PDU = -1;            /* Old_ECGIs */
186 static int hf_x2ap_ENBConfigurationUpdateAcknowledge_PDU = -1;  /* ENBConfigurationUpdateAcknowledge */
187 static int hf_x2ap_ENBConfigurationUpdateFailure_PDU = -1;  /* ENBConfigurationUpdateFailure */
188 static int hf_x2ap_ResourceStatusRequest_PDU = -1;  /* ResourceStatusRequest */
189 static int hf_x2ap_CellToReport_List_PDU = -1;    /* CellToReport_List */
190 static int hf_x2ap_CellToReport_Item_PDU = -1;    /* CellToReport_Item */
191 static int hf_x2ap_ReportingPeriod_PDU = -1;      /* ReportingPeriod */
192 static int hf_x2ap_ResourceStatusResponse_PDU = -1;  /* ResourceStatusResponse */
193 static int hf_x2ap_ResourceStatusFailure_PDU = -1;  /* ResourceStatusFailure */
194 static int hf_x2ap_ResourceStatusUpdate_PDU = -1;  /* ResourceStatusUpdate */
195 static int hf_x2ap_CellMeasurementResult_List_PDU = -1;  /* CellMeasurementResult_List */
196 static int hf_x2ap_CellMeasurementResult_Item_PDU = -1;  /* CellMeasurementResult_Item */
197 static int hf_x2ap_X2AP_PDU_PDU = -1;             /* X2AP_PDU */
198 static int hf_x2ap_ProtocolIE_Container_item = -1;  /* ProtocolIE_Field */
199 static int hf_x2ap_id = -1;                       /* ProtocolIE_ID */
200 static int hf_x2ap_criticality = -1;              /* Criticality */
201 static int hf_x2ap_protocolIE_Field_value = -1;   /* ProtocolIE_Field_value */
202 static int hf_x2ap_ProtocolExtensionContainer_item = -1;  /* ProtocolExtensionField */
203 static int hf_x2ap_extension_id = -1;             /* ProtocolIE_ID */
204 static int hf_x2ap_extensionValue = -1;           /* T_extensionValue */
205 static int hf_x2ap_BroadcastPLMNs_Item_item = -1;  /* PLMN_Identity */
206 static int hf_x2ap_radioNetwork = -1;             /* CauseRadioNetwork */
207 static int hf_x2ap_transport = -1;                /* CauseTransport */
208 static int hf_x2ap_protocol = -1;                 /* CauseProtocol */
209 static int hf_x2ap_misc = -1;                     /* CauseMisc */
210 static int hf_x2ap_pDCP_SN = -1;                  /* PDCP_SN */
211 static int hf_x2ap_hFN = -1;                      /* HFN */
212 static int hf_x2ap_iE_Extensions = -1;            /* ProtocolExtensionContainer */
213 static int hf_x2ap_procedureCode = -1;            /* ProcedureCode */
214 static int hf_x2ap_triggeringMessage = -1;        /* TriggeringMessage */
215 static int hf_x2ap_procedureCriticality = -1;     /* Criticality */
216 static int hf_x2ap_iEsCriticalityDiagnostics = -1;  /* CriticalityDiagnostics_IE_List */
217 static int hf_x2ap_CriticalityDiagnostics_IE_List_item = -1;  /* CriticalityDiagnostics_IE_List_item */
218 static int hf_x2ap_iECriticality = -1;            /* Criticality */
219 static int hf_x2ap_iE_ID = -1;                    /* ProtocolIE_ID */
220 static int hf_x2ap_typeOfError = -1;              /* TypeOfError */
221 static int hf_x2ap_pLMN_Identity = -1;            /* PLMN_Identity */
222 static int hf_x2ap_eUTRANcellIdentifier = -1;     /* EUTRANCellIdentifier */
223 static int hf_x2ap_macro_eNB_ID = -1;             /* BIT_STRING_SIZE_20 */
224 static int hf_x2ap_home_eNB_ID = -1;              /* BIT_STRING_SIZE_28 */
225 static int hf_x2ap_EPLMNs_item = -1;              /* PLMN_Identity */
226 static int hf_x2ap_ForbiddenTAs_item = -1;        /* ForbiddenTAs_Item */
227 static int hf_x2ap_forbiddenTACs = -1;            /* ForbiddenTACs */
228 static int hf_x2ap_ForbiddenTACs_item = -1;       /* TAC */
229 static int hf_x2ap_ForbiddenLAs_item = -1;        /* ForbiddenLAs_Item */
230 static int hf_x2ap_forbiddenLACs = -1;            /* ForbiddenLACs */
231 static int hf_x2ap_ForbiddenLACs_item = -1;       /* LAC */
232 static int hf_x2ap_sAE_Bearer_MaximumBitrateDL = -1;  /* BitRate */
233 static int hf_x2ap_sAE_Bearer_MaximumBitrateUL = -1;  /* BitRate */
234 static int hf_x2ap_sAE_Bearer_GuaranteedBitrateDL = -1;  /* BitRate */
235 static int hf_x2ap_sAE_Bearer_GuaranteedBitrateUL = -1;  /* BitRate */
236 static int hf_x2ap_eNB_ID = -1;                   /* ENB_ID */
237 static int hf_x2ap_transportLayerAddress = -1;    /* TransportLayerAddress */
238 static int hf_x2ap_gTP_TEID = -1;                 /* GTP_TEI */
239 static int hf_x2ap_GUGroupIDList_item = -1;       /* GU_Group_ID */
240 static int hf_x2ap_mME_Group_ID = -1;             /* MME_Group_ID */
241 static int hf_x2ap_gU_Group_ID = -1;              /* GU_Group_ID */
242 static int hf_x2ap_mMME_Code = -1;                /* MME_Code */
243 static int hf_x2ap_servingPLMN = -1;              /* PLMN_Identity */
244 static int hf_x2ap_equivalentPLMNs = -1;          /* EPLMNs */
245 static int hf_x2ap_forbiddenTAs = -1;             /* ForbiddenTAs */
246 static int hf_x2ap_forbiddenLAs = -1;             /* ForbiddenLAs */
247 static int hf_x2ap_forbiddenInterRATs = -1;       /* ForbiddenInterRATs */
248 static int hf_x2ap_InterfacesToTrace_item = -1;   /* ProtocolIE_Single_Container */
249 static int hf_x2ap_traceInterface = -1;           /* TraceInterface */
250 static int hf_x2ap_traceDepth = -1;               /* TraceDepth */
251 static int hf_x2ap_global_Cell_ID = -1;           /* ECGI */
252 static int hf_x2ap_cellType = -1;                 /* CellType */
253 static int hf_x2ap_time_UE_StayedInCell = -1;     /* Time_UE_StayedInCell */
254 static int hf_x2ap_eventType = -1;                /* EventType */
255 static int hf_x2ap_reportArea = -1;               /* ReportArea */
256 static int hf_x2ap_rNTP_PerPRB = -1;              /* BIT_STRING_SIZE_6_110_ */
257 static int hf_x2ap_rNTP_Threshold = -1;           /* RNTP_Threshold */
258 static int hf_x2ap_numberOfCellSpecificAntennaPorts = -1;  /* T_numberOfCellSpecificAntennaPorts */
259 static int hf_x2ap_p_B = -1;                      /* INTEGER_0_3_ */
260 static int hf_x2ap_pDCCH_InterferenceImpact = -1;  /* INTEGER_0_4_ */
261 static int hf_x2ap_qCI = -1;                      /* QCI */
262 static int hf_x2ap_allocationAndRetentionPriority = -1;  /* AllocationAndRetentionPriority */
263 static int hf_x2ap_gbrQosInformation = -1;        /* GBR_QosInformation */
264 static int hf_x2ap_ServedCells_item = -1;         /* ServedCell_Information */
265 static int hf_x2ap_phyCID = -1;                   /* PhyCID */
266 static int hf_x2ap_cellId = -1;                   /* ECGI */
267 static int hf_x2ap_tAC = -1;                      /* TAC */
268 static int hf_x2ap_broadcastPLMNs = -1;           /* BroadcastPLMNs_Item */
269 static int hf_x2ap_uL_EARFCN = -1;                /* EARFCN */
270 static int hf_x2ap_dL_EARFCN = -1;                /* EARFCN */
271 static int hf_x2ap_cell_Transmission_Bandwidth = -1;  /* Cell_Transmission_Bandwidth */
272 static int hf_x2ap_traceReference = -1;           /* TraceReference */
273 static int hf_x2ap_interfacesToTrace = -1;        /* InterfacesToTrace */
274 static int hf_x2ap_UE_HistoryInformation_item = -1;  /* LastVisitedCell_Item */
275 static int hf_x2ap_uEaggregateMaximumBitRateDownlink = -1;  /* BitRate */
276 static int hf_x2ap_uEaggregateMaximumBitRateUplink = -1;  /* BitRate */
277 static int hf_x2ap_UL_InterferenceOverloadIndication_item = -1;  /* UL_InterferenceOverloadIndication_Item */
278 static int hf_x2ap_UL_HighInterferenceIndicationInfo_item = -1;  /* UL_HighInterferenceIndicationInfo_Item */
279 static int hf_x2ap_ul_interferenceindication = -1;  /* UL_HighInterferenceIndication */
280 static int hf_x2ap_target_Cell_ID = -1;           /* ECGI */
281 static int hf_x2ap_protocolIEs = -1;              /* ProtocolIE_Container */
282 static int hf_x2ap_mME_UE_S1AP_ID = -1;           /* UE_S1AP_ID */
283 static int hf_x2ap_uEaggregateMaximumBitRate = -1;  /* UEAggregateMaximumBitRate */
284 static int hf_x2ap_subscriberProfileIDforRFP = -1;  /* SubscriberProfileIDforRFP */
285 static int hf_x2ap_bearers_ToBeSetup_List = -1;   /* Bearers_ToBeSetup_List */
286 static int hf_x2ap_rRC_Context = -1;              /* RRC_Context */
287 static int hf_x2ap_handoverRestrictionList = -1;  /* HandoverRestrictionList */
288 static int hf_x2ap_locationReportingInformation = -1;  /* LocationReportingInformation */
289 static int hf_x2ap_Bearers_ToBeSetup_List_item = -1;  /* ProtocolIE_Single_Container */
290 static int hf_x2ap_sAE_Bearer_ID = -1;            /* Bearer_ID */
291 static int hf_x2ap_sAE_BearerLevel_QoS_Parameters = -1;  /* SAE_BearerLevel_QoS_Parameters */
292 static int hf_x2ap_dL_Forwarding = -1;            /* DL_Forwarding */
293 static int hf_x2ap_uL_GTPtunnelEndpoint = -1;     /* GTPtunnelEndpoint */
294 static int hf_x2ap_Bearers_Admitted_List_item = -1;  /* ProtocolIE_Single_Container */
295 static int hf_x2ap_bearer_ID = -1;                /* Bearer_ID */
296 static int hf_x2ap_uL_GTP_TunnelEndpoint = -1;    /* GTPtunnelEndpoint */
297 static int hf_x2ap_dL_GTP_TunnelEndpoint = -1;    /* GTPtunnelEndpoint */
298 static int hf_x2ap_Bearers_NotAdmitted_List_item = -1;  /* ProtocolIE_Single_Container */
299 static int hf_x2ap_cause = -1;                    /* Cause */
300 static int hf_x2ap_Bearers_SubjectToStatusTransfer_List_item = -1;  /* ProtocolIE_Single_Container */
301 static int hf_x2ap_receiveStatusofULPDCPSDUs = -1;  /* ReceiveStatusofULPDCPSDUs */
302 static int hf_x2ap_uL_COUNTvalue = -1;            /* COUNTvalue */
303 static int hf_x2ap_dL_COUNTvalue = -1;            /* COUNTvalue */
304 static int hf_x2ap_CellInformation_List_item = -1;  /* ProtocolIE_Single_Container */
305 static int hf_x2ap_cell_ID = -1;                  /* ECGI */
306 static int hf_x2ap_ul_InterferenceOverloadIndication = -1;  /* UL_InterferenceOverloadIndication */
307 static int hf_x2ap_ul_HighInterferenceIndicationInfo = -1;  /* UL_HighInterferenceIndicationInfo */
308 static int hf_x2ap_relativeNarrowbandTxPower = -1;  /* RelativeNarrowbandTxPower */
309 static int hf_x2ap_ServedCellsToModify_item = -1;  /* ServedCellsToModify_Item */
310 static int hf_x2ap_old_ecgi = -1;                 /* ECGI */
311 static int hf_x2ap_served_cells = -1;             /* ServedCell_Information */
312 static int hf_x2ap_Old_ECGIs_item = -1;           /* ECGI */
313 static int hf_x2ap_CellToReport_List_item = -1;   /* ProtocolIE_Single_Container */
314 static int hf_x2ap_CellMeasurementResult_List_item = -1;  /* ProtocolIE_Single_Container */
315 static int hf_x2ap_resoureStatus = -1;            /* ResourceStatus */
316 static int hf_x2ap_initiatingMessage = -1;        /* InitiatingMessage */
317 static int hf_x2ap_successfulOutcome = -1;        /* SuccessfulOutcome */
318 static int hf_x2ap_unsuccessfulOutcome = -1;      /* UnsuccessfulOutcome */
319 static int hf_x2ap_initiatingMessage_value = -1;  /* InitiatingMessage_value */
320 static int hf_x2ap_successfulOutcome_value = -1;  /* SuccessfulOutcome_value */
321 static int hf_x2ap_value = -1;                    /* UnsuccessfulOutcome_value */
322
323 /*--- End of included file: packet-x2ap-hf.c ---*/
324 #line 62 "packet-x2ap-template.c"
325
326 /* Initialize the subtree pointers */
327 static int ett_x2ap = -1;
328
329
330 /*--- Included file: packet-x2ap-ett.c ---*/
331 #line 1 "packet-x2ap-ett.c"
332 static gint ett_x2ap_ProtocolIE_Container = -1;
333 static gint ett_x2ap_ProtocolIE_Field = -1;
334 static gint ett_x2ap_ProtocolExtensionContainer = -1;
335 static gint ett_x2ap_ProtocolExtensionField = -1;
336 static gint ett_x2ap_BroadcastPLMNs_Item = -1;
337 static gint ett_x2ap_Cause = -1;
338 static gint ett_x2ap_COUNTvalue = -1;
339 static gint ett_x2ap_CriticalityDiagnostics = -1;
340 static gint ett_x2ap_CriticalityDiagnostics_IE_List = -1;
341 static gint ett_x2ap_CriticalityDiagnostics_IE_List_item = -1;
342 static gint ett_x2ap_ECGI = -1;
343 static gint ett_x2ap_ENB_ID = -1;
344 static gint ett_x2ap_EPLMNs = -1;
345 static gint ett_x2ap_ForbiddenTAs = -1;
346 static gint ett_x2ap_ForbiddenTAs_Item = -1;
347 static gint ett_x2ap_ForbiddenTACs = -1;
348 static gint ett_x2ap_ForbiddenLAs = -1;
349 static gint ett_x2ap_ForbiddenLAs_Item = -1;
350 static gint ett_x2ap_ForbiddenLACs = -1;
351 static gint ett_x2ap_GBR_QosInformation = -1;
352 static gint ett_x2ap_GlobalENB_ID = -1;
353 static gint ett_x2ap_GTPtunnelEndpoint = -1;
354 static gint ett_x2ap_GUGroupIDList = -1;
355 static gint ett_x2ap_GU_Group_ID = -1;
356 static gint ett_x2ap_GUMMEI = -1;
357 static gint ett_x2ap_HandoverRestrictionList = -1;
358 static gint ett_x2ap_InterfacesToTrace = -1;
359 static gint ett_x2ap_InterfacesToTrace_Item = -1;
360 static gint ett_x2ap_LastVisitedCell_Item = -1;
361 static gint ett_x2ap_LocationReportingInformation = -1;
362 static gint ett_x2ap_RelativeNarrowbandTxPower = -1;
363 static gint ett_x2ap_SAE_BearerLevel_QoS_Parameters = -1;
364 static gint ett_x2ap_ServedCells = -1;
365 static gint ett_x2ap_ServedCell_Information = -1;
366 static gint ett_x2ap_TraceActivation = -1;
367 static gint ett_x2ap_UE_HistoryInformation = -1;
368 static gint ett_x2ap_UEAggregateMaximumBitRate = -1;
369 static gint ett_x2ap_UL_InterferenceOverloadIndication = -1;
370 static gint ett_x2ap_UL_HighInterferenceIndicationInfo = -1;
371 static gint ett_x2ap_UL_HighInterferenceIndicationInfo_Item = -1;
372 static gint ett_x2ap_HandoverRequest = -1;
373 static gint ett_x2ap_UE_ContextInformation = -1;
374 static gint ett_x2ap_Bearers_ToBeSetup_List = -1;
375 static gint ett_x2ap_Bearers_ToBeSetup_Item = -1;
376 static gint ett_x2ap_HandoverRequestAcknowledge = -1;
377 static gint ett_x2ap_Bearers_Admitted_List = -1;
378 static gint ett_x2ap_Bearers_Admitted_Item = -1;
379 static gint ett_x2ap_Bearers_NotAdmitted_List = -1;
380 static gint ett_x2ap_Bearers_NotAdmitted_Item = -1;
381 static gint ett_x2ap_HandoverPreparationFailure = -1;
382 static gint ett_x2ap_SNStatusTransfer = -1;
383 static gint ett_x2ap_Bearers_SubjectToStatusTransfer_List = -1;
384 static gint ett_x2ap_Bearers_SubjectToStatusTransfer_Item = -1;
385 static gint ett_x2ap_UEContextRelease = -1;
386 static gint ett_x2ap_HandoverCancel = -1;
387 static gint ett_x2ap_ErrorIndication = -1;
388 static gint ett_x2ap_ResetRequest = -1;
389 static gint ett_x2ap_ResetResponse = -1;
390 static gint ett_x2ap_X2SetupRequest = -1;
391 static gint ett_x2ap_X2SetupResponse = -1;
392 static gint ett_x2ap_X2SetupFailure = -1;
393 static gint ett_x2ap_LoadInformation = -1;
394 static gint ett_x2ap_CellInformation_List = -1;
395 static gint ett_x2ap_CellInformation_Item = -1;
396 static gint ett_x2ap_ENBConfigurationUpdate = -1;
397 static gint ett_x2ap_ServedCellsToModify = -1;
398 static gint ett_x2ap_ServedCellsToModify_Item = -1;
399 static gint ett_x2ap_Old_ECGIs = -1;
400 static gint ett_x2ap_ENBConfigurationUpdateAcknowledge = -1;
401 static gint ett_x2ap_ENBConfigurationUpdateFailure = -1;
402 static gint ett_x2ap_ResourceStatusRequest = -1;
403 static gint ett_x2ap_CellToReport_List = -1;
404 static gint ett_x2ap_CellToReport_Item = -1;
405 static gint ett_x2ap_ResourceStatusResponse = -1;
406 static gint ett_x2ap_ResourceStatusFailure = -1;
407 static gint ett_x2ap_ResourceStatusUpdate = -1;
408 static gint ett_x2ap_CellMeasurementResult_List = -1;
409 static gint ett_x2ap_CellMeasurementResult_Item = -1;
410 static gint ett_x2ap_X2AP_PDU = -1;
411 static gint ett_x2ap_InitiatingMessage = -1;
412 static gint ett_x2ap_SuccessfulOutcome = -1;
413 static gint ett_x2ap_UnsuccessfulOutcome = -1;
414
415 /*--- End of included file: packet-x2ap-ett.c ---*/
416 #line 67 "packet-x2ap-template.c"
417
418 /* Global variables */
419 static guint32 ProcedureCode;
420 static guint32 ProtocolIE_ID;
421 static const gchar *ProcedureID;
422
423 /* Dissector tables */
424 static dissector_table_t x2ap_ies_dissector_table;
425 static dissector_table_t x2ap_extension_dissector_table;
426 static dissector_table_t x2ap_proc_imsg_dissector_table;
427 static dissector_table_t x2ap_proc_sout_dissector_table;
428 static dissector_table_t x2ap_proc_uout_dissector_table;
429
430 static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
431 static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
432 static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
433 static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
434 static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
435
436
437 /*--- Included file: packet-x2ap-fn.c ---*/
438 #line 1 "packet-x2ap-fn.c"
439
440 static const value_string x2ap_Criticality_vals[] = {
441   {   0, "reject" },
442   {   1, "ignore" },
443   {   2, "notify" },
444   { 0, NULL }
445 };
446
447
448 static int
449 dissect_x2ap_Criticality(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
450   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
451                                      3, NULL, FALSE, 0, NULL);
452
453   return offset;
454 }
455
456
457 static const value_string x2ap_ProcedureCode_vals[] = {
458   { X2AP_ID_HANDOVERPREPARATION, "id-handoverPreparation" },
459   { X2AP_ID_HANDOVERCANCEL, "id-handoverCancel" },
460   { X2AP_ID_LOADINDICATION, "id-loadIndication" },
461   { X2AP_ID_ERRORINDICATION, "id-errorIndication" },
462   { X2AP_ID_SNSTATUSTRANSFER, "id-snStatusTransfer" },
463   { X2AP_ID_UECONTEXTRELEASE, "id-uEContextRelease" },
464   { X2AP_ID_X2SETUP, "id-x2Setup" },
465   { X2AP_ID_RESET, "id-reset" },
466   { X2AP_ID_ENBCONFIGURATIONUPDATE, "id-eNBConfigurationUpdate" },
467   { X2AP_ID_RESOURCESTATUSUPDATEINITIATION, "id-resourceStatusUpdateInitiation" },
468   { X2AP_ID_RESOURCESTATUSREPORTING, "id-resourceStatusReporting" },
469   { 0, NULL }
470 };
471
472
473 static int
474 dissect_x2ap_ProcedureCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
475 #line 69 "x2ap.cnf"
476   ProcedureCode = 0xFFFF;
477
478   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
479                                                             0U, 255U, &ProcedureCode, FALSE);
480
481 #line 62 "x2ap.cnf"
482         if (check_col(actx->pinfo->cinfo, COL_INFO))
483        col_add_fstr(actx->pinfo->cinfo, COL_INFO, "%s ",
484                    val_to_str(ProcedureCode, x2ap_ProcedureCode_vals,
485                               "unknown message"));
486
487   return offset;
488 }
489
490
491 static const value_string x2ap_ProtocolIE_ID_vals[] = {
492   { id_Bearers_Admitted_Item, "id-Bearers-Admitted-Item" },
493   { id_Bearers_Admitted_List, "id-Bearers-Admitted-List" },
494   { id_Bearers_NotAdmitted_Item, "id-Bearers-NotAdmitted-Item" },
495   { id_Bearers_NotAdmitted_List, "id-Bearers-NotAdmitted-List" },
496   { id_Bearers_ToBeSetup_Item, "id-Bearers-ToBeSetup-Item" },
497   { id_Cause, "id-Cause" },
498   { id_CellInformation, "id-CellInformation" },
499   { id_CellInformation_Item, "id-CellInformation-Item" },
500   { id_InterfacesToTrace_Item, "id-InterfacesToTrace-Item" },
501   { id_New_eNB_UE_X2AP_ID, "id-New-eNB-UE-X2AP-ID" },
502   { id_Old_eNB_UE_X2AP_ID, "id-Old-eNB-UE-X2AP-ID" },
503   { id_TargetCell_ID, "id-TargetCell-ID" },
504   { id_TargeteNBtoSource_eNBTransparentContainer, "id-TargeteNBtoSource-eNBTransparentContainer" },
505   { id_TraceActivation, "id-TraceActivation" },
506   { id_UE_ContextInformation, "id-UE-ContextInformation" },
507   { id_UE_HistoryInformation, "id-UE-HistoryInformation" },
508   { id_UE_X2AP_ID, "id-UE-X2AP-ID" },
509   { id_CriticalityDiagnostics, "id-CriticalityDiagnostics" },
510   { id_Bearers_SubjectToStatusTransfer_List, "id-Bearers-SubjectToStatusTransfer-List" },
511   { id_Bearers_SubjectToStatusTransfer_Item, "id-Bearers-SubjectToStatusTransfer-Item" },
512   { id_ServedCells, "id-ServedCells" },
513   { id_GlobalENB_ID, "id-GlobalENB-ID" },
514   { id_TimeToWait, "id-TimeToWait" },
515   { id_GUMMEI_ID, "id-GUMMEI-ID" },
516   { id_GUGroupIDList, "id-GUGroupIDList" },
517   { id_ServedCellsToAdd, "id-ServedCellsToAdd" },
518   { id_ServedCellsToModify, "id-ServedCellsToModify" },
519   { id_ServedCellsToDelete, "id-ServedCellsToDelete" },
520   { id_Registration_Request, "id-Registration-Request" },
521   { id_CellToReport, "id-CellToReport" },
522   { id_ReportingPeriodicity, "id-ReportingPeriodicity" },
523   { id_CellToReport_Item, "id-CellToReport-Item" },
524   { id_CellMeasurementResult, "id-CellMeasurementResult" },
525   { id_CellMeasurementResult_Item, "id-CellMeasurementResult-Item" },
526   { id_GUGroupIDListToAdd, "id-GUGroupIDListToAdd" },
527   { id_GUGroupIDListToDelete, "id-GUGroupIDListToDelete" },
528   { 0, NULL }
529 };
530
531
532 static int
533 dissect_x2ap_ProtocolIE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
534   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
535                                                             0U, maxProtocolIEs, &ProtocolIE_ID, FALSE);
536
537   return offset;
538 }
539
540
541 static const value_string x2ap_TriggeringMessage_vals[] = {
542   {   0, "initiating-message" },
543   {   1, "successful-outcome" },
544   {   2, "unsuccessful-outcome" },
545   { 0, NULL }
546 };
547
548
549 static int
550 dissect_x2ap_TriggeringMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
551   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
552                                      3, NULL, FALSE, 0, NULL);
553
554   return offset;
555 }
556
557
558
559 static int
560 dissect_x2ap_ProtocolIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
561   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue);
562
563   return offset;
564 }
565
566
567 static const per_sequence_t ProtocolIE_Field_sequence[] = {
568   { &hf_x2ap_id             , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_ID },
569   { &hf_x2ap_criticality    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_Criticality },
570   { &hf_x2ap_protocolIE_Field_value, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Field_value },
571   { NULL, 0, 0, NULL }
572 };
573
574 static int
575 dissect_x2ap_ProtocolIE_Field(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
576   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
577                                    ett_x2ap_ProtocolIE_Field, ProtocolIE_Field_sequence);
578
579   return offset;
580 }
581
582
583 static const per_sequence_t ProtocolIE_Container_sequence_of[1] = {
584   { &hf_x2ap_ProtocolIE_Container_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Field },
585 };
586
587 static int
588 dissect_x2ap_ProtocolIE_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
589   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
590                                                   ett_x2ap_ProtocolIE_Container, ProtocolIE_Container_sequence_of,
591                                                   0, maxProtocolIEs);
592
593   return offset;
594 }
595
596
597
598 static int
599 dissect_x2ap_ProtocolIE_Single_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
600   offset = dissect_x2ap_ProtocolIE_Field(tvb, offset, actx, tree, hf_index);
601
602   return offset;
603 }
604
605
606
607 static int
608 dissect_x2ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
609   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue);
610
611   return offset;
612 }
613
614
615 static const per_sequence_t ProtocolExtensionField_sequence[] = {
616   { &hf_x2ap_extension_id   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_ID },
617   { &hf_x2ap_criticality    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_Criticality },
618   { &hf_x2ap_extensionValue , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_T_extensionValue },
619   { NULL, 0, 0, NULL }
620 };
621
622 static int
623 dissect_x2ap_ProtocolExtensionField(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
624   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
625                                    ett_x2ap_ProtocolExtensionField, ProtocolExtensionField_sequence);
626
627   return offset;
628 }
629
630
631 static const per_sequence_t ProtocolExtensionContainer_sequence_of[1] = {
632   { &hf_x2ap_ProtocolExtensionContainer_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolExtensionField },
633 };
634
635 static int
636 dissect_x2ap_ProtocolExtensionContainer(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_sequence_of(tvb, offset, actx, tree, hf_index,
638                                                   ett_x2ap_ProtocolExtensionContainer, ProtocolExtensionContainer_sequence_of,
639                                                   1, maxProtocolExtensions);
640
641   return offset;
642 }
643
644
645
646 static int
647 dissect_x2ap_AllocationAndRetentionPriority(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
648   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
649                                                             0U, 15U, NULL, FALSE);
650
651   return offset;
652 }
653
654
655
656 static int
657 dissect_x2ap_Bearer_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
658   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
659                                                             0U, 15U, NULL, TRUE);
660
661   return offset;
662 }
663
664
665
666 static int
667 dissect_x2ap_BitRate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
668   offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index,
669                                                             0U, 10000000000U, NULL, FALSE);
670
671   return offset;
672 }
673
674
675
676 static int
677 dissect_x2ap_PLMN_Identity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
678   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
679                                        3, 3, FALSE, NULL);
680
681   return offset;
682 }
683
684
685 static const per_sequence_t BroadcastPLMNs_Item_sequence_of[1] = {
686   { &hf_x2ap_BroadcastPLMNs_Item_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_PLMN_Identity },
687 };
688
689 static int
690 dissect_x2ap_BroadcastPLMNs_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
691   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
692                                                   ett_x2ap_BroadcastPLMNs_Item, BroadcastPLMNs_Item_sequence_of,
693                                                   1, maxnoofBPLMNs);
694
695   return offset;
696 }
697
698
699 static const value_string x2ap_CauseRadioNetwork_vals[] = {
700   {   0, "handover-desirable-for-radio-reasons" },
701   {   1, "time-critical-handover" },
702   {   2, "resource-optimisation-handover" },
703   {   3, "reduce-load-in-serving-cell" },
704   {   4, "partial-handover" },
705   {   5, "unknown-new-eNB-UE-X2AP-ID" },
706   {   6, "unknown-old-eNB-UE-X2AP-ID" },
707   {   7, "unknown-pair-of-UE-X2AP-ID" },
708   {   8, "ho-target-not-allowed" },
709   {   9, "tx2relocoverall-expiry" },
710   {  10, "trelocprep-expiry" },
711   {  11, "cell-not-available" },
712   {  12, "no-radio-resources-available-in-target-cell" },
713   {  13, "invalid-MME-GroupID" },
714   {  14, "unknown-MME-Code" },
715   {  15, "unspecified" },
716   { 0, NULL }
717 };
718
719
720 static int
721 dissect_x2ap_CauseRadioNetwork(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
722   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
723                                      16, NULL, TRUE, 0, NULL);
724
725   return offset;
726 }
727
728
729 static const value_string x2ap_CauseTransport_vals[] = {
730   {   0, "transport-resource-unavailable" },
731   {   1, "unspecified" },
732   { 0, NULL }
733 };
734
735
736 static int
737 dissect_x2ap_CauseTransport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
738   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
739                                      2, NULL, TRUE, 0, NULL);
740
741   return offset;
742 }
743
744
745 static const value_string x2ap_CauseProtocol_vals[] = {
746   {   0, "transfer-syntax-error" },
747   {   1, "abstract-syntax-error-reject" },
748   {   2, "abstract-syntax-error-ignore-and-notify" },
749   {   3, "message-not-compatible-with-receiver-state" },
750   {   4, "semantic-error" },
751   {   5, "unspecified" },
752   {   6, "abstract-syntax-error-falsely-constructed-message" },
753   { 0, NULL }
754 };
755
756
757 static int
758 dissect_x2ap_CauseProtocol(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
759   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
760                                      7, NULL, TRUE, 0, NULL);
761
762   return offset;
763 }
764
765
766 static const value_string x2ap_CauseMisc_vals[] = {
767   {   0, "control-processing-overload" },
768   {   1, "hardware-failure" },
769   {   2, "om-intervention" },
770   {   3, "not-enough-user-plane-processing-resources" },
771   {   4, "unspecified" },
772   { 0, NULL }
773 };
774
775
776 static int
777 dissect_x2ap_CauseMisc(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
778   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
779                                      5, NULL, TRUE, 0, NULL);
780
781   return offset;
782 }
783
784
785 static const value_string x2ap_Cause_vals[] = {
786   {   0, "radioNetwork" },
787   {   1, "transport" },
788   {   2, "protocol" },
789   {   3, "misc" },
790   { 0, NULL }
791 };
792
793 static const per_choice_t Cause_choice[] = {
794   {   0, &hf_x2ap_radioNetwork   , ASN1_EXTENSION_ROOT    , dissect_x2ap_CauseRadioNetwork },
795   {   1, &hf_x2ap_transport      , ASN1_EXTENSION_ROOT    , dissect_x2ap_CauseTransport },
796   {   2, &hf_x2ap_protocol       , ASN1_EXTENSION_ROOT    , dissect_x2ap_CauseProtocol },
797   {   3, &hf_x2ap_misc           , ASN1_EXTENSION_ROOT    , dissect_x2ap_CauseMisc },
798   { 0, NULL, 0, NULL }
799 };
800
801 static int
802 dissect_x2ap_Cause(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
803   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
804                                  ett_x2ap_Cause, Cause_choice,
805                                  NULL);
806
807   return offset;
808 }
809
810
811 static const value_string x2ap_CellType_vals[] = {
812   {   0, "macro" },
813   {   1, "micro" },
814   {   2, "pico" },
815   {   3, "femto" },
816   { 0, NULL }
817 };
818
819
820 static int
821 dissect_x2ap_CellType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
822   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
823                                      4, NULL, TRUE, 0, NULL);
824
825   return offset;
826 }
827
828
829 static const value_string x2ap_Cell_Transmission_Bandwidth_vals[] = {
830   {   0, "bw6" },
831   {   1, "bw15" },
832   {   2, "bw25" },
833   {   3, "bw50" },
834   {   4, "bw75" },
835   {   5, "bw100" },
836   { 0, NULL }
837 };
838
839
840 static int
841 dissect_x2ap_Cell_Transmission_Bandwidth(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
842   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
843                                      6, NULL, TRUE, 0, NULL);
844
845   return offset;
846 }
847
848
849
850 static int
851 dissect_x2ap_PDCP_SN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
852   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
853                                                             0U, 4095U, NULL, FALSE);
854
855   return offset;
856 }
857
858
859
860 static int
861 dissect_x2ap_HFN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
862   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
863                                                             0U, 1048575U, NULL, FALSE);
864
865   return offset;
866 }
867
868
869 static const per_sequence_t COUNTvalue_sequence[] = {
870   { &hf_x2ap_pDCP_SN        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_PDCP_SN },
871   { &hf_x2ap_hFN            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_HFN },
872   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
873   { NULL, 0, 0, NULL }
874 };
875
876 static int
877 dissect_x2ap_COUNTvalue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
878   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
879                                    ett_x2ap_COUNTvalue, COUNTvalue_sequence);
880
881   return offset;
882 }
883
884
885 static const value_string x2ap_TypeOfError_vals[] = {
886   {   0, "not-understood" },
887   {   1, "missing" },
888   { 0, NULL }
889 };
890
891
892 static int
893 dissect_x2ap_TypeOfError(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
894   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
895                                      2, NULL, TRUE, 0, NULL);
896
897   return offset;
898 }
899
900
901 static const per_sequence_t CriticalityDiagnostics_IE_List_item_sequence[] = {
902   { &hf_x2ap_iECriticality  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_Criticality },
903   { &hf_x2ap_iE_ID          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_ID },
904   { &hf_x2ap_typeOfError    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_TypeOfError },
905   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
906   { NULL, 0, 0, NULL }
907 };
908
909 static int
910 dissect_x2ap_CriticalityDiagnostics_IE_List_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
911   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
912                                    ett_x2ap_CriticalityDiagnostics_IE_List_item, CriticalityDiagnostics_IE_List_item_sequence);
913
914   return offset;
915 }
916
917
918 static const per_sequence_t CriticalityDiagnostics_IE_List_sequence_of[1] = {
919   { &hf_x2ap_CriticalityDiagnostics_IE_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_CriticalityDiagnostics_IE_List_item },
920 };
921
922 static int
923 dissect_x2ap_CriticalityDiagnostics_IE_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
924   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
925                                                   ett_x2ap_CriticalityDiagnostics_IE_List, CriticalityDiagnostics_IE_List_sequence_of,
926                                                   1, maxNrOfErrors);
927
928   return offset;
929 }
930
931
932 static const per_sequence_t CriticalityDiagnostics_sequence[] = {
933   { &hf_x2ap_procedureCode  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProcedureCode },
934   { &hf_x2ap_triggeringMessage, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_TriggeringMessage },
935   { &hf_x2ap_procedureCriticality, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_Criticality },
936   { &hf_x2ap_iEsCriticalityDiagnostics, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_CriticalityDiagnostics_IE_List },
937   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
938   { NULL, 0, 0, NULL }
939 };
940
941 static int
942 dissect_x2ap_CriticalityDiagnostics(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
943   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
944                                    ett_x2ap_CriticalityDiagnostics, CriticalityDiagnostics_sequence);
945
946   return offset;
947 }
948
949
950 static const value_string x2ap_DL_Forwarding_vals[] = {
951   {   0, "dL-forwardingProposed" },
952   { 0, NULL }
953 };
954
955
956 static int
957 dissect_x2ap_DL_Forwarding(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
958   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
959                                      1, NULL, TRUE, 0, NULL);
960
961   return offset;
962 }
963
964
965
966 static int
967 dissect_x2ap_EARFCN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
968   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
969                                                             0U, maxEARFCN, NULL, FALSE);
970
971   return offset;
972 }
973
974
975
976 static int
977 dissect_x2ap_EUTRANCellIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
978   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
979                                      28, 28, FALSE, NULL);
980
981   return offset;
982 }
983
984
985 static const per_sequence_t ECGI_sequence[] = {
986   { &hf_x2ap_pLMN_Identity  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_PLMN_Identity },
987   { &hf_x2ap_eUTRANcellIdentifier, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_EUTRANCellIdentifier },
988   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
989   { NULL, 0, 0, NULL }
990 };
991
992 static int
993 dissect_x2ap_ECGI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
994   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
995                                    ett_x2ap_ECGI, ECGI_sequence);
996
997   return offset;
998 }
999
1000
1001
1002 static int
1003 dissect_x2ap_BIT_STRING_SIZE_20(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1004   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1005                                      20, 20, FALSE, NULL);
1006
1007   return offset;
1008 }
1009
1010
1011
1012 static int
1013 dissect_x2ap_BIT_STRING_SIZE_28(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1014   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1015                                      28, 28, FALSE, NULL);
1016
1017   return offset;
1018 }
1019
1020
1021 static const value_string x2ap_ENB_ID_vals[] = {
1022   {   0, "macro-eNB-ID" },
1023   {   1, "home-eNB-ID" },
1024   { 0, NULL }
1025 };
1026
1027 static const per_choice_t ENB_ID_choice[] = {
1028   {   0, &hf_x2ap_macro_eNB_ID   , ASN1_EXTENSION_ROOT    , dissect_x2ap_BIT_STRING_SIZE_20 },
1029   {   1, &hf_x2ap_home_eNB_ID    , ASN1_EXTENSION_ROOT    , dissect_x2ap_BIT_STRING_SIZE_28 },
1030   { 0, NULL, 0, NULL }
1031 };
1032
1033 static int
1034 dissect_x2ap_ENB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1035   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1036                                  ett_x2ap_ENB_ID, ENB_ID_choice,
1037                                  NULL);
1038
1039   return offset;
1040 }
1041
1042
1043 static const per_sequence_t EPLMNs_sequence_of[1] = {
1044   { &hf_x2ap_EPLMNs_item    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_PLMN_Identity },
1045 };
1046
1047 static int
1048 dissect_x2ap_EPLMNs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1049   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1050                                                   ett_x2ap_EPLMNs, EPLMNs_sequence_of,
1051                                                   1, maxnoofEPLMNs);
1052
1053   return offset;
1054 }
1055
1056
1057 static const value_string x2ap_EventType_vals[] = {
1058   {   0, "change-of-serving-cell" },
1059   { 0, NULL }
1060 };
1061
1062
1063 static int
1064 dissect_x2ap_EventType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1065   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1066                                      1, NULL, TRUE, 0, NULL);
1067
1068   return offset;
1069 }
1070
1071
1072 static const value_string x2ap_ForbiddenInterRATs_vals[] = {
1073   {   0, "all" },
1074   {   1, "geran" },
1075   {   2, "utran" },
1076   { 0, NULL }
1077 };
1078
1079
1080 static int
1081 dissect_x2ap_ForbiddenInterRATs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1082   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1083                                      3, NULL, TRUE, 0, NULL);
1084
1085   return offset;
1086 }
1087
1088
1089
1090 static int
1091 dissect_x2ap_TAC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1092   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1093                                        NO_BOUND, NO_BOUND, FALSE, NULL);
1094
1095   return offset;
1096 }
1097
1098
1099 static const per_sequence_t ForbiddenTACs_sequence_of[1] = {
1100   { &hf_x2ap_ForbiddenTACs_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_TAC },
1101 };
1102
1103 static int
1104 dissect_x2ap_ForbiddenTACs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1105   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1106                                                   ett_x2ap_ForbiddenTACs, ForbiddenTACs_sequence_of,
1107                                                   1, maxnoofForbTACs);
1108
1109   return offset;
1110 }
1111
1112
1113 static const per_sequence_t ForbiddenTAs_Item_sequence[] = {
1114   { &hf_x2ap_pLMN_Identity  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_PLMN_Identity },
1115   { &hf_x2ap_forbiddenTACs  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ForbiddenTACs },
1116   { NULL, 0, 0, NULL }
1117 };
1118
1119 static int
1120 dissect_x2ap_ForbiddenTAs_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1121   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1122                                    ett_x2ap_ForbiddenTAs_Item, ForbiddenTAs_Item_sequence);
1123
1124   return offset;
1125 }
1126
1127
1128 static const per_sequence_t ForbiddenTAs_sequence_of[1] = {
1129   { &hf_x2ap_ForbiddenTAs_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ForbiddenTAs_Item },
1130 };
1131
1132 static int
1133 dissect_x2ap_ForbiddenTAs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1134   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1135                                                   ett_x2ap_ForbiddenTAs, ForbiddenTAs_sequence_of,
1136                                                   1, maxnoofEPLMNsPlusOne);
1137
1138   return offset;
1139 }
1140
1141
1142
1143 static int
1144 dissect_x2ap_LAC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1145   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1146                                        2, 2, FALSE, NULL);
1147
1148   return offset;
1149 }
1150
1151
1152 static const per_sequence_t ForbiddenLACs_sequence_of[1] = {
1153   { &hf_x2ap_ForbiddenLACs_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_LAC },
1154 };
1155
1156 static int
1157 dissect_x2ap_ForbiddenLACs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1158   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1159                                                   ett_x2ap_ForbiddenLACs, ForbiddenLACs_sequence_of,
1160                                                   1, maxnoofForbLACs);
1161
1162   return offset;
1163 }
1164
1165
1166 static const per_sequence_t ForbiddenLAs_Item_sequence[] = {
1167   { &hf_x2ap_pLMN_Identity  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_PLMN_Identity },
1168   { &hf_x2ap_forbiddenLACs  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ForbiddenLACs },
1169   { NULL, 0, 0, NULL }
1170 };
1171
1172 static int
1173 dissect_x2ap_ForbiddenLAs_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1174   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1175                                    ett_x2ap_ForbiddenLAs_Item, ForbiddenLAs_Item_sequence);
1176
1177   return offset;
1178 }
1179
1180
1181 static const per_sequence_t ForbiddenLAs_sequence_of[1] = {
1182   { &hf_x2ap_ForbiddenLAs_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ForbiddenLAs_Item },
1183 };
1184
1185 static int
1186 dissect_x2ap_ForbiddenLAs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1187   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1188                                                   ett_x2ap_ForbiddenLAs, ForbiddenLAs_sequence_of,
1189                                                   1, maxnoofEPLMNsPlusOne);
1190
1191   return offset;
1192 }
1193
1194
1195 static const per_sequence_t GBR_QosInformation_sequence[] = {
1196   { &hf_x2ap_sAE_Bearer_MaximumBitrateDL, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_BitRate },
1197   { &hf_x2ap_sAE_Bearer_MaximumBitrateUL, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_BitRate },
1198   { &hf_x2ap_sAE_Bearer_GuaranteedBitrateDL, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_BitRate },
1199   { &hf_x2ap_sAE_Bearer_GuaranteedBitrateUL, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_BitRate },
1200   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1201   { NULL, 0, 0, NULL }
1202 };
1203
1204 static int
1205 dissect_x2ap_GBR_QosInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1206   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1207                                    ett_x2ap_GBR_QosInformation, GBR_QosInformation_sequence);
1208
1209   return offset;
1210 }
1211
1212
1213 static const per_sequence_t GlobalENB_ID_sequence[] = {
1214   { &hf_x2ap_pLMN_Identity  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_PLMN_Identity },
1215   { &hf_x2ap_eNB_ID         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ENB_ID },
1216   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1217   { NULL, 0, 0, NULL }
1218 };
1219
1220 static int
1221 dissect_x2ap_GlobalENB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1222   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1223                                    ett_x2ap_GlobalENB_ID, GlobalENB_ID_sequence);
1224
1225   return offset;
1226 }
1227
1228
1229
1230 static int
1231 dissect_x2ap_TransportLayerAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1232   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1233                                      1, 160, TRUE, NULL);
1234
1235   return offset;
1236 }
1237
1238
1239
1240 static int
1241 dissect_x2ap_GTP_TEI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1242   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1243                                        4, 4, FALSE, NULL);
1244
1245   return offset;
1246 }
1247
1248
1249 static const per_sequence_t GTPtunnelEndpoint_sequence[] = {
1250   { &hf_x2ap_transportLayerAddress, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_TransportLayerAddress },
1251   { &hf_x2ap_gTP_TEID       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_GTP_TEI },
1252   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1253   { NULL, 0, 0, NULL }
1254 };
1255
1256 static int
1257 dissect_x2ap_GTPtunnelEndpoint(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1258   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1259                                    ett_x2ap_GTPtunnelEndpoint, GTPtunnelEndpoint_sequence);
1260
1261   return offset;
1262 }
1263
1264
1265
1266 static int
1267 dissect_x2ap_MME_Group_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1268   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1269                                        2, 2, FALSE, NULL);
1270
1271   return offset;
1272 }
1273
1274
1275 static const per_sequence_t GU_Group_ID_sequence[] = {
1276   { &hf_x2ap_pLMN_Identity  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_PLMN_Identity },
1277   { &hf_x2ap_mME_Group_ID   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_MME_Group_ID },
1278   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1279   { NULL, 0, 0, NULL }
1280 };
1281
1282 static int
1283 dissect_x2ap_GU_Group_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1284   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1285                                    ett_x2ap_GU_Group_ID, GU_Group_ID_sequence);
1286
1287   return offset;
1288 }
1289
1290
1291 static const per_sequence_t GUGroupIDList_sequence_of[1] = {
1292   { &hf_x2ap_GUGroupIDList_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_GU_Group_ID },
1293 };
1294
1295 static int
1296 dissect_x2ap_GUGroupIDList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1297   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1298                                                   ett_x2ap_GUGroupIDList, GUGroupIDList_sequence_of,
1299                                                   1, maxPools);
1300
1301   return offset;
1302 }
1303
1304
1305
1306 static int
1307 dissect_x2ap_MME_Code(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1308   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1309                                        1, 1, FALSE, NULL);
1310
1311   return offset;
1312 }
1313
1314
1315 static const per_sequence_t GUMMEI_sequence[] = {
1316   { &hf_x2ap_gU_Group_ID    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_GU_Group_ID },
1317   { &hf_x2ap_mMME_Code      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_MME_Code },
1318   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1319   { NULL, 0, 0, NULL }
1320 };
1321
1322 static int
1323 dissect_x2ap_GUMMEI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1324   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1325                                    ett_x2ap_GUMMEI, GUMMEI_sequence);
1326
1327   return offset;
1328 }
1329
1330
1331 static const per_sequence_t HandoverRestrictionList_sequence[] = {
1332   { &hf_x2ap_servingPLMN    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_PLMN_Identity },
1333   { &hf_x2ap_equivalentPLMNs, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_EPLMNs },
1334   { &hf_x2ap_forbiddenTAs   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ForbiddenTAs },
1335   { &hf_x2ap_forbiddenLAs   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ForbiddenLAs },
1336   { &hf_x2ap_forbiddenInterRATs, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ForbiddenInterRATs },
1337   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1338   { NULL, 0, 0, NULL }
1339 };
1340
1341 static int
1342 dissect_x2ap_HandoverRestrictionList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1343   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1344                                    ett_x2ap_HandoverRestrictionList, HandoverRestrictionList_sequence);
1345
1346   return offset;
1347 }
1348
1349
1350 static const per_sequence_t InterfacesToTrace_sequence_of[1] = {
1351   { &hf_x2ap_InterfacesToTrace_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Single_Container },
1352 };
1353
1354 static int
1355 dissect_x2ap_InterfacesToTrace(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1356   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1357                                                   ett_x2ap_InterfacesToTrace, InterfacesToTrace_sequence_of,
1358                                                   1, maxInterfaces);
1359
1360   return offset;
1361 }
1362
1363
1364 static const value_string x2ap_TraceInterface_vals[] = {
1365   {   0, "s1" },
1366   {   1, "x2" },
1367   {   2, "uu" },
1368   { 0, NULL }
1369 };
1370
1371
1372 static int
1373 dissect_x2ap_TraceInterface(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1374   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1375                                      3, NULL, TRUE, 0, NULL);
1376
1377   return offset;
1378 }
1379
1380
1381 static const value_string x2ap_TraceDepth_vals[] = {
1382   {   0, "minimum" },
1383   {   1, "medium" },
1384   {   2, "maximum" },
1385   {   3, "vendorMinimum" },
1386   {   4, "vendorMedium" },
1387   {   5, "vendorMaximum" },
1388   { 0, NULL }
1389 };
1390
1391
1392 static int
1393 dissect_x2ap_TraceDepth(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1394   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1395                                      6, NULL, TRUE, 0, NULL);
1396
1397   return offset;
1398 }
1399
1400
1401 static const per_sequence_t InterfacesToTrace_Item_sequence[] = {
1402   { &hf_x2ap_traceInterface , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_TraceInterface },
1403   { &hf_x2ap_traceDepth     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_TraceDepth },
1404   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1405   { NULL, 0, 0, NULL }
1406 };
1407
1408 static int
1409 dissect_x2ap_InterfacesToTrace_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1410   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1411                                    ett_x2ap_InterfacesToTrace_Item, InterfacesToTrace_Item_sequence);
1412
1413   return offset;
1414 }
1415
1416
1417
1418 static int
1419 dissect_x2ap_Time_UE_StayedInCell(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1420   offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, NULL);
1421
1422   return offset;
1423 }
1424
1425
1426 static const per_sequence_t LastVisitedCell_Item_sequence[] = {
1427   { &hf_x2ap_global_Cell_ID , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ECGI },
1428   { &hf_x2ap_cellType       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_CellType },
1429   { &hf_x2ap_time_UE_StayedInCell, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_Time_UE_StayedInCell },
1430   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1431   { NULL, 0, 0, NULL }
1432 };
1433
1434 static int
1435 dissect_x2ap_LastVisitedCell_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1436   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1437                                    ett_x2ap_LastVisitedCell_Item, LastVisitedCell_Item_sequence);
1438
1439   return offset;
1440 }
1441
1442
1443 static const value_string x2ap_ReportArea_vals[] = {
1444   {   0, "ecgi" },
1445   { 0, NULL }
1446 };
1447
1448
1449 static int
1450 dissect_x2ap_ReportArea(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1451   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1452                                      1, NULL, TRUE, 0, NULL);
1453
1454   return offset;
1455 }
1456
1457
1458 static const per_sequence_t LocationReportingInformation_sequence[] = {
1459   { &hf_x2ap_eventType      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_EventType },
1460   { &hf_x2ap_reportArea     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ReportArea },
1461   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1462   { NULL, 0, 0, NULL }
1463 };
1464
1465 static int
1466 dissect_x2ap_LocationReportingInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1467   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1468                                    ett_x2ap_LocationReportingInformation, LocationReportingInformation_sequence);
1469
1470   return offset;
1471 }
1472
1473
1474
1475 static int
1476 dissect_x2ap_PhyCID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1477   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1478                                                             1U, 504U, NULL, TRUE);
1479
1480   return offset;
1481 }
1482
1483
1484
1485 static int
1486 dissect_x2ap_QCI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1487   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1488                                                             1U, 256U, NULL, FALSE);
1489
1490   return offset;
1491 }
1492
1493
1494
1495 static int
1496 dissect_x2ap_ReceiveStatusofULPDCPSDUs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1497   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1498                                      4096, 4096, FALSE, NULL);
1499
1500   return offset;
1501 }
1502
1503
1504 static const value_string x2ap_Registration_Request_vals[] = {
1505   {   0, "start" },
1506   {   1, "stop" },
1507   { 0, NULL }
1508 };
1509
1510
1511 static int
1512 dissect_x2ap_Registration_Request(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1513   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1514                                      2, NULL, TRUE, 0, NULL);
1515
1516   return offset;
1517 }
1518
1519
1520
1521 static int
1522 dissect_x2ap_BIT_STRING_SIZE_6_110_(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1523   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1524                                      6, 110, TRUE, NULL);
1525
1526   return offset;
1527 }
1528
1529
1530 static const value_string x2ap_RNTP_Threshold_vals[] = {
1531   {   0, "minusInfinity" },
1532   {   1, "minusEleven" },
1533   {   2, "minusTen" },
1534   {   3, "minusNine" },
1535   {   4, "minusEight" },
1536   {   5, "minusSeven" },
1537   {   6, "minusSix" },
1538   {   7, "minusFive" },
1539   {   8, "minusFour" },
1540   {   9, "minusThree" },
1541   {  10, "minusTwo" },
1542   {  11, "minusOne" },
1543   {  12, "zero" },
1544   {  13, "one" },
1545   {  14, "two" },
1546   {  15, "three" },
1547   { 0, NULL }
1548 };
1549
1550
1551 static int
1552 dissect_x2ap_RNTP_Threshold(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1553   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1554                                      16, NULL, TRUE, 0, NULL);
1555
1556   return offset;
1557 }
1558
1559
1560 static const value_string x2ap_T_numberOfCellSpecificAntennaPorts_vals[] = {
1561   {   0, "one" },
1562   {   1, "two" },
1563   {   2, "four" },
1564   { 0, NULL }
1565 };
1566
1567
1568 static int
1569 dissect_x2ap_T_numberOfCellSpecificAntennaPorts(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1570   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1571                                      3, NULL, TRUE, 0, NULL);
1572
1573   return offset;
1574 }
1575
1576
1577
1578 static int
1579 dissect_x2ap_INTEGER_0_3_(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1580   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1581                                                             0U, 3U, NULL, TRUE);
1582
1583   return offset;
1584 }
1585
1586
1587
1588 static int
1589 dissect_x2ap_INTEGER_0_4_(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1590   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1591                                                             0U, 4U, NULL, TRUE);
1592
1593   return offset;
1594 }
1595
1596
1597 static const per_sequence_t RelativeNarrowbandTxPower_sequence[] = {
1598   { &hf_x2ap_rNTP_PerPRB    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_BIT_STRING_SIZE_6_110_ },
1599   { &hf_x2ap_rNTP_Threshold , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_RNTP_Threshold },
1600   { &hf_x2ap_numberOfCellSpecificAntennaPorts, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_T_numberOfCellSpecificAntennaPorts },
1601   { &hf_x2ap_p_B            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_INTEGER_0_3_ },
1602   { &hf_x2ap_pDCCH_InterferenceImpact, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_INTEGER_0_4_ },
1603   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1604   { NULL, 0, 0, NULL }
1605 };
1606
1607 static int
1608 dissect_x2ap_RelativeNarrowbandTxPower(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1609   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1610                                    ett_x2ap_RelativeNarrowbandTxPower, RelativeNarrowbandTxPower_sequence);
1611
1612   return offset;
1613 }
1614
1615
1616
1617 static int
1618 dissect_x2ap_RRC_Context(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1619   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1620                                        NO_BOUND, NO_BOUND, FALSE, NULL);
1621
1622   return offset;
1623 }
1624
1625
1626
1627 static int
1628 dissect_x2ap_ResourceStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1629   offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, NULL);
1630
1631   return offset;
1632 }
1633
1634
1635 static const per_sequence_t SAE_BearerLevel_QoS_Parameters_sequence[] = {
1636   { &hf_x2ap_qCI            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_QCI },
1637   { &hf_x2ap_allocationAndRetentionPriority, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_AllocationAndRetentionPriority },
1638   { &hf_x2ap_gbrQosInformation, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_GBR_QosInformation },
1639   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1640   { NULL, 0, 0, NULL }
1641 };
1642
1643 static int
1644 dissect_x2ap_SAE_BearerLevel_QoS_Parameters(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1645   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1646                                    ett_x2ap_SAE_BearerLevel_QoS_Parameters, SAE_BearerLevel_QoS_Parameters_sequence);
1647
1648   return offset;
1649 }
1650
1651
1652 static const per_sequence_t ServedCell_Information_sequence[] = {
1653   { &hf_x2ap_phyCID         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_PhyCID },
1654   { &hf_x2ap_cellId         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ECGI },
1655   { &hf_x2ap_tAC            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_TAC },
1656   { &hf_x2ap_broadcastPLMNs , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_BroadcastPLMNs_Item },
1657   { &hf_x2ap_uL_EARFCN      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_EARFCN },
1658   { &hf_x2ap_dL_EARFCN      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_EARFCN },
1659   { &hf_x2ap_cell_Transmission_Bandwidth, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_Cell_Transmission_Bandwidth },
1660   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1661   { NULL, 0, 0, NULL }
1662 };
1663
1664 static int
1665 dissect_x2ap_ServedCell_Information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1666   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1667                                    ett_x2ap_ServedCell_Information, ServedCell_Information_sequence);
1668
1669   return offset;
1670 }
1671
1672
1673 static const per_sequence_t ServedCells_sequence_of[1] = {
1674   { &hf_x2ap_ServedCells_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ServedCell_Information },
1675 };
1676
1677 static int
1678 dissect_x2ap_ServedCells(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1679   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1680                                                   ett_x2ap_ServedCells, ServedCells_sequence_of,
1681                                                   1, maxCellineNB);
1682
1683   return offset;
1684 }
1685
1686
1687
1688 static int
1689 dissect_x2ap_SubscriberProfileIDforRFP(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1690   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1691                                                             1U, 256U, NULL, FALSE);
1692
1693   return offset;
1694 }
1695
1696
1697
1698 static int
1699 dissect_x2ap_TargeteNBtoSource_eNBTransparentContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1700   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1701                                        NO_BOUND, NO_BOUND, FALSE, NULL);
1702
1703   return offset;
1704 }
1705
1706
1707
1708 static int
1709 dissect_x2ap_TimeToWait(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1710   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1711                                        NO_BOUND, NO_BOUND, FALSE, NULL);
1712
1713   return offset;
1714 }
1715
1716
1717
1718 static int
1719 dissect_x2ap_TraceReference(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1720   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1721                                        8, 8, FALSE, NULL);
1722
1723   return offset;
1724 }
1725
1726
1727 static const per_sequence_t TraceActivation_sequence[] = {
1728   { &hf_x2ap_traceReference , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_TraceReference },
1729   { &hf_x2ap_interfacesToTrace, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_InterfacesToTrace },
1730   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1731   { NULL, 0, 0, NULL }
1732 };
1733
1734 static int
1735 dissect_x2ap_TraceActivation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1736   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1737                                    ett_x2ap_TraceActivation, TraceActivation_sequence);
1738
1739   return offset;
1740 }
1741
1742
1743 static const per_sequence_t UE_HistoryInformation_sequence_of[1] = {
1744   { &hf_x2ap_UE_HistoryInformation_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_LastVisitedCell_Item },
1745 };
1746
1747 static int
1748 dissect_x2ap_UE_HistoryInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1749   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1750                                                   ett_x2ap_UE_HistoryInformation, UE_HistoryInformation_sequence_of,
1751                                                   1, maxnoofCells);
1752
1753   return offset;
1754 }
1755
1756
1757
1758 static int
1759 dissect_x2ap_UE_S1AP_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1760   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1761                                                             0U, 4294967295U, NULL, FALSE);
1762
1763   return offset;
1764 }
1765
1766
1767
1768 static int
1769 dissect_x2ap_UE_X2AP_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1770   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1771                                                             0U, 4095U, NULL, FALSE);
1772
1773   return offset;
1774 }
1775
1776
1777 static const per_sequence_t UEAggregateMaximumBitRate_sequence[] = {
1778   { &hf_x2ap_uEaggregateMaximumBitRateDownlink, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_BitRate },
1779   { &hf_x2ap_uEaggregateMaximumBitRateUplink, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_BitRate },
1780   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1781   { NULL, 0, 0, NULL }
1782 };
1783
1784 static int
1785 dissect_x2ap_UEAggregateMaximumBitRate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1786   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1787                                    ett_x2ap_UEAggregateMaximumBitRate, UEAggregateMaximumBitRate_sequence);
1788
1789   return offset;
1790 }
1791
1792
1793 static const value_string x2ap_UL_InterferenceOverloadIndication_Item_vals[] = {
1794   {   0, "high-interference" },
1795   {   1, "medium-interference" },
1796   {   2, "low-interference" },
1797   { 0, NULL }
1798 };
1799
1800
1801 static int
1802 dissect_x2ap_UL_InterferenceOverloadIndication_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1803   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1804                                      3, NULL, TRUE, 0, NULL);
1805
1806   return offset;
1807 }
1808
1809
1810 static const per_sequence_t UL_InterferenceOverloadIndication_sequence_of[1] = {
1811   { &hf_x2ap_UL_InterferenceOverloadIndication_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_UL_InterferenceOverloadIndication_Item },
1812 };
1813
1814 static int
1815 dissect_x2ap_UL_InterferenceOverloadIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1816   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1817                                                   ett_x2ap_UL_InterferenceOverloadIndication, UL_InterferenceOverloadIndication_sequence_of,
1818                                                   1, maxnoofPRBs);
1819
1820   return offset;
1821 }
1822
1823
1824
1825 static int
1826 dissect_x2ap_UL_HighInterferenceIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1827   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1828                                      1, 110, TRUE, NULL);
1829
1830   return offset;
1831 }
1832
1833
1834 static const per_sequence_t UL_HighInterferenceIndicationInfo_Item_sequence[] = {
1835   { &hf_x2ap_ul_interferenceindication, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_UL_HighInterferenceIndication },
1836   { &hf_x2ap_target_Cell_ID , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ECGI },
1837   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1838   { NULL, 0, 0, NULL }
1839 };
1840
1841 static int
1842 dissect_x2ap_UL_HighInterferenceIndicationInfo_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1843   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1844                                    ett_x2ap_UL_HighInterferenceIndicationInfo_Item, UL_HighInterferenceIndicationInfo_Item_sequence);
1845
1846   return offset;
1847 }
1848
1849
1850 static const per_sequence_t UL_HighInterferenceIndicationInfo_sequence_of[1] = {
1851   { &hf_x2ap_UL_HighInterferenceIndicationInfo_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_UL_HighInterferenceIndicationInfo_Item },
1852 };
1853
1854 static int
1855 dissect_x2ap_UL_HighInterferenceIndicationInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1856   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1857                                                   ett_x2ap_UL_HighInterferenceIndicationInfo, UL_HighInterferenceIndicationInfo_sequence_of,
1858                                                   1, maxCellineNB);
1859
1860   return offset;
1861 }
1862
1863
1864 static const per_sequence_t HandoverRequest_sequence[] = {
1865   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
1866   { NULL, 0, 0, NULL }
1867 };
1868
1869 static int
1870 dissect_x2ap_HandoverRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1871   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1872                                    ett_x2ap_HandoverRequest, HandoverRequest_sequence);
1873
1874   return offset;
1875 }
1876
1877
1878 static const per_sequence_t Bearers_ToBeSetup_List_sequence_of[1] = {
1879   { &hf_x2ap_Bearers_ToBeSetup_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Single_Container },
1880 };
1881
1882 static int
1883 dissect_x2ap_Bearers_ToBeSetup_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1884   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1885                                                   ett_x2ap_Bearers_ToBeSetup_List, Bearers_ToBeSetup_List_sequence_of,
1886                                                   1, maxnoofBearers);
1887
1888   return offset;
1889 }
1890
1891
1892 static const per_sequence_t UE_ContextInformation_sequence[] = {
1893   { &hf_x2ap_mME_UE_S1AP_ID , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_UE_S1AP_ID },
1894   { &hf_x2ap_uEaggregateMaximumBitRate, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_UEAggregateMaximumBitRate },
1895   { &hf_x2ap_subscriberProfileIDforRFP, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_SubscriberProfileIDforRFP },
1896   { &hf_x2ap_bearers_ToBeSetup_List, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_Bearers_ToBeSetup_List },
1897   { &hf_x2ap_rRC_Context    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_RRC_Context },
1898   { &hf_x2ap_handoverRestrictionList, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_HandoverRestrictionList },
1899   { &hf_x2ap_locationReportingInformation, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_LocationReportingInformation },
1900   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1901   { NULL, 0, 0, NULL }
1902 };
1903
1904 static int
1905 dissect_x2ap_UE_ContextInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1906   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1907                                    ett_x2ap_UE_ContextInformation, UE_ContextInformation_sequence);
1908
1909   return offset;
1910 }
1911
1912
1913 static const per_sequence_t Bearers_ToBeSetup_Item_sequence[] = {
1914   { &hf_x2ap_sAE_Bearer_ID  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_Bearer_ID },
1915   { &hf_x2ap_sAE_BearerLevel_QoS_Parameters, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_SAE_BearerLevel_QoS_Parameters },
1916   { &hf_x2ap_dL_Forwarding  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_DL_Forwarding },
1917   { &hf_x2ap_uL_GTPtunnelEndpoint, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_GTPtunnelEndpoint },
1918   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1919   { NULL, 0, 0, NULL }
1920 };
1921
1922 static int
1923 dissect_x2ap_Bearers_ToBeSetup_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1924   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1925                                    ett_x2ap_Bearers_ToBeSetup_Item, Bearers_ToBeSetup_Item_sequence);
1926
1927   return offset;
1928 }
1929
1930
1931 static const per_sequence_t HandoverRequestAcknowledge_sequence[] = {
1932   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
1933   { NULL, 0, 0, NULL }
1934 };
1935
1936 static int
1937 dissect_x2ap_HandoverRequestAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1938   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1939                                    ett_x2ap_HandoverRequestAcknowledge, HandoverRequestAcknowledge_sequence);
1940
1941   return offset;
1942 }
1943
1944
1945 static const per_sequence_t Bearers_Admitted_List_sequence_of[1] = {
1946   { &hf_x2ap_Bearers_Admitted_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Single_Container },
1947 };
1948
1949 static int
1950 dissect_x2ap_Bearers_Admitted_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1951   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1952                                                   ett_x2ap_Bearers_Admitted_List, Bearers_Admitted_List_sequence_of,
1953                                                   1, maxnoofBearers);
1954
1955   return offset;
1956 }
1957
1958
1959 static const per_sequence_t Bearers_Admitted_Item_sequence[] = {
1960   { &hf_x2ap_bearer_ID      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_Bearer_ID },
1961   { &hf_x2ap_uL_GTP_TunnelEndpoint, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_GTPtunnelEndpoint },
1962   { &hf_x2ap_dL_GTP_TunnelEndpoint, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_GTPtunnelEndpoint },
1963   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1964   { NULL, 0, 0, NULL }
1965 };
1966
1967 static int
1968 dissect_x2ap_Bearers_Admitted_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1969   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1970                                    ett_x2ap_Bearers_Admitted_Item, Bearers_Admitted_Item_sequence);
1971
1972   return offset;
1973 }
1974
1975
1976 static const per_sequence_t Bearers_NotAdmitted_List_sequence_of[1] = {
1977   { &hf_x2ap_Bearers_NotAdmitted_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Single_Container },
1978 };
1979
1980 static int
1981 dissect_x2ap_Bearers_NotAdmitted_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1982   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1983                                                   ett_x2ap_Bearers_NotAdmitted_List, Bearers_NotAdmitted_List_sequence_of,
1984                                                   1, maxnoofBearers);
1985
1986   return offset;
1987 }
1988
1989
1990 static const per_sequence_t Bearers_NotAdmitted_Item_sequence[] = {
1991   { &hf_x2ap_bearer_ID      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_Bearer_ID },
1992   { &hf_x2ap_cause          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_Cause },
1993   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1994   { NULL, 0, 0, NULL }
1995 };
1996
1997 static int
1998 dissect_x2ap_Bearers_NotAdmitted_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1999   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2000                                    ett_x2ap_Bearers_NotAdmitted_Item, Bearers_NotAdmitted_Item_sequence);
2001
2002   return offset;
2003 }
2004
2005
2006 static const per_sequence_t HandoverPreparationFailure_sequence[] = {
2007   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
2008   { NULL, 0, 0, NULL }
2009 };
2010
2011 static int
2012 dissect_x2ap_HandoverPreparationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2013   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2014                                    ett_x2ap_HandoverPreparationFailure, HandoverPreparationFailure_sequence);
2015
2016   return offset;
2017 }
2018
2019
2020 static const per_sequence_t SNStatusTransfer_sequence[] = {
2021   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
2022   { NULL, 0, 0, NULL }
2023 };
2024
2025 static int
2026 dissect_x2ap_SNStatusTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2027   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2028                                    ett_x2ap_SNStatusTransfer, SNStatusTransfer_sequence);
2029
2030   return offset;
2031 }
2032
2033
2034 static const per_sequence_t Bearers_SubjectToStatusTransfer_List_sequence_of[1] = {
2035   { &hf_x2ap_Bearers_SubjectToStatusTransfer_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Single_Container },
2036 };
2037
2038 static int
2039 dissect_x2ap_Bearers_SubjectToStatusTransfer_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2040   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2041                                                   ett_x2ap_Bearers_SubjectToStatusTransfer_List, Bearers_SubjectToStatusTransfer_List_sequence_of,
2042                                                   1, maxnoofBearers);
2043
2044   return offset;
2045 }
2046
2047
2048 static const per_sequence_t Bearers_SubjectToStatusTransfer_Item_sequence[] = {
2049   { &hf_x2ap_bearer_ID      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_Bearer_ID },
2050   { &hf_x2ap_receiveStatusofULPDCPSDUs, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ReceiveStatusofULPDCPSDUs },
2051   { &hf_x2ap_uL_COUNTvalue  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_COUNTvalue },
2052   { &hf_x2ap_dL_COUNTvalue  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_COUNTvalue },
2053   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
2054   { NULL, 0, 0, NULL }
2055 };
2056
2057 static int
2058 dissect_x2ap_Bearers_SubjectToStatusTransfer_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2059   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2060                                    ett_x2ap_Bearers_SubjectToStatusTransfer_Item, Bearers_SubjectToStatusTransfer_Item_sequence);
2061
2062   return offset;
2063 }
2064
2065
2066 static const per_sequence_t UEContextRelease_sequence[] = {
2067   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
2068   { NULL, 0, 0, NULL }
2069 };
2070
2071 static int
2072 dissect_x2ap_UEContextRelease(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2073   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2074                                    ett_x2ap_UEContextRelease, UEContextRelease_sequence);
2075
2076   return offset;
2077 }
2078
2079
2080 static const per_sequence_t HandoverCancel_sequence[] = {
2081   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
2082   { NULL, 0, 0, NULL }
2083 };
2084
2085 static int
2086 dissect_x2ap_HandoverCancel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2087   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2088                                    ett_x2ap_HandoverCancel, HandoverCancel_sequence);
2089
2090   return offset;
2091 }
2092
2093
2094 static const per_sequence_t ErrorIndication_sequence[] = {
2095   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
2096   { NULL, 0, 0, NULL }
2097 };
2098
2099 static int
2100 dissect_x2ap_ErrorIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2101   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2102                                    ett_x2ap_ErrorIndication, ErrorIndication_sequence);
2103
2104   return offset;
2105 }
2106
2107
2108 static const per_sequence_t ResetRequest_sequence[] = {
2109   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
2110   { NULL, 0, 0, NULL }
2111 };
2112
2113 static int
2114 dissect_x2ap_ResetRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2115   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2116                                    ett_x2ap_ResetRequest, ResetRequest_sequence);
2117
2118   return offset;
2119 }
2120
2121
2122 static const per_sequence_t ResetResponse_sequence[] = {
2123   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
2124   { NULL, 0, 0, NULL }
2125 };
2126
2127 static int
2128 dissect_x2ap_ResetResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2129   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2130                                    ett_x2ap_ResetResponse, ResetResponse_sequence);
2131
2132   return offset;
2133 }
2134
2135
2136 static const per_sequence_t X2SetupRequest_sequence[] = {
2137   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
2138   { NULL, 0, 0, NULL }
2139 };
2140
2141 static int
2142 dissect_x2ap_X2SetupRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2143   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2144                                    ett_x2ap_X2SetupRequest, X2SetupRequest_sequence);
2145
2146   return offset;
2147 }
2148
2149
2150 static const per_sequence_t X2SetupResponse_sequence[] = {
2151   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
2152   { NULL, 0, 0, NULL }
2153 };
2154
2155 static int
2156 dissect_x2ap_X2SetupResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2157   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2158                                    ett_x2ap_X2SetupResponse, X2SetupResponse_sequence);
2159
2160   return offset;
2161 }
2162
2163
2164 static const per_sequence_t X2SetupFailure_sequence[] = {
2165   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
2166   { NULL, 0, 0, NULL }
2167 };
2168
2169 static int
2170 dissect_x2ap_X2SetupFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2171   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2172                                    ett_x2ap_X2SetupFailure, X2SetupFailure_sequence);
2173
2174   return offset;
2175 }
2176
2177
2178 static const per_sequence_t LoadInformation_sequence[] = {
2179   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
2180   { NULL, 0, 0, NULL }
2181 };
2182
2183 static int
2184 dissect_x2ap_LoadInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2185   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2186                                    ett_x2ap_LoadInformation, LoadInformation_sequence);
2187
2188   return offset;
2189 }
2190
2191
2192 static const per_sequence_t CellInformation_List_sequence_of[1] = {
2193   { &hf_x2ap_CellInformation_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Single_Container },
2194 };
2195
2196 static int
2197 dissect_x2ap_CellInformation_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2198   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2199                                                   ett_x2ap_CellInformation_List, CellInformation_List_sequence_of,
2200                                                   1, maxCellineNB);
2201
2202   return offset;
2203 }
2204
2205
2206 static const per_sequence_t CellInformation_Item_sequence[] = {
2207   { &hf_x2ap_cell_ID        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ECGI },
2208   { &hf_x2ap_ul_InterferenceOverloadIndication, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_UL_InterferenceOverloadIndication },
2209   { &hf_x2ap_ul_HighInterferenceIndicationInfo, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_UL_HighInterferenceIndicationInfo },
2210   { &hf_x2ap_relativeNarrowbandTxPower, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_RelativeNarrowbandTxPower },
2211   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
2212   { NULL, 0, 0, NULL }
2213 };
2214
2215 static int
2216 dissect_x2ap_CellInformation_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2217   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2218                                    ett_x2ap_CellInformation_Item, CellInformation_Item_sequence);
2219
2220   return offset;
2221 }
2222
2223
2224 static const per_sequence_t ENBConfigurationUpdate_sequence[] = {
2225   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
2226   { NULL, 0, 0, NULL }
2227 };
2228
2229 static int
2230 dissect_x2ap_ENBConfigurationUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2231   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2232                                    ett_x2ap_ENBConfigurationUpdate, ENBConfigurationUpdate_sequence);
2233
2234   return offset;
2235 }
2236
2237
2238 static const per_sequence_t ServedCellsToModify_Item_sequence[] = {
2239   { &hf_x2ap_old_ecgi       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ECGI },
2240   { &hf_x2ap_served_cells   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ServedCell_Information },
2241   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
2242   { NULL, 0, 0, NULL }
2243 };
2244
2245 static int
2246 dissect_x2ap_ServedCellsToModify_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2247   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2248                                    ett_x2ap_ServedCellsToModify_Item, ServedCellsToModify_Item_sequence);
2249
2250   return offset;
2251 }
2252
2253
2254 static const per_sequence_t ServedCellsToModify_sequence_of[1] = {
2255   { &hf_x2ap_ServedCellsToModify_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ServedCellsToModify_Item },
2256 };
2257
2258 static int
2259 dissect_x2ap_ServedCellsToModify(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2260   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2261                                                   ett_x2ap_ServedCellsToModify, ServedCellsToModify_sequence_of,
2262                                                   1, maxCellineNB);
2263
2264   return offset;
2265 }
2266
2267
2268 static const per_sequence_t Old_ECGIs_sequence_of[1] = {
2269   { &hf_x2ap_Old_ECGIs_item , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ECGI },
2270 };
2271
2272 static int
2273 dissect_x2ap_Old_ECGIs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2274   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2275                                                   ett_x2ap_Old_ECGIs, Old_ECGIs_sequence_of,
2276                                                   1, maxCellineNB);
2277
2278   return offset;
2279 }
2280
2281
2282 static const per_sequence_t ENBConfigurationUpdateAcknowledge_sequence[] = {
2283   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
2284   { NULL, 0, 0, NULL }
2285 };
2286
2287 static int
2288 dissect_x2ap_ENBConfigurationUpdateAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2289   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2290                                    ett_x2ap_ENBConfigurationUpdateAcknowledge, ENBConfigurationUpdateAcknowledge_sequence);
2291
2292   return offset;
2293 }
2294
2295
2296 static const per_sequence_t ENBConfigurationUpdateFailure_sequence[] = {
2297   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
2298   { NULL, 0, 0, NULL }
2299 };
2300
2301 static int
2302 dissect_x2ap_ENBConfigurationUpdateFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2303   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2304                                    ett_x2ap_ENBConfigurationUpdateFailure, ENBConfigurationUpdateFailure_sequence);
2305
2306   return offset;
2307 }
2308
2309
2310 static const per_sequence_t ResourceStatusRequest_sequence[] = {
2311   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
2312   { NULL, 0, 0, NULL }
2313 };
2314
2315 static int
2316 dissect_x2ap_ResourceStatusRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2317   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2318                                    ett_x2ap_ResourceStatusRequest, ResourceStatusRequest_sequence);
2319
2320   return offset;
2321 }
2322
2323
2324 static const per_sequence_t CellToReport_List_sequence_of[1] = {
2325   { &hf_x2ap_CellToReport_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Single_Container },
2326 };
2327
2328 static int
2329 dissect_x2ap_CellToReport_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2330   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2331                                                   ett_x2ap_CellToReport_List, CellToReport_List_sequence_of,
2332                                                   1, maxCellineNB);
2333
2334   return offset;
2335 }
2336
2337
2338 static const per_sequence_t CellToReport_Item_sequence[] = {
2339   { &hf_x2ap_cell_ID        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ECGI },
2340   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
2341   { NULL, 0, 0, NULL }
2342 };
2343
2344 static int
2345 dissect_x2ap_CellToReport_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2346   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2347                                    ett_x2ap_CellToReport_Item, CellToReport_Item_sequence);
2348
2349   return offset;
2350 }
2351
2352
2353 static const value_string x2ap_ReportingPeriod_vals[] = {
2354   {   0, "ffs" },
2355   { 0, NULL }
2356 };
2357
2358
2359 static int
2360 dissect_x2ap_ReportingPeriod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2361   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2362                                      1, NULL, TRUE, 0, NULL);
2363
2364   return offset;
2365 }
2366
2367
2368 static const per_sequence_t ResourceStatusResponse_sequence[] = {
2369   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
2370   { NULL, 0, 0, NULL }
2371 };
2372
2373 static int
2374 dissect_x2ap_ResourceStatusResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2375   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2376                                    ett_x2ap_ResourceStatusResponse, ResourceStatusResponse_sequence);
2377
2378   return offset;
2379 }
2380
2381
2382 static const per_sequence_t ResourceStatusFailure_sequence[] = {
2383   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
2384   { NULL, 0, 0, NULL }
2385 };
2386
2387 static int
2388 dissect_x2ap_ResourceStatusFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2389   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2390                                    ett_x2ap_ResourceStatusFailure, ResourceStatusFailure_sequence);
2391
2392   return offset;
2393 }
2394
2395
2396 static const per_sequence_t ResourceStatusUpdate_sequence[] = {
2397   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
2398   { NULL, 0, 0, NULL }
2399 };
2400
2401 static int
2402 dissect_x2ap_ResourceStatusUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2403   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2404                                    ett_x2ap_ResourceStatusUpdate, ResourceStatusUpdate_sequence);
2405
2406   return offset;
2407 }
2408
2409
2410 static const per_sequence_t CellMeasurementResult_List_sequence_of[1] = {
2411   { &hf_x2ap_CellMeasurementResult_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Single_Container },
2412 };
2413
2414 static int
2415 dissect_x2ap_CellMeasurementResult_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2416   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2417                                                   ett_x2ap_CellMeasurementResult_List, CellMeasurementResult_List_sequence_of,
2418                                                   1, maxCellineNB);
2419
2420   return offset;
2421 }
2422
2423
2424 static const per_sequence_t CellMeasurementResult_Item_sequence[] = {
2425   { &hf_x2ap_cell_ID        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ECGI },
2426   { &hf_x2ap_resoureStatus  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ResourceStatus },
2427   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
2428   { NULL, 0, 0, NULL }
2429 };
2430
2431 static int
2432 dissect_x2ap_CellMeasurementResult_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2433   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2434                                    ett_x2ap_CellMeasurementResult_Item, CellMeasurementResult_Item_sequence);
2435
2436   return offset;
2437 }
2438
2439
2440
2441 static int
2442 dissect_x2ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2443   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue);
2444
2445   return offset;
2446 }
2447
2448
2449 static const per_sequence_t InitiatingMessage_sequence[] = {
2450   { &hf_x2ap_procedureCode  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ProcedureCode },
2451   { &hf_x2ap_criticality    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_Criticality },
2452   { &hf_x2ap_initiatingMessage_value, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_InitiatingMessage_value },
2453   { NULL, 0, 0, NULL }
2454 };
2455
2456 static int
2457 dissect_x2ap_InitiatingMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2458   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2459                                    ett_x2ap_InitiatingMessage, InitiatingMessage_sequence);
2460
2461   return offset;
2462 }
2463
2464
2465
2466 static int
2467 dissect_x2ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2468   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue);
2469
2470   return offset;
2471 }
2472
2473
2474 static const per_sequence_t SuccessfulOutcome_sequence[] = {
2475   { &hf_x2ap_procedureCode  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ProcedureCode },
2476   { &hf_x2ap_criticality    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_Criticality },
2477   { &hf_x2ap_successfulOutcome_value, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_SuccessfulOutcome_value },
2478   { NULL, 0, 0, NULL }
2479 };
2480
2481 static int
2482 dissect_x2ap_SuccessfulOutcome(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2483   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2484                                    ett_x2ap_SuccessfulOutcome, SuccessfulOutcome_sequence);
2485
2486   return offset;
2487 }
2488
2489
2490
2491 static int
2492 dissect_x2ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2493   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue);
2494
2495   return offset;
2496 }
2497
2498
2499 static const per_sequence_t UnsuccessfulOutcome_sequence[] = {
2500   { &hf_x2ap_procedureCode  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ProcedureCode },
2501   { &hf_x2ap_criticality    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_Criticality },
2502   { &hf_x2ap_value          , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_UnsuccessfulOutcome_value },
2503   { NULL, 0, 0, NULL }
2504 };
2505
2506 static int
2507 dissect_x2ap_UnsuccessfulOutcome(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2508   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2509                                    ett_x2ap_UnsuccessfulOutcome, UnsuccessfulOutcome_sequence);
2510
2511   return offset;
2512 }
2513
2514
2515 static const value_string x2ap_X2AP_PDU_vals[] = {
2516   {   0, "initiatingMessage" },
2517   {   1, "successfulOutcome" },
2518   {   2, "unsuccessfulOutcome" },
2519   { 0, NULL }
2520 };
2521
2522 static const per_choice_t X2AP_PDU_choice[] = {
2523   {   0, &hf_x2ap_initiatingMessage, ASN1_EXTENSION_ROOT    , dissect_x2ap_InitiatingMessage },
2524   {   1, &hf_x2ap_successfulOutcome, ASN1_EXTENSION_ROOT    , dissect_x2ap_SuccessfulOutcome },
2525   {   2, &hf_x2ap_unsuccessfulOutcome, ASN1_EXTENSION_ROOT    , dissect_x2ap_UnsuccessfulOutcome },
2526   { 0, NULL, 0, NULL }
2527 };
2528
2529 static int
2530 dissect_x2ap_X2AP_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2531   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2532                                  ett_x2ap_X2AP_PDU, X2AP_PDU_choice,
2533                                  NULL);
2534
2535   return offset;
2536 }
2537
2538 /*--- PDUs ---*/
2539
2540 static int dissect_Cause_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2541   int offset = 0;
2542   asn1_ctx_t asn1_ctx;
2543   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2544   offset = dissect_x2ap_Cause(tvb, offset, &asn1_ctx, tree, hf_x2ap_Cause_PDU);
2545   offset += 7; offset >>= 3;
2546   return offset;
2547 }
2548 static int dissect_CriticalityDiagnostics_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2549   int offset = 0;
2550   asn1_ctx_t asn1_ctx;
2551   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2552   offset = dissect_x2ap_CriticalityDiagnostics(tvb, offset, &asn1_ctx, tree, hf_x2ap_CriticalityDiagnostics_PDU);
2553   offset += 7; offset >>= 3;
2554   return offset;
2555 }
2556 static int dissect_ECGI_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2557   int offset = 0;
2558   asn1_ctx_t asn1_ctx;
2559   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2560   offset = dissect_x2ap_ECGI(tvb, offset, &asn1_ctx, tree, hf_x2ap_ECGI_PDU);
2561   offset += 7; offset >>= 3;
2562   return offset;
2563 }
2564 static int dissect_GlobalENB_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2565   int offset = 0;
2566   asn1_ctx_t asn1_ctx;
2567   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2568   offset = dissect_x2ap_GlobalENB_ID(tvb, offset, &asn1_ctx, tree, hf_x2ap_GlobalENB_ID_PDU);
2569   offset += 7; offset >>= 3;
2570   return offset;
2571 }
2572 static int dissect_GUGroupIDList_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2573   int offset = 0;
2574   asn1_ctx_t asn1_ctx;
2575   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2576   offset = dissect_x2ap_GUGroupIDList(tvb, offset, &asn1_ctx, tree, hf_x2ap_GUGroupIDList_PDU);
2577   offset += 7; offset >>= 3;
2578   return offset;
2579 }
2580 static int dissect_GUMMEI_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2581   int offset = 0;
2582   asn1_ctx_t asn1_ctx;
2583   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2584   offset = dissect_x2ap_GUMMEI(tvb, offset, &asn1_ctx, tree, hf_x2ap_GUMMEI_PDU);
2585   offset += 7; offset >>= 3;
2586   return offset;
2587 }
2588 static int dissect_InterfacesToTrace_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2589   int offset = 0;
2590   asn1_ctx_t asn1_ctx;
2591   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2592   offset = dissect_x2ap_InterfacesToTrace_Item(tvb, offset, &asn1_ctx, tree, hf_x2ap_InterfacesToTrace_Item_PDU);
2593   offset += 7; offset >>= 3;
2594   return offset;
2595 }
2596 static int dissect_Registration_Request_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2597   int offset = 0;
2598   asn1_ctx_t asn1_ctx;
2599   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2600   offset = dissect_x2ap_Registration_Request(tvb, offset, &asn1_ctx, tree, hf_x2ap_Registration_Request_PDU);
2601   offset += 7; offset >>= 3;
2602   return offset;
2603 }
2604 static int dissect_ServedCells_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2605   int offset = 0;
2606   asn1_ctx_t asn1_ctx;
2607   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2608   offset = dissect_x2ap_ServedCells(tvb, offset, &asn1_ctx, tree, hf_x2ap_ServedCells_PDU);
2609   offset += 7; offset >>= 3;
2610   return offset;
2611 }
2612 static int dissect_TargeteNBtoSource_eNBTransparentContainer_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2613   int offset = 0;
2614   asn1_ctx_t asn1_ctx;
2615   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2616   offset = dissect_x2ap_TargeteNBtoSource_eNBTransparentContainer(tvb, offset, &asn1_ctx, tree, hf_x2ap_TargeteNBtoSource_eNBTransparentContainer_PDU);
2617   offset += 7; offset >>= 3;
2618   return offset;
2619 }
2620 static int dissect_TimeToWait_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2621   int offset = 0;
2622   asn1_ctx_t asn1_ctx;
2623   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2624   offset = dissect_x2ap_TimeToWait(tvb, offset, &asn1_ctx, tree, hf_x2ap_TimeToWait_PDU);
2625   offset += 7; offset >>= 3;
2626   return offset;
2627 }
2628 static int dissect_TraceActivation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2629   int offset = 0;
2630   asn1_ctx_t asn1_ctx;
2631   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2632   offset = dissect_x2ap_TraceActivation(tvb, offset, &asn1_ctx, tree, hf_x2ap_TraceActivation_PDU);
2633   offset += 7; offset >>= 3;
2634   return offset;
2635 }
2636 static int dissect_UE_HistoryInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2637   int offset = 0;
2638   asn1_ctx_t asn1_ctx;
2639   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2640   offset = dissect_x2ap_UE_HistoryInformation(tvb, offset, &asn1_ctx, tree, hf_x2ap_UE_HistoryInformation_PDU);
2641   offset += 7; offset >>= 3;
2642   return offset;
2643 }
2644 static int dissect_UE_X2AP_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2645   int offset = 0;
2646   asn1_ctx_t asn1_ctx;
2647   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2648   offset = dissect_x2ap_UE_X2AP_ID(tvb, offset, &asn1_ctx, tree, hf_x2ap_UE_X2AP_ID_PDU);
2649   offset += 7; offset >>= 3;
2650   return offset;
2651 }
2652 static int dissect_HandoverRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2653   int offset = 0;
2654   asn1_ctx_t asn1_ctx;
2655   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2656   offset = dissect_x2ap_HandoverRequest(tvb, offset, &asn1_ctx, tree, hf_x2ap_HandoverRequest_PDU);
2657   offset += 7; offset >>= 3;
2658   return offset;
2659 }
2660 static int dissect_UE_ContextInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2661   int offset = 0;
2662   asn1_ctx_t asn1_ctx;
2663   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2664   offset = dissect_x2ap_UE_ContextInformation(tvb, offset, &asn1_ctx, tree, hf_x2ap_UE_ContextInformation_PDU);
2665   offset += 7; offset >>= 3;
2666   return offset;
2667 }
2668 static int dissect_Bearers_ToBeSetup_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2669   int offset = 0;
2670   asn1_ctx_t asn1_ctx;
2671   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2672   offset = dissect_x2ap_Bearers_ToBeSetup_Item(tvb, offset, &asn1_ctx, tree, hf_x2ap_Bearers_ToBeSetup_Item_PDU);
2673   offset += 7; offset >>= 3;
2674   return offset;
2675 }
2676 static int dissect_HandoverRequestAcknowledge_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2677   int offset = 0;
2678   asn1_ctx_t asn1_ctx;
2679   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2680   offset = dissect_x2ap_HandoverRequestAcknowledge(tvb, offset, &asn1_ctx, tree, hf_x2ap_HandoverRequestAcknowledge_PDU);
2681   offset += 7; offset >>= 3;
2682   return offset;
2683 }
2684 static int dissect_Bearers_Admitted_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2685   int offset = 0;
2686   asn1_ctx_t asn1_ctx;
2687   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2688   offset = dissect_x2ap_Bearers_Admitted_List(tvb, offset, &asn1_ctx, tree, hf_x2ap_Bearers_Admitted_List_PDU);
2689   offset += 7; offset >>= 3;
2690   return offset;
2691 }
2692 static int dissect_Bearers_Admitted_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2693   int offset = 0;
2694   asn1_ctx_t asn1_ctx;
2695   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2696   offset = dissect_x2ap_Bearers_Admitted_Item(tvb, offset, &asn1_ctx, tree, hf_x2ap_Bearers_Admitted_Item_PDU);
2697   offset += 7; offset >>= 3;
2698   return offset;
2699 }
2700 static int dissect_Bearers_NotAdmitted_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2701   int offset = 0;
2702   asn1_ctx_t asn1_ctx;
2703   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2704   offset = dissect_x2ap_Bearers_NotAdmitted_List(tvb, offset, &asn1_ctx, tree, hf_x2ap_Bearers_NotAdmitted_List_PDU);
2705   offset += 7; offset >>= 3;
2706   return offset;
2707 }
2708 static int dissect_Bearers_NotAdmitted_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2709   int offset = 0;
2710   asn1_ctx_t asn1_ctx;
2711   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2712   offset = dissect_x2ap_Bearers_NotAdmitted_Item(tvb, offset, &asn1_ctx, tree, hf_x2ap_Bearers_NotAdmitted_Item_PDU);
2713   offset += 7; offset >>= 3;
2714   return offset;
2715 }
2716 static int dissect_HandoverPreparationFailure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2717   int offset = 0;
2718   asn1_ctx_t asn1_ctx;
2719   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2720   offset = dissect_x2ap_HandoverPreparationFailure(tvb, offset, &asn1_ctx, tree, hf_x2ap_HandoverPreparationFailure_PDU);
2721   offset += 7; offset >>= 3;
2722   return offset;
2723 }
2724 static int dissect_SNStatusTransfer_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2725   int offset = 0;
2726   asn1_ctx_t asn1_ctx;
2727   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2728   offset = dissect_x2ap_SNStatusTransfer(tvb, offset, &asn1_ctx, tree, hf_x2ap_SNStatusTransfer_PDU);
2729   offset += 7; offset >>= 3;
2730   return offset;
2731 }
2732 static int dissect_Bearers_SubjectToStatusTransfer_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2733   int offset = 0;
2734   asn1_ctx_t asn1_ctx;
2735   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2736   offset = dissect_x2ap_Bearers_SubjectToStatusTransfer_List(tvb, offset, &asn1_ctx, tree, hf_x2ap_Bearers_SubjectToStatusTransfer_List_PDU);
2737   offset += 7; offset >>= 3;
2738   return offset;
2739 }
2740 static int dissect_Bearers_SubjectToStatusTransfer_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2741   int offset = 0;
2742   asn1_ctx_t asn1_ctx;
2743   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2744   offset = dissect_x2ap_Bearers_SubjectToStatusTransfer_Item(tvb, offset, &asn1_ctx, tree, hf_x2ap_Bearers_SubjectToStatusTransfer_Item_PDU);
2745   offset += 7; offset >>= 3;
2746   return offset;
2747 }
2748 static int dissect_UEContextRelease_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2749   int offset = 0;
2750   asn1_ctx_t asn1_ctx;
2751   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2752   offset = dissect_x2ap_UEContextRelease(tvb, offset, &asn1_ctx, tree, hf_x2ap_UEContextRelease_PDU);
2753   offset += 7; offset >>= 3;
2754   return offset;
2755 }
2756 static int dissect_HandoverCancel_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2757   int offset = 0;
2758   asn1_ctx_t asn1_ctx;
2759   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2760   offset = dissect_x2ap_HandoverCancel(tvb, offset, &asn1_ctx, tree, hf_x2ap_HandoverCancel_PDU);
2761   offset += 7; offset >>= 3;
2762   return offset;
2763 }
2764 static int dissect_ErrorIndication_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2765   int offset = 0;
2766   asn1_ctx_t asn1_ctx;
2767   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2768   offset = dissect_x2ap_ErrorIndication(tvb, offset, &asn1_ctx, tree, hf_x2ap_ErrorIndication_PDU);
2769   offset += 7; offset >>= 3;
2770   return offset;
2771 }
2772 static int dissect_ResetRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2773   int offset = 0;
2774   asn1_ctx_t asn1_ctx;
2775   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2776   offset = dissect_x2ap_ResetRequest(tvb, offset, &asn1_ctx, tree, hf_x2ap_ResetRequest_PDU);
2777   offset += 7; offset >>= 3;
2778   return offset;
2779 }
2780 static int dissect_ResetResponse_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2781   int offset = 0;
2782   asn1_ctx_t asn1_ctx;
2783   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2784   offset = dissect_x2ap_ResetResponse(tvb, offset, &asn1_ctx, tree, hf_x2ap_ResetResponse_PDU);
2785   offset += 7; offset >>= 3;
2786   return offset;
2787 }
2788 static int dissect_X2SetupRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2789   int offset = 0;
2790   asn1_ctx_t asn1_ctx;
2791   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2792   offset = dissect_x2ap_X2SetupRequest(tvb, offset, &asn1_ctx, tree, hf_x2ap_X2SetupRequest_PDU);
2793   offset += 7; offset >>= 3;
2794   return offset;
2795 }
2796 static int dissect_X2SetupResponse_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2797   int offset = 0;
2798   asn1_ctx_t asn1_ctx;
2799   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2800   offset = dissect_x2ap_X2SetupResponse(tvb, offset, &asn1_ctx, tree, hf_x2ap_X2SetupResponse_PDU);
2801   offset += 7; offset >>= 3;
2802   return offset;
2803 }
2804 static int dissect_X2SetupFailure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2805   int offset = 0;
2806   asn1_ctx_t asn1_ctx;
2807   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2808   offset = dissect_x2ap_X2SetupFailure(tvb, offset, &asn1_ctx, tree, hf_x2ap_X2SetupFailure_PDU);
2809   offset += 7; offset >>= 3;
2810   return offset;
2811 }
2812 static int dissect_LoadInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2813   int offset = 0;
2814   asn1_ctx_t asn1_ctx;
2815   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2816   offset = dissect_x2ap_LoadInformation(tvb, offset, &asn1_ctx, tree, hf_x2ap_LoadInformation_PDU);
2817   offset += 7; offset >>= 3;
2818   return offset;
2819 }
2820 static int dissect_CellInformation_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2821   int offset = 0;
2822   asn1_ctx_t asn1_ctx;
2823   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2824   offset = dissect_x2ap_CellInformation_List(tvb, offset, &asn1_ctx, tree, hf_x2ap_CellInformation_List_PDU);
2825   offset += 7; offset >>= 3;
2826   return offset;
2827 }
2828 static int dissect_CellInformation_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2829   int offset = 0;
2830   asn1_ctx_t asn1_ctx;
2831   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2832   offset = dissect_x2ap_CellInformation_Item(tvb, offset, &asn1_ctx, tree, hf_x2ap_CellInformation_Item_PDU);
2833   offset += 7; offset >>= 3;
2834   return offset;
2835 }
2836 static int dissect_ENBConfigurationUpdate_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2837   int offset = 0;
2838   asn1_ctx_t asn1_ctx;
2839   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2840   offset = dissect_x2ap_ENBConfigurationUpdate(tvb, offset, &asn1_ctx, tree, hf_x2ap_ENBConfigurationUpdate_PDU);
2841   offset += 7; offset >>= 3;
2842   return offset;
2843 }
2844 static int dissect_ServedCellsToModify_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2845   int offset = 0;
2846   asn1_ctx_t asn1_ctx;
2847   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2848   offset = dissect_x2ap_ServedCellsToModify(tvb, offset, &asn1_ctx, tree, hf_x2ap_ServedCellsToModify_PDU);
2849   offset += 7; offset >>= 3;
2850   return offset;
2851 }
2852 static int dissect_Old_ECGIs_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2853   int offset = 0;
2854   asn1_ctx_t asn1_ctx;
2855   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2856   offset = dissect_x2ap_Old_ECGIs(tvb, offset, &asn1_ctx, tree, hf_x2ap_Old_ECGIs_PDU);
2857   offset += 7; offset >>= 3;
2858   return offset;
2859 }
2860 static int dissect_ENBConfigurationUpdateAcknowledge_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2861   int offset = 0;
2862   asn1_ctx_t asn1_ctx;
2863   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2864   offset = dissect_x2ap_ENBConfigurationUpdateAcknowledge(tvb, offset, &asn1_ctx, tree, hf_x2ap_ENBConfigurationUpdateAcknowledge_PDU);
2865   offset += 7; offset >>= 3;
2866   return offset;
2867 }
2868 static int dissect_ENBConfigurationUpdateFailure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2869   int offset = 0;
2870   asn1_ctx_t asn1_ctx;
2871   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2872   offset = dissect_x2ap_ENBConfigurationUpdateFailure(tvb, offset, &asn1_ctx, tree, hf_x2ap_ENBConfigurationUpdateFailure_PDU);
2873   offset += 7; offset >>= 3;
2874   return offset;
2875 }
2876 static int dissect_ResourceStatusRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2877   int offset = 0;
2878   asn1_ctx_t asn1_ctx;
2879   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2880   offset = dissect_x2ap_ResourceStatusRequest(tvb, offset, &asn1_ctx, tree, hf_x2ap_ResourceStatusRequest_PDU);
2881   offset += 7; offset >>= 3;
2882   return offset;
2883 }
2884 static int dissect_CellToReport_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2885   int offset = 0;
2886   asn1_ctx_t asn1_ctx;
2887   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2888   offset = dissect_x2ap_CellToReport_List(tvb, offset, &asn1_ctx, tree, hf_x2ap_CellToReport_List_PDU);
2889   offset += 7; offset >>= 3;
2890   return offset;
2891 }
2892 static int dissect_CellToReport_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2893   int offset = 0;
2894   asn1_ctx_t asn1_ctx;
2895   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2896   offset = dissect_x2ap_CellToReport_Item(tvb, offset, &asn1_ctx, tree, hf_x2ap_CellToReport_Item_PDU);
2897   offset += 7; offset >>= 3;
2898   return offset;
2899 }
2900 static int dissect_ReportingPeriod_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2901   int offset = 0;
2902   asn1_ctx_t asn1_ctx;
2903   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2904   offset = dissect_x2ap_ReportingPeriod(tvb, offset, &asn1_ctx, tree, hf_x2ap_ReportingPeriod_PDU);
2905   offset += 7; offset >>= 3;
2906   return offset;
2907 }
2908 static int dissect_ResourceStatusResponse_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2909   int offset = 0;
2910   asn1_ctx_t asn1_ctx;
2911   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2912   offset = dissect_x2ap_ResourceStatusResponse(tvb, offset, &asn1_ctx, tree, hf_x2ap_ResourceStatusResponse_PDU);
2913   offset += 7; offset >>= 3;
2914   return offset;
2915 }
2916 static int dissect_ResourceStatusFailure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2917   int offset = 0;
2918   asn1_ctx_t asn1_ctx;
2919   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2920   offset = dissect_x2ap_ResourceStatusFailure(tvb, offset, &asn1_ctx, tree, hf_x2ap_ResourceStatusFailure_PDU);
2921   offset += 7; offset >>= 3;
2922   return offset;
2923 }
2924 static int dissect_ResourceStatusUpdate_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2925   int offset = 0;
2926   asn1_ctx_t asn1_ctx;
2927   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2928   offset = dissect_x2ap_ResourceStatusUpdate(tvb, offset, &asn1_ctx, tree, hf_x2ap_ResourceStatusUpdate_PDU);
2929   offset += 7; offset >>= 3;
2930   return offset;
2931 }
2932 static int dissect_CellMeasurementResult_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2933   int offset = 0;
2934   asn1_ctx_t asn1_ctx;
2935   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2936   offset = dissect_x2ap_CellMeasurementResult_List(tvb, offset, &asn1_ctx, tree, hf_x2ap_CellMeasurementResult_List_PDU);
2937   offset += 7; offset >>= 3;
2938   return offset;
2939 }
2940 static int dissect_CellMeasurementResult_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2941   int offset = 0;
2942   asn1_ctx_t asn1_ctx;
2943   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2944   offset = dissect_x2ap_CellMeasurementResult_Item(tvb, offset, &asn1_ctx, tree, hf_x2ap_CellMeasurementResult_Item_PDU);
2945   offset += 7; offset >>= 3;
2946   return offset;
2947 }
2948 static void dissect_X2AP_PDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2949   asn1_ctx_t asn1_ctx;
2950   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2951   dissect_x2ap_X2AP_PDU(tvb, 0, &asn1_ctx, tree, hf_x2ap_X2AP_PDU_PDU);
2952 }
2953
2954
2955 /*--- End of included file: packet-x2ap-fn.c ---*/
2956 #line 87 "packet-x2ap-template.c"
2957
2958 static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
2959 {
2960   return (dissector_try_port(x2ap_ies_dissector_table, ProtocolIE_ID, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
2961 }
2962
2963 static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
2964 {
2965   return (dissector_try_port(x2ap_extension_dissector_table, ProtocolIE_ID, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
2966 }
2967
2968 static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
2969 {
2970   if (!ProcedureID) return 0;
2971   return (dissector_try_string(x2ap_proc_imsg_dissector_table, ProcedureID, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
2972 }
2973
2974 static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
2975 {
2976   if (!ProcedureID) return 0;
2977   return (dissector_try_string(x2ap_proc_sout_dissector_table, ProcedureID, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
2978 }
2979
2980 static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
2981 {
2982   if (!ProcedureID) return 0;
2983   return (dissector_try_string(x2ap_proc_uout_dissector_table, ProcedureID, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
2984 }
2985
2986 static void
2987 dissect_x2ap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
2988 {
2989         proto_item      *x2ap_item = NULL;
2990         proto_tree      *x2ap_tree = NULL;
2991
2992         /* make entry in the Protocol column on summary display */
2993         if (check_col(pinfo->cinfo, COL_PROTOCOL))
2994                 col_set_str(pinfo->cinfo, COL_PROTOCOL, "X2AP");
2995
2996         /* create the x2ap protocol tree */
2997         x2ap_item = proto_tree_add_item(tree, proto_x2ap, tvb, 0, -1, FALSE);
2998         x2ap_tree = proto_item_add_subtree(x2ap_item, ett_x2ap);
2999         
3000         dissect_X2AP_PDU_PDU(tvb, pinfo, x2ap_tree);
3001 }
3002
3003 /*--- proto_register_x2ap -------------------------------------------*/
3004 void proto_register_x2ap(void) {
3005
3006   /* List of fields */
3007
3008   static hf_register_info hf[] = {
3009
3010 /*--- Included file: packet-x2ap-hfarr.c ---*/
3011 #line 1 "packet-x2ap-hfarr.c"
3012     { &hf_x2ap_Cause_PDU,
3013       { "Cause", "x2ap.Cause",
3014         FT_UINT32, BASE_DEC, VALS(x2ap_Cause_vals), 0,
3015         "x2ap.Cause", HFILL }},
3016     { &hf_x2ap_CriticalityDiagnostics_PDU,
3017       { "CriticalityDiagnostics", "x2ap.CriticalityDiagnostics",
3018         FT_NONE, BASE_NONE, NULL, 0,
3019         "x2ap.CriticalityDiagnostics", HFILL }},
3020     { &hf_x2ap_ECGI_PDU,
3021       { "ECGI", "x2ap.ECGI",
3022         FT_NONE, BASE_NONE, NULL, 0,
3023         "x2ap.ECGI", HFILL }},
3024     { &hf_x2ap_GlobalENB_ID_PDU,
3025       { "GlobalENB-ID", "x2ap.GlobalENB_ID",
3026         FT_NONE, BASE_NONE, NULL, 0,
3027         "x2ap.GlobalENB_ID", HFILL }},
3028     { &hf_x2ap_GUGroupIDList_PDU,
3029       { "GUGroupIDList", "x2ap.GUGroupIDList",
3030         FT_UINT32, BASE_DEC, NULL, 0,
3031         "x2ap.GUGroupIDList", HFILL }},
3032     { &hf_x2ap_GUMMEI_PDU,
3033       { "GUMMEI", "x2ap.GUMMEI",
3034         FT_NONE, BASE_NONE, NULL, 0,
3035         "x2ap.GUMMEI", HFILL }},
3036     { &hf_x2ap_InterfacesToTrace_Item_PDU,
3037       { "InterfacesToTrace-Item", "x2ap.InterfacesToTrace_Item",
3038         FT_NONE, BASE_NONE, NULL, 0,
3039         "x2ap.InterfacesToTrace_Item", HFILL }},
3040     { &hf_x2ap_Registration_Request_PDU,
3041       { "Registration-Request", "x2ap.Registration_Request",
3042         FT_UINT32, BASE_DEC, VALS(x2ap_Registration_Request_vals), 0,
3043         "x2ap.Registration_Request", HFILL }},
3044     { &hf_x2ap_ServedCells_PDU,
3045       { "ServedCells", "x2ap.ServedCells",
3046         FT_UINT32, BASE_DEC, NULL, 0,
3047         "x2ap.ServedCells", HFILL }},
3048     { &hf_x2ap_TargeteNBtoSource_eNBTransparentContainer_PDU,
3049       { "TargeteNBtoSource-eNBTransparentContainer", "x2ap.TargeteNBtoSource_eNBTransparentContainer",
3050         FT_BYTES, BASE_HEX, NULL, 0,
3051         "x2ap.TargeteNBtoSource_eNBTransparentContainer", HFILL }},
3052     { &hf_x2ap_TimeToWait_PDU,
3053       { "TimeToWait", "x2ap.TimeToWait",
3054         FT_BYTES, BASE_HEX, NULL, 0,
3055         "x2ap.TimeToWait", HFILL }},
3056     { &hf_x2ap_TraceActivation_PDU,
3057       { "TraceActivation", "x2ap.TraceActivation",
3058         FT_NONE, BASE_NONE, NULL, 0,
3059         "x2ap.TraceActivation", HFILL }},
3060     { &hf_x2ap_UE_HistoryInformation_PDU,
3061       { "UE-HistoryInformation", "x2ap.UE_HistoryInformation",
3062         FT_UINT32, BASE_DEC, NULL, 0,
3063         "x2ap.UE_HistoryInformation", HFILL }},
3064     { &hf_x2ap_UE_X2AP_ID_PDU,
3065       { "UE-X2AP-ID", "x2ap.UE_X2AP_ID",
3066         FT_UINT32, BASE_DEC, NULL, 0,
3067         "x2ap.UE_X2AP_ID", HFILL }},
3068     { &hf_x2ap_HandoverRequest_PDU,
3069       { "HandoverRequest", "x2ap.HandoverRequest",
3070         FT_NONE, BASE_NONE, NULL, 0,
3071         "x2ap.HandoverRequest", HFILL }},
3072     { &hf_x2ap_UE_ContextInformation_PDU,
3073       { "UE-ContextInformation", "x2ap.UE_ContextInformation",
3074         FT_NONE, BASE_NONE, NULL, 0,
3075         "x2ap.UE_ContextInformation", HFILL }},
3076     { &hf_x2ap_Bearers_ToBeSetup_Item_PDU,
3077       { "Bearers-ToBeSetup-Item", "x2ap.Bearers_ToBeSetup_Item",
3078         FT_NONE, BASE_NONE, NULL, 0,
3079         "x2ap.Bearers_ToBeSetup_Item", HFILL }},
3080     { &hf_x2ap_HandoverRequestAcknowledge_PDU,
3081       { "HandoverRequestAcknowledge", "x2ap.HandoverRequestAcknowledge",
3082         FT_NONE, BASE_NONE, NULL, 0,
3083         "x2ap.HandoverRequestAcknowledge", HFILL }},
3084     { &hf_x2ap_Bearers_Admitted_List_PDU,
3085       { "Bearers-Admitted-List", "x2ap.Bearers_Admitted_List",
3086         FT_UINT32, BASE_DEC, NULL, 0,
3087         "x2ap.Bearers_Admitted_List", HFILL }},
3088     { &hf_x2ap_Bearers_Admitted_Item_PDU,
3089       { "Bearers-Admitted-Item", "x2ap.Bearers_Admitted_Item",
3090         FT_NONE, BASE_NONE, NULL, 0,
3091         "x2ap.Bearers_Admitted_Item", HFILL }},
3092     { &hf_x2ap_Bearers_NotAdmitted_List_PDU,
3093       { "Bearers-NotAdmitted-List", "x2ap.Bearers_NotAdmitted_List",
3094         FT_UINT32, BASE_DEC, NULL, 0,
3095         "x2ap.Bearers_NotAdmitted_List", HFILL }},
3096     { &hf_x2ap_Bearers_NotAdmitted_Item_PDU,
3097       { "Bearers-NotAdmitted-Item", "x2ap.Bearers_NotAdmitted_Item",
3098         FT_NONE, BASE_NONE, NULL, 0,
3099         "x2ap.Bearers_NotAdmitted_Item", HFILL }},
3100     { &hf_x2ap_HandoverPreparationFailure_PDU,
3101       { "HandoverPreparationFailure", "x2ap.HandoverPreparationFailure",
3102         FT_NONE, BASE_NONE, NULL, 0,
3103         "x2ap.HandoverPreparationFailure", HFILL }},
3104     { &hf_x2ap_SNStatusTransfer_PDU,
3105       { "SNStatusTransfer", "x2ap.SNStatusTransfer",
3106         FT_NONE, BASE_NONE, NULL, 0,
3107         "x2ap.SNStatusTransfer", HFILL }},
3108     { &hf_x2ap_Bearers_SubjectToStatusTransfer_List_PDU,
3109       { "Bearers-SubjectToStatusTransfer-List", "x2ap.Bearers_SubjectToStatusTransfer_List",
3110         FT_UINT32, BASE_DEC, NULL, 0,
3111         "x2ap.Bearers_SubjectToStatusTransfer_List", HFILL }},
3112     { &hf_x2ap_Bearers_SubjectToStatusTransfer_Item_PDU,
3113       { "Bearers-SubjectToStatusTransfer-Item", "x2ap.Bearers_SubjectToStatusTransfer_Item",
3114         FT_NONE, BASE_NONE, NULL, 0,
3115         "x2ap.Bearers_SubjectToStatusTransfer_Item", HFILL }},
3116     { &hf_x2ap_UEContextRelease_PDU,
3117       { "UEContextRelease", "x2ap.UEContextRelease",
3118         FT_NONE, BASE_NONE, NULL, 0,
3119         "x2ap.UEContextRelease", HFILL }},
3120     { &hf_x2ap_HandoverCancel_PDU,
3121       { "HandoverCancel", "x2ap.HandoverCancel",
3122         FT_NONE, BASE_NONE, NULL, 0,
3123         "x2ap.HandoverCancel", HFILL }},
3124     { &hf_x2ap_ErrorIndication_PDU,
3125       { "ErrorIndication", "x2ap.ErrorIndication",
3126         FT_NONE, BASE_NONE, NULL, 0,
3127         "x2ap.ErrorIndication", HFILL }},
3128     { &hf_x2ap_ResetRequest_PDU,
3129       { "ResetRequest", "x2ap.ResetRequest",
3130         FT_NONE, BASE_NONE, NULL, 0,
3131         "x2ap.ResetRequest", HFILL }},
3132     { &hf_x2ap_ResetResponse_PDU,
3133       { "ResetResponse", "x2ap.ResetResponse",
3134         FT_NONE, BASE_NONE, NULL, 0,
3135         "x2ap.ResetResponse", HFILL }},
3136     { &hf_x2ap_X2SetupRequest_PDU,
3137       { "X2SetupRequest", "x2ap.X2SetupRequest",
3138         FT_NONE, BASE_NONE, NULL, 0,
3139         "x2ap.X2SetupRequest", HFILL }},
3140     { &hf_x2ap_X2SetupResponse_PDU,
3141       { "X2SetupResponse", "x2ap.X2SetupResponse",
3142         FT_NONE, BASE_NONE, NULL, 0,
3143         "x2ap.X2SetupResponse", HFILL }},
3144     { &hf_x2ap_X2SetupFailure_PDU,
3145       { "X2SetupFailure", "x2ap.X2SetupFailure",
3146         FT_NONE, BASE_NONE, NULL, 0,
3147         "x2ap.X2SetupFailure", HFILL }},
3148     { &hf_x2ap_LoadInformation_PDU,
3149       { "LoadInformation", "x2ap.LoadInformation",
3150         FT_NONE, BASE_NONE, NULL, 0,
3151         "x2ap.LoadInformation", HFILL }},
3152     { &hf_x2ap_CellInformation_List_PDU,
3153       { "CellInformation-List", "x2ap.CellInformation_List",
3154         FT_UINT32, BASE_DEC, NULL, 0,
3155         "x2ap.CellInformation_List", HFILL }},
3156     { &hf_x2ap_CellInformation_Item_PDU,
3157       { "CellInformation-Item", "x2ap.CellInformation_Item",
3158         FT_NONE, BASE_NONE, NULL, 0,
3159         "x2ap.CellInformation_Item", HFILL }},
3160     { &hf_x2ap_ENBConfigurationUpdate_PDU,
3161       { "ENBConfigurationUpdate", "x2ap.ENBConfigurationUpdate",
3162         FT_NONE, BASE_NONE, NULL, 0,
3163         "x2ap.ENBConfigurationUpdate", HFILL }},
3164     { &hf_x2ap_ServedCellsToModify_PDU,
3165       { "ServedCellsToModify", "x2ap.ServedCellsToModify",
3166         FT_UINT32, BASE_DEC, NULL, 0,
3167         "x2ap.ServedCellsToModify", HFILL }},
3168     { &hf_x2ap_Old_ECGIs_PDU,
3169       { "Old-ECGIs", "x2ap.Old_ECGIs",
3170         FT_UINT32, BASE_DEC, NULL, 0,
3171         "x2ap.Old_ECGIs", HFILL }},
3172     { &hf_x2ap_ENBConfigurationUpdateAcknowledge_PDU,
3173       { "ENBConfigurationUpdateAcknowledge", "x2ap.ENBConfigurationUpdateAcknowledge",
3174         FT_NONE, BASE_NONE, NULL, 0,
3175         "x2ap.ENBConfigurationUpdateAcknowledge", HFILL }},
3176     { &hf_x2ap_ENBConfigurationUpdateFailure_PDU,
3177       { "ENBConfigurationUpdateFailure", "x2ap.ENBConfigurationUpdateFailure",
3178         FT_NONE, BASE_NONE, NULL, 0,
3179         "x2ap.ENBConfigurationUpdateFailure", HFILL }},
3180     { &hf_x2ap_ResourceStatusRequest_PDU,
3181       { "ResourceStatusRequest", "x2ap.ResourceStatusRequest",
3182         FT_NONE, BASE_NONE, NULL, 0,
3183         "x2ap.ResourceStatusRequest", HFILL }},
3184     { &hf_x2ap_CellToReport_List_PDU,
3185       { "CellToReport-List", "x2ap.CellToReport_List",
3186         FT_UINT32, BASE_DEC, NULL, 0,
3187         "x2ap.CellToReport_List", HFILL }},
3188     { &hf_x2ap_CellToReport_Item_PDU,
3189       { "CellToReport-Item", "x2ap.CellToReport_Item",
3190         FT_NONE, BASE_NONE, NULL, 0,
3191         "x2ap.CellToReport_Item", HFILL }},
3192     { &hf_x2ap_ReportingPeriod_PDU,
3193       { "ReportingPeriod", "x2ap.ReportingPeriod",
3194         FT_UINT32, BASE_DEC, VALS(x2ap_ReportingPeriod_vals), 0,
3195         "x2ap.ReportingPeriod", HFILL }},
3196     { &hf_x2ap_ResourceStatusResponse_PDU,
3197       { "ResourceStatusResponse", "x2ap.ResourceStatusResponse",
3198         FT_NONE, BASE_NONE, NULL, 0,
3199         "x2ap.ResourceStatusResponse", HFILL }},
3200     { &hf_x2ap_ResourceStatusFailure_PDU,
3201       { "ResourceStatusFailure", "x2ap.ResourceStatusFailure",
3202         FT_NONE, BASE_NONE, NULL, 0,
3203         "x2ap.ResourceStatusFailure", HFILL }},
3204     { &hf_x2ap_ResourceStatusUpdate_PDU,
3205       { "ResourceStatusUpdate", "x2ap.ResourceStatusUpdate",
3206         FT_NONE, BASE_NONE, NULL, 0,
3207         "x2ap.ResourceStatusUpdate", HFILL }},
3208     { &hf_x2ap_CellMeasurementResult_List_PDU,
3209       { "CellMeasurementResult-List", "x2ap.CellMeasurementResult_List",
3210         FT_UINT32, BASE_DEC, NULL, 0,
3211         "x2ap.CellMeasurementResult_List", HFILL }},
3212     { &hf_x2ap_CellMeasurementResult_Item_PDU,
3213       { "CellMeasurementResult-Item", "x2ap.CellMeasurementResult_Item",
3214         FT_NONE, BASE_NONE, NULL, 0,
3215         "x2ap.CellMeasurementResult_Item", HFILL }},
3216     { &hf_x2ap_X2AP_PDU_PDU,
3217       { "X2AP-PDU", "x2ap.X2AP_PDU",
3218         FT_UINT32, BASE_DEC, VALS(x2ap_X2AP_PDU_vals), 0,
3219         "x2ap.X2AP_PDU", HFILL }},
3220     { &hf_x2ap_ProtocolIE_Container_item,
3221       { "ProtocolIE-Container", "x2ap.ProtocolIE_Container_item",
3222         FT_NONE, BASE_NONE, NULL, 0,
3223         "x2ap.ProtocolIE_Field", HFILL }},
3224     { &hf_x2ap_id,
3225       { "id", "x2ap.id",
3226         FT_UINT32, BASE_DEC, VALS(x2ap_ProtocolIE_ID_vals), 0,
3227         "x2ap.ProtocolIE_ID", HFILL }},
3228     { &hf_x2ap_criticality,
3229       { "criticality", "x2ap.criticality",
3230         FT_UINT32, BASE_DEC, VALS(x2ap_Criticality_vals), 0,
3231         "x2ap.Criticality", HFILL }},
3232     { &hf_x2ap_protocolIE_Field_value,
3233       { "value", "x2ap.value",
3234         FT_NONE, BASE_NONE, NULL, 0,
3235         "x2ap.ProtocolIE_Field_value", HFILL }},
3236     { &hf_x2ap_ProtocolExtensionContainer_item,
3237       { "ProtocolExtensionContainer", "x2ap.ProtocolExtensionContainer_item",
3238         FT_NONE, BASE_NONE, NULL, 0,
3239         "x2ap.ProtocolExtensionField", HFILL }},
3240     { &hf_x2ap_extension_id,
3241       { "id", "x2ap.id",
3242         FT_UINT32, BASE_DEC, VALS(x2ap_ProtocolIE_ID_vals), 0,
3243         "x2ap.ProtocolIE_ID", HFILL }},
3244     { &hf_x2ap_extensionValue,
3245       { "extensionValue", "x2ap.extensionValue",
3246         FT_NONE, BASE_NONE, NULL, 0,
3247         "x2ap.T_extensionValue", HFILL }},
3248     { &hf_x2ap_BroadcastPLMNs_Item_item,
3249       { "BroadcastPLMNs-Item", "x2ap.BroadcastPLMNs_Item_item",
3250         FT_BYTES, BASE_HEX, NULL, 0,
3251         "x2ap.PLMN_Identity", HFILL }},
3252     { &hf_x2ap_radioNetwork,
3253       { "radioNetwork", "x2ap.radioNetwork",
3254         FT_UINT32, BASE_DEC, VALS(x2ap_CauseRadioNetwork_vals), 0,
3255         "x2ap.CauseRadioNetwork", HFILL }},
3256     { &hf_x2ap_transport,
3257       { "transport", "x2ap.transport",
3258         FT_UINT32, BASE_DEC, VALS(x2ap_CauseTransport_vals), 0,
3259         "x2ap.CauseTransport", HFILL }},
3260     { &hf_x2ap_protocol,
3261       { "protocol", "x2ap.protocol",
3262         FT_UINT32, BASE_DEC, VALS(x2ap_CauseProtocol_vals), 0,
3263         "x2ap.CauseProtocol", HFILL }},
3264     { &hf_x2ap_misc,
3265       { "misc", "x2ap.misc",
3266         FT_UINT32, BASE_DEC, VALS(x2ap_CauseMisc_vals), 0,
3267         "x2ap.CauseMisc", HFILL }},
3268     { &hf_x2ap_pDCP_SN,
3269       { "pDCP-SN", "x2ap.pDCP_SN",
3270         FT_UINT32, BASE_DEC, NULL, 0,
3271         "x2ap.PDCP_SN", HFILL }},
3272     { &hf_x2ap_hFN,
3273       { "hFN", "x2ap.hFN",
3274         FT_UINT32, BASE_DEC, NULL, 0,
3275         "x2ap.HFN", HFILL }},
3276     { &hf_x2ap_iE_Extensions,
3277       { "iE-Extensions", "x2ap.iE_Extensions",
3278         FT_UINT32, BASE_DEC, NULL, 0,
3279         "x2ap.ProtocolExtensionContainer", HFILL }},
3280     { &hf_x2ap_procedureCode,
3281       { "procedureCode", "x2ap.procedureCode",
3282         FT_UINT32, BASE_DEC, VALS(x2ap_ProcedureCode_vals), 0,
3283         "x2ap.ProcedureCode", HFILL }},
3284     { &hf_x2ap_triggeringMessage,
3285       { "triggeringMessage", "x2ap.triggeringMessage",
3286         FT_UINT32, BASE_DEC, VALS(x2ap_TriggeringMessage_vals), 0,
3287         "x2ap.TriggeringMessage", HFILL }},
3288     { &hf_x2ap_procedureCriticality,
3289       { "procedureCriticality", "x2ap.procedureCriticality",
3290         FT_UINT32, BASE_DEC, VALS(x2ap_Criticality_vals), 0,
3291         "x2ap.Criticality", HFILL }},
3292     { &hf_x2ap_iEsCriticalityDiagnostics,
3293       { "iEsCriticalityDiagnostics", "x2ap.iEsCriticalityDiagnostics",
3294         FT_UINT32, BASE_DEC, NULL, 0,
3295         "x2ap.CriticalityDiagnostics_IE_List", HFILL }},
3296     { &hf_x2ap_CriticalityDiagnostics_IE_List_item,
3297       { "CriticalityDiagnostics-IE-List", "x2ap.CriticalityDiagnostics_IE_List_item",
3298         FT_NONE, BASE_NONE, NULL, 0,
3299         "x2ap.CriticalityDiagnostics_IE_List_item", HFILL }},
3300     { &hf_x2ap_iECriticality,
3301       { "iECriticality", "x2ap.iECriticality",
3302         FT_UINT32, BASE_DEC, VALS(x2ap_Criticality_vals), 0,
3303         "x2ap.Criticality", HFILL }},
3304     { &hf_x2ap_iE_ID,
3305       { "iE-ID", "x2ap.iE_ID",
3306         FT_UINT32, BASE_DEC, VALS(x2ap_ProtocolIE_ID_vals), 0,
3307         "x2ap.ProtocolIE_ID", HFILL }},
3308     { &hf_x2ap_typeOfError,
3309       { "typeOfError", "x2ap.typeOfError",
3310         FT_UINT32, BASE_DEC, VALS(x2ap_TypeOfError_vals), 0,
3311         "x2ap.TypeOfError", HFILL }},
3312     { &hf_x2ap_pLMN_Identity,
3313       { "pLMN-Identity", "x2ap.pLMN_Identity",
3314         FT_BYTES, BASE_HEX, NULL, 0,
3315         "x2ap.PLMN_Identity", HFILL }},
3316     { &hf_x2ap_eUTRANcellIdentifier,
3317       { "eUTRANcellIdentifier", "x2ap.eUTRANcellIdentifier",
3318         FT_BYTES, BASE_HEX, NULL, 0,
3319         "x2ap.EUTRANCellIdentifier", HFILL }},
3320     { &hf_x2ap_macro_eNB_ID,
3321       { "macro-eNB-ID", "x2ap.macro_eNB_ID",
3322         FT_BYTES, BASE_HEX, NULL, 0,
3323         "x2ap.BIT_STRING_SIZE_20", HFILL }},
3324     { &hf_x2ap_home_eNB_ID,
3325       { "home-eNB-ID", "x2ap.home_eNB_ID",
3326         FT_BYTES, BASE_HEX, NULL, 0,
3327         "x2ap.BIT_STRING_SIZE_28", HFILL }},
3328     { &hf_x2ap_EPLMNs_item,
3329       { "EPLMNs", "x2ap.EPLMNs_item",
3330         FT_BYTES, BASE_HEX, NULL, 0,
3331         "x2ap.PLMN_Identity", HFILL }},
3332     { &hf_x2ap_ForbiddenTAs_item,
3333       { "ForbiddenTAs", "x2ap.ForbiddenTAs_item",
3334         FT_NONE, BASE_NONE, NULL, 0,
3335         "x2ap.ForbiddenTAs_Item", HFILL }},
3336     { &hf_x2ap_forbiddenTACs,
3337       { "forbiddenTACs", "x2ap.forbiddenTACs",
3338         FT_UINT32, BASE_DEC, NULL, 0,
3339         "x2ap.ForbiddenTACs", HFILL }},
3340     { &hf_x2ap_ForbiddenTACs_item,
3341       { "ForbiddenTACs", "x2ap.ForbiddenTACs_item",
3342         FT_BYTES, BASE_HEX, NULL, 0,
3343         "x2ap.TAC", HFILL }},
3344     { &hf_x2ap_ForbiddenLAs_item,
3345       { "ForbiddenLAs", "x2ap.ForbiddenLAs_item",
3346         FT_NONE, BASE_NONE, NULL, 0,
3347         "x2ap.ForbiddenLAs_Item", HFILL }},
3348     { &hf_x2ap_forbiddenLACs,
3349       { "forbiddenLACs", "x2ap.forbiddenLACs",
3350         FT_UINT32, BASE_DEC, NULL, 0,
3351         "x2ap.ForbiddenLACs", HFILL }},
3352     { &hf_x2ap_ForbiddenLACs_item,
3353       { "ForbiddenLACs", "x2ap.ForbiddenLACs_item",
3354         FT_BYTES, BASE_HEX, NULL, 0,
3355         "x2ap.LAC", HFILL }},
3356     { &hf_x2ap_sAE_Bearer_MaximumBitrateDL,
3357       { "sAE-Bearer-MaximumBitrateDL", "x2ap.sAE_Bearer_MaximumBitrateDL",
3358         FT_UINT32, BASE_DEC, NULL, 0,
3359         "x2ap.BitRate", HFILL }},
3360     { &hf_x2ap_sAE_Bearer_MaximumBitrateUL,
3361       { "sAE-Bearer-MaximumBitrateUL", "x2ap.sAE_Bearer_MaximumBitrateUL",
3362         FT_UINT32, BASE_DEC, NULL, 0,
3363         "x2ap.BitRate", HFILL }},
3364     { &hf_x2ap_sAE_Bearer_GuaranteedBitrateDL,
3365       { "sAE-Bearer-GuaranteedBitrateDL", "x2ap.sAE_Bearer_GuaranteedBitrateDL",
3366         FT_UINT32, BASE_DEC, NULL, 0,
3367         "x2ap.BitRate", HFILL }},
3368     { &hf_x2ap_sAE_Bearer_GuaranteedBitrateUL,
3369       { "sAE-Bearer-GuaranteedBitrateUL", "x2ap.sAE_Bearer_GuaranteedBitrateUL",
3370         FT_UINT32, BASE_DEC, NULL, 0,
3371         "x2ap.BitRate", HFILL }},
3372     { &hf_x2ap_eNB_ID,
3373       { "eNB-ID", "x2ap.eNB_ID",
3374         FT_UINT32, BASE_DEC, VALS(x2ap_ENB_ID_vals), 0,
3375         "x2ap.ENB_ID", HFILL }},
3376     { &hf_x2ap_transportLayerAddress,
3377       { "transportLayerAddress", "x2ap.transportLayerAddress",
3378         FT_BYTES, BASE_HEX, NULL, 0,
3379         "x2ap.TransportLayerAddress", HFILL }},
3380     { &hf_x2ap_gTP_TEID,
3381       { "gTP-TEID", "x2ap.gTP_TEID",
3382         FT_BYTES, BASE_HEX, NULL, 0,
3383         "x2ap.GTP_TEI", HFILL }},
3384     { &hf_x2ap_GUGroupIDList_item,
3385       { "GUGroupIDList", "x2ap.GUGroupIDList_item",
3386         FT_NONE, BASE_NONE, NULL, 0,
3387         "x2ap.GU_Group_ID", HFILL }},
3388     { &hf_x2ap_mME_Group_ID,
3389       { "mME-Group-ID", "x2ap.mME_Group_ID",
3390         FT_BYTES, BASE_HEX, NULL, 0,
3391         "x2ap.MME_Group_ID", HFILL }},
3392     { &hf_x2ap_gU_Group_ID,
3393       { "gU-Group-ID", "x2ap.gU_Group_ID",
3394         FT_NONE, BASE_NONE, NULL, 0,
3395         "x2ap.GU_Group_ID", HFILL }},
3396     { &hf_x2ap_mMME_Code,
3397       { "mMME-Code", "x2ap.mMME_Code",
3398         FT_BYTES, BASE_HEX, NULL, 0,
3399         "x2ap.MME_Code", HFILL }},
3400     { &hf_x2ap_servingPLMN,
3401       { "servingPLMN", "x2ap.servingPLMN",
3402         FT_BYTES, BASE_HEX, NULL, 0,
3403         "x2ap.PLMN_Identity", HFILL }},
3404     { &hf_x2ap_equivalentPLMNs,
3405       { "equivalentPLMNs", "x2ap.equivalentPLMNs",
3406         FT_UINT32, BASE_DEC, NULL, 0,
3407         "x2ap.EPLMNs", HFILL }},
3408     { &hf_x2ap_forbiddenTAs,
3409       { "forbiddenTAs", "x2ap.forbiddenTAs",
3410         FT_UINT32, BASE_DEC, NULL, 0,
3411         "x2ap.ForbiddenTAs", HFILL }},
3412     { &hf_x2ap_forbiddenLAs,
3413       { "forbiddenLAs", "x2ap.forbiddenLAs",
3414         FT_UINT32, BASE_DEC, NULL, 0,
3415         "x2ap.ForbiddenLAs", HFILL }},
3416     { &hf_x2ap_forbiddenInterRATs,
3417       { "forbiddenInterRATs", "x2ap.forbiddenInterRATs",
3418         FT_UINT32, BASE_DEC, VALS(x2ap_ForbiddenInterRATs_vals), 0,
3419         "x2ap.ForbiddenInterRATs", HFILL }},
3420     { &hf_x2ap_InterfacesToTrace_item,
3421       { "InterfacesToTrace", "x2ap.InterfacesToTrace_item",
3422         FT_NONE, BASE_NONE, NULL, 0,
3423         "x2ap.ProtocolIE_Single_Container", HFILL }},
3424     { &hf_x2ap_traceInterface,
3425       { "traceInterface", "x2ap.traceInterface",
3426         FT_UINT32, BASE_DEC, VALS(x2ap_TraceInterface_vals), 0,
3427         "x2ap.TraceInterface", HFILL }},
3428     { &hf_x2ap_traceDepth,
3429       { "traceDepth", "x2ap.traceDepth",
3430         FT_UINT32, BASE_DEC, VALS(x2ap_TraceDepth_vals), 0,
3431         "x2ap.TraceDepth", HFILL }},
3432     { &hf_x2ap_global_Cell_ID,
3433       { "global-Cell-ID", "x2ap.global_Cell_ID",
3434         FT_NONE, BASE_NONE, NULL, 0,
3435         "x2ap.ECGI", HFILL }},
3436     { &hf_x2ap_cellType,
3437       { "cellType", "x2ap.cellType",
3438         FT_UINT32, BASE_DEC, VALS(x2ap_CellType_vals), 0,
3439         "x2ap.CellType", HFILL }},
3440     { &hf_x2ap_time_UE_StayedInCell,
3441       { "time-UE-StayedInCell", "x2ap.time_UE_StayedInCell",
3442         FT_INT32, BASE_DEC, NULL, 0,
3443         "x2ap.Time_UE_StayedInCell", HFILL }},
3444     { &hf_x2ap_eventType,
3445       { "eventType", "x2ap.eventType",
3446         FT_UINT32, BASE_DEC, VALS(x2ap_EventType_vals), 0,
3447         "x2ap.EventType", HFILL }},
3448     { &hf_x2ap_reportArea,
3449       { "reportArea", "x2ap.reportArea",
3450         FT_UINT32, BASE_DEC, VALS(x2ap_ReportArea_vals), 0,
3451         "x2ap.ReportArea", HFILL }},
3452     { &hf_x2ap_rNTP_PerPRB,
3453       { "rNTP-PerPRB", "x2ap.rNTP_PerPRB",
3454         FT_BYTES, BASE_HEX, NULL, 0,
3455         "x2ap.BIT_STRING_SIZE_6_110_", HFILL }},
3456     { &hf_x2ap_rNTP_Threshold,
3457       { "rNTP-Threshold", "x2ap.rNTP_Threshold",
3458         FT_UINT32, BASE_DEC, VALS(x2ap_RNTP_Threshold_vals), 0,
3459         "x2ap.RNTP_Threshold", HFILL }},
3460     { &hf_x2ap_numberOfCellSpecificAntennaPorts,
3461       { "numberOfCellSpecificAntennaPorts", "x2ap.numberOfCellSpecificAntennaPorts",
3462         FT_UINT32, BASE_DEC, VALS(x2ap_T_numberOfCellSpecificAntennaPorts_vals), 0,
3463         "x2ap.T_numberOfCellSpecificAntennaPorts", HFILL }},
3464     { &hf_x2ap_p_B,
3465       { "p-B", "x2ap.p_B",
3466         FT_UINT32, BASE_DEC, NULL, 0,
3467         "x2ap.INTEGER_0_3_", HFILL }},
3468     { &hf_x2ap_pDCCH_InterferenceImpact,
3469       { "pDCCH-InterferenceImpact", "x2ap.pDCCH_InterferenceImpact",
3470         FT_UINT32, BASE_DEC, NULL, 0,
3471         "x2ap.INTEGER_0_4_", HFILL }},
3472     { &hf_x2ap_qCI,
3473       { "qCI", "x2ap.qCI",
3474         FT_UINT32, BASE_DEC, NULL, 0,
3475         "x2ap.QCI", HFILL }},
3476     { &hf_x2ap_allocationAndRetentionPriority,
3477       { "allocationAndRetentionPriority", "x2ap.allocationAndRetentionPriority",
3478         FT_UINT32, BASE_DEC, NULL, 0,
3479         "x2ap.AllocationAndRetentionPriority", HFILL }},
3480     { &hf_x2ap_gbrQosInformation,
3481       { "gbrQosInformation", "x2ap.gbrQosInformation",
3482         FT_NONE, BASE_NONE, NULL, 0,
3483         "x2ap.GBR_QosInformation", HFILL }},
3484     { &hf_x2ap_ServedCells_item,
3485       { "ServedCells", "x2ap.ServedCells_item",
3486         FT_NONE, BASE_NONE, NULL, 0,
3487         "x2ap.ServedCell_Information", HFILL }},
3488     { &hf_x2ap_phyCID,
3489       { "phyCID", "x2ap.phyCID",
3490         FT_UINT32, BASE_DEC, NULL, 0,
3491         "x2ap.PhyCID", HFILL }},
3492     { &hf_x2ap_cellId,
3493       { "cellId", "x2ap.cellId",
3494         FT_NONE, BASE_NONE, NULL, 0,
3495         "x2ap.ECGI", HFILL }},
3496     { &hf_x2ap_tAC,
3497       { "tAC", "x2ap.tAC",
3498         FT_BYTES, BASE_HEX, NULL, 0,
3499         "x2ap.TAC", HFILL }},
3500     { &hf_x2ap_broadcastPLMNs,
3501       { "broadcastPLMNs", "x2ap.broadcastPLMNs",
3502         FT_UINT32, BASE_DEC, NULL, 0,
3503         "x2ap.BroadcastPLMNs_Item", HFILL }},
3504     { &hf_x2ap_uL_EARFCN,
3505       { "uL-EARFCN", "x2ap.uL_EARFCN",
3506         FT_UINT32, BASE_DEC, NULL, 0,
3507         "x2ap.EARFCN", HFILL }},
3508     { &hf_x2ap_dL_EARFCN,
3509       { "dL-EARFCN", "x2ap.dL_EARFCN",
3510         FT_UINT32, BASE_DEC, NULL, 0,
3511         "x2ap.EARFCN", HFILL }},
3512     { &hf_x2ap_cell_Transmission_Bandwidth,
3513       { "cell-Transmission-Bandwidth", "x2ap.cell_Transmission_Bandwidth",
3514         FT_UINT32, BASE_DEC, VALS(x2ap_Cell_Transmission_Bandwidth_vals), 0,
3515         "x2ap.Cell_Transmission_Bandwidth", HFILL }},
3516     { &hf_x2ap_traceReference,
3517       { "traceReference", "x2ap.traceReference",
3518         FT_BYTES, BASE_HEX, NULL, 0,
3519         "x2ap.TraceReference", HFILL }},
3520     { &hf_x2ap_interfacesToTrace,
3521       { "interfacesToTrace", "x2ap.interfacesToTrace",
3522         FT_UINT32, BASE_DEC, NULL, 0,
3523         "x2ap.InterfacesToTrace", HFILL }},
3524     { &hf_x2ap_UE_HistoryInformation_item,
3525       { "UE-HistoryInformation", "x2ap.UE_HistoryInformation_item",
3526         FT_NONE, BASE_NONE, NULL, 0,
3527         "x2ap.LastVisitedCell_Item", HFILL }},
3528     { &hf_x2ap_uEaggregateMaximumBitRateDownlink,
3529       { "uEaggregateMaximumBitRateDownlink", "x2ap.uEaggregateMaximumBitRateDownlink",
3530         FT_UINT32, BASE_DEC, NULL, 0,
3531         "x2ap.BitRate", HFILL }},
3532     { &hf_x2ap_uEaggregateMaximumBitRateUplink,
3533       { "uEaggregateMaximumBitRateUplink", "x2ap.uEaggregateMaximumBitRateUplink",
3534         FT_UINT32, BASE_DEC, NULL, 0,
3535         "x2ap.BitRate", HFILL }},
3536     { &hf_x2ap_UL_InterferenceOverloadIndication_item,
3537       { "UL-InterferenceOverloadIndication", "x2ap.UL_InterferenceOverloadIndication_item",
3538         FT_UINT32, BASE_DEC, VALS(x2ap_UL_InterferenceOverloadIndication_Item_vals), 0,
3539         "x2ap.UL_InterferenceOverloadIndication_Item", HFILL }},
3540     { &hf_x2ap_UL_HighInterferenceIndicationInfo_item,
3541       { "UL-HighInterferenceIndicationInfo", "x2ap.UL_HighInterferenceIndicationInfo_item",
3542         FT_NONE, BASE_NONE, NULL, 0,
3543         "x2ap.UL_HighInterferenceIndicationInfo_Item", HFILL }},
3544     { &hf_x2ap_ul_interferenceindication,
3545       { "ul-interferenceindication", "x2ap.ul_interferenceindication",
3546         FT_BYTES, BASE_HEX, NULL, 0,
3547         "x2ap.UL_HighInterferenceIndication", HFILL }},
3548     { &hf_x2ap_target_Cell_ID,
3549       { "target-Cell-ID", "x2ap.target_Cell_ID",
3550         FT_NONE, BASE_NONE, NULL, 0,
3551         "x2ap.ECGI", HFILL }},
3552     { &hf_x2ap_protocolIEs,
3553       { "protocolIEs", "x2ap.protocolIEs",
3554         FT_UINT32, BASE_DEC, NULL, 0,
3555         "x2ap.ProtocolIE_Container", HFILL }},
3556     { &hf_x2ap_mME_UE_S1AP_ID,
3557       { "mME-UE-S1AP-ID", "x2ap.mME_UE_S1AP_ID",
3558         FT_UINT32, BASE_DEC, NULL, 0,
3559         "x2ap.UE_S1AP_ID", HFILL }},
3560     { &hf_x2ap_uEaggregateMaximumBitRate,
3561       { "uEaggregateMaximumBitRate", "x2ap.uEaggregateMaximumBitRate",
3562         FT_NONE, BASE_NONE, NULL, 0,
3563         "x2ap.UEAggregateMaximumBitRate", HFILL }},
3564     { &hf_x2ap_subscriberProfileIDforRFP,
3565       { "subscriberProfileIDforRFP", "x2ap.subscriberProfileIDforRFP",
3566         FT_UINT32, BASE_DEC, NULL, 0,
3567         "x2ap.SubscriberProfileIDforRFP", HFILL }},
3568     { &hf_x2ap_bearers_ToBeSetup_List,
3569       { "bearers-ToBeSetup-List", "x2ap.bearers_ToBeSetup_List",
3570         FT_UINT32, BASE_DEC, NULL, 0,
3571         "x2ap.Bearers_ToBeSetup_List", HFILL }},
3572     { &hf_x2ap_rRC_Context,
3573       { "rRC-Context", "x2ap.rRC_Context",
3574         FT_BYTES, BASE_HEX, NULL, 0,
3575         "x2ap.RRC_Context", HFILL }},
3576     { &hf_x2ap_handoverRestrictionList,
3577       { "handoverRestrictionList", "x2ap.handoverRestrictionList",
3578         FT_NONE, BASE_NONE, NULL, 0,
3579         "x2ap.HandoverRestrictionList", HFILL }},
3580     { &hf_x2ap_locationReportingInformation,
3581       { "locationReportingInformation", "x2ap.locationReportingInformation",
3582         FT_NONE, BASE_NONE, NULL, 0,
3583         "x2ap.LocationReportingInformation", HFILL }},
3584     { &hf_x2ap_Bearers_ToBeSetup_List_item,
3585       { "Bearers-ToBeSetup-List", "x2ap.Bearers_ToBeSetup_List_item",
3586         FT_NONE, BASE_NONE, NULL, 0,
3587         "x2ap.ProtocolIE_Single_Container", HFILL }},
3588     { &hf_x2ap_sAE_Bearer_ID,
3589       { "sAE-Bearer-ID", "x2ap.sAE_Bearer_ID",
3590         FT_UINT32, BASE_DEC, NULL, 0,
3591         "x2ap.Bearer_ID", HFILL }},
3592     { &hf_x2ap_sAE_BearerLevel_QoS_Parameters,
3593       { "sAE-BearerLevel-QoS-Parameters", "x2ap.sAE_BearerLevel_QoS_Parameters",
3594         FT_NONE, BASE_NONE, NULL, 0,
3595         "x2ap.SAE_BearerLevel_QoS_Parameters", HFILL }},
3596     { &hf_x2ap_dL_Forwarding,
3597       { "dL-Forwarding", "x2ap.dL_Forwarding",
3598         FT_UINT32, BASE_DEC, VALS(x2ap_DL_Forwarding_vals), 0,
3599         "x2ap.DL_Forwarding", HFILL }},
3600     { &hf_x2ap_uL_GTPtunnelEndpoint,
3601       { "uL-GTPtunnelEndpoint", "x2ap.uL_GTPtunnelEndpoint",
3602         FT_NONE, BASE_NONE, NULL, 0,
3603         "x2ap.GTPtunnelEndpoint", HFILL }},
3604     { &hf_x2ap_Bearers_Admitted_List_item,
3605       { "Bearers-Admitted-List", "x2ap.Bearers_Admitted_List_item",
3606         FT_NONE, BASE_NONE, NULL, 0,
3607         "x2ap.ProtocolIE_Single_Container", HFILL }},
3608     { &hf_x2ap_bearer_ID,
3609       { "bearer-ID", "x2ap.bearer_ID",
3610         FT_UINT32, BASE_DEC, NULL, 0,
3611         "x2ap.Bearer_ID", HFILL }},
3612     { &hf_x2ap_uL_GTP_TunnelEndpoint,
3613       { "uL-GTP-TunnelEndpoint", "x2ap.uL_GTP_TunnelEndpoint",
3614         FT_NONE, BASE_NONE, NULL, 0,
3615         "x2ap.GTPtunnelEndpoint", HFILL }},
3616     { &hf_x2ap_dL_GTP_TunnelEndpoint,
3617       { "dL-GTP-TunnelEndpoint", "x2ap.dL_GTP_TunnelEndpoint",
3618         FT_NONE, BASE_NONE, NULL, 0,
3619         "x2ap.GTPtunnelEndpoint", HFILL }},
3620     { &hf_x2ap_Bearers_NotAdmitted_List_item,
3621       { "Bearers-NotAdmitted-List", "x2ap.Bearers_NotAdmitted_List_item",
3622         FT_NONE, BASE_NONE, NULL, 0,
3623         "x2ap.ProtocolIE_Single_Container", HFILL }},
3624     { &hf_x2ap_cause,
3625       { "cause", "x2ap.cause",
3626         FT_UINT32, BASE_DEC, VALS(x2ap_Cause_vals), 0,
3627         "x2ap.Cause", HFILL }},
3628     { &hf_x2ap_Bearers_SubjectToStatusTransfer_List_item,
3629       { "Bearers-SubjectToStatusTransfer-List", "x2ap.Bearers_SubjectToStatusTransfer_List_item",
3630         FT_NONE, BASE_NONE, NULL, 0,
3631         "x2ap.ProtocolIE_Single_Container", HFILL }},
3632     { &hf_x2ap_receiveStatusofULPDCPSDUs,
3633       { "receiveStatusofULPDCPSDUs", "x2ap.receiveStatusofULPDCPSDUs",
3634         FT_BYTES, BASE_HEX, NULL, 0,
3635         "x2ap.ReceiveStatusofULPDCPSDUs", HFILL }},
3636     { &hf_x2ap_uL_COUNTvalue,
3637       { "uL-COUNTvalue", "x2ap.uL_COUNTvalue",
3638         FT_NONE, BASE_NONE, NULL, 0,
3639         "x2ap.COUNTvalue", HFILL }},
3640     { &hf_x2ap_dL_COUNTvalue,
3641       { "dL-COUNTvalue", "x2ap.dL_COUNTvalue",
3642         FT_NONE, BASE_NONE, NULL, 0,
3643         "x2ap.COUNTvalue", HFILL }},
3644     { &hf_x2ap_CellInformation_List_item,
3645       { "CellInformation-List", "x2ap.CellInformation_List_item",
3646         FT_NONE, BASE_NONE, NULL, 0,
3647         "x2ap.ProtocolIE_Single_Container", HFILL }},
3648     { &hf_x2ap_cell_ID,
3649       { "cell-ID", "x2ap.cell_ID",
3650         FT_NONE, BASE_NONE, NULL, 0,
3651         "x2ap.ECGI", HFILL }},
3652     { &hf_x2ap_ul_InterferenceOverloadIndication,
3653       { "ul-InterferenceOverloadIndication", "x2ap.ul_InterferenceOverloadIndication",
3654         FT_UINT32, BASE_DEC, NULL, 0,
3655         "x2ap.UL_InterferenceOverloadIndication", HFILL }},
3656     { &hf_x2ap_ul_HighInterferenceIndicationInfo,
3657       { "ul-HighInterferenceIndicationInfo", "x2ap.ul_HighInterferenceIndicationInfo",
3658         FT_UINT32, BASE_DEC, NULL, 0,
3659         "x2ap.UL_HighInterferenceIndicationInfo", HFILL }},
3660     { &hf_x2ap_relativeNarrowbandTxPower,
3661       { "relativeNarrowbandTxPower", "x2ap.relativeNarrowbandTxPower",
3662         FT_NONE, BASE_NONE, NULL, 0,
3663         "x2ap.RelativeNarrowbandTxPower", HFILL }},
3664     { &hf_x2ap_ServedCellsToModify_item,
3665       { "ServedCellsToModify", "x2ap.ServedCellsToModify_item",
3666         FT_NONE, BASE_NONE, NULL, 0,
3667         "x2ap.ServedCellsToModify_Item", HFILL }},
3668     { &hf_x2ap_old_ecgi,
3669       { "old-ecgi", "x2ap.old_ecgi",
3670         FT_NONE, BASE_NONE, NULL, 0,
3671         "x2ap.ECGI", HFILL }},
3672     { &hf_x2ap_served_cells,
3673       { "served-cells", "x2ap.served_cells",
3674         FT_NONE, BASE_NONE, NULL, 0,
3675         "x2ap.ServedCell_Information", HFILL }},
3676     { &hf_x2ap_Old_ECGIs_item,
3677       { "Old-ECGIs", "x2ap.Old_ECGIs_item",
3678         FT_NONE, BASE_NONE, NULL, 0,
3679         "x2ap.ECGI", HFILL }},
3680     { &hf_x2ap_CellToReport_List_item,
3681       { "CellToReport-List", "x2ap.CellToReport_List_item",
3682         FT_NONE, BASE_NONE, NULL, 0,
3683         "x2ap.ProtocolIE_Single_Container", HFILL }},
3684     { &hf_x2ap_CellMeasurementResult_List_item,
3685       { "CellMeasurementResult-List", "x2ap.CellMeasurementResult_List_item",
3686         FT_NONE, BASE_NONE, NULL, 0,
3687         "x2ap.ProtocolIE_Single_Container", HFILL }},
3688     { &hf_x2ap_resoureStatus,
3689       { "resoureStatus", "x2ap.resoureStatus",
3690         FT_INT32, BASE_DEC, NULL, 0,
3691         "x2ap.ResourceStatus", HFILL }},
3692     { &hf_x2ap_initiatingMessage,
3693       { "initiatingMessage", "x2ap.initiatingMessage",
3694         FT_NONE, BASE_NONE, NULL, 0,
3695         "x2ap.InitiatingMessage", HFILL }},
3696     { &hf_x2ap_successfulOutcome,
3697       { "successfulOutcome", "x2ap.successfulOutcome",
3698         FT_NONE, BASE_NONE, NULL, 0,
3699         "x2ap.SuccessfulOutcome", HFILL }},
3700     { &hf_x2ap_unsuccessfulOutcome,
3701       { "unsuccessfulOutcome", "x2ap.unsuccessfulOutcome",
3702         FT_NONE, BASE_NONE, NULL, 0,
3703         "x2ap.UnsuccessfulOutcome", HFILL }},
3704     { &hf_x2ap_initiatingMessage_value,
3705       { "value", "x2ap.value",
3706         FT_NONE, BASE_NONE, NULL, 0,
3707         "x2ap.InitiatingMessage_value", HFILL }},
3708     { &hf_x2ap_successfulOutcome_value,
3709       { "value", "x2ap.value",
3710         FT_NONE, BASE_NONE, NULL, 0,
3711         "x2ap.SuccessfulOutcome_value", HFILL }},
3712     { &hf_x2ap_value,
3713       { "value", "x2ap.value",
3714         FT_NONE, BASE_NONE, NULL, 0,
3715         "x2ap.UnsuccessfulOutcome_value", HFILL }},
3716
3717 /*--- End of included file: packet-x2ap-hfarr.c ---*/
3718 #line 140 "packet-x2ap-template.c"
3719   };
3720
3721   /* List of subtrees */
3722   static gint *ett[] = {
3723                   &ett_x2ap,
3724
3725 /*--- Included file: packet-x2ap-ettarr.c ---*/
3726 #line 1 "packet-x2ap-ettarr.c"
3727     &ett_x2ap_ProtocolIE_Container,
3728     &ett_x2ap_ProtocolIE_Field,
3729     &ett_x2ap_ProtocolExtensionContainer,
3730     &ett_x2ap_ProtocolExtensionField,
3731     &ett_x2ap_BroadcastPLMNs_Item,
3732     &ett_x2ap_Cause,
3733     &ett_x2ap_COUNTvalue,
3734     &ett_x2ap_CriticalityDiagnostics,
3735     &ett_x2ap_CriticalityDiagnostics_IE_List,
3736     &ett_x2ap_CriticalityDiagnostics_IE_List_item,
3737     &ett_x2ap_ECGI,
3738     &ett_x2ap_ENB_ID,
3739     &ett_x2ap_EPLMNs,
3740     &ett_x2ap_ForbiddenTAs,
3741     &ett_x2ap_ForbiddenTAs_Item,
3742     &ett_x2ap_ForbiddenTACs,
3743     &ett_x2ap_ForbiddenLAs,
3744     &ett_x2ap_ForbiddenLAs_Item,
3745     &ett_x2ap_ForbiddenLACs,
3746     &ett_x2ap_GBR_QosInformation,
3747     &ett_x2ap_GlobalENB_ID,
3748     &ett_x2ap_GTPtunnelEndpoint,
3749     &ett_x2ap_GUGroupIDList,
3750     &ett_x2ap_GU_Group_ID,
3751     &ett_x2ap_GUMMEI,
3752     &ett_x2ap_HandoverRestrictionList,
3753     &ett_x2ap_InterfacesToTrace,
3754     &ett_x2ap_InterfacesToTrace_Item,
3755     &ett_x2ap_LastVisitedCell_Item,
3756     &ett_x2ap_LocationReportingInformation,
3757     &ett_x2ap_RelativeNarrowbandTxPower,
3758     &ett_x2ap_SAE_BearerLevel_QoS_Parameters,
3759     &ett_x2ap_ServedCells,
3760     &ett_x2ap_ServedCell_Information,
3761     &ett_x2ap_TraceActivation,
3762     &ett_x2ap_UE_HistoryInformation,
3763     &ett_x2ap_UEAggregateMaximumBitRate,
3764     &ett_x2ap_UL_InterferenceOverloadIndication,
3765     &ett_x2ap_UL_HighInterferenceIndicationInfo,
3766     &ett_x2ap_UL_HighInterferenceIndicationInfo_Item,
3767     &ett_x2ap_HandoverRequest,
3768     &ett_x2ap_UE_ContextInformation,
3769     &ett_x2ap_Bearers_ToBeSetup_List,
3770     &ett_x2ap_Bearers_ToBeSetup_Item,
3771     &ett_x2ap_HandoverRequestAcknowledge,
3772     &ett_x2ap_Bearers_Admitted_List,
3773     &ett_x2ap_Bearers_Admitted_Item,
3774     &ett_x2ap_Bearers_NotAdmitted_List,
3775     &ett_x2ap_Bearers_NotAdmitted_Item,
3776     &ett_x2ap_HandoverPreparationFailure,
3777     &ett_x2ap_SNStatusTransfer,
3778     &ett_x2ap_Bearers_SubjectToStatusTransfer_List,
3779     &ett_x2ap_Bearers_SubjectToStatusTransfer_Item,
3780     &ett_x2ap_UEContextRelease,
3781     &ett_x2ap_HandoverCancel,
3782     &ett_x2ap_ErrorIndication,
3783     &ett_x2ap_ResetRequest,
3784     &ett_x2ap_ResetResponse,
3785     &ett_x2ap_X2SetupRequest,
3786     &ett_x2ap_X2SetupResponse,
3787     &ett_x2ap_X2SetupFailure,
3788     &ett_x2ap_LoadInformation,
3789     &ett_x2ap_CellInformation_List,
3790     &ett_x2ap_CellInformation_Item,
3791     &ett_x2ap_ENBConfigurationUpdate,
3792     &ett_x2ap_ServedCellsToModify,
3793     &ett_x2ap_ServedCellsToModify_Item,
3794     &ett_x2ap_Old_ECGIs,
3795     &ett_x2ap_ENBConfigurationUpdateAcknowledge,
3796     &ett_x2ap_ENBConfigurationUpdateFailure,
3797     &ett_x2ap_ResourceStatusRequest,
3798     &ett_x2ap_CellToReport_List,
3799     &ett_x2ap_CellToReport_Item,
3800     &ett_x2ap_ResourceStatusResponse,
3801     &ett_x2ap_ResourceStatusFailure,
3802     &ett_x2ap_ResourceStatusUpdate,
3803     &ett_x2ap_CellMeasurementResult_List,
3804     &ett_x2ap_CellMeasurementResult_Item,
3805     &ett_x2ap_X2AP_PDU,
3806     &ett_x2ap_InitiatingMessage,
3807     &ett_x2ap_SuccessfulOutcome,
3808     &ett_x2ap_UnsuccessfulOutcome,
3809
3810 /*--- End of included file: packet-x2ap-ettarr.c ---*/
3811 #line 146 "packet-x2ap-template.c"
3812   };
3813
3814
3815   /* Register protocol */
3816   proto_x2ap = proto_register_protocol(PNAME, PSNAME, PFNAME);
3817   /* Register fields and subtrees */
3818   proto_register_field_array(proto_x2ap, hf, array_length(hf));
3819   proto_register_subtree_array(ett, array_length(ett));
3820  
3821   /* Register dissector */
3822   register_dissector("x2ap", dissect_x2ap, proto_x2ap);
3823
3824   /* Register dissector tables */
3825   x2ap_ies_dissector_table = register_dissector_table("x2ap.ies", "X2AP-PROTOCOL-IES", FT_UINT32, BASE_DEC);
3826   x2ap_extension_dissector_table = register_dissector_table("x2ap.extension", "X2AP-PROTOCOL-EXTENSION", FT_UINT32, BASE_DEC);
3827   x2ap_proc_imsg_dissector_table = register_dissector_table("x2ap.proc.imsg", "X2AP-ELEMENTARY-PROCEDURE InitiatingMessage", FT_STRING, BASE_NONE);
3828   x2ap_proc_sout_dissector_table = register_dissector_table("x2ap.proc.sout", "X2AP-ELEMENTARY-PROCEDURE SuccessfulOutcome", FT_STRING, BASE_NONE);
3829   x2ap_proc_uout_dissector_table = register_dissector_table("x2ap.proc.uout", "X2AP-ELEMENTARY-PROCEDURE UnsuccessfulOutcome", FT_STRING, BASE_NONE);
3830
3831 }
3832
3833
3834 /*--- proto_reg_handoff_x2ap ---------------------------------------*/
3835 void
3836 proto_reg_handoff_x2ap(void)
3837 {
3838         dissector_handle_t x2ap_handle;
3839
3840         x2ap_handle = find_dissector("x2ap");
3841         dissector_add_handle("sctp.port", x2ap_handle);  /* for "decode-as" */
3842
3843
3844 /*--- Included file: packet-x2ap-dis-tab.c ---*/
3845 #line 1 "packet-x2ap-dis-tab.c"
3846   dissector_add("x2ap.ies", id_Bearers_Admitted_Item, new_create_dissector_handle(dissect_Bearers_Admitted_Item_PDU, proto_x2ap));
3847   dissector_add("x2ap.ies", id_Bearers_Admitted_List, new_create_dissector_handle(dissect_Bearers_Admitted_List_PDU, proto_x2ap));
3848   dissector_add("x2ap.ies", id_Bearers_NotAdmitted_Item, new_create_dissector_handle(dissect_Bearers_NotAdmitted_Item_PDU, proto_x2ap));
3849   dissector_add("x2ap.ies", id_Bearers_NotAdmitted_List, new_create_dissector_handle(dissect_Bearers_NotAdmitted_List_PDU, proto_x2ap));
3850   dissector_add("x2ap.ies", id_Bearers_ToBeSetup_Item, new_create_dissector_handle(dissect_Bearers_ToBeSetup_Item_PDU, proto_x2ap));
3851   dissector_add("x2ap.ies", id_Cause, new_create_dissector_handle(dissect_Cause_PDU, proto_x2ap));
3852   dissector_add("x2ap.ies", id_CellInformation, new_create_dissector_handle(dissect_CellInformation_List_PDU, proto_x2ap));
3853   dissector_add("x2ap.ies", id_CellInformation_Item, new_create_dissector_handle(dissect_CellInformation_Item_PDU, proto_x2ap));
3854   dissector_add("x2ap.ies", id_InterfacesToTrace_Item, new_create_dissector_handle(dissect_InterfacesToTrace_Item_PDU, proto_x2ap));
3855   dissector_add("x2ap.ies", id_New_eNB_UE_X2AP_ID, new_create_dissector_handle(dissect_UE_X2AP_ID_PDU, proto_x2ap));
3856   dissector_add("x2ap.ies", id_Old_eNB_UE_X2AP_ID, new_create_dissector_handle(dissect_UE_X2AP_ID_PDU, proto_x2ap));
3857   dissector_add("x2ap.ies", id_TargetCell_ID, new_create_dissector_handle(dissect_ECGI_PDU, proto_x2ap));
3858   dissector_add("x2ap.ies", id_TargeteNBtoSource_eNBTransparentContainer, new_create_dissector_handle(dissect_TargeteNBtoSource_eNBTransparentContainer_PDU, proto_x2ap));
3859   dissector_add("x2ap.ies", id_TraceActivation, new_create_dissector_handle(dissect_TraceActivation_PDU, proto_x2ap));
3860   dissector_add("x2ap.ies", id_UE_ContextInformation, new_create_dissector_handle(dissect_UE_ContextInformation_PDU, proto_x2ap));
3861   dissector_add("x2ap.ies", id_UE_HistoryInformation, new_create_dissector_handle(dissect_UE_HistoryInformation_PDU, proto_x2ap));
3862   dissector_add("x2ap.ies", id_UE_X2AP_ID, new_create_dissector_handle(dissect_UE_X2AP_ID_PDU, proto_x2ap));
3863   dissector_add("x2ap.ies", id_CriticalityDiagnostics, new_create_dissector_handle(dissect_CriticalityDiagnostics_PDU, proto_x2ap));
3864   dissector_add("x2ap.ies", id_Bearers_SubjectToStatusTransfer_List, new_create_dissector_handle(dissect_Bearers_SubjectToStatusTransfer_List_PDU, proto_x2ap));
3865   dissector_add("x2ap.ies", id_Bearers_SubjectToStatusTransfer_Item, new_create_dissector_handle(dissect_Bearers_SubjectToStatusTransfer_Item_PDU, proto_x2ap));
3866   dissector_add("x2ap.ies", id_ServedCells, new_create_dissector_handle(dissect_ServedCells_PDU, proto_x2ap));
3867   dissector_add("x2ap.ies", id_GlobalENB_ID, new_create_dissector_handle(dissect_GlobalENB_ID_PDU, proto_x2ap));
3868   dissector_add("x2ap.ies", id_TimeToWait, new_create_dissector_handle(dissect_TimeToWait_PDU, proto_x2ap));
3869   dissector_add("x2ap.ies", id_GUMMEI_ID, new_create_dissector_handle(dissect_GUMMEI_PDU, proto_x2ap));
3870   dissector_add("x2ap.ies", id_GUGroupIDList, new_create_dissector_handle(dissect_GUGroupIDList_PDU, proto_x2ap));
3871   dissector_add("x2ap.ies", id_ServedCellsToAdd, new_create_dissector_handle(dissect_ServedCells_PDU, proto_x2ap));
3872   dissector_add("x2ap.ies", id_ServedCellsToModify, new_create_dissector_handle(dissect_ServedCellsToModify_PDU, proto_x2ap));
3873   dissector_add("x2ap.ies", id_ServedCellsToDelete, new_create_dissector_handle(dissect_Old_ECGIs_PDU, proto_x2ap));
3874   dissector_add("x2ap.ies", id_Registration_Request, new_create_dissector_handle(dissect_Registration_Request_PDU, proto_x2ap));
3875   dissector_add("x2ap.ies", id_CellToReport, new_create_dissector_handle(dissect_CellToReport_List_PDU, proto_x2ap));
3876   dissector_add("x2ap.ies", id_ReportingPeriodicity, new_create_dissector_handle(dissect_ReportingPeriod_PDU, proto_x2ap));
3877   dissector_add("x2ap.ies", id_CellToReport_Item, new_create_dissector_handle(dissect_CellToReport_Item_PDU, proto_x2ap));
3878   dissector_add("x2ap.ies", id_CellMeasurementResult, new_create_dissector_handle(dissect_CellMeasurementResult_List_PDU, proto_x2ap));
3879   dissector_add("x2ap.ies", id_CellMeasurementResult_Item, new_create_dissector_handle(dissect_CellMeasurementResult_Item_PDU, proto_x2ap));
3880   dissector_add("x2ap.ies", id_GUGroupIDListToAdd, new_create_dissector_handle(dissect_GUGroupIDList_PDU, proto_x2ap));
3881   dissector_add("x2ap.ies", id_GUGroupIDListToDelete, new_create_dissector_handle(dissect_GUGroupIDList_PDU, proto_x2ap));
3882   dissector_add_string("x2ap.proc.imsg", "id-handoverPreparation", new_create_dissector_handle(dissect_HandoverRequest_PDU, proto_x2ap));
3883   dissector_add_string("x2ap.proc.sout", "id-handoverPreparation", new_create_dissector_handle(dissect_HandoverRequestAcknowledge_PDU, proto_x2ap));
3884   dissector_add_string("x2ap.proc.uout", "id-handoverPreparation", new_create_dissector_handle(dissect_HandoverPreparationFailure_PDU, proto_x2ap));
3885   dissector_add_string("x2ap.proc.imsg", "id-snStatusTransfer", new_create_dissector_handle(dissect_SNStatusTransfer_PDU, proto_x2ap));
3886   dissector_add_string("x2ap.proc.imsg", "id-uEContextRelease", new_create_dissector_handle(dissect_UEContextRelease_PDU, proto_x2ap));
3887   dissector_add_string("x2ap.proc.imsg", "id-handoverCancel", new_create_dissector_handle(dissect_HandoverCancel_PDU, proto_x2ap));
3888   dissector_add_string("x2ap.proc.imsg", "id-errorIndication", new_create_dissector_handle(dissect_ErrorIndication_PDU, proto_x2ap));
3889   dissector_add_string("x2ap.proc.imsg", "id-reset", new_create_dissector_handle(dissect_ResetRequest_PDU, proto_x2ap));
3890   dissector_add_string("x2ap.proc.sout", "id-reset", new_create_dissector_handle(dissect_ResetResponse_PDU, proto_x2ap));
3891   dissector_add_string("x2ap.proc.imsg", "id-x2Setup", new_create_dissector_handle(dissect_X2SetupRequest_PDU, proto_x2ap));
3892   dissector_add_string("x2ap.proc.sout", "id-x2Setup", new_create_dissector_handle(dissect_X2SetupResponse_PDU, proto_x2ap));
3893   dissector_add_string("x2ap.proc.uout", "id-x2Setup", new_create_dissector_handle(dissect_X2SetupFailure_PDU, proto_x2ap));
3894   dissector_add_string("x2ap.proc.imsg", "id-loadIndication", new_create_dissector_handle(dissect_LoadInformation_PDU, proto_x2ap));
3895   dissector_add_string("x2ap.proc.imsg", "id-eNBConfigurationUpdate", new_create_dissector_handle(dissect_ENBConfigurationUpdate_PDU, proto_x2ap));
3896   dissector_add_string("x2ap.proc.sout", "id-eNBConfigurationUpdate", new_create_dissector_handle(dissect_ENBConfigurationUpdateAcknowledge_PDU, proto_x2ap));
3897   dissector_add_string("x2ap.proc.uout", "id-eNBConfigurationUpdate", new_create_dissector_handle(dissect_ENBConfigurationUpdateFailure_PDU, proto_x2ap));
3898   dissector_add_string("x2ap.proc.imsg", "id-resourceStatusUpdateInitiation", new_create_dissector_handle(dissect_ResourceStatusRequest_PDU, proto_x2ap));
3899   dissector_add_string("x2ap.proc.sout", "id-resourceStatusUpdateInitiation", new_create_dissector_handle(dissect_ResourceStatusResponse_PDU, proto_x2ap));
3900   dissector_add_string("x2ap.proc.uout", "id-resourceStatusUpdateInitiation", new_create_dissector_handle(dissect_ResourceStatusFailure_PDU, proto_x2ap));
3901   dissector_add_string("x2ap.proc.imsg", "id-resourceStatusReporting", new_create_dissector_handle(dissect_ResourceStatusUpdate_PDU, proto_x2ap));
3902
3903
3904 /*--- End of included file: packet-x2ap-dis-tab.c ---*/
3905 #line 178 "packet-x2ap-template.c"
3906 }
3907
3908