#include <stdio.h> not needed.
[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 -D . 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 <string.h>
47
48 #include <epan/asn1.h>
49 #include <epan/prefs.h>
50 #include <epan/sctpppids.h>
51
52 #include "packet-per.h"
53 #include "packet-e212.h"
54 #include "packet-frame.h"
55 #include "packet-lte-rrc.h"
56
57 #ifdef _MSC_VER
58 /* disable: "warning C4146: unary minus operator applied to unsigned type, result still unsigned" */
59 #pragma warning(disable:4146)
60 #endif
61
62 #define PNAME  "EUTRAN X2 Application Protocol (X2AP)"
63 #define PSNAME "X2AP"
64 #define PFNAME "x2ap"
65
66 /* Dissector will use SCTP PPID 27 or SCTP port. IANA assigned port = 36422 */
67 #define SCTP_PORT_X2AP  36422
68
69
70 /*--- Included file: packet-x2ap-val.h ---*/
71 #line 1 "packet-x2ap-val.h"
72 #define maxPrivateIEs                  65535
73 #define maxProtocolExtensions          65535
74 #define maxProtocolIEs                 65535
75 #define maxEARFCN                      65535
76 #define maxInterfaces                  16
77 #define maxCellineNB                   256
78 #define maxnoofBearers                 256
79 #define maxNrOfErrors                  256
80 #define maxnoofPDCP_SN                 16
81 #define maxnoofEPLMNs                  15
82 #define maxnoofEPLMNsPlusOne           16
83 #define maxnoofForbLACs                4096
84 #define maxnoofForbTACs                4096
85 #define maxnoofBPLMNs                  6
86 #define maxnoofNeighbours              512
87 #define maxnoofPRBs                    110
88 #define maxPools                       16
89 #define maxnoofCells                   16
90
91 typedef enum _ProcedureCode_enum {
92   id_handoverPreparation =   0,
93   id_handoverCancel =   1,
94   id_loadIndication =   2,
95   id_errorIndication =   3,
96   id_snStatusTransfer =   4,
97   id_uEContextRelease =   5,
98   id_x2Setup   =   6,
99   id_reset     =   7,
100   id_eNBConfigurationUpdate =   8,
101   id_resourceStatusReportingInitiation =   9,
102   id_resourceStatusReporting =  10,
103   id_privateMessage =  11,
104   id_mobilitySettingsChange =  12,
105   id_rLFIndication =  13,
106   id_handoverReport =  14
107 } ProcedureCode_enum;
108
109 typedef enum _ProtocolIE_ID_enum {
110   id_E_RABs_Admitted_Item =   0,
111   id_E_RABs_Admitted_List =   1,
112   id_E_RAB_Item =   2,
113   id_E_RABs_NotAdmitted_List =   3,
114   id_E_RABs_ToBeSetup_Item =   4,
115   id_Cause     =   5,
116   id_CellInformation =   6,
117   id_CellInformation_Item =   7,
118   id_New_eNB_UE_X2AP_ID =   9,
119   id_Old_eNB_UE_X2AP_ID =  10,
120   id_TargetCell_ID =  11,
121   id_TargeteNBtoSource_eNBTransparentContainer =  12,
122   id_TraceActivation =  13,
123   id_UE_ContextInformation =  14,
124   id_UE_HistoryInformation =  15,
125   id_UE_X2AP_ID =  16,
126   id_CriticalityDiagnostics =  17,
127   id_E_RABs_SubjectToStatusTransfer_List =  18,
128   id_E_RABs_SubjectToStatusTransfer_Item =  19,
129   id_ServedCells =  20,
130   id_GlobalENB_ID =  21,
131   id_TimeToWait =  22,
132   id_GUMMEI_ID =  23,
133   id_GUGroupIDList =  24,
134   id_ServedCellsToAdd =  25,
135   id_ServedCellsToModify =  26,
136   id_ServedCellsToDelete =  27,
137   id_Registration_Request =  28,
138   id_CellToReport =  29,
139   id_ReportingPeriodicity =  30,
140   id_CellToReport_Item =  31,
141   id_CellMeasurementResult =  32,
142   id_CellMeasurementResult_Item =  33,
143   id_GUGroupIDToAddList =  34,
144   id_GUGroupIDToDeleteList =  35,
145   id_SRVCCOperationPossible =  36,
146   id_Measurement_ID =  37,
147   id_ReportCharacteristics =  38,
148   id_ENB1_Measurement_ID =  39,
149   id_ENB2_Measurement_ID =  40,
150   id_Number_of_Antennaports =  41,
151   id_CompositeAvailableCapacityGroup =  42,
152   id_ENB1_Cell_ID =  43,
153   id_ENB2_Cell_ID =  44,
154   id_ENB2_Proposed_Mobility_Parameters =  45,
155   id_ENB1_Mobility_Parameters =  46,
156   id_ENB2_Mobility_Parameters_Modification_Range =  47,
157   id_FailureCellPCI =  48,
158   id_Re_establishmentCellECGI =  49,
159   id_FailureCellCRNTI =  50,
160   id_ShortMAC_I =  51,
161   id_SourceCellECGI =  52,
162   id_FailureCellECGI =  53,
163   id_HandoverReportType =  54,
164   id_PRACH_Configuration =  55
165 } ProtocolIE_ID_enum;
166
167 /*--- End of included file: packet-x2ap-val.h ---*/
168 #line 62 "packet-x2ap-template.c"
169
170 /* Initialize the protocol and registered fields */
171 static int proto_x2ap = -1;
172 static int hf_x2ap_transportLayerAddressIPv4 = -1;
173 static int hf_x2ap_transportLayerAddressIPv6 = -1;
174
175 /*--- Included file: packet-x2ap-hf.c ---*/
176 #line 1 "packet-x2ap-hf.c"
177 static int hf_x2ap_Cause_PDU = -1;                /* Cause */
178 static int hf_x2ap_CompositeAvailableCapacityGroup_PDU = -1;  /* CompositeAvailableCapacityGroup */
179 static int hf_x2ap_CriticalityDiagnostics_PDU = -1;  /* CriticalityDiagnostics */
180 static int hf_x2ap_CRNTI_PDU = -1;                /* CRNTI */
181 static int hf_x2ap_ECGI_PDU = -1;                 /* ECGI */
182 static int hf_x2ap_E_RAB_List_PDU = -1;           /* E_RAB_List */
183 static int hf_x2ap_E_RAB_Item_PDU = -1;           /* E_RAB_Item */
184 static int hf_x2ap_GlobalENB_ID_PDU = -1;         /* GlobalENB_ID */
185 static int hf_x2ap_GUGroupIDList_PDU = -1;        /* GUGroupIDList */
186 static int hf_x2ap_GUMMEI_PDU = -1;               /* GUMMEI */
187 static int hf_x2ap_HandoverReportType_PDU = -1;   /* HandoverReportType */
188 static int hf_x2ap_Measurement_ID_PDU = -1;       /* Measurement_ID */
189 static int hf_x2ap_MobilityParametersModificationRange_PDU = -1;  /* MobilityParametersModificationRange */
190 static int hf_x2ap_MobilityParametersInformation_PDU = -1;  /* MobilityParametersInformation */
191 static int hf_x2ap_Number_of_Antennaports_PDU = -1;  /* Number_of_Antennaports */
192 static int hf_x2ap_PCI_PDU = -1;                  /* PCI */
193 static int hf_x2ap_PRACH_Configuration_PDU = -1;  /* PRACH_Configuration */
194 static int hf_x2ap_Registration_Request_PDU = -1;  /* Registration_Request */
195 static int hf_x2ap_ReportCharacteristics_PDU = -1;  /* ReportCharacteristics */
196 static int hf_x2ap_ServedCells_PDU = -1;          /* ServedCells */
197 static int hf_x2ap_ShortMAC_I_PDU = -1;           /* ShortMAC_I */
198 static int hf_x2ap_SRVCCOperationPossible_PDU = -1;  /* SRVCCOperationPossible */
199 static int hf_x2ap_TargeteNBtoSource_eNBTransparentContainer_PDU = -1;  /* TargeteNBtoSource_eNBTransparentContainer */
200 static int hf_x2ap_TimeToWait_PDU = -1;           /* TimeToWait */
201 static int hf_x2ap_TraceActivation_PDU = -1;      /* TraceActivation */
202 static int hf_x2ap_UE_HistoryInformation_PDU = -1;  /* UE_HistoryInformation */
203 static int hf_x2ap_UE_X2AP_ID_PDU = -1;           /* UE_X2AP_ID */
204 static int hf_x2ap_HandoverRequest_PDU = -1;      /* HandoverRequest */
205 static int hf_x2ap_UE_ContextInformation_PDU = -1;  /* UE_ContextInformation */
206 static int hf_x2ap_E_RABs_ToBeSetup_Item_PDU = -1;  /* E_RABs_ToBeSetup_Item */
207 static int hf_x2ap_HandoverRequestAcknowledge_PDU = -1;  /* HandoverRequestAcknowledge */
208 static int hf_x2ap_E_RABs_Admitted_List_PDU = -1;  /* E_RABs_Admitted_List */
209 static int hf_x2ap_E_RABs_Admitted_Item_PDU = -1;  /* E_RABs_Admitted_Item */
210 static int hf_x2ap_HandoverPreparationFailure_PDU = -1;  /* HandoverPreparationFailure */
211 static int hf_x2ap_HandoverReport_PDU = -1;       /* HandoverReport */
212 static int hf_x2ap_SNStatusTransfer_PDU = -1;     /* SNStatusTransfer */
213 static int hf_x2ap_E_RABs_SubjectToStatusTransfer_List_PDU = -1;  /* E_RABs_SubjectToStatusTransfer_List */
214 static int hf_x2ap_E_RABs_SubjectToStatusTransfer_Item_PDU = -1;  /* E_RABs_SubjectToStatusTransfer_Item */
215 static int hf_x2ap_UEContextRelease_PDU = -1;     /* UEContextRelease */
216 static int hf_x2ap_HandoverCancel_PDU = -1;       /* HandoverCancel */
217 static int hf_x2ap_ErrorIndication_PDU = -1;      /* ErrorIndication */
218 static int hf_x2ap_ResetRequest_PDU = -1;         /* ResetRequest */
219 static int hf_x2ap_ResetResponse_PDU = -1;        /* ResetResponse */
220 static int hf_x2ap_X2SetupRequest_PDU = -1;       /* X2SetupRequest */
221 static int hf_x2ap_X2SetupResponse_PDU = -1;      /* X2SetupResponse */
222 static int hf_x2ap_X2SetupFailure_PDU = -1;       /* X2SetupFailure */
223 static int hf_x2ap_LoadInformation_PDU = -1;      /* LoadInformation */
224 static int hf_x2ap_CellInformation_List_PDU = -1;  /* CellInformation_List */
225 static int hf_x2ap_CellInformation_Item_PDU = -1;  /* CellInformation_Item */
226 static int hf_x2ap_ENBConfigurationUpdate_PDU = -1;  /* ENBConfigurationUpdate */
227 static int hf_x2ap_ServedCellsToModify_PDU = -1;  /* ServedCellsToModify */
228 static int hf_x2ap_Old_ECGIs_PDU = -1;            /* Old_ECGIs */
229 static int hf_x2ap_ENBConfigurationUpdateAcknowledge_PDU = -1;  /* ENBConfigurationUpdateAcknowledge */
230 static int hf_x2ap_ENBConfigurationUpdateFailure_PDU = -1;  /* ENBConfigurationUpdateFailure */
231 static int hf_x2ap_ResourceStatusRequest_PDU = -1;  /* ResourceStatusRequest */
232 static int hf_x2ap_CellToReport_List_PDU = -1;    /* CellToReport_List */
233 static int hf_x2ap_CellToReport_Item_PDU = -1;    /* CellToReport_Item */
234 static int hf_x2ap_ReportingPeriodicity_PDU = -1;  /* ReportingPeriodicity */
235 static int hf_x2ap_ResourceStatusResponse_PDU = -1;  /* ResourceStatusResponse */
236 static int hf_x2ap_ResourceStatusFailure_PDU = -1;  /* ResourceStatusFailure */
237 static int hf_x2ap_ResourceStatusUpdate_PDU = -1;  /* ResourceStatusUpdate */
238 static int hf_x2ap_CellMeasurementResult_List_PDU = -1;  /* CellMeasurementResult_List */
239 static int hf_x2ap_CellMeasurementResult_Item_PDU = -1;  /* CellMeasurementResult_Item */
240 static int hf_x2ap_PrivateMessage_PDU = -1;       /* PrivateMessage */
241 static int hf_x2ap_MobilityChangeRequest_PDU = -1;  /* MobilityChangeRequest */
242 static int hf_x2ap_MobilityChangeAcknowledge_PDU = -1;  /* MobilityChangeAcknowledge */
243 static int hf_x2ap_MobilityChangeFailure_PDU = -1;  /* MobilityChangeFailure */
244 static int hf_x2ap_RLFIndication_PDU = -1;        /* RLFIndication */
245 static int hf_x2ap_X2AP_PDU_PDU = -1;             /* X2AP_PDU */
246 static int hf_x2ap_local = -1;                    /* INTEGER_0_maxPrivateIEs */
247 static int hf_x2ap_global = -1;                   /* OBJECT_IDENTIFIER */
248 static int hf_x2ap_ProtocolIE_Container_item = -1;  /* ProtocolIE_Field */
249 static int hf_x2ap_id = -1;                       /* ProtocolIE_ID */
250 static int hf_x2ap_criticality = -1;              /* Criticality */
251 static int hf_x2ap_protocolIE_Field_value = -1;   /* ProtocolIE_Field_value */
252 static int hf_x2ap_ProtocolExtensionContainer_item = -1;  /* ProtocolExtensionField */
253 static int hf_x2ap_extension_id = -1;             /* ProtocolIE_ID */
254 static int hf_x2ap_extensionValue = -1;           /* T_extensionValue */
255 static int hf_x2ap_PrivateIE_Container_item = -1;  /* PrivateIE_Field */
256 static int hf_x2ap_private_id = -1;               /* PrivateIE_ID */
257 static int hf_x2ap_privateIE_Field_value = -1;    /* PrivateIE_Field_value */
258 static int hf_x2ap_key_eNodeB_star = -1;          /* Key_eNodeB_Star */
259 static int hf_x2ap_nextHopChainingCount = -1;     /* NextHopChainingCount */
260 static int hf_x2ap_iE_Extensions = -1;            /* ProtocolExtensionContainer */
261 static int hf_x2ap_priorityLevel = -1;            /* PriorityLevel */
262 static int hf_x2ap_pre_emptionCapability = -1;    /* Pre_emptionCapability */
263 static int hf_x2ap_pre_emptionVulnerability = -1;  /* Pre_emptionVulnerability */
264 static int hf_x2ap_BroadcastPLMNs_Item_item = -1;  /* PLMN_Identity */
265 static int hf_x2ap_radioNetwork = -1;             /* CauseRadioNetwork */
266 static int hf_x2ap_transport = -1;                /* CauseTransport */
267 static int hf_x2ap_protocol = -1;                 /* CauseProtocol */
268 static int hf_x2ap_misc = -1;                     /* CauseMisc */
269 static int hf_x2ap_cell_Size = -1;                /* Cell_Size */
270 static int hf_x2ap_dL_CompositeAvailableCapacity = -1;  /* CompositeAvailableCapacity */
271 static int hf_x2ap_uL_CompositeAvailableCapacity = -1;  /* CompositeAvailableCapacity */
272 static int hf_x2ap_cellCapacityClassValue = -1;   /* CellCapacityClassValue */
273 static int hf_x2ap_capacityValue = -1;            /* CapacityValue */
274 static int hf_x2ap_pDCP_SN = -1;                  /* PDCP_SN */
275 static int hf_x2ap_hFN = -1;                      /* HFN */
276 static int hf_x2ap_procedureCode = -1;            /* ProcedureCode */
277 static int hf_x2ap_triggeringMessage = -1;        /* TriggeringMessage */
278 static int hf_x2ap_procedureCriticality = -1;     /* Criticality */
279 static int hf_x2ap_iEsCriticalityDiagnostics = -1;  /* CriticalityDiagnostics_IE_List */
280 static int hf_x2ap_CriticalityDiagnostics_IE_List_item = -1;  /* CriticalityDiagnostics_IE_List_item */
281 static int hf_x2ap_iECriticality = -1;            /* Criticality */
282 static int hf_x2ap_iE_ID = -1;                    /* ProtocolIE_ID */
283 static int hf_x2ap_typeOfError = -1;              /* TypeOfError */
284 static int hf_x2ap_uL_EARFCN = -1;                /* EARFCN */
285 static int hf_x2ap_dL_EARFCN = -1;                /* EARFCN */
286 static int hf_x2ap_uL_Transmission_Bandwidth = -1;  /* Transmission_Bandwidth */
287 static int hf_x2ap_dL_Transmission_Bandwidth = -1;  /* Transmission_Bandwidth */
288 static int hf_x2ap_eARFCN = -1;                   /* EARFCN */
289 static int hf_x2ap_transmission_Bandwidth = -1;   /* Transmission_Bandwidth */
290 static int hf_x2ap_subframeAssignment = -1;       /* SubframeAssignment */
291 static int hf_x2ap_specialSubframe_Info = -1;     /* SpecialSubframe_Info */
292 static int hf_x2ap_fDD = -1;                      /* FDD_Info */
293 static int hf_x2ap_tDD = -1;                      /* TDD_Info */
294 static int hf_x2ap_pLMN_Identity = -1;            /* PLMN_Identity */
295 static int hf_x2ap_eUTRANcellIdentifier = -1;     /* EUTRANCellIdentifier */
296 static int hf_x2ap_macro_eNB_ID = -1;             /* BIT_STRING_SIZE_20 */
297 static int hf_x2ap_home_eNB_ID = -1;              /* BIT_STRING_SIZE_28 */
298 static int hf_x2ap_EPLMNs_item = -1;              /* PLMN_Identity */
299 static int hf_x2ap_qCI = -1;                      /* QCI */
300 static int hf_x2ap_allocationAndRetentionPriority = -1;  /* AllocationAndRetentionPriority */
301 static int hf_x2ap_gbrQosInformation = -1;        /* GBR_QosInformation */
302 static int hf_x2ap_E_RAB_List_item = -1;          /* ProtocolIE_Single_Container */
303 static int hf_x2ap_e_RAB_ID = -1;                 /* E_RAB_ID */
304 static int hf_x2ap_cause = -1;                    /* Cause */
305 static int hf_x2ap_ForbiddenTAs_item = -1;        /* ForbiddenTAs_Item */
306 static int hf_x2ap_forbiddenTACs = -1;            /* ForbiddenTACs */
307 static int hf_x2ap_ForbiddenTACs_item = -1;       /* TAC */
308 static int hf_x2ap_ForbiddenLAs_item = -1;        /* ForbiddenLAs_Item */
309 static int hf_x2ap_forbiddenLACs = -1;            /* ForbiddenLACs */
310 static int hf_x2ap_ForbiddenLACs_item = -1;       /* LAC */
311 static int hf_x2ap_e_RAB_MaximumBitrateDL = -1;   /* BitRate */
312 static int hf_x2ap_e_RAB_MaximumBitrateUL = -1;   /* BitRate */
313 static int hf_x2ap_e_RAB_GuaranteedBitrateDL = -1;  /* BitRate */
314 static int hf_x2ap_e_RAB_GuaranteedBitrateUL = -1;  /* BitRate */
315 static int hf_x2ap_eNB_ID = -1;                   /* ENB_ID */
316 static int hf_x2ap_transportLayerAddress = -1;    /* TransportLayerAddress */
317 static int hf_x2ap_gTP_TEID = -1;                 /* GTP_TEI */
318 static int hf_x2ap_GUGroupIDList_item = -1;       /* GU_Group_ID */
319 static int hf_x2ap_mME_Group_ID = -1;             /* MME_Group_ID */
320 static int hf_x2ap_gU_Group_ID = -1;              /* GU_Group_ID */
321 static int hf_x2ap_mMME_Code = -1;                /* MME_Code */
322 static int hf_x2ap_servingPLMN = -1;              /* PLMN_Identity */
323 static int hf_x2ap_equivalentPLMNs = -1;          /* EPLMNs */
324 static int hf_x2ap_forbiddenTAs = -1;             /* ForbiddenTAs */
325 static int hf_x2ap_forbiddenLAs = -1;             /* ForbiddenLAs */
326 static int hf_x2ap_forbiddenInterRATs = -1;       /* ForbiddenInterRATs */
327 static int hf_x2ap_dLHWLoadIndicator = -1;        /* LoadIndicator */
328 static int hf_x2ap_uLHWLoadIndicator = -1;        /* LoadIndicator */
329 static int hf_x2ap_e_UTRAN_Cell = -1;             /* LastVisitedEUTRANCellInformation */
330 static int hf_x2ap_uTRAN_Cell = -1;               /* LastVisitedUTRANCellInformation */
331 static int hf_x2ap_gERAN_Cell = -1;               /* LastVisitedGERANCellInformation */
332 static int hf_x2ap_global_Cell_ID = -1;           /* ECGI */
333 static int hf_x2ap_cellType = -1;                 /* CellType */
334 static int hf_x2ap_time_UE_StayedInCell = -1;     /* Time_UE_StayedInCell */
335 static int hf_x2ap_undefined = -1;                /* NULL */
336 static int hf_x2ap_eventType = -1;                /* EventType */
337 static int hf_x2ap_reportArea = -1;               /* ReportArea */
338 static int hf_x2ap_handoverTriggerChangeLowerLimit = -1;  /* INTEGER_M20_20 */
339 static int hf_x2ap_handoverTriggerChangeUpperLimit = -1;  /* INTEGER_M20_20 */
340 static int hf_x2ap_handoverTriggerChange = -1;    /* INTEGER_M20_20 */
341 static int hf_x2ap_Neighbour_Information_item = -1;  /* Neighbour_Information_item */
342 static int hf_x2ap_eCGI = -1;                     /* ECGI */
343 static int hf_x2ap_pCI = -1;                      /* PCI */
344 static int hf_x2ap_rootSequenceIndex = -1;        /* INTEGER_0_837 */
345 static int hf_x2ap_zeroCorrelationIndex = -1;     /* INTEGER_0_15 */
346 static int hf_x2ap_highSpeedFlag = -1;            /* BOOLEAN */
347 static int hf_x2ap_prach_FreqOffset = -1;         /* INTEGER_0_94 */
348 static int hf_x2ap_prach_ConfigIndex = -1;        /* INTEGER_0_63 */
349 static int hf_x2ap_rNTP_PerPRB = -1;              /* BIT_STRING_SIZE_6_110_ */
350 static int hf_x2ap_rNTP_Threshold = -1;           /* RNTP_Threshold */
351 static int hf_x2ap_numberOfCellSpecificAntennaPorts = -1;  /* T_numberOfCellSpecificAntennaPorts */
352 static int hf_x2ap_p_B = -1;                      /* INTEGER_0_3_ */
353 static int hf_x2ap_pDCCH_InterferenceImpact = -1;  /* INTEGER_0_4_ */
354 static int hf_x2ap_dL_GBR_PRB_usage = -1;         /* DL_GBR_PRB_usage */
355 static int hf_x2ap_uL_GBR_PRB_usage = -1;         /* UL_GBR_PRB_usage */
356 static int hf_x2ap_dL_non_GBR_PRB_usage = -1;     /* DL_non_GBR_PRB_usage */
357 static int hf_x2ap_uL_non_GBR_PRB_usage = -1;     /* UL_non_GBR_PRB_usage */
358 static int hf_x2ap_dL_Total_PRB_usage = -1;       /* DL_Total_PRB_usage */
359 static int hf_x2ap_uL_Total_PRB_usage = -1;       /* UL_Total_PRB_usage */
360 static int hf_x2ap_dLS1TNLLoadIndicator = -1;     /* LoadIndicator */
361 static int hf_x2ap_uLS1TNLLoadIndicator = -1;     /* LoadIndicator */
362 static int hf_x2ap_ServedCells_item = -1;         /* ServedCells_item */
363 static int hf_x2ap_servedCellInfo = -1;           /* ServedCell_Information */
364 static int hf_x2ap_neighbour_Info = -1;           /* Neighbour_Information */
365 static int hf_x2ap_cellId = -1;                   /* ECGI */
366 static int hf_x2ap_tAC = -1;                      /* TAC */
367 static int hf_x2ap_broadcastPLMNs = -1;           /* BroadcastPLMNs_Item */
368 static int hf_x2ap_eUTRA_Mode_Info = -1;          /* EUTRA_Mode_Info */
369 static int hf_x2ap_specialSubframePatterns = -1;  /* SpecialSubframePatterns */
370 static int hf_x2ap_cyclicPrefixDL = -1;           /* CyclicPrefixDL */
371 static int hf_x2ap_cyclicPrefixUL = -1;           /* CyclicPrefixUL */
372 static int hf_x2ap_eUTRANTraceID = -1;            /* EUTRANTraceID */
373 static int hf_x2ap_interfacesToTrace = -1;        /* InterfacesToTrace */
374 static int hf_x2ap_traceDepth = -1;               /* TraceDepth */
375 static int hf_x2ap_traceCollectionEntityIPAddress = -1;  /* TraceCollectionEntityIPAddress */
376 static int hf_x2ap_UE_HistoryInformation_item = -1;  /* LastVisitedCell_Item */
377 static int hf_x2ap_uEaggregateMaximumBitRateDownlink = -1;  /* BitRate */
378 static int hf_x2ap_uEaggregateMaximumBitRateUplink = -1;  /* BitRate */
379 static int hf_x2ap_encryptionAlgorithms = -1;     /* EncryptionAlgorithms */
380 static int hf_x2ap_integrityProtectionAlgorithms = -1;  /* IntegrityProtectionAlgorithms */
381 static int hf_x2ap_UL_InterferenceOverloadIndication_item = -1;  /* UL_InterferenceOverloadIndication_Item */
382 static int hf_x2ap_UL_HighInterferenceIndicationInfo_item = -1;  /* UL_HighInterferenceIndicationInfo_Item */
383 static int hf_x2ap_target_Cell_ID = -1;           /* ECGI */
384 static int hf_x2ap_ul_interferenceindication = -1;  /* UL_HighInterferenceIndication */
385 static int hf_x2ap_protocolIEs = -1;              /* ProtocolIE_Container */
386 static int hf_x2ap_mME_UE_S1AP_ID = -1;           /* UE_S1AP_ID */
387 static int hf_x2ap_uESecurityCapabilities = -1;   /* UESecurityCapabilities */
388 static int hf_x2ap_aS_SecurityInformation = -1;   /* AS_SecurityInformation */
389 static int hf_x2ap_uEaggregateMaximumBitRate = -1;  /* UEAggregateMaximumBitRate */
390 static int hf_x2ap_subscriberProfileIDforRFP = -1;  /* SubscriberProfileIDforRFP */
391 static int hf_x2ap_e_RABs_ToBeSetup_List = -1;    /* E_RABs_ToBeSetup_List */
392 static int hf_x2ap_rRC_Context = -1;              /* RRC_Context */
393 static int hf_x2ap_handoverRestrictionList = -1;  /* HandoverRestrictionList */
394 static int hf_x2ap_locationReportingInformation = -1;  /* LocationReportingInformation */
395 static int hf_x2ap_E_RABs_ToBeSetup_List_item = -1;  /* ProtocolIE_Single_Container */
396 static int hf_x2ap_e_RAB_Level_QoS_Parameters = -1;  /* E_RAB_Level_QoS_Parameters */
397 static int hf_x2ap_dL_Forwarding = -1;            /* DL_Forwarding */
398 static int hf_x2ap_uL_GTPtunnelEndpoint = -1;     /* GTPtunnelEndpoint */
399 static int hf_x2ap_E_RABs_Admitted_List_item = -1;  /* ProtocolIE_Single_Container */
400 static int hf_x2ap_uL_GTP_TunnelEndpoint = -1;    /* GTPtunnelEndpoint */
401 static int hf_x2ap_dL_GTP_TunnelEndpoint = -1;    /* GTPtunnelEndpoint */
402 static int hf_x2ap_E_RABs_SubjectToStatusTransfer_List_item = -1;  /* ProtocolIE_Single_Container */
403 static int hf_x2ap_receiveStatusofULPDCPSDUs = -1;  /* ReceiveStatusofULPDCPSDUs */
404 static int hf_x2ap_uL_COUNTvalue = -1;            /* COUNTvalue */
405 static int hf_x2ap_dL_COUNTvalue = -1;            /* COUNTvalue */
406 static int hf_x2ap_CellInformation_List_item = -1;  /* ProtocolIE_Single_Container */
407 static int hf_x2ap_cell_ID = -1;                  /* ECGI */
408 static int hf_x2ap_ul_InterferenceOverloadIndication = -1;  /* UL_InterferenceOverloadIndication */
409 static int hf_x2ap_ul_HighInterferenceIndicationInfo = -1;  /* UL_HighInterferenceIndicationInfo */
410 static int hf_x2ap_relativeNarrowbandTxPower = -1;  /* RelativeNarrowbandTxPower */
411 static int hf_x2ap_ServedCellsToModify_item = -1;  /* ServedCellsToModify_Item */
412 static int hf_x2ap_old_ecgi = -1;                 /* ECGI */
413 static int hf_x2ap_Old_ECGIs_item = -1;           /* ECGI */
414 static int hf_x2ap_CellToReport_List_item = -1;   /* ProtocolIE_Single_Container */
415 static int hf_x2ap_CellMeasurementResult_List_item = -1;  /* ProtocolIE_Single_Container */
416 static int hf_x2ap_hWOverLoadIndicator = -1;      /* HWLoadIndicator */
417 static int hf_x2ap_s1TNLOverLoadIndicator = -1;   /* S1TNLLoadIndicator */
418 static int hf_x2ap_radioresourceStatus = -1;      /* RadioResourceStatus */
419 static int hf_x2ap_privateIEs = -1;               /* PrivateIE_Container */
420 static int hf_x2ap_initiatingMessage = -1;        /* InitiatingMessage */
421 static int hf_x2ap_successfulOutcome = -1;        /* SuccessfulOutcome */
422 static int hf_x2ap_unsuccessfulOutcome = -1;      /* UnsuccessfulOutcome */
423 static int hf_x2ap_initiatingMessage_value = -1;  /* InitiatingMessage_value */
424 static int hf_x2ap_successfulOutcome_value = -1;  /* SuccessfulOutcome_value */
425 static int hf_x2ap_value = -1;                    /* UnsuccessfulOutcome_value */
426
427 /*--- End of included file: packet-x2ap-hf.c ---*/
428 #line 68 "packet-x2ap-template.c"
429
430 /* Initialize the subtree pointers */
431 static int ett_x2ap = -1;
432 static int ett_x2ap_TransportLayerAddress = -1;
433
434 /*--- Included file: packet-x2ap-ett.c ---*/
435 #line 1 "packet-x2ap-ett.c"
436 static gint ett_x2ap_PrivateIE_ID = -1;
437 static gint ett_x2ap_ProtocolIE_Container = -1;
438 static gint ett_x2ap_ProtocolIE_Field = -1;
439 static gint ett_x2ap_ProtocolExtensionContainer = -1;
440 static gint ett_x2ap_ProtocolExtensionField = -1;
441 static gint ett_x2ap_PrivateIE_Container = -1;
442 static gint ett_x2ap_PrivateIE_Field = -1;
443 static gint ett_x2ap_AS_SecurityInformation = -1;
444 static gint ett_x2ap_AllocationAndRetentionPriority = -1;
445 static gint ett_x2ap_BroadcastPLMNs_Item = -1;
446 static gint ett_x2ap_Cause = -1;
447 static gint ett_x2ap_CellType = -1;
448 static gint ett_x2ap_CompositeAvailableCapacityGroup = -1;
449 static gint ett_x2ap_CompositeAvailableCapacity = -1;
450 static gint ett_x2ap_COUNTvalue = -1;
451 static gint ett_x2ap_CriticalityDiagnostics = -1;
452 static gint ett_x2ap_CriticalityDiagnostics_IE_List = -1;
453 static gint ett_x2ap_CriticalityDiagnostics_IE_List_item = -1;
454 static gint ett_x2ap_FDD_Info = -1;
455 static gint ett_x2ap_TDD_Info = -1;
456 static gint ett_x2ap_EUTRA_Mode_Info = -1;
457 static gint ett_x2ap_ECGI = -1;
458 static gint ett_x2ap_ENB_ID = -1;
459 static gint ett_x2ap_EPLMNs = -1;
460 static gint ett_x2ap_E_RAB_Level_QoS_Parameters = -1;
461 static gint ett_x2ap_E_RAB_List = -1;
462 static gint ett_x2ap_E_RAB_Item = -1;
463 static gint ett_x2ap_ForbiddenTAs = -1;
464 static gint ett_x2ap_ForbiddenTAs_Item = -1;
465 static gint ett_x2ap_ForbiddenTACs = -1;
466 static gint ett_x2ap_ForbiddenLAs = -1;
467 static gint ett_x2ap_ForbiddenLAs_Item = -1;
468 static gint ett_x2ap_ForbiddenLACs = -1;
469 static gint ett_x2ap_GBR_QosInformation = -1;
470 static gint ett_x2ap_GlobalENB_ID = -1;
471 static gint ett_x2ap_GTPtunnelEndpoint = -1;
472 static gint ett_x2ap_GUGroupIDList = -1;
473 static gint ett_x2ap_GU_Group_ID = -1;
474 static gint ett_x2ap_GUMMEI = -1;
475 static gint ett_x2ap_HandoverRestrictionList = -1;
476 static gint ett_x2ap_HWLoadIndicator = -1;
477 static gint ett_x2ap_LastVisitedCell_Item = -1;
478 static gint ett_x2ap_LastVisitedEUTRANCellInformation = -1;
479 static gint ett_x2ap_LastVisitedGERANCellInformation = -1;
480 static gint ett_x2ap_LocationReportingInformation = -1;
481 static gint ett_x2ap_MobilityParametersModificationRange = -1;
482 static gint ett_x2ap_MobilityParametersInformation = -1;
483 static gint ett_x2ap_Neighbour_Information = -1;
484 static gint ett_x2ap_Neighbour_Information_item = -1;
485 static gint ett_x2ap_PRACH_Configuration = -1;
486 static gint ett_x2ap_RelativeNarrowbandTxPower = -1;
487 static gint ett_x2ap_RadioResourceStatus = -1;
488 static gint ett_x2ap_S1TNLLoadIndicator = -1;
489 static gint ett_x2ap_ServedCells = -1;
490 static gint ett_x2ap_ServedCells_item = -1;
491 static gint ett_x2ap_ServedCell_Information = -1;
492 static gint ett_x2ap_SpecialSubframe_Info = -1;
493 static gint ett_x2ap_TraceActivation = -1;
494 static gint ett_x2ap_UE_HistoryInformation = -1;
495 static gint ett_x2ap_UEAggregateMaximumBitRate = -1;
496 static gint ett_x2ap_UESecurityCapabilities = -1;
497 static gint ett_x2ap_UL_InterferenceOverloadIndication = -1;
498 static gint ett_x2ap_UL_HighInterferenceIndicationInfo = -1;
499 static gint ett_x2ap_UL_HighInterferenceIndicationInfo_Item = -1;
500 static gint ett_x2ap_HandoverRequest = -1;
501 static gint ett_x2ap_UE_ContextInformation = -1;
502 static gint ett_x2ap_E_RABs_ToBeSetup_List = -1;
503 static gint ett_x2ap_E_RABs_ToBeSetup_Item = -1;
504 static gint ett_x2ap_HandoverRequestAcknowledge = -1;
505 static gint ett_x2ap_E_RABs_Admitted_List = -1;
506 static gint ett_x2ap_E_RABs_Admitted_Item = -1;
507 static gint ett_x2ap_HandoverPreparationFailure = -1;
508 static gint ett_x2ap_HandoverReport = -1;
509 static gint ett_x2ap_SNStatusTransfer = -1;
510 static gint ett_x2ap_E_RABs_SubjectToStatusTransfer_List = -1;
511 static gint ett_x2ap_E_RABs_SubjectToStatusTransfer_Item = -1;
512 static gint ett_x2ap_UEContextRelease = -1;
513 static gint ett_x2ap_HandoverCancel = -1;
514 static gint ett_x2ap_ErrorIndication = -1;
515 static gint ett_x2ap_ResetRequest = -1;
516 static gint ett_x2ap_ResetResponse = -1;
517 static gint ett_x2ap_X2SetupRequest = -1;
518 static gint ett_x2ap_X2SetupResponse = -1;
519 static gint ett_x2ap_X2SetupFailure = -1;
520 static gint ett_x2ap_LoadInformation = -1;
521 static gint ett_x2ap_CellInformation_List = -1;
522 static gint ett_x2ap_CellInformation_Item = -1;
523 static gint ett_x2ap_ENBConfigurationUpdate = -1;
524 static gint ett_x2ap_ServedCellsToModify = -1;
525 static gint ett_x2ap_ServedCellsToModify_Item = -1;
526 static gint ett_x2ap_Old_ECGIs = -1;
527 static gint ett_x2ap_ENBConfigurationUpdateAcknowledge = -1;
528 static gint ett_x2ap_ENBConfigurationUpdateFailure = -1;
529 static gint ett_x2ap_ResourceStatusRequest = -1;
530 static gint ett_x2ap_CellToReport_List = -1;
531 static gint ett_x2ap_CellToReport_Item = -1;
532 static gint ett_x2ap_ResourceStatusResponse = -1;
533 static gint ett_x2ap_ResourceStatusFailure = -1;
534 static gint ett_x2ap_ResourceStatusUpdate = -1;
535 static gint ett_x2ap_CellMeasurementResult_List = -1;
536 static gint ett_x2ap_CellMeasurementResult_Item = -1;
537 static gint ett_x2ap_PrivateMessage = -1;
538 static gint ett_x2ap_MobilityChangeRequest = -1;
539 static gint ett_x2ap_MobilityChangeAcknowledge = -1;
540 static gint ett_x2ap_MobilityChangeFailure = -1;
541 static gint ett_x2ap_RLFIndication = -1;
542 static gint ett_x2ap_X2AP_PDU = -1;
543 static gint ett_x2ap_InitiatingMessage = -1;
544 static gint ett_x2ap_SuccessfulOutcome = -1;
545 static gint ett_x2ap_UnsuccessfulOutcome = -1;
546
547 /*--- End of included file: packet-x2ap-ett.c ---*/
548 #line 73 "packet-x2ap-template.c"
549
550 /* Global variables */
551 static guint32 ProcedureCode;
552 static guint32 ProtocolIE_ID;
553 static guint gbl_x2apSctpPort=SCTP_PORT_X2AP;
554
555 /* Dissector tables */
556 static dissector_table_t x2ap_ies_dissector_table;
557 static dissector_table_t x2ap_extension_dissector_table;
558 static dissector_table_t x2ap_proc_imsg_dissector_table;
559 static dissector_table_t x2ap_proc_sout_dissector_table;
560 static dissector_table_t x2ap_proc_uout_dissector_table;
561
562 static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
563 static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
564 static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
565 static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
566 static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
567 void proto_reg_handoff_x2ap(void);
568
569
570 /*--- Included file: packet-x2ap-fn.c ---*/
571 #line 1 "packet-x2ap-fn.c"
572
573 static const value_string x2ap_Criticality_vals[] = {
574   {   0, "reject" },
575   {   1, "ignore" },
576   {   2, "notify" },
577   { 0, NULL }
578 };
579
580
581 static int
582 dissect_x2ap_Criticality(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
583   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
584                                      3, NULL, FALSE, 0, NULL);
585
586   return offset;
587 }
588
589
590
591 static int
592 dissect_x2ap_INTEGER_0_maxPrivateIEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
593   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
594                                                             0U, maxPrivateIEs, NULL, FALSE);
595
596   return offset;
597 }
598
599
600
601 static int
602 dissect_x2ap_OBJECT_IDENTIFIER(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
603   offset = dissect_per_object_identifier(tvb, offset, actx, tree, hf_index, NULL);
604
605   return offset;
606 }
607
608
609 static const value_string x2ap_PrivateIE_ID_vals[] = {
610   {   0, "local" },
611   {   1, "global" },
612   { 0, NULL }
613 };
614
615 static const per_choice_t PrivateIE_ID_choice[] = {
616   {   0, &hf_x2ap_local          , ASN1_NO_EXTENSIONS     , dissect_x2ap_INTEGER_0_maxPrivateIEs },
617   {   1, &hf_x2ap_global         , ASN1_NO_EXTENSIONS     , dissect_x2ap_OBJECT_IDENTIFIER },
618   { 0, NULL, 0, NULL }
619 };
620
621 static int
622 dissect_x2ap_PrivateIE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
623   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
624                                  ett_x2ap_PrivateIE_ID, PrivateIE_ID_choice,
625                                  NULL);
626
627   return offset;
628 }
629
630
631 static const value_string x2ap_ProcedureCode_vals[] = {
632   { id_handoverPreparation, "id-handoverPreparation" },
633   { id_handoverCancel, "id-handoverCancel" },
634   { id_loadIndication, "id-loadIndication" },
635   { id_errorIndication, "id-errorIndication" },
636   { id_snStatusTransfer, "id-snStatusTransfer" },
637   { id_uEContextRelease, "id-uEContextRelease" },
638   { id_x2Setup, "id-x2Setup" },
639   { id_reset, "id-reset" },
640   { id_eNBConfigurationUpdate, "id-eNBConfigurationUpdate" },
641   { id_resourceStatusReportingInitiation, "id-resourceStatusReportingInitiation" },
642   { id_resourceStatusReporting, "id-resourceStatusReporting" },
643   { id_privateMessage, "id-privateMessage" },
644   { id_mobilitySettingsChange, "id-mobilitySettingsChange" },
645   { id_rLFIndication, "id-rLFIndication" },
646   { id_handoverReport, "id-handoverReport" },
647   { 0, NULL }
648 };
649
650
651 static int
652 dissect_x2ap_ProcedureCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
653 #line 67 "x2ap.cnf"
654   ProcedureCode = 0xFFFF;
655
656   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
657                                                             0U, 255U, &ProcedureCode, FALSE);
658
659 #line 61 "x2ap.cnf"
660     col_add_fstr(actx->pinfo->cinfo, COL_INFO, "%s ",
661                 val_to_str(ProcedureCode, x2ap_ProcedureCode_vals,
662                            "unknown message"));
663
664   return offset;
665 }
666
667
668 static const value_string x2ap_ProtocolIE_ID_vals[] = {
669   { id_E_RABs_Admitted_Item, "id-E-RABs-Admitted-Item" },
670   { id_E_RABs_Admitted_List, "id-E-RABs-Admitted-List" },
671   { id_E_RAB_Item, "id-E-RAB-Item" },
672   { id_E_RABs_NotAdmitted_List, "id-E-RABs-NotAdmitted-List" },
673   { id_E_RABs_ToBeSetup_Item, "id-E-RABs-ToBeSetup-Item" },
674   { id_Cause, "id-Cause" },
675   { id_CellInformation, "id-CellInformation" },
676   { id_CellInformation_Item, "id-CellInformation-Item" },
677   { id_New_eNB_UE_X2AP_ID, "id-New-eNB-UE-X2AP-ID" },
678   { id_Old_eNB_UE_X2AP_ID, "id-Old-eNB-UE-X2AP-ID" },
679   { id_TargetCell_ID, "id-TargetCell-ID" },
680   { id_TargeteNBtoSource_eNBTransparentContainer, "id-TargeteNBtoSource-eNBTransparentContainer" },
681   { id_TraceActivation, "id-TraceActivation" },
682   { id_UE_ContextInformation, "id-UE-ContextInformation" },
683   { id_UE_HistoryInformation, "id-UE-HistoryInformation" },
684   { id_UE_X2AP_ID, "id-UE-X2AP-ID" },
685   { id_CriticalityDiagnostics, "id-CriticalityDiagnostics" },
686   { id_E_RABs_SubjectToStatusTransfer_List, "id-E-RABs-SubjectToStatusTransfer-List" },
687   { id_E_RABs_SubjectToStatusTransfer_Item, "id-E-RABs-SubjectToStatusTransfer-Item" },
688   { id_ServedCells, "id-ServedCells" },
689   { id_GlobalENB_ID, "id-GlobalENB-ID" },
690   { id_TimeToWait, "id-TimeToWait" },
691   { id_GUMMEI_ID, "id-GUMMEI-ID" },
692   { id_GUGroupIDList, "id-GUGroupIDList" },
693   { id_ServedCellsToAdd, "id-ServedCellsToAdd" },
694   { id_ServedCellsToModify, "id-ServedCellsToModify" },
695   { id_ServedCellsToDelete, "id-ServedCellsToDelete" },
696   { id_Registration_Request, "id-Registration-Request" },
697   { id_CellToReport, "id-CellToReport" },
698   { id_ReportingPeriodicity, "id-ReportingPeriodicity" },
699   { id_CellToReport_Item, "id-CellToReport-Item" },
700   { id_CellMeasurementResult, "id-CellMeasurementResult" },
701   { id_CellMeasurementResult_Item, "id-CellMeasurementResult-Item" },
702   { id_GUGroupIDToAddList, "id-GUGroupIDToAddList" },
703   { id_GUGroupIDToDeleteList, "id-GUGroupIDToDeleteList" },
704   { id_SRVCCOperationPossible, "id-SRVCCOperationPossible" },
705   { id_Measurement_ID, "id-Measurement-ID" },
706   { id_ReportCharacteristics, "id-ReportCharacteristics" },
707   { id_ENB1_Measurement_ID, "id-ENB1-Measurement-ID" },
708   { id_ENB2_Measurement_ID, "id-ENB2-Measurement-ID" },
709   { id_Number_of_Antennaports, "id-Number-of-Antennaports" },
710   { id_CompositeAvailableCapacityGroup, "id-CompositeAvailableCapacityGroup" },
711   { id_ENB1_Cell_ID, "id-ENB1-Cell-ID" },
712   { id_ENB2_Cell_ID, "id-ENB2-Cell-ID" },
713   { id_ENB2_Proposed_Mobility_Parameters, "id-ENB2-Proposed-Mobility-Parameters" },
714   { id_ENB1_Mobility_Parameters, "id-ENB1-Mobility-Parameters" },
715   { id_ENB2_Mobility_Parameters_Modification_Range, "id-ENB2-Mobility-Parameters-Modification-Range" },
716   { id_FailureCellPCI, "id-FailureCellPCI" },
717   { id_Re_establishmentCellECGI, "id-Re-establishmentCellECGI" },
718   { id_FailureCellCRNTI, "id-FailureCellCRNTI" },
719   { id_ShortMAC_I, "id-ShortMAC-I" },
720   { id_SourceCellECGI, "id-SourceCellECGI" },
721   { id_FailureCellECGI, "id-FailureCellECGI" },
722   { id_HandoverReportType, "id-HandoverReportType" },
723   { id_PRACH_Configuration, "id-PRACH-Configuration" },
724   { 0, NULL }
725 };
726
727
728 static int
729 dissect_x2ap_ProtocolIE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
730   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
731                                                             0U, maxProtocolIEs, &ProtocolIE_ID, FALSE);
732
733 #line 50 "x2ap.cnf"
734   if (tree) {
735     proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", val_to_str(ProtocolIE_ID, VALS(x2ap_ProtocolIE_ID_vals), "unknown (%d)"));
736   }
737
738   return offset;
739 }
740
741
742 static const value_string x2ap_TriggeringMessage_vals[] = {
743   {   0, "initiating-message" },
744   {   1, "successful-outcome" },
745   {   2, "unsuccessful-outcome" },
746   { 0, NULL }
747 };
748
749
750 static int
751 dissect_x2ap_TriggeringMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
752   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
753                                      3, NULL, FALSE, 0, NULL);
754
755   return offset;
756 }
757
758
759
760 static int
761 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_) {
762   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue);
763
764   return offset;
765 }
766
767
768 static const per_sequence_t ProtocolIE_Field_sequence[] = {
769   { &hf_x2ap_id             , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_ID },
770   { &hf_x2ap_criticality    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_Criticality },
771   { &hf_x2ap_protocolIE_Field_value, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Field_value },
772   { NULL, 0, 0, NULL }
773 };
774
775 static int
776 dissect_x2ap_ProtocolIE_Field(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
777   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
778                                    ett_x2ap_ProtocolIE_Field, ProtocolIE_Field_sequence);
779
780   return offset;
781 }
782
783
784 static const per_sequence_t ProtocolIE_Container_sequence_of[1] = {
785   { &hf_x2ap_ProtocolIE_Container_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Field },
786 };
787
788 static int
789 dissect_x2ap_ProtocolIE_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
790   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
791                                                   ett_x2ap_ProtocolIE_Container, ProtocolIE_Container_sequence_of,
792                                                   0, maxProtocolIEs, FALSE);
793
794   return offset;
795 }
796
797
798
799 static int
800 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_) {
801   offset = dissect_x2ap_ProtocolIE_Field(tvb, offset, actx, tree, hf_index);
802
803   return offset;
804 }
805
806
807
808 static int
809 dissect_x2ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
810   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue);
811
812   return offset;
813 }
814
815
816 static const per_sequence_t ProtocolExtensionField_sequence[] = {
817   { &hf_x2ap_extension_id   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_ID },
818   { &hf_x2ap_criticality    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_Criticality },
819   { &hf_x2ap_extensionValue , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_T_extensionValue },
820   { NULL, 0, 0, NULL }
821 };
822
823 static int
824 dissect_x2ap_ProtocolExtensionField(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
825   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
826                                    ett_x2ap_ProtocolExtensionField, ProtocolExtensionField_sequence);
827
828   return offset;
829 }
830
831
832 static const per_sequence_t ProtocolExtensionContainer_sequence_of[1] = {
833   { &hf_x2ap_ProtocolExtensionContainer_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolExtensionField },
834 };
835
836 static int
837 dissect_x2ap_ProtocolExtensionContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
838   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
839                                                   ett_x2ap_ProtocolExtensionContainer, ProtocolExtensionContainer_sequence_of,
840                                                   1, maxProtocolExtensions, FALSE);
841
842   return offset;
843 }
844
845
846
847 static int
848 dissect_x2ap_PrivateIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
849   offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL);
850
851   return offset;
852 }
853
854
855 static const per_sequence_t PrivateIE_Field_sequence[] = {
856   { &hf_x2ap_private_id     , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_PrivateIE_ID },
857   { &hf_x2ap_criticality    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_Criticality },
858   { &hf_x2ap_privateIE_Field_value, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_PrivateIE_Field_value },
859   { NULL, 0, 0, NULL }
860 };
861
862 static int
863 dissect_x2ap_PrivateIE_Field(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
864   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
865                                    ett_x2ap_PrivateIE_Field, PrivateIE_Field_sequence);
866
867   return offset;
868 }
869
870
871 static const per_sequence_t PrivateIE_Container_sequence_of[1] = {
872   { &hf_x2ap_PrivateIE_Container_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_PrivateIE_Field },
873 };
874
875 static int
876 dissect_x2ap_PrivateIE_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
877   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
878                                                   ett_x2ap_PrivateIE_Container, PrivateIE_Container_sequence_of,
879                                                   1, maxPrivateIEs, FALSE);
880
881   return offset;
882 }
883
884
885
886 static int
887 dissect_x2ap_Key_eNodeB_Star(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
888   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
889                                      256, 256, FALSE, NULL);
890
891   return offset;
892 }
893
894
895
896 static int
897 dissect_x2ap_NextHopChainingCount(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
898   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
899                                                             0U, 7U, NULL, FALSE);
900
901   return offset;
902 }
903
904
905 static const per_sequence_t AS_SecurityInformation_sequence[] = {
906   { &hf_x2ap_key_eNodeB_star, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_Key_eNodeB_Star },
907   { &hf_x2ap_nextHopChainingCount, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_NextHopChainingCount },
908   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
909   { NULL, 0, 0, NULL }
910 };
911
912 static int
913 dissect_x2ap_AS_SecurityInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
914   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
915                                    ett_x2ap_AS_SecurityInformation, AS_SecurityInformation_sequence);
916
917   return offset;
918 }
919
920
921 static const value_string x2ap_PriorityLevel_vals[] = {
922   {   0, "spare" },
923   {   1, "highest" },
924   {  14, "lowest" },
925   {  15, "no-priority" },
926   { 0, NULL }
927 };
928
929
930 static int
931 dissect_x2ap_PriorityLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
932   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
933                                                             0U, 15U, NULL, FALSE);
934
935   return offset;
936 }
937
938
939 static const value_string x2ap_Pre_emptionCapability_vals[] = {
940   {   0, "shall-not-trigger-pre-emption" },
941   {   1, "may-trigger-pre-emption" },
942   { 0, NULL }
943 };
944
945
946 static int
947 dissect_x2ap_Pre_emptionCapability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
948   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
949                                      2, NULL, FALSE, 0, NULL);
950
951   return offset;
952 }
953
954
955 static const value_string x2ap_Pre_emptionVulnerability_vals[] = {
956   {   0, "not-pre-emptable" },
957   {   1, "pre-emptable" },
958   { 0, NULL }
959 };
960
961
962 static int
963 dissect_x2ap_Pre_emptionVulnerability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
964   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
965                                      2, NULL, FALSE, 0, NULL);
966
967   return offset;
968 }
969
970
971 static const per_sequence_t AllocationAndRetentionPriority_sequence[] = {
972   { &hf_x2ap_priorityLevel  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_PriorityLevel },
973   { &hf_x2ap_pre_emptionCapability, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_Pre_emptionCapability },
974   { &hf_x2ap_pre_emptionVulnerability, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_Pre_emptionVulnerability },
975   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
976   { NULL, 0, 0, NULL }
977 };
978
979 static int
980 dissect_x2ap_AllocationAndRetentionPriority(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
981   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
982                                    ett_x2ap_AllocationAndRetentionPriority, AllocationAndRetentionPriority_sequence);
983
984   return offset;
985 }
986
987
988
989 static int
990 dissect_x2ap_BitRate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
991   offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index,
992                                                             0U, G_GINT64_CONSTANT(10000000000U), NULL, FALSE);
993
994   return offset;
995 }
996
997
998
999 static int
1000 dissect_x2ap_PLMN_Identity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1001 #line 78 "x2ap.cnf"
1002   tvbuff_t *parameter_tvb=NULL;
1003
1004   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1005                                        3, 3, FALSE, &parameter_tvb);
1006
1007
1008         if(tvb_length(tvb)==0) 
1009                 return offset;
1010                 
1011         if (!parameter_tvb)
1012                 return offset;
1013         dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, tree, 0, FALSE);
1014
1015
1016   return offset;
1017 }
1018
1019
1020 static const per_sequence_t BroadcastPLMNs_Item_sequence_of[1] = {
1021   { &hf_x2ap_BroadcastPLMNs_Item_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_PLMN_Identity },
1022 };
1023
1024 static int
1025 dissect_x2ap_BroadcastPLMNs_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1026   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1027                                                   ett_x2ap_BroadcastPLMNs_Item, BroadcastPLMNs_Item_sequence_of,
1028                                                   1, maxnoofBPLMNs, FALSE);
1029
1030   return offset;
1031 }
1032
1033
1034
1035 static int
1036 dissect_x2ap_CapacityValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1037   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1038                                                             0U, 100U, NULL, FALSE);
1039
1040   return offset;
1041 }
1042
1043
1044
1045 static int
1046 dissect_x2ap_CellCapacityClassValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1047   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1048                                                             1U, 100U, NULL, TRUE);
1049
1050   return offset;
1051 }
1052
1053
1054 static const value_string x2ap_CauseRadioNetwork_vals[] = {
1055   {   0, "handover-desirable-for-radio-reasons" },
1056   {   1, "time-critical-handover" },
1057   {   2, "resource-optimisation-handover" },
1058   {   3, "reduce-load-in-serving-cell" },
1059   {   4, "partial-handover" },
1060   {   5, "unknown-new-eNB-UE-X2AP-ID" },
1061   {   6, "unknown-old-eNB-UE-X2AP-ID" },
1062   {   7, "unknown-pair-of-UE-X2AP-ID" },
1063   {   8, "ho-target-not-allowed" },
1064   {   9, "tx2relocoverall-expiry" },
1065   {  10, "trelocprep-expiry" },
1066   {  11, "cell-not-available" },
1067   {  12, "no-radio-resources-available-in-target-cell" },
1068   {  13, "invalid-MME-GroupID" },
1069   {  14, "unknown-MME-Code" },
1070   {  15, "encryption-and-or-integrity-protection-algorithms-not-supported" },
1071   {  16, "reportCharacteristicsEmpty" },
1072   {  17, "noReportPeriodicity" },
1073   {  18, "existingMeasurementID" },
1074   {  19, "unknown-eNB-Measurement-ID" },
1075   {  20, "measurement-temporarily-not-available" },
1076   {  21, "unspecified" },
1077   {  22, "load-balancing" },
1078   {  23, "handover-optimisation" },
1079   {  24, "value-out-of-allowed-range" },
1080   { 0, NULL }
1081 };
1082
1083
1084 static int
1085 dissect_x2ap_CauseRadioNetwork(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1086   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1087                                      22, NULL, TRUE, 3, NULL);
1088
1089   return offset;
1090 }
1091
1092
1093 static const value_string x2ap_CauseTransport_vals[] = {
1094   {   0, "transport-resource-unavailable" },
1095   {   1, "unspecified" },
1096   { 0, NULL }
1097 };
1098
1099
1100 static int
1101 dissect_x2ap_CauseTransport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1102   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1103                                      2, NULL, TRUE, 0, NULL);
1104
1105   return offset;
1106 }
1107
1108
1109 static const value_string x2ap_CauseProtocol_vals[] = {
1110   {   0, "transfer-syntax-error" },
1111   {   1, "abstract-syntax-error-reject" },
1112   {   2, "abstract-syntax-error-ignore-and-notify" },
1113   {   3, "message-not-compatible-with-receiver-state" },
1114   {   4, "semantic-error" },
1115   {   5, "unspecified" },
1116   {   6, "abstract-syntax-error-falsely-constructed-message" },
1117   { 0, NULL }
1118 };
1119
1120
1121 static int
1122 dissect_x2ap_CauseProtocol(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1123   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1124                                      7, NULL, TRUE, 0, NULL);
1125
1126   return offset;
1127 }
1128
1129
1130 static const value_string x2ap_CauseMisc_vals[] = {
1131   {   0, "control-processing-overload" },
1132   {   1, "hardware-failure" },
1133   {   2, "om-intervention" },
1134   {   3, "not-enough-user-plane-processing-resources" },
1135   {   4, "unspecified" },
1136   { 0, NULL }
1137 };
1138
1139
1140 static int
1141 dissect_x2ap_CauseMisc(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1142   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1143                                      5, NULL, TRUE, 0, NULL);
1144
1145   return offset;
1146 }
1147
1148
1149 static const value_string x2ap_Cause_vals[] = {
1150   {   0, "radioNetwork" },
1151   {   1, "transport" },
1152   {   2, "protocol" },
1153   {   3, "misc" },
1154   { 0, NULL }
1155 };
1156
1157 static const per_choice_t Cause_choice[] = {
1158   {   0, &hf_x2ap_radioNetwork   , ASN1_EXTENSION_ROOT    , dissect_x2ap_CauseRadioNetwork },
1159   {   1, &hf_x2ap_transport      , ASN1_EXTENSION_ROOT    , dissect_x2ap_CauseTransport },
1160   {   2, &hf_x2ap_protocol       , ASN1_EXTENSION_ROOT    , dissect_x2ap_CauseProtocol },
1161   {   3, &hf_x2ap_misc           , ASN1_EXTENSION_ROOT    , dissect_x2ap_CauseMisc },
1162   { 0, NULL, 0, NULL }
1163 };
1164
1165 static int
1166 dissect_x2ap_Cause(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1167   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1168                                  ett_x2ap_Cause, Cause_choice,
1169                                  NULL);
1170
1171   return offset;
1172 }
1173
1174
1175 static const value_string x2ap_Cell_Size_vals[] = {
1176   {   0, "verysmall" },
1177   {   1, "small" },
1178   {   2, "medium" },
1179   {   3, "large" },
1180   { 0, NULL }
1181 };
1182
1183
1184 static int
1185 dissect_x2ap_Cell_Size(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1186   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1187                                      4, NULL, TRUE, 0, NULL);
1188
1189   return offset;
1190 }
1191
1192
1193 static const per_sequence_t CellType_sequence[] = {
1194   { &hf_x2ap_cell_Size      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_Cell_Size },
1195   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1196   { NULL, 0, 0, NULL }
1197 };
1198
1199 static int
1200 dissect_x2ap_CellType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1201   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1202                                    ett_x2ap_CellType, CellType_sequence);
1203
1204   return offset;
1205 }
1206
1207
1208 static const per_sequence_t CompositeAvailableCapacity_sequence[] = {
1209   { &hf_x2ap_cellCapacityClassValue, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_CellCapacityClassValue },
1210   { &hf_x2ap_capacityValue  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_CapacityValue },
1211   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1212   { NULL, 0, 0, NULL }
1213 };
1214
1215 static int
1216 dissect_x2ap_CompositeAvailableCapacity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1217   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1218                                    ett_x2ap_CompositeAvailableCapacity, CompositeAvailableCapacity_sequence);
1219
1220   return offset;
1221 }
1222
1223
1224 static const per_sequence_t CompositeAvailableCapacityGroup_sequence[] = {
1225   { &hf_x2ap_dL_CompositeAvailableCapacity, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_CompositeAvailableCapacity },
1226   { &hf_x2ap_uL_CompositeAvailableCapacity, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_CompositeAvailableCapacity },
1227   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1228   { NULL, 0, 0, NULL }
1229 };
1230
1231 static int
1232 dissect_x2ap_CompositeAvailableCapacityGroup(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1233   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1234                                    ett_x2ap_CompositeAvailableCapacityGroup, CompositeAvailableCapacityGroup_sequence);
1235
1236   return offset;
1237 }
1238
1239
1240
1241 static int
1242 dissect_x2ap_PDCP_SN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1243   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1244                                                             0U, 4095U, NULL, FALSE);
1245
1246   return offset;
1247 }
1248
1249
1250
1251 static int
1252 dissect_x2ap_HFN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1253   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1254                                                             0U, 1048575U, NULL, FALSE);
1255
1256   return offset;
1257 }
1258
1259
1260 static const per_sequence_t COUNTvalue_sequence[] = {
1261   { &hf_x2ap_pDCP_SN        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_PDCP_SN },
1262   { &hf_x2ap_hFN            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_HFN },
1263   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1264   { NULL, 0, 0, NULL }
1265 };
1266
1267 static int
1268 dissect_x2ap_COUNTvalue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1269   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1270                                    ett_x2ap_COUNTvalue, COUNTvalue_sequence);
1271
1272   return offset;
1273 }
1274
1275
1276 static const value_string x2ap_TypeOfError_vals[] = {
1277   {   0, "not-understood" },
1278   {   1, "missing" },
1279   { 0, NULL }
1280 };
1281
1282
1283 static int
1284 dissect_x2ap_TypeOfError(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1285   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1286                                      2, NULL, TRUE, 0, NULL);
1287
1288   return offset;
1289 }
1290
1291
1292 static const per_sequence_t CriticalityDiagnostics_IE_List_item_sequence[] = {
1293   { &hf_x2ap_iECriticality  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_Criticality },
1294   { &hf_x2ap_iE_ID          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_ID },
1295   { &hf_x2ap_typeOfError    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_TypeOfError },
1296   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1297   { NULL, 0, 0, NULL }
1298 };
1299
1300 static int
1301 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_) {
1302   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1303                                    ett_x2ap_CriticalityDiagnostics_IE_List_item, CriticalityDiagnostics_IE_List_item_sequence);
1304
1305   return offset;
1306 }
1307
1308
1309 static const per_sequence_t CriticalityDiagnostics_IE_List_sequence_of[1] = {
1310   { &hf_x2ap_CriticalityDiagnostics_IE_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_CriticalityDiagnostics_IE_List_item },
1311 };
1312
1313 static int
1314 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_) {
1315   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1316                                                   ett_x2ap_CriticalityDiagnostics_IE_List, CriticalityDiagnostics_IE_List_sequence_of,
1317                                                   1, maxNrOfErrors, FALSE);
1318
1319   return offset;
1320 }
1321
1322
1323 static const per_sequence_t CriticalityDiagnostics_sequence[] = {
1324   { &hf_x2ap_procedureCode  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProcedureCode },
1325   { &hf_x2ap_triggeringMessage, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_TriggeringMessage },
1326   { &hf_x2ap_procedureCriticality, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_Criticality },
1327   { &hf_x2ap_iEsCriticalityDiagnostics, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_CriticalityDiagnostics_IE_List },
1328   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1329   { NULL, 0, 0, NULL }
1330 };
1331
1332 static int
1333 dissect_x2ap_CriticalityDiagnostics(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1334   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1335                                    ett_x2ap_CriticalityDiagnostics, CriticalityDiagnostics_sequence);
1336
1337   return offset;
1338 }
1339
1340
1341
1342 static int
1343 dissect_x2ap_CRNTI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1344   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1345                                      16, 16, FALSE, NULL);
1346
1347   return offset;
1348 }
1349
1350
1351 static const value_string x2ap_CyclicPrefixDL_vals[] = {
1352   {   0, "normal" },
1353   {   1, "extended" },
1354   { 0, NULL }
1355 };
1356
1357
1358 static int
1359 dissect_x2ap_CyclicPrefixDL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1360   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1361                                      2, NULL, TRUE, 0, NULL);
1362
1363   return offset;
1364 }
1365
1366
1367 static const value_string x2ap_CyclicPrefixUL_vals[] = {
1368   {   0, "normal" },
1369   {   1, "extended" },
1370   { 0, NULL }
1371 };
1372
1373
1374 static int
1375 dissect_x2ap_CyclicPrefixUL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1376   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1377                                      2, NULL, TRUE, 0, NULL);
1378
1379   return offset;
1380 }
1381
1382
1383 static const value_string x2ap_DL_Forwarding_vals[] = {
1384   {   0, "dL-forwardingProposed" },
1385   { 0, NULL }
1386 };
1387
1388
1389 static int
1390 dissect_x2ap_DL_Forwarding(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1391   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1392                                      1, NULL, TRUE, 0, NULL);
1393
1394   return offset;
1395 }
1396
1397
1398
1399 static int
1400 dissect_x2ap_EARFCN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1401   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1402                                                             0U, maxEARFCN, NULL, FALSE);
1403
1404   return offset;
1405 }
1406
1407
1408 static const value_string x2ap_Transmission_Bandwidth_vals[] = {
1409   {   0, "bw6" },
1410   {   1, "bw15" },
1411   {   2, "bw25" },
1412   {   3, "bw50" },
1413   {   4, "bw75" },
1414   {   5, "bw100" },
1415   { 0, NULL }
1416 };
1417
1418
1419 static int
1420 dissect_x2ap_Transmission_Bandwidth(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1421   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1422                                      6, NULL, TRUE, 0, NULL);
1423
1424   return offset;
1425 }
1426
1427
1428 static const per_sequence_t FDD_Info_sequence[] = {
1429   { &hf_x2ap_uL_EARFCN      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_EARFCN },
1430   { &hf_x2ap_dL_EARFCN      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_EARFCN },
1431   { &hf_x2ap_uL_Transmission_Bandwidth, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_Transmission_Bandwidth },
1432   { &hf_x2ap_dL_Transmission_Bandwidth, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_Transmission_Bandwidth },
1433   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1434   { NULL, 0, 0, NULL }
1435 };
1436
1437 static int
1438 dissect_x2ap_FDD_Info(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1439   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1440                                    ett_x2ap_FDD_Info, FDD_Info_sequence);
1441
1442   return offset;
1443 }
1444
1445
1446 static const value_string x2ap_SubframeAssignment_vals[] = {
1447   {   0, "sa0" },
1448   {   1, "sa1" },
1449   {   2, "sa2" },
1450   {   3, "sa3" },
1451   {   4, "sa4" },
1452   {   5, "sa5" },
1453   {   6, "sa6" },
1454   { 0, NULL }
1455 };
1456
1457
1458 static int
1459 dissect_x2ap_SubframeAssignment(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1460   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1461                                      7, NULL, TRUE, 0, NULL);
1462
1463   return offset;
1464 }
1465
1466
1467 static const value_string x2ap_SpecialSubframePatterns_vals[] = {
1468   {   0, "ssp0" },
1469   {   1, "ssp1" },
1470   {   2, "ssp2" },
1471   {   3, "ssp3" },
1472   {   4, "ssp4" },
1473   {   5, "ssp5" },
1474   {   6, "ssp6" },
1475   {   7, "ssp7" },
1476   {   8, "ssp8" },
1477   { 0, NULL }
1478 };
1479
1480
1481 static int
1482 dissect_x2ap_SpecialSubframePatterns(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1483   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1484                                      9, NULL, TRUE, 0, NULL);
1485
1486   return offset;
1487 }
1488
1489
1490 static const per_sequence_t SpecialSubframe_Info_sequence[] = {
1491   { &hf_x2ap_specialSubframePatterns, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_SpecialSubframePatterns },
1492   { &hf_x2ap_cyclicPrefixDL , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_CyclicPrefixDL },
1493   { &hf_x2ap_cyclicPrefixUL , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_CyclicPrefixUL },
1494   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1495   { NULL, 0, 0, NULL }
1496 };
1497
1498 static int
1499 dissect_x2ap_SpecialSubframe_Info(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1500   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1501                                    ett_x2ap_SpecialSubframe_Info, SpecialSubframe_Info_sequence);
1502
1503   return offset;
1504 }
1505
1506
1507 static const per_sequence_t TDD_Info_sequence[] = {
1508   { &hf_x2ap_eARFCN         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_EARFCN },
1509   { &hf_x2ap_transmission_Bandwidth, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_Transmission_Bandwidth },
1510   { &hf_x2ap_subframeAssignment, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_SubframeAssignment },
1511   { &hf_x2ap_specialSubframe_Info, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_SpecialSubframe_Info },
1512   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1513   { NULL, 0, 0, NULL }
1514 };
1515
1516 static int
1517 dissect_x2ap_TDD_Info(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1518   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1519                                    ett_x2ap_TDD_Info, TDD_Info_sequence);
1520
1521   return offset;
1522 }
1523
1524
1525 static const value_string x2ap_EUTRA_Mode_Info_vals[] = {
1526   {   0, "fDD" },
1527   {   1, "tDD" },
1528   { 0, NULL }
1529 };
1530
1531 static const per_choice_t EUTRA_Mode_Info_choice[] = {
1532   {   0, &hf_x2ap_fDD            , ASN1_EXTENSION_ROOT    , dissect_x2ap_FDD_Info },
1533   {   1, &hf_x2ap_tDD            , ASN1_EXTENSION_ROOT    , dissect_x2ap_TDD_Info },
1534   { 0, NULL, 0, NULL }
1535 };
1536
1537 static int
1538 dissect_x2ap_EUTRA_Mode_Info(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1539   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1540                                  ett_x2ap_EUTRA_Mode_Info, EUTRA_Mode_Info_choice,
1541                                  NULL);
1542
1543   return offset;
1544 }
1545
1546
1547
1548 static int
1549 dissect_x2ap_EUTRANCellIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1550   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1551                                      28, 28, FALSE, NULL);
1552
1553   return offset;
1554 }
1555
1556
1557 static const per_sequence_t ECGI_sequence[] = {
1558   { &hf_x2ap_pLMN_Identity  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_PLMN_Identity },
1559   { &hf_x2ap_eUTRANcellIdentifier, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_EUTRANCellIdentifier },
1560   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1561   { NULL, 0, 0, NULL }
1562 };
1563
1564 static int
1565 dissect_x2ap_ECGI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1566   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1567                                    ett_x2ap_ECGI, ECGI_sequence);
1568
1569   return offset;
1570 }
1571
1572
1573
1574 static int
1575 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_) {
1576   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1577                                      20, 20, FALSE, NULL);
1578
1579   return offset;
1580 }
1581
1582
1583
1584 static int
1585 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_) {
1586   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1587                                      28, 28, FALSE, NULL);
1588
1589   return offset;
1590 }
1591
1592
1593 static const value_string x2ap_ENB_ID_vals[] = {
1594   {   0, "macro-eNB-ID" },
1595   {   1, "home-eNB-ID" },
1596   { 0, NULL }
1597 };
1598
1599 static const per_choice_t ENB_ID_choice[] = {
1600   {   0, &hf_x2ap_macro_eNB_ID   , ASN1_EXTENSION_ROOT    , dissect_x2ap_BIT_STRING_SIZE_20 },
1601   {   1, &hf_x2ap_home_eNB_ID    , ASN1_EXTENSION_ROOT    , dissect_x2ap_BIT_STRING_SIZE_28 },
1602   { 0, NULL, 0, NULL }
1603 };
1604
1605 static int
1606 dissect_x2ap_ENB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1607   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1608                                  ett_x2ap_ENB_ID, ENB_ID_choice,
1609                                  NULL);
1610
1611   return offset;
1612 }
1613
1614
1615
1616 static int
1617 dissect_x2ap_EncryptionAlgorithms(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1618   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1619                                      16, 16, TRUE, NULL);
1620
1621   return offset;
1622 }
1623
1624
1625 static const per_sequence_t EPLMNs_sequence_of[1] = {
1626   { &hf_x2ap_EPLMNs_item    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_PLMN_Identity },
1627 };
1628
1629 static int
1630 dissect_x2ap_EPLMNs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1631   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1632                                                   ett_x2ap_EPLMNs, EPLMNs_sequence_of,
1633                                                   1, maxnoofEPLMNs, FALSE);
1634
1635   return offset;
1636 }
1637
1638
1639
1640 static int
1641 dissect_x2ap_E_RAB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1642   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1643                                                             0U, 15U, NULL, TRUE);
1644
1645   return offset;
1646 }
1647
1648
1649
1650 static int
1651 dissect_x2ap_QCI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1652   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1653                                                             0U, 255U, NULL, FALSE);
1654
1655   return offset;
1656 }
1657
1658
1659 static const per_sequence_t GBR_QosInformation_sequence[] = {
1660   { &hf_x2ap_e_RAB_MaximumBitrateDL, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_BitRate },
1661   { &hf_x2ap_e_RAB_MaximumBitrateUL, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_BitRate },
1662   { &hf_x2ap_e_RAB_GuaranteedBitrateDL, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_BitRate },
1663   { &hf_x2ap_e_RAB_GuaranteedBitrateUL, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_BitRate },
1664   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1665   { NULL, 0, 0, NULL }
1666 };
1667
1668 static int
1669 dissect_x2ap_GBR_QosInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1670   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1671                                    ett_x2ap_GBR_QosInformation, GBR_QosInformation_sequence);
1672
1673   return offset;
1674 }
1675
1676
1677 static const per_sequence_t E_RAB_Level_QoS_Parameters_sequence[] = {
1678   { &hf_x2ap_qCI            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_QCI },
1679   { &hf_x2ap_allocationAndRetentionPriority, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_AllocationAndRetentionPriority },
1680   { &hf_x2ap_gbrQosInformation, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_GBR_QosInformation },
1681   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1682   { NULL, 0, 0, NULL }
1683 };
1684
1685 static int
1686 dissect_x2ap_E_RAB_Level_QoS_Parameters(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1687   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1688                                    ett_x2ap_E_RAB_Level_QoS_Parameters, E_RAB_Level_QoS_Parameters_sequence);
1689
1690   return offset;
1691 }
1692
1693
1694 static const per_sequence_t E_RAB_List_sequence_of[1] = {
1695   { &hf_x2ap_E_RAB_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Single_Container },
1696 };
1697
1698 static int
1699 dissect_x2ap_E_RAB_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1700   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1701                                                   ett_x2ap_E_RAB_List, E_RAB_List_sequence_of,
1702                                                   1, maxnoofBearers, FALSE);
1703
1704   return offset;
1705 }
1706
1707
1708 static const per_sequence_t E_RAB_Item_sequence[] = {
1709   { &hf_x2ap_e_RAB_ID       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_E_RAB_ID },
1710   { &hf_x2ap_cause          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_Cause },
1711   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1712   { NULL, 0, 0, NULL }
1713 };
1714
1715 static int
1716 dissect_x2ap_E_RAB_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1717   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1718                                    ett_x2ap_E_RAB_Item, E_RAB_Item_sequence);
1719
1720   return offset;
1721 }
1722
1723
1724
1725 static int
1726 dissect_x2ap_EUTRANTraceID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1727   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1728                                        8, 8, FALSE, NULL);
1729
1730   return offset;
1731 }
1732
1733
1734 static const value_string x2ap_EventType_vals[] = {
1735   {   0, "change-of-serving-cell" },
1736   { 0, NULL }
1737 };
1738
1739
1740 static int
1741 dissect_x2ap_EventType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1742   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1743                                      1, NULL, TRUE, 0, NULL);
1744
1745   return offset;
1746 }
1747
1748
1749 static const value_string x2ap_ForbiddenInterRATs_vals[] = {
1750   {   0, "all" },
1751   {   1, "geran" },
1752   {   2, "utran" },
1753   {   3, "cdma2000" },
1754   { 0, NULL }
1755 };
1756
1757
1758 static int
1759 dissect_x2ap_ForbiddenInterRATs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1760   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1761                                      4, NULL, TRUE, 0, NULL);
1762
1763   return offset;
1764 }
1765
1766
1767
1768 static int
1769 dissect_x2ap_TAC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1770   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1771                                        2, 2, FALSE, NULL);
1772
1773   return offset;
1774 }
1775
1776
1777 static const per_sequence_t ForbiddenTACs_sequence_of[1] = {
1778   { &hf_x2ap_ForbiddenTACs_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_TAC },
1779 };
1780
1781 static int
1782 dissect_x2ap_ForbiddenTACs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1783   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1784                                                   ett_x2ap_ForbiddenTACs, ForbiddenTACs_sequence_of,
1785                                                   1, maxnoofForbTACs, FALSE);
1786
1787   return offset;
1788 }
1789
1790
1791 static const per_sequence_t ForbiddenTAs_Item_sequence[] = {
1792   { &hf_x2ap_pLMN_Identity  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_PLMN_Identity },
1793   { &hf_x2ap_forbiddenTACs  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ForbiddenTACs },
1794   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1795   { NULL, 0, 0, NULL }
1796 };
1797
1798 static int
1799 dissect_x2ap_ForbiddenTAs_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1800   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1801                                    ett_x2ap_ForbiddenTAs_Item, ForbiddenTAs_Item_sequence);
1802
1803   return offset;
1804 }
1805
1806
1807 static const per_sequence_t ForbiddenTAs_sequence_of[1] = {
1808   { &hf_x2ap_ForbiddenTAs_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ForbiddenTAs_Item },
1809 };
1810
1811 static int
1812 dissect_x2ap_ForbiddenTAs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1813   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1814                                                   ett_x2ap_ForbiddenTAs, ForbiddenTAs_sequence_of,
1815                                                   1, maxnoofEPLMNsPlusOne, FALSE);
1816
1817   return offset;
1818 }
1819
1820
1821
1822 static int
1823 dissect_x2ap_LAC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1824   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1825                                        2, 2, FALSE, NULL);
1826
1827   return offset;
1828 }
1829
1830
1831 static const per_sequence_t ForbiddenLACs_sequence_of[1] = {
1832   { &hf_x2ap_ForbiddenLACs_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_LAC },
1833 };
1834
1835 static int
1836 dissect_x2ap_ForbiddenLACs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1837   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1838                                                   ett_x2ap_ForbiddenLACs, ForbiddenLACs_sequence_of,
1839                                                   1, maxnoofForbLACs, FALSE);
1840
1841   return offset;
1842 }
1843
1844
1845 static const per_sequence_t ForbiddenLAs_Item_sequence[] = {
1846   { &hf_x2ap_pLMN_Identity  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_PLMN_Identity },
1847   { &hf_x2ap_forbiddenLACs  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ForbiddenLACs },
1848   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1849   { NULL, 0, 0, NULL }
1850 };
1851
1852 static int
1853 dissect_x2ap_ForbiddenLAs_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1854   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1855                                    ett_x2ap_ForbiddenLAs_Item, ForbiddenLAs_Item_sequence);
1856
1857   return offset;
1858 }
1859
1860
1861 static const per_sequence_t ForbiddenLAs_sequence_of[1] = {
1862   { &hf_x2ap_ForbiddenLAs_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ForbiddenLAs_Item },
1863 };
1864
1865 static int
1866 dissect_x2ap_ForbiddenLAs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1867   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1868                                                   ett_x2ap_ForbiddenLAs, ForbiddenLAs_sequence_of,
1869                                                   1, maxnoofEPLMNsPlusOne, FALSE);
1870
1871   return offset;
1872 }
1873
1874
1875 static const per_sequence_t GlobalENB_ID_sequence[] = {
1876   { &hf_x2ap_pLMN_Identity  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_PLMN_Identity },
1877   { &hf_x2ap_eNB_ID         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ENB_ID },
1878   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1879   { NULL, 0, 0, NULL }
1880 };
1881
1882 static int
1883 dissect_x2ap_GlobalENB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1884   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1885                                    ett_x2ap_GlobalENB_ID, GlobalENB_ID_sequence);
1886
1887   return offset;
1888 }
1889
1890
1891
1892 static int
1893 dissect_x2ap_TransportLayerAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1894 #line 111 "x2ap.cnf"
1895   tvbuff_t *parameter_tvb=NULL;
1896   proto_tree *subtree;
1897   gint tvb_len;
1898   
1899   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1900                                      1, 160, TRUE, &parameter_tvb);
1901
1902   if (!parameter_tvb)
1903     return offset;
1904         /* Get the length */
1905         tvb_len = tvb_length(parameter_tvb);
1906         subtree = proto_item_add_subtree(actx->created_item, ett_x2ap_TransportLayerAddress);
1907         if (tvb_len==4){
1908                 /* IPv4 */
1909                  proto_tree_add_item(subtree, hf_x2ap_transportLayerAddressIPv4, parameter_tvb, 0, tvb_len, FALSE);
1910         }
1911         if (tvb_len==16){
1912                 /* IPv6 */
1913                  proto_tree_add_item(subtree, hf_x2ap_transportLayerAddressIPv6, parameter_tvb, 0, tvb_len, FALSE);
1914         }
1915
1916
1917
1918   return offset;
1919 }
1920
1921
1922
1923 static int
1924 dissect_x2ap_GTP_TEI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1925   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1926                                        4, 4, FALSE, NULL);
1927
1928   return offset;
1929 }
1930
1931
1932 static const per_sequence_t GTPtunnelEndpoint_sequence[] = {
1933   { &hf_x2ap_transportLayerAddress, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_TransportLayerAddress },
1934   { &hf_x2ap_gTP_TEID       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_GTP_TEI },
1935   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1936   { NULL, 0, 0, NULL }
1937 };
1938
1939 static int
1940 dissect_x2ap_GTPtunnelEndpoint(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1941   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1942                                    ett_x2ap_GTPtunnelEndpoint, GTPtunnelEndpoint_sequence);
1943
1944   return offset;
1945 }
1946
1947
1948
1949 static int
1950 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_) {
1951   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1952                                        2, 2, FALSE, NULL);
1953
1954   return offset;
1955 }
1956
1957
1958 static const per_sequence_t GU_Group_ID_sequence[] = {
1959   { &hf_x2ap_pLMN_Identity  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_PLMN_Identity },
1960   { &hf_x2ap_mME_Group_ID   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_MME_Group_ID },
1961   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
1962   { NULL, 0, 0, NULL }
1963 };
1964
1965 static int
1966 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_) {
1967   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1968                                    ett_x2ap_GU_Group_ID, GU_Group_ID_sequence);
1969
1970   return offset;
1971 }
1972
1973
1974 static const per_sequence_t GUGroupIDList_sequence_of[1] = {
1975   { &hf_x2ap_GUGroupIDList_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_GU_Group_ID },
1976 };
1977
1978 static int
1979 dissect_x2ap_GUGroupIDList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1980   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1981                                                   ett_x2ap_GUGroupIDList, GUGroupIDList_sequence_of,
1982                                                   1, maxPools, FALSE);
1983
1984   return offset;
1985 }
1986
1987
1988
1989 static int
1990 dissect_x2ap_MME_Code(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1991   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1992                                        1, 1, FALSE, NULL);
1993
1994   return offset;
1995 }
1996
1997
1998 static const per_sequence_t GUMMEI_sequence[] = {
1999   { &hf_x2ap_gU_Group_ID    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_GU_Group_ID },
2000   { &hf_x2ap_mMME_Code      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_MME_Code },
2001   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
2002   { NULL, 0, 0, NULL }
2003 };
2004
2005 static int
2006 dissect_x2ap_GUMMEI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2007   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2008                                    ett_x2ap_GUMMEI, GUMMEI_sequence);
2009
2010   return offset;
2011 }
2012
2013
2014 static const value_string x2ap_HandoverReportType_vals[] = {
2015   {   0, "hoTooEarly" },
2016   {   1, "hoToWrongCell" },
2017   { 0, NULL }
2018 };
2019
2020
2021 static int
2022 dissect_x2ap_HandoverReportType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2023   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2024                                      2, NULL, TRUE, 0, NULL);
2025
2026   return offset;
2027 }
2028
2029
2030 static const per_sequence_t HandoverRestrictionList_sequence[] = {
2031   { &hf_x2ap_servingPLMN    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_PLMN_Identity },
2032   { &hf_x2ap_equivalentPLMNs, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_EPLMNs },
2033   { &hf_x2ap_forbiddenTAs   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ForbiddenTAs },
2034   { &hf_x2ap_forbiddenLAs   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ForbiddenLAs },
2035   { &hf_x2ap_forbiddenInterRATs, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ForbiddenInterRATs },
2036   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
2037   { NULL, 0, 0, NULL }
2038 };
2039
2040 static int
2041 dissect_x2ap_HandoverRestrictionList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2042   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2043                                    ett_x2ap_HandoverRestrictionList, HandoverRestrictionList_sequence);
2044
2045   return offset;
2046 }
2047
2048
2049 static const value_string x2ap_LoadIndicator_vals[] = {
2050   {   0, "lowLoad" },
2051   {   1, "mediumLoad" },
2052   {   2, "highLoad" },
2053   {   3, "overLoad" },
2054   { 0, NULL }
2055 };
2056
2057
2058 static int
2059 dissect_x2ap_LoadIndicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2060   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2061                                      4, NULL, TRUE, 0, NULL);
2062
2063   return offset;
2064 }
2065
2066
2067 static const per_sequence_t HWLoadIndicator_sequence[] = {
2068   { &hf_x2ap_dLHWLoadIndicator, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_LoadIndicator },
2069   { &hf_x2ap_uLHWLoadIndicator, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_LoadIndicator },
2070   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
2071   { NULL, 0, 0, NULL }
2072 };
2073
2074 static int
2075 dissect_x2ap_HWLoadIndicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2076   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2077                                    ett_x2ap_HWLoadIndicator, HWLoadIndicator_sequence);
2078
2079   return offset;
2080 }
2081
2082
2083
2084 static int
2085 dissect_x2ap_IntegrityProtectionAlgorithms(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2086   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
2087                                      16, 16, TRUE, NULL);
2088
2089   return offset;
2090 }
2091
2092
2093
2094 static int
2095 dissect_x2ap_InterfacesToTrace(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2096   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
2097                                      8, 8, FALSE, NULL);
2098
2099   return offset;
2100 }
2101
2102
2103
2104 static int
2105 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_) {
2106   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2107                                                             0U, 4095U, NULL, FALSE);
2108
2109   return offset;
2110 }
2111
2112
2113 static const per_sequence_t LastVisitedEUTRANCellInformation_sequence[] = {
2114   { &hf_x2ap_global_Cell_ID , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ECGI },
2115   { &hf_x2ap_cellType       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_CellType },
2116   { &hf_x2ap_time_UE_StayedInCell, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_Time_UE_StayedInCell },
2117   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
2118   { NULL, 0, 0, NULL }
2119 };
2120
2121 static int
2122 dissect_x2ap_LastVisitedEUTRANCellInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2123   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2124                                    ett_x2ap_LastVisitedEUTRANCellInformation, LastVisitedEUTRANCellInformation_sequence);
2125
2126   return offset;
2127 }
2128
2129
2130
2131 static int
2132 dissect_x2ap_LastVisitedUTRANCellInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2133   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
2134                                        NO_BOUND, NO_BOUND, FALSE, NULL);
2135
2136   return offset;
2137 }
2138
2139
2140
2141 static int
2142 dissect_x2ap_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2143   offset = dissect_per_null(tvb, offset, actx, tree, hf_index);
2144
2145   return offset;
2146 }
2147
2148
2149 static const value_string x2ap_LastVisitedGERANCellInformation_vals[] = {
2150   {   0, "undefined" },
2151   { 0, NULL }
2152 };
2153
2154 static const per_choice_t LastVisitedGERANCellInformation_choice[] = {
2155   {   0, &hf_x2ap_undefined      , ASN1_EXTENSION_ROOT    , dissect_x2ap_NULL },
2156   { 0, NULL, 0, NULL }
2157 };
2158
2159 static int
2160 dissect_x2ap_LastVisitedGERANCellInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2161   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2162                                  ett_x2ap_LastVisitedGERANCellInformation, LastVisitedGERANCellInformation_choice,
2163                                  NULL);
2164
2165   return offset;
2166 }
2167
2168
2169 static const value_string x2ap_LastVisitedCell_Item_vals[] = {
2170   {   0, "e-UTRAN-Cell" },
2171   {   1, "uTRAN-Cell" },
2172   {   2, "gERAN-Cell" },
2173   { 0, NULL }
2174 };
2175
2176 static const per_choice_t LastVisitedCell_Item_choice[] = {
2177   {   0, &hf_x2ap_e_UTRAN_Cell   , ASN1_EXTENSION_ROOT    , dissect_x2ap_LastVisitedEUTRANCellInformation },
2178   {   1, &hf_x2ap_uTRAN_Cell     , ASN1_EXTENSION_ROOT    , dissect_x2ap_LastVisitedUTRANCellInformation },
2179   {   2, &hf_x2ap_gERAN_Cell     , ASN1_EXTENSION_ROOT    , dissect_x2ap_LastVisitedGERANCellInformation },
2180   { 0, NULL, 0, NULL }
2181 };
2182
2183 static int
2184 dissect_x2ap_LastVisitedCell_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2185   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2186                                  ett_x2ap_LastVisitedCell_Item, LastVisitedCell_Item_choice,
2187                                  NULL);
2188
2189   return offset;
2190 }
2191
2192
2193 static const value_string x2ap_ReportArea_vals[] = {
2194   {   0, "ecgi" },
2195   { 0, NULL }
2196 };
2197
2198
2199 static int
2200 dissect_x2ap_ReportArea(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2201   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2202                                      1, NULL, TRUE, 0, NULL);
2203
2204   return offset;
2205 }
2206
2207
2208 static const per_sequence_t LocationReportingInformation_sequence[] = {
2209   { &hf_x2ap_eventType      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_EventType },
2210   { &hf_x2ap_reportArea     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ReportArea },
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_LocationReportingInformation(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_LocationReportingInformation, LocationReportingInformation_sequence);
2219
2220   return offset;
2221 }
2222
2223
2224
2225 static int
2226 dissect_x2ap_Measurement_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2227   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2228                                                             1U, 4095U, NULL, TRUE);
2229
2230   return offset;
2231 }
2232
2233
2234
2235 static int
2236 dissect_x2ap_INTEGER_M20_20(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2237   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2238                                                             -20, 20U, NULL, FALSE);
2239
2240   return offset;
2241 }
2242
2243
2244 static const per_sequence_t MobilityParametersModificationRange_sequence[] = {
2245   { &hf_x2ap_handoverTriggerChangeLowerLimit, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_INTEGER_M20_20 },
2246   { &hf_x2ap_handoverTriggerChangeUpperLimit, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_INTEGER_M20_20 },
2247   { NULL, 0, 0, NULL }
2248 };
2249
2250 static int
2251 dissect_x2ap_MobilityParametersModificationRange(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2252   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2253                                    ett_x2ap_MobilityParametersModificationRange, MobilityParametersModificationRange_sequence);
2254
2255   return offset;
2256 }
2257
2258
2259 static const per_sequence_t MobilityParametersInformation_sequence[] = {
2260   { &hf_x2ap_handoverTriggerChange, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_INTEGER_M20_20 },
2261   { NULL, 0, 0, NULL }
2262 };
2263
2264 static int
2265 dissect_x2ap_MobilityParametersInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2266   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2267                                    ett_x2ap_MobilityParametersInformation, MobilityParametersInformation_sequence);
2268
2269   return offset;
2270 }
2271
2272
2273
2274 static int
2275 dissect_x2ap_PCI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2276   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2277                                                             0U, 503U, NULL, TRUE);
2278
2279   return offset;
2280 }
2281
2282
2283 static const per_sequence_t Neighbour_Information_item_sequence[] = {
2284   { &hf_x2ap_eCGI           , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ECGI },
2285   { &hf_x2ap_pCI            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_PCI },
2286   { &hf_x2ap_eARFCN         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_EARFCN },
2287   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
2288   { NULL, 0, 0, NULL }
2289 };
2290
2291 static int
2292 dissect_x2ap_Neighbour_Information_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2293   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2294                                    ett_x2ap_Neighbour_Information_item, Neighbour_Information_item_sequence);
2295
2296   return offset;
2297 }
2298
2299
2300 static const per_sequence_t Neighbour_Information_sequence_of[1] = {
2301   { &hf_x2ap_Neighbour_Information_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_Neighbour_Information_item },
2302 };
2303
2304 static int
2305 dissect_x2ap_Neighbour_Information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2306   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2307                                                   ett_x2ap_Neighbour_Information, Neighbour_Information_sequence_of,
2308                                                   0, maxnoofNeighbours, FALSE);
2309
2310   return offset;
2311 }
2312
2313
2314 static const value_string x2ap_Number_of_Antennaports_vals[] = {
2315   {   0, "an1" },
2316   {   1, "an2" },
2317   {   2, "an4" },
2318   { 0, NULL }
2319 };
2320
2321
2322 static int
2323 dissect_x2ap_Number_of_Antennaports(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2324   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2325                                      3, NULL, TRUE, 0, NULL);
2326
2327   return offset;
2328 }
2329
2330
2331
2332 static int
2333 dissect_x2ap_INTEGER_0_837(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2334   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2335                                                             0U, 837U, NULL, FALSE);
2336
2337   return offset;
2338 }
2339
2340
2341
2342 static int
2343 dissect_x2ap_INTEGER_0_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2344   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2345                                                             0U, 15U, NULL, FALSE);
2346
2347   return offset;
2348 }
2349
2350
2351
2352 static int
2353 dissect_x2ap_BOOLEAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2354   offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL);
2355
2356   return offset;
2357 }
2358
2359
2360
2361 static int
2362 dissect_x2ap_INTEGER_0_94(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2363   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2364                                                             0U, 94U, NULL, FALSE);
2365
2366   return offset;
2367 }
2368
2369
2370
2371 static int
2372 dissect_x2ap_INTEGER_0_63(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2373   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2374                                                             0U, 63U, NULL, FALSE);
2375
2376   return offset;
2377 }
2378
2379
2380 static const per_sequence_t PRACH_Configuration_sequence[] = {
2381   { &hf_x2ap_rootSequenceIndex, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_INTEGER_0_837 },
2382   { &hf_x2ap_zeroCorrelationIndex, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_INTEGER_0_15 },
2383   { &hf_x2ap_highSpeedFlag  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_BOOLEAN },
2384   { &hf_x2ap_prach_FreqOffset, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_INTEGER_0_94 },
2385   { &hf_x2ap_prach_ConfigIndex, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_INTEGER_0_63 },
2386   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
2387   { NULL, 0, 0, NULL }
2388 };
2389
2390 static int
2391 dissect_x2ap_PRACH_Configuration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2392   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2393                                    ett_x2ap_PRACH_Configuration, PRACH_Configuration_sequence);
2394
2395   return offset;
2396 }
2397
2398
2399
2400 static int
2401 dissect_x2ap_ReceiveStatusofULPDCPSDUs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2402   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
2403                                      4096, 4096, FALSE, NULL);
2404
2405   return offset;
2406 }
2407
2408
2409 static const value_string x2ap_Registration_Request_vals[] = {
2410   {   0, "start" },
2411   {   1, "stop" },
2412   { 0, NULL }
2413 };
2414
2415
2416 static int
2417 dissect_x2ap_Registration_Request(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2418   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2419                                      2, NULL, TRUE, 0, NULL);
2420
2421   return offset;
2422 }
2423
2424
2425
2426 static int
2427 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_) {
2428   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
2429                                      6, 110, TRUE, NULL);
2430
2431   return offset;
2432 }
2433
2434
2435 static const value_string x2ap_RNTP_Threshold_vals[] = {
2436   {   0, "minusInfinity" },
2437   {   1, "minusEleven" },
2438   {   2, "minusTen" },
2439   {   3, "minusNine" },
2440   {   4, "minusEight" },
2441   {   5, "minusSeven" },
2442   {   6, "minusSix" },
2443   {   7, "minusFive" },
2444   {   8, "minusFour" },
2445   {   9, "minusThree" },
2446   {  10, "minusTwo" },
2447   {  11, "minusOne" },
2448   {  12, "zero" },
2449   {  13, "one" },
2450   {  14, "two" },
2451   {  15, "three" },
2452   { 0, NULL }
2453 };
2454
2455
2456 static int
2457 dissect_x2ap_RNTP_Threshold(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2458   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2459                                      16, NULL, TRUE, 0, NULL);
2460
2461   return offset;
2462 }
2463
2464
2465 static const value_string x2ap_T_numberOfCellSpecificAntennaPorts_vals[] = {
2466   {   0, "one" },
2467   {   1, "two" },
2468   {   2, "four" },
2469   { 0, NULL }
2470 };
2471
2472
2473 static int
2474 dissect_x2ap_T_numberOfCellSpecificAntennaPorts(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2475   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2476                                      3, NULL, TRUE, 0, NULL);
2477
2478   return offset;
2479 }
2480
2481
2482
2483 static int
2484 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_) {
2485   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2486                                                             0U, 3U, NULL, TRUE);
2487
2488   return offset;
2489 }
2490
2491
2492
2493 static int
2494 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_) {
2495   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2496                                                             0U, 4U, NULL, TRUE);
2497
2498   return offset;
2499 }
2500
2501
2502 static const per_sequence_t RelativeNarrowbandTxPower_sequence[] = {
2503   { &hf_x2ap_rNTP_PerPRB    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_BIT_STRING_SIZE_6_110_ },
2504   { &hf_x2ap_rNTP_Threshold , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_RNTP_Threshold },
2505   { &hf_x2ap_numberOfCellSpecificAntennaPorts, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_T_numberOfCellSpecificAntennaPorts },
2506   { &hf_x2ap_p_B            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_INTEGER_0_3_ },
2507   { &hf_x2ap_pDCCH_InterferenceImpact, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_INTEGER_0_4_ },
2508   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
2509   { NULL, 0, 0, NULL }
2510 };
2511
2512 static int
2513 dissect_x2ap_RelativeNarrowbandTxPower(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2514   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2515                                    ett_x2ap_RelativeNarrowbandTxPower, RelativeNarrowbandTxPower_sequence);
2516
2517   return offset;
2518 }
2519
2520
2521
2522 static int
2523 dissect_x2ap_ReportCharacteristics(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2524   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
2525                                      32, 32, FALSE, NULL);
2526
2527   return offset;
2528 }
2529
2530
2531
2532 static int
2533 dissect_x2ap_RRC_Context(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2534 #line 136 "x2ap.cnf"
2535   tvbuff_t *parameter_tvb=NULL;
2536   gint32 start_offset;
2537   
2538   start_offset = offset;
2539   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
2540                                        NO_BOUND, NO_BOUND, FALSE, NULL);
2541
2542   parameter_tvb = tvb_new_subset(tvb, start_offset>>3, -1, -1); 
2543   if (!parameter_tvb)
2544     return offset;
2545   dissect_lte_rrc_HandoverCommand_PDU(parameter_tvb, actx->pinfo, tree);
2546
2547
2548
2549   return offset;
2550 }
2551
2552
2553
2554 static int
2555 dissect_x2ap_DL_GBR_PRB_usage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2556   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2557                                                             0U, 100U, NULL, FALSE);
2558
2559   return offset;
2560 }
2561
2562
2563
2564 static int
2565 dissect_x2ap_UL_GBR_PRB_usage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2566   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2567                                                             0U, 100U, NULL, FALSE);
2568
2569   return offset;
2570 }
2571
2572
2573
2574 static int
2575 dissect_x2ap_DL_non_GBR_PRB_usage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2576   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2577                                                             0U, 100U, NULL, FALSE);
2578
2579   return offset;
2580 }
2581
2582
2583
2584 static int
2585 dissect_x2ap_UL_non_GBR_PRB_usage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2586   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2587                                                             0U, 100U, NULL, FALSE);
2588
2589   return offset;
2590 }
2591
2592
2593
2594 static int
2595 dissect_x2ap_DL_Total_PRB_usage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2596   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2597                                                             0U, 100U, NULL, FALSE);
2598
2599   return offset;
2600 }
2601
2602
2603
2604 static int
2605 dissect_x2ap_UL_Total_PRB_usage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2606   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2607                                                             0U, 100U, NULL, FALSE);
2608
2609   return offset;
2610 }
2611
2612
2613 static const per_sequence_t RadioResourceStatus_sequence[] = {
2614   { &hf_x2ap_dL_GBR_PRB_usage, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_DL_GBR_PRB_usage },
2615   { &hf_x2ap_uL_GBR_PRB_usage, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_UL_GBR_PRB_usage },
2616   { &hf_x2ap_dL_non_GBR_PRB_usage, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_DL_non_GBR_PRB_usage },
2617   { &hf_x2ap_uL_non_GBR_PRB_usage, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_UL_non_GBR_PRB_usage },
2618   { &hf_x2ap_dL_Total_PRB_usage, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_DL_Total_PRB_usage },
2619   { &hf_x2ap_uL_Total_PRB_usage, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_UL_Total_PRB_usage },
2620   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
2621   { NULL, 0, 0, NULL }
2622 };
2623
2624 static int
2625 dissect_x2ap_RadioResourceStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2626   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2627                                    ett_x2ap_RadioResourceStatus, RadioResourceStatus_sequence);
2628
2629   return offset;
2630 }
2631
2632
2633 static const per_sequence_t S1TNLLoadIndicator_sequence[] = {
2634   { &hf_x2ap_dLS1TNLLoadIndicator, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_LoadIndicator },
2635   { &hf_x2ap_uLS1TNLLoadIndicator, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_LoadIndicator },
2636   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
2637   { NULL, 0, 0, NULL }
2638 };
2639
2640 static int
2641 dissect_x2ap_S1TNLLoadIndicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2642   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2643                                    ett_x2ap_S1TNLLoadIndicator, S1TNLLoadIndicator_sequence);
2644
2645   return offset;
2646 }
2647
2648
2649 static const per_sequence_t ServedCell_Information_sequence[] = {
2650   { &hf_x2ap_pCI            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_PCI },
2651   { &hf_x2ap_cellId         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ECGI },
2652   { &hf_x2ap_tAC            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_TAC },
2653   { &hf_x2ap_broadcastPLMNs , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_BroadcastPLMNs_Item },
2654   { &hf_x2ap_eUTRA_Mode_Info, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_EUTRA_Mode_Info },
2655   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
2656   { NULL, 0, 0, NULL }
2657 };
2658
2659 static int
2660 dissect_x2ap_ServedCell_Information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2661   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2662                                    ett_x2ap_ServedCell_Information, ServedCell_Information_sequence);
2663
2664   return offset;
2665 }
2666
2667
2668 static const per_sequence_t ServedCells_item_sequence[] = {
2669   { &hf_x2ap_servedCellInfo , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ServedCell_Information },
2670   { &hf_x2ap_neighbour_Info , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_Neighbour_Information },
2671   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
2672   { NULL, 0, 0, NULL }
2673 };
2674
2675 static int
2676 dissect_x2ap_ServedCells_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2677   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2678                                    ett_x2ap_ServedCells_item, ServedCells_item_sequence);
2679
2680   return offset;
2681 }
2682
2683
2684 static const per_sequence_t ServedCells_sequence_of[1] = {
2685   { &hf_x2ap_ServedCells_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ServedCells_item },
2686 };
2687
2688 static int
2689 dissect_x2ap_ServedCells(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2690   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2691                                                   ett_x2ap_ServedCells, ServedCells_sequence_of,
2692                                                   1, maxCellineNB, FALSE);
2693
2694   return offset;
2695 }
2696
2697
2698
2699 static int
2700 dissect_x2ap_ShortMAC_I(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2701   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
2702                                      16, 16, FALSE, NULL);
2703
2704   return offset;
2705 }
2706
2707
2708 static const value_string x2ap_SRVCCOperationPossible_vals[] = {
2709   {   0, "possible" },
2710   { 0, NULL }
2711 };
2712
2713
2714 static int
2715 dissect_x2ap_SRVCCOperationPossible(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2716   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2717                                      1, NULL, TRUE, 0, NULL);
2718
2719   return offset;
2720 }
2721
2722
2723
2724 static int
2725 dissect_x2ap_SubscriberProfileIDforRFP(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2726   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2727                                                             1U, 256U, NULL, FALSE);
2728
2729   return offset;
2730 }
2731
2732
2733
2734 static int
2735 dissect_x2ap_TargeteNBtoSource_eNBTransparentContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2736 #line 91 "x2ap.cnf"
2737   tvbuff_t *parameter_tvb=NULL;
2738   
2739   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
2740                                        NO_BOUND, NO_BOUND, FALSE, &parameter_tvb);
2741
2742         if (!parameter_tvb)
2743                 return offset;
2744           
2745      dissect_lte_rrc_HandoverCommand_PDU(parameter_tvb, actx->pinfo, tree);
2746         
2747
2748
2749   return offset;
2750 }
2751
2752
2753 static const value_string x2ap_TimeToWait_vals[] = {
2754   {   0, "v1s" },
2755   {   1, "v2s" },
2756   {   2, "v5s" },
2757   {   3, "v10s" },
2758   {   4, "v20s" },
2759   {   5, "v60s" },
2760   { 0, NULL }
2761 };
2762
2763
2764 static int
2765 dissect_x2ap_TimeToWait(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2766   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2767                                      6, NULL, TRUE, 0, NULL);
2768
2769   return offset;
2770 }
2771
2772
2773 static const value_string x2ap_TraceDepth_vals[] = {
2774   {   0, "minimum" },
2775   {   1, "medium" },
2776   {   2, "maximum" },
2777   {   3, "minimumWithoutVendorSpecificExtension" },
2778   {   4, "mediumWithoutVendorSpecificExtension" },
2779   {   5, "maximumWithoutVendorSpecificExtension" },
2780   { 0, NULL }
2781 };
2782
2783
2784 static int
2785 dissect_x2ap_TraceDepth(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2786   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2787                                      6, NULL, TRUE, 0, NULL);
2788
2789   return offset;
2790 }
2791
2792
2793
2794 static int
2795 dissect_x2ap_TraceCollectionEntityIPAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2796   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
2797                                      1, 160, TRUE, NULL);
2798
2799   return offset;
2800 }
2801
2802
2803 static const per_sequence_t TraceActivation_sequence[] = {
2804   { &hf_x2ap_eUTRANTraceID  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_EUTRANTraceID },
2805   { &hf_x2ap_interfacesToTrace, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_InterfacesToTrace },
2806   { &hf_x2ap_traceDepth     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_TraceDepth },
2807   { &hf_x2ap_traceCollectionEntityIPAddress, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_TraceCollectionEntityIPAddress },
2808   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
2809   { NULL, 0, 0, NULL }
2810 };
2811
2812 static int
2813 dissect_x2ap_TraceActivation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2814   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2815                                    ett_x2ap_TraceActivation, TraceActivation_sequence);
2816
2817   return offset;
2818 }
2819
2820
2821 static const per_sequence_t UE_HistoryInformation_sequence_of[1] = {
2822   { &hf_x2ap_UE_HistoryInformation_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_LastVisitedCell_Item },
2823 };
2824
2825 static int
2826 dissect_x2ap_UE_HistoryInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2827   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2828                                                   ett_x2ap_UE_HistoryInformation, UE_HistoryInformation_sequence_of,
2829                                                   1, maxnoofCells, FALSE);
2830
2831   return offset;
2832 }
2833
2834
2835
2836 static int
2837 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_) {
2838   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2839                                                             0U, 4294967295U, NULL, FALSE);
2840
2841   return offset;
2842 }
2843
2844
2845
2846 static int
2847 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_) {
2848   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2849                                                             0U, 4095U, NULL, FALSE);
2850
2851   return offset;
2852 }
2853
2854
2855 static const per_sequence_t UEAggregateMaximumBitRate_sequence[] = {
2856   { &hf_x2ap_uEaggregateMaximumBitRateDownlink, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_BitRate },
2857   { &hf_x2ap_uEaggregateMaximumBitRateUplink, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_BitRate },
2858   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
2859   { NULL, 0, 0, NULL }
2860 };
2861
2862 static int
2863 dissect_x2ap_UEAggregateMaximumBitRate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2864   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2865                                    ett_x2ap_UEAggregateMaximumBitRate, UEAggregateMaximumBitRate_sequence);
2866
2867   return offset;
2868 }
2869
2870
2871 static const per_sequence_t UESecurityCapabilities_sequence[] = {
2872   { &hf_x2ap_encryptionAlgorithms, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_EncryptionAlgorithms },
2873   { &hf_x2ap_integrityProtectionAlgorithms, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_IntegrityProtectionAlgorithms },
2874   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
2875   { NULL, 0, 0, NULL }
2876 };
2877
2878 static int
2879 dissect_x2ap_UESecurityCapabilities(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2880   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2881                                    ett_x2ap_UESecurityCapabilities, UESecurityCapabilities_sequence);
2882
2883   return offset;
2884 }
2885
2886
2887 static const value_string x2ap_UL_InterferenceOverloadIndication_Item_vals[] = {
2888   {   0, "high-interference" },
2889   {   1, "medium-interference" },
2890   {   2, "low-interference" },
2891   { 0, NULL }
2892 };
2893
2894
2895 static int
2896 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_) {
2897   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2898                                      3, NULL, TRUE, 0, NULL);
2899
2900   return offset;
2901 }
2902
2903
2904 static const per_sequence_t UL_InterferenceOverloadIndication_sequence_of[1] = {
2905   { &hf_x2ap_UL_InterferenceOverloadIndication_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_UL_InterferenceOverloadIndication_Item },
2906 };
2907
2908 static int
2909 dissect_x2ap_UL_InterferenceOverloadIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2910   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2911                                                   ett_x2ap_UL_InterferenceOverloadIndication, UL_InterferenceOverloadIndication_sequence_of,
2912                                                   1, maxnoofPRBs, FALSE);
2913
2914   return offset;
2915 }
2916
2917
2918
2919 static int
2920 dissect_x2ap_UL_HighInterferenceIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2921   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
2922                                      1, 110, TRUE, NULL);
2923
2924   return offset;
2925 }
2926
2927
2928 static const per_sequence_t UL_HighInterferenceIndicationInfo_Item_sequence[] = {
2929   { &hf_x2ap_target_Cell_ID , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ECGI },
2930   { &hf_x2ap_ul_interferenceindication, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_UL_HighInterferenceIndication },
2931   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
2932   { NULL, 0, 0, NULL }
2933 };
2934
2935 static int
2936 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_) {
2937   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2938                                    ett_x2ap_UL_HighInterferenceIndicationInfo_Item, UL_HighInterferenceIndicationInfo_Item_sequence);
2939
2940   return offset;
2941 }
2942
2943
2944 static const per_sequence_t UL_HighInterferenceIndicationInfo_sequence_of[1] = {
2945   { &hf_x2ap_UL_HighInterferenceIndicationInfo_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_UL_HighInterferenceIndicationInfo_Item },
2946 };
2947
2948 static int
2949 dissect_x2ap_UL_HighInterferenceIndicationInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2950   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2951                                                   ett_x2ap_UL_HighInterferenceIndicationInfo, UL_HighInterferenceIndicationInfo_sequence_of,
2952                                                   1, maxCellineNB, FALSE);
2953
2954   return offset;
2955 }
2956
2957
2958 static const per_sequence_t HandoverRequest_sequence[] = {
2959   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
2960   { NULL, 0, 0, NULL }
2961 };
2962
2963 static int
2964 dissect_x2ap_HandoverRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2965   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2966                                    ett_x2ap_HandoverRequest, HandoverRequest_sequence);
2967
2968   return offset;
2969 }
2970
2971
2972 static const per_sequence_t E_RABs_ToBeSetup_List_sequence_of[1] = {
2973   { &hf_x2ap_E_RABs_ToBeSetup_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Single_Container },
2974 };
2975
2976 static int
2977 dissect_x2ap_E_RABs_ToBeSetup_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2978   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2979                                                   ett_x2ap_E_RABs_ToBeSetup_List, E_RABs_ToBeSetup_List_sequence_of,
2980                                                   1, maxnoofBearers, FALSE);
2981
2982   return offset;
2983 }
2984
2985
2986 static const per_sequence_t UE_ContextInformation_sequence[] = {
2987   { &hf_x2ap_mME_UE_S1AP_ID , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_UE_S1AP_ID },
2988   { &hf_x2ap_uESecurityCapabilities, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_UESecurityCapabilities },
2989   { &hf_x2ap_aS_SecurityInformation, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_AS_SecurityInformation },
2990   { &hf_x2ap_uEaggregateMaximumBitRate, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_UEAggregateMaximumBitRate },
2991   { &hf_x2ap_subscriberProfileIDforRFP, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_SubscriberProfileIDforRFP },
2992   { &hf_x2ap_e_RABs_ToBeSetup_List, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_E_RABs_ToBeSetup_List },
2993   { &hf_x2ap_rRC_Context    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_RRC_Context },
2994   { &hf_x2ap_handoverRestrictionList, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_HandoverRestrictionList },
2995   { &hf_x2ap_locationReportingInformation, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_LocationReportingInformation },
2996   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
2997   { NULL, 0, 0, NULL }
2998 };
2999
3000 static int
3001 dissect_x2ap_UE_ContextInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3002   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3003                                    ett_x2ap_UE_ContextInformation, UE_ContextInformation_sequence);
3004
3005   return offset;
3006 }
3007
3008
3009 static const per_sequence_t E_RABs_ToBeSetup_Item_sequence[] = {
3010   { &hf_x2ap_e_RAB_ID       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_E_RAB_ID },
3011   { &hf_x2ap_e_RAB_Level_QoS_Parameters, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_E_RAB_Level_QoS_Parameters },
3012   { &hf_x2ap_dL_Forwarding  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_DL_Forwarding },
3013   { &hf_x2ap_uL_GTPtunnelEndpoint, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_GTPtunnelEndpoint },
3014   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
3015   { NULL, 0, 0, NULL }
3016 };
3017
3018 static int
3019 dissect_x2ap_E_RABs_ToBeSetup_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3020   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3021                                    ett_x2ap_E_RABs_ToBeSetup_Item, E_RABs_ToBeSetup_Item_sequence);
3022
3023   return offset;
3024 }
3025
3026
3027 static const per_sequence_t HandoverRequestAcknowledge_sequence[] = {
3028   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
3029   { NULL, 0, 0, NULL }
3030 };
3031
3032 static int
3033 dissect_x2ap_HandoverRequestAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3034   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3035                                    ett_x2ap_HandoverRequestAcknowledge, HandoverRequestAcknowledge_sequence);
3036
3037   return offset;
3038 }
3039
3040
3041 static const per_sequence_t E_RABs_Admitted_List_sequence_of[1] = {
3042   { &hf_x2ap_E_RABs_Admitted_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Single_Container },
3043 };
3044
3045 static int
3046 dissect_x2ap_E_RABs_Admitted_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3047   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
3048                                                   ett_x2ap_E_RABs_Admitted_List, E_RABs_Admitted_List_sequence_of,
3049                                                   1, maxnoofBearers, FALSE);
3050
3051   return offset;
3052 }
3053
3054
3055 static const per_sequence_t E_RABs_Admitted_Item_sequence[] = {
3056   { &hf_x2ap_e_RAB_ID       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_E_RAB_ID },
3057   { &hf_x2ap_uL_GTP_TunnelEndpoint, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_GTPtunnelEndpoint },
3058   { &hf_x2ap_dL_GTP_TunnelEndpoint, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_GTPtunnelEndpoint },
3059   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
3060   { NULL, 0, 0, NULL }
3061 };
3062
3063 static int
3064 dissect_x2ap_E_RABs_Admitted_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3065   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3066                                    ett_x2ap_E_RABs_Admitted_Item, E_RABs_Admitted_Item_sequence);
3067
3068   return offset;
3069 }
3070
3071
3072 static const per_sequence_t HandoverPreparationFailure_sequence[] = {
3073   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
3074   { NULL, 0, 0, NULL }
3075 };
3076
3077 static int
3078 dissect_x2ap_HandoverPreparationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3079   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3080                                    ett_x2ap_HandoverPreparationFailure, HandoverPreparationFailure_sequence);
3081
3082   return offset;
3083 }
3084
3085
3086 static const per_sequence_t HandoverReport_sequence[] = {
3087   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
3088   { NULL, 0, 0, NULL }
3089 };
3090
3091 static int
3092 dissect_x2ap_HandoverReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3093   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3094                                    ett_x2ap_HandoverReport, HandoverReport_sequence);
3095
3096   return offset;
3097 }
3098
3099
3100 static const per_sequence_t SNStatusTransfer_sequence[] = {
3101   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
3102   { NULL, 0, 0, NULL }
3103 };
3104
3105 static int
3106 dissect_x2ap_SNStatusTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3107   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3108                                    ett_x2ap_SNStatusTransfer, SNStatusTransfer_sequence);
3109
3110   return offset;
3111 }
3112
3113
3114 static const per_sequence_t E_RABs_SubjectToStatusTransfer_List_sequence_of[1] = {
3115   { &hf_x2ap_E_RABs_SubjectToStatusTransfer_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Single_Container },
3116 };
3117
3118 static int
3119 dissect_x2ap_E_RABs_SubjectToStatusTransfer_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3120   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
3121                                                   ett_x2ap_E_RABs_SubjectToStatusTransfer_List, E_RABs_SubjectToStatusTransfer_List_sequence_of,
3122                                                   1, maxnoofBearers, FALSE);
3123
3124   return offset;
3125 }
3126
3127
3128 static const per_sequence_t E_RABs_SubjectToStatusTransfer_Item_sequence[] = {
3129   { &hf_x2ap_e_RAB_ID       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_E_RAB_ID },
3130   { &hf_x2ap_receiveStatusofULPDCPSDUs, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ReceiveStatusofULPDCPSDUs },
3131   { &hf_x2ap_uL_COUNTvalue  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_COUNTvalue },
3132   { &hf_x2ap_dL_COUNTvalue  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_COUNTvalue },
3133   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
3134   { NULL, 0, 0, NULL }
3135 };
3136
3137 static int
3138 dissect_x2ap_E_RABs_SubjectToStatusTransfer_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3139   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3140                                    ett_x2ap_E_RABs_SubjectToStatusTransfer_Item, E_RABs_SubjectToStatusTransfer_Item_sequence);
3141
3142   return offset;
3143 }
3144
3145
3146 static const per_sequence_t UEContextRelease_sequence[] = {
3147   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
3148   { NULL, 0, 0, NULL }
3149 };
3150
3151 static int
3152 dissect_x2ap_UEContextRelease(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3153   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3154                                    ett_x2ap_UEContextRelease, UEContextRelease_sequence);
3155
3156   return offset;
3157 }
3158
3159
3160 static const per_sequence_t HandoverCancel_sequence[] = {
3161   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
3162   { NULL, 0, 0, NULL }
3163 };
3164
3165 static int
3166 dissect_x2ap_HandoverCancel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3167   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3168                                    ett_x2ap_HandoverCancel, HandoverCancel_sequence);
3169
3170   return offset;
3171 }
3172
3173
3174 static const per_sequence_t ErrorIndication_sequence[] = {
3175   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
3176   { NULL, 0, 0, NULL }
3177 };
3178
3179 static int
3180 dissect_x2ap_ErrorIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3181   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3182                                    ett_x2ap_ErrorIndication, ErrorIndication_sequence);
3183
3184   return offset;
3185 }
3186
3187
3188 static const per_sequence_t ResetRequest_sequence[] = {
3189   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
3190   { NULL, 0, 0, NULL }
3191 };
3192
3193 static int
3194 dissect_x2ap_ResetRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3195   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3196                                    ett_x2ap_ResetRequest, ResetRequest_sequence);
3197
3198   return offset;
3199 }
3200
3201
3202 static const per_sequence_t ResetResponse_sequence[] = {
3203   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
3204   { NULL, 0, 0, NULL }
3205 };
3206
3207 static int
3208 dissect_x2ap_ResetResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3209   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3210                                    ett_x2ap_ResetResponse, ResetResponse_sequence);
3211
3212   return offset;
3213 }
3214
3215
3216 static const per_sequence_t X2SetupRequest_sequence[] = {
3217   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
3218   { NULL, 0, 0, NULL }
3219 };
3220
3221 static int
3222 dissect_x2ap_X2SetupRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3223   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3224                                    ett_x2ap_X2SetupRequest, X2SetupRequest_sequence);
3225
3226   return offset;
3227 }
3228
3229
3230 static const per_sequence_t X2SetupResponse_sequence[] = {
3231   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
3232   { NULL, 0, 0, NULL }
3233 };
3234
3235 static int
3236 dissect_x2ap_X2SetupResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3237   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3238                                    ett_x2ap_X2SetupResponse, X2SetupResponse_sequence);
3239
3240   return offset;
3241 }
3242
3243
3244 static const per_sequence_t X2SetupFailure_sequence[] = {
3245   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
3246   { NULL, 0, 0, NULL }
3247 };
3248
3249 static int
3250 dissect_x2ap_X2SetupFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3251   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3252                                    ett_x2ap_X2SetupFailure, X2SetupFailure_sequence);
3253
3254   return offset;
3255 }
3256
3257
3258 static const per_sequence_t LoadInformation_sequence[] = {
3259   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
3260   { NULL, 0, 0, NULL }
3261 };
3262
3263 static int
3264 dissect_x2ap_LoadInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3265   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3266                                    ett_x2ap_LoadInformation, LoadInformation_sequence);
3267
3268   return offset;
3269 }
3270
3271
3272 static const per_sequence_t CellInformation_List_sequence_of[1] = {
3273   { &hf_x2ap_CellInformation_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Single_Container },
3274 };
3275
3276 static int
3277 dissect_x2ap_CellInformation_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3278   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
3279                                                   ett_x2ap_CellInformation_List, CellInformation_List_sequence_of,
3280                                                   1, maxCellineNB, FALSE);
3281
3282   return offset;
3283 }
3284
3285
3286 static const per_sequence_t CellInformation_Item_sequence[] = {
3287   { &hf_x2ap_cell_ID        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ECGI },
3288   { &hf_x2ap_ul_InterferenceOverloadIndication, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_UL_InterferenceOverloadIndication },
3289   { &hf_x2ap_ul_HighInterferenceIndicationInfo, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_UL_HighInterferenceIndicationInfo },
3290   { &hf_x2ap_relativeNarrowbandTxPower, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_RelativeNarrowbandTxPower },
3291   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
3292   { NULL, 0, 0, NULL }
3293 };
3294
3295 static int
3296 dissect_x2ap_CellInformation_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3297   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3298                                    ett_x2ap_CellInformation_Item, CellInformation_Item_sequence);
3299
3300   return offset;
3301 }
3302
3303
3304 static const per_sequence_t ENBConfigurationUpdate_sequence[] = {
3305   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
3306   { NULL, 0, 0, NULL }
3307 };
3308
3309 static int
3310 dissect_x2ap_ENBConfigurationUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3311   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3312                                    ett_x2ap_ENBConfigurationUpdate, ENBConfigurationUpdate_sequence);
3313
3314   return offset;
3315 }
3316
3317
3318 static const per_sequence_t ServedCellsToModify_Item_sequence[] = {
3319   { &hf_x2ap_old_ecgi       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ECGI },
3320   { &hf_x2ap_servedCellInfo , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ServedCell_Information },
3321   { &hf_x2ap_neighbour_Info , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_Neighbour_Information },
3322   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
3323   { NULL, 0, 0, NULL }
3324 };
3325
3326 static int
3327 dissect_x2ap_ServedCellsToModify_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3328   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3329                                    ett_x2ap_ServedCellsToModify_Item, ServedCellsToModify_Item_sequence);
3330
3331   return offset;
3332 }
3333
3334
3335 static const per_sequence_t ServedCellsToModify_sequence_of[1] = {
3336   { &hf_x2ap_ServedCellsToModify_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ServedCellsToModify_Item },
3337 };
3338
3339 static int
3340 dissect_x2ap_ServedCellsToModify(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3341   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
3342                                                   ett_x2ap_ServedCellsToModify, ServedCellsToModify_sequence_of,
3343                                                   1, maxCellineNB, FALSE);
3344
3345   return offset;
3346 }
3347
3348
3349 static const per_sequence_t Old_ECGIs_sequence_of[1] = {
3350   { &hf_x2ap_Old_ECGIs_item , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ECGI },
3351 };
3352
3353 static int
3354 dissect_x2ap_Old_ECGIs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3355   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
3356                                                   ett_x2ap_Old_ECGIs, Old_ECGIs_sequence_of,
3357                                                   1, maxCellineNB, FALSE);
3358
3359   return offset;
3360 }
3361
3362
3363 static const per_sequence_t ENBConfigurationUpdateAcknowledge_sequence[] = {
3364   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
3365   { NULL, 0, 0, NULL }
3366 };
3367
3368 static int
3369 dissect_x2ap_ENBConfigurationUpdateAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3370   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3371                                    ett_x2ap_ENBConfigurationUpdateAcknowledge, ENBConfigurationUpdateAcknowledge_sequence);
3372
3373   return offset;
3374 }
3375
3376
3377 static const per_sequence_t ENBConfigurationUpdateFailure_sequence[] = {
3378   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
3379   { NULL, 0, 0, NULL }
3380 };
3381
3382 static int
3383 dissect_x2ap_ENBConfigurationUpdateFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3384   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3385                                    ett_x2ap_ENBConfigurationUpdateFailure, ENBConfigurationUpdateFailure_sequence);
3386
3387   return offset;
3388 }
3389
3390
3391 static const per_sequence_t ResourceStatusRequest_sequence[] = {
3392   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
3393   { NULL, 0, 0, NULL }
3394 };
3395
3396 static int
3397 dissect_x2ap_ResourceStatusRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3398   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3399                                    ett_x2ap_ResourceStatusRequest, ResourceStatusRequest_sequence);
3400
3401   return offset;
3402 }
3403
3404
3405 static const per_sequence_t CellToReport_List_sequence_of[1] = {
3406   { &hf_x2ap_CellToReport_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Single_Container },
3407 };
3408
3409 static int
3410 dissect_x2ap_CellToReport_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3411   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
3412                                                   ett_x2ap_CellToReport_List, CellToReport_List_sequence_of,
3413                                                   1, maxCellineNB, FALSE);
3414
3415   return offset;
3416 }
3417
3418
3419 static const per_sequence_t CellToReport_Item_sequence[] = {
3420   { &hf_x2ap_cell_ID        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ECGI },
3421   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
3422   { NULL, 0, 0, NULL }
3423 };
3424
3425 static int
3426 dissect_x2ap_CellToReport_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3427   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3428                                    ett_x2ap_CellToReport_Item, CellToReport_Item_sequence);
3429
3430   return offset;
3431 }
3432
3433
3434 static const value_string x2ap_ReportingPeriodicity_vals[] = {
3435   {   0, "one-thousand-ms" },
3436   {   1, "two-thousand-ms" },
3437   {   2, "five-thousand-ms" },
3438   {   3, "ten-thousand-ms" },
3439   { 0, NULL }
3440 };
3441
3442
3443 static int
3444 dissect_x2ap_ReportingPeriodicity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3445   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
3446                                      4, NULL, TRUE, 0, NULL);
3447
3448   return offset;
3449 }
3450
3451
3452 static const per_sequence_t ResourceStatusResponse_sequence[] = {
3453   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
3454   { NULL, 0, 0, NULL }
3455 };
3456
3457 static int
3458 dissect_x2ap_ResourceStatusResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3459   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3460                                    ett_x2ap_ResourceStatusResponse, ResourceStatusResponse_sequence);
3461
3462   return offset;
3463 }
3464
3465
3466 static const per_sequence_t ResourceStatusFailure_sequence[] = {
3467   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
3468   { NULL, 0, 0, NULL }
3469 };
3470
3471 static int
3472 dissect_x2ap_ResourceStatusFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3473   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3474                                    ett_x2ap_ResourceStatusFailure, ResourceStatusFailure_sequence);
3475
3476   return offset;
3477 }
3478
3479
3480 static const per_sequence_t ResourceStatusUpdate_sequence[] = {
3481   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
3482   { NULL, 0, 0, NULL }
3483 };
3484
3485 static int
3486 dissect_x2ap_ResourceStatusUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3487   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3488                                    ett_x2ap_ResourceStatusUpdate, ResourceStatusUpdate_sequence);
3489
3490   return offset;
3491 }
3492
3493
3494 static const per_sequence_t CellMeasurementResult_List_sequence_of[1] = {
3495   { &hf_x2ap_CellMeasurementResult_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Single_Container },
3496 };
3497
3498 static int
3499 dissect_x2ap_CellMeasurementResult_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3500   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
3501                                                   ett_x2ap_CellMeasurementResult_List, CellMeasurementResult_List_sequence_of,
3502                                                   1, maxCellineNB, FALSE);
3503
3504   return offset;
3505 }
3506
3507
3508 static const per_sequence_t CellMeasurementResult_Item_sequence[] = {
3509   { &hf_x2ap_cell_ID        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ECGI },
3510   { &hf_x2ap_hWOverLoadIndicator, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_HWLoadIndicator },
3511   { &hf_x2ap_s1TNLOverLoadIndicator, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_S1TNLLoadIndicator },
3512   { &hf_x2ap_radioresourceStatus, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_RadioResourceStatus },
3513   { &hf_x2ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_x2ap_ProtocolExtensionContainer },
3514   { NULL, 0, 0, NULL }
3515 };
3516
3517 static int
3518 dissect_x2ap_CellMeasurementResult_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3519   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3520                                    ett_x2ap_CellMeasurementResult_Item, CellMeasurementResult_Item_sequence);
3521
3522   return offset;
3523 }
3524
3525
3526 static const per_sequence_t PrivateMessage_sequence[] = {
3527   { &hf_x2ap_privateIEs     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_PrivateIE_Container },
3528   { NULL, 0, 0, NULL }
3529 };
3530
3531 static int
3532 dissect_x2ap_PrivateMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3533   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3534                                    ett_x2ap_PrivateMessage, PrivateMessage_sequence);
3535
3536   return offset;
3537 }
3538
3539
3540 static const per_sequence_t MobilityChangeRequest_sequence[] = {
3541   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
3542   { NULL, 0, 0, NULL }
3543 };
3544
3545 static int
3546 dissect_x2ap_MobilityChangeRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3547   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3548                                    ett_x2ap_MobilityChangeRequest, MobilityChangeRequest_sequence);
3549
3550   return offset;
3551 }
3552
3553
3554 static const per_sequence_t MobilityChangeAcknowledge_sequence[] = {
3555   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
3556   { NULL, 0, 0, NULL }
3557 };
3558
3559 static int
3560 dissect_x2ap_MobilityChangeAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3561   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3562                                    ett_x2ap_MobilityChangeAcknowledge, MobilityChangeAcknowledge_sequence);
3563
3564   return offset;
3565 }
3566
3567
3568 static const per_sequence_t MobilityChangeFailure_sequence[] = {
3569   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
3570   { NULL, 0, 0, NULL }
3571 };
3572
3573 static int
3574 dissect_x2ap_MobilityChangeFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3575   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3576                                    ett_x2ap_MobilityChangeFailure, MobilityChangeFailure_sequence);
3577
3578   return offset;
3579 }
3580
3581
3582 static const per_sequence_t RLFIndication_sequence[] = {
3583   { &hf_x2ap_protocolIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_x2ap_ProtocolIE_Container },
3584   { NULL, 0, 0, NULL }
3585 };
3586
3587 static int
3588 dissect_x2ap_RLFIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3589   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3590                                    ett_x2ap_RLFIndication, RLFIndication_sequence);
3591
3592   return offset;
3593 }
3594
3595
3596
3597 static int
3598 dissect_x2ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3599   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue);
3600
3601   return offset;
3602 }
3603
3604
3605 static const per_sequence_t InitiatingMessage_sequence[] = {
3606   { &hf_x2ap_procedureCode  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ProcedureCode },
3607   { &hf_x2ap_criticality    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_Criticality },
3608   { &hf_x2ap_initiatingMessage_value, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_InitiatingMessage_value },
3609   { NULL, 0, 0, NULL }
3610 };
3611
3612 static int
3613 dissect_x2ap_InitiatingMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3614   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3615                                    ett_x2ap_InitiatingMessage, InitiatingMessage_sequence);
3616
3617   return offset;
3618 }
3619
3620
3621
3622 static int
3623 dissect_x2ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3624   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue);
3625
3626   return offset;
3627 }
3628
3629
3630 static const per_sequence_t SuccessfulOutcome_sequence[] = {
3631   { &hf_x2ap_procedureCode  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ProcedureCode },
3632   { &hf_x2ap_criticality    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_Criticality },
3633   { &hf_x2ap_successfulOutcome_value, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_SuccessfulOutcome_value },
3634   { NULL, 0, 0, NULL }
3635 };
3636
3637 static int
3638 dissect_x2ap_SuccessfulOutcome(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3639   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3640                                    ett_x2ap_SuccessfulOutcome, SuccessfulOutcome_sequence);
3641
3642   return offset;
3643 }
3644
3645
3646
3647 static int
3648 dissect_x2ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3649   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue);
3650
3651   return offset;
3652 }
3653
3654
3655 static const per_sequence_t UnsuccessfulOutcome_sequence[] = {
3656   { &hf_x2ap_procedureCode  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_ProcedureCode },
3657   { &hf_x2ap_criticality    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_Criticality },
3658   { &hf_x2ap_value          , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_x2ap_UnsuccessfulOutcome_value },
3659   { NULL, 0, 0, NULL }
3660 };
3661
3662 static int
3663 dissect_x2ap_UnsuccessfulOutcome(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3664   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3665                                    ett_x2ap_UnsuccessfulOutcome, UnsuccessfulOutcome_sequence);
3666
3667   return offset;
3668 }
3669
3670
3671 static const value_string x2ap_X2AP_PDU_vals[] = {
3672   {   0, "initiatingMessage" },
3673   {   1, "successfulOutcome" },
3674   {   2, "unsuccessfulOutcome" },
3675   { 0, NULL }
3676 };
3677
3678 static const per_choice_t X2AP_PDU_choice[] = {
3679   {   0, &hf_x2ap_initiatingMessage, ASN1_EXTENSION_ROOT    , dissect_x2ap_InitiatingMessage },
3680   {   1, &hf_x2ap_successfulOutcome, ASN1_EXTENSION_ROOT    , dissect_x2ap_SuccessfulOutcome },
3681   {   2, &hf_x2ap_unsuccessfulOutcome, ASN1_EXTENSION_ROOT    , dissect_x2ap_UnsuccessfulOutcome },
3682   { 0, NULL, 0, NULL }
3683 };
3684
3685 static int
3686 dissect_x2ap_X2AP_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3687   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3688                                  ett_x2ap_X2AP_PDU, X2AP_PDU_choice,
3689                                  NULL);
3690
3691   return offset;
3692 }
3693
3694 /*--- PDUs ---*/
3695
3696 static int dissect_Cause_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3697   int offset = 0;
3698   asn1_ctx_t asn1_ctx;
3699   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3700   offset = dissect_x2ap_Cause(tvb, offset, &asn1_ctx, tree, hf_x2ap_Cause_PDU);
3701   offset += 7; offset >>= 3;
3702   return offset;
3703 }
3704 static int dissect_CompositeAvailableCapacityGroup_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3705   int offset = 0;
3706   asn1_ctx_t asn1_ctx;
3707   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3708   offset = dissect_x2ap_CompositeAvailableCapacityGroup(tvb, offset, &asn1_ctx, tree, hf_x2ap_CompositeAvailableCapacityGroup_PDU);
3709   offset += 7; offset >>= 3;
3710   return offset;
3711 }
3712 static int dissect_CriticalityDiagnostics_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3713   int offset = 0;
3714   asn1_ctx_t asn1_ctx;
3715   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3716   offset = dissect_x2ap_CriticalityDiagnostics(tvb, offset, &asn1_ctx, tree, hf_x2ap_CriticalityDiagnostics_PDU);
3717   offset += 7; offset >>= 3;
3718   return offset;
3719 }
3720 static int dissect_CRNTI_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3721   int offset = 0;
3722   asn1_ctx_t asn1_ctx;
3723   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3724   offset = dissect_x2ap_CRNTI(tvb, offset, &asn1_ctx, tree, hf_x2ap_CRNTI_PDU);
3725   offset += 7; offset >>= 3;
3726   return offset;
3727 }
3728 static int dissect_ECGI_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3729   int offset = 0;
3730   asn1_ctx_t asn1_ctx;
3731   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3732   offset = dissect_x2ap_ECGI(tvb, offset, &asn1_ctx, tree, hf_x2ap_ECGI_PDU);
3733   offset += 7; offset >>= 3;
3734   return offset;
3735 }
3736 static int dissect_E_RAB_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3737   int offset = 0;
3738   asn1_ctx_t asn1_ctx;
3739   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3740   offset = dissect_x2ap_E_RAB_List(tvb, offset, &asn1_ctx, tree, hf_x2ap_E_RAB_List_PDU);
3741   offset += 7; offset >>= 3;
3742   return offset;
3743 }
3744 static int dissect_E_RAB_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3745   int offset = 0;
3746   asn1_ctx_t asn1_ctx;
3747   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3748   offset = dissect_x2ap_E_RAB_Item(tvb, offset, &asn1_ctx, tree, hf_x2ap_E_RAB_Item_PDU);
3749   offset += 7; offset >>= 3;
3750   return offset;
3751 }
3752 static int dissect_GlobalENB_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3753   int offset = 0;
3754   asn1_ctx_t asn1_ctx;
3755   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3756   offset = dissect_x2ap_GlobalENB_ID(tvb, offset, &asn1_ctx, tree, hf_x2ap_GlobalENB_ID_PDU);
3757   offset += 7; offset >>= 3;
3758   return offset;
3759 }
3760 static int dissect_GUGroupIDList_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3761   int offset = 0;
3762   asn1_ctx_t asn1_ctx;
3763   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3764   offset = dissect_x2ap_GUGroupIDList(tvb, offset, &asn1_ctx, tree, hf_x2ap_GUGroupIDList_PDU);
3765   offset += 7; offset >>= 3;
3766   return offset;
3767 }
3768 static int dissect_GUMMEI_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3769   int offset = 0;
3770   asn1_ctx_t asn1_ctx;
3771   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3772   offset = dissect_x2ap_GUMMEI(tvb, offset, &asn1_ctx, tree, hf_x2ap_GUMMEI_PDU);
3773   offset += 7; offset >>= 3;
3774   return offset;
3775 }
3776 static int dissect_HandoverReportType_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3777   int offset = 0;
3778   asn1_ctx_t asn1_ctx;
3779   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3780   offset = dissect_x2ap_HandoverReportType(tvb, offset, &asn1_ctx, tree, hf_x2ap_HandoverReportType_PDU);
3781   offset += 7; offset >>= 3;
3782   return offset;
3783 }
3784 static int dissect_Measurement_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3785   int offset = 0;
3786   asn1_ctx_t asn1_ctx;
3787   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3788   offset = dissect_x2ap_Measurement_ID(tvb, offset, &asn1_ctx, tree, hf_x2ap_Measurement_ID_PDU);
3789   offset += 7; offset >>= 3;
3790   return offset;
3791 }
3792 static int dissect_MobilityParametersModificationRange_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3793   int offset = 0;
3794   asn1_ctx_t asn1_ctx;
3795   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3796   offset = dissect_x2ap_MobilityParametersModificationRange(tvb, offset, &asn1_ctx, tree, hf_x2ap_MobilityParametersModificationRange_PDU);
3797   offset += 7; offset >>= 3;
3798   return offset;
3799 }
3800 static int dissect_MobilityParametersInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3801   int offset = 0;
3802   asn1_ctx_t asn1_ctx;
3803   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3804   offset = dissect_x2ap_MobilityParametersInformation(tvb, offset, &asn1_ctx, tree, hf_x2ap_MobilityParametersInformation_PDU);
3805   offset += 7; offset >>= 3;
3806   return offset;
3807 }
3808 static int dissect_Number_of_Antennaports_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3809   int offset = 0;
3810   asn1_ctx_t asn1_ctx;
3811   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3812   offset = dissect_x2ap_Number_of_Antennaports(tvb, offset, &asn1_ctx, tree, hf_x2ap_Number_of_Antennaports_PDU);
3813   offset += 7; offset >>= 3;
3814   return offset;
3815 }
3816 static int dissect_PCI_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3817   int offset = 0;
3818   asn1_ctx_t asn1_ctx;
3819   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3820   offset = dissect_x2ap_PCI(tvb, offset, &asn1_ctx, tree, hf_x2ap_PCI_PDU);
3821   offset += 7; offset >>= 3;
3822   return offset;
3823 }
3824 static int dissect_PRACH_Configuration_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3825   int offset = 0;
3826   asn1_ctx_t asn1_ctx;
3827   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3828   offset = dissect_x2ap_PRACH_Configuration(tvb, offset, &asn1_ctx, tree, hf_x2ap_PRACH_Configuration_PDU);
3829   offset += 7; offset >>= 3;
3830   return offset;
3831 }
3832 static int dissect_Registration_Request_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3833   int offset = 0;
3834   asn1_ctx_t asn1_ctx;
3835   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3836   offset = dissect_x2ap_Registration_Request(tvb, offset, &asn1_ctx, tree, hf_x2ap_Registration_Request_PDU);
3837   offset += 7; offset >>= 3;
3838   return offset;
3839 }
3840 static int dissect_ReportCharacteristics_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3841   int offset = 0;
3842   asn1_ctx_t asn1_ctx;
3843   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3844   offset = dissect_x2ap_ReportCharacteristics(tvb, offset, &asn1_ctx, tree, hf_x2ap_ReportCharacteristics_PDU);
3845   offset += 7; offset >>= 3;
3846   return offset;
3847 }
3848 static int dissect_ServedCells_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3849   int offset = 0;
3850   asn1_ctx_t asn1_ctx;
3851   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3852   offset = dissect_x2ap_ServedCells(tvb, offset, &asn1_ctx, tree, hf_x2ap_ServedCells_PDU);
3853   offset += 7; offset >>= 3;
3854   return offset;
3855 }
3856 static int dissect_ShortMAC_I_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3857   int offset = 0;
3858   asn1_ctx_t asn1_ctx;
3859   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3860   offset = dissect_x2ap_ShortMAC_I(tvb, offset, &asn1_ctx, tree, hf_x2ap_ShortMAC_I_PDU);
3861   offset += 7; offset >>= 3;
3862   return offset;
3863 }
3864 static int dissect_SRVCCOperationPossible_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3865   int offset = 0;
3866   asn1_ctx_t asn1_ctx;
3867   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3868   offset = dissect_x2ap_SRVCCOperationPossible(tvb, offset, &asn1_ctx, tree, hf_x2ap_SRVCCOperationPossible_PDU);
3869   offset += 7; offset >>= 3;
3870   return offset;
3871 }
3872 static int dissect_TargeteNBtoSource_eNBTransparentContainer_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3873   int offset = 0;
3874   asn1_ctx_t asn1_ctx;
3875   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3876   offset = dissect_x2ap_TargeteNBtoSource_eNBTransparentContainer(tvb, offset, &asn1_ctx, tree, hf_x2ap_TargeteNBtoSource_eNBTransparentContainer_PDU);
3877   offset += 7; offset >>= 3;
3878   return offset;
3879 }
3880 static int dissect_TimeToWait_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3881   int offset = 0;
3882   asn1_ctx_t asn1_ctx;
3883   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3884   offset = dissect_x2ap_TimeToWait(tvb, offset, &asn1_ctx, tree, hf_x2ap_TimeToWait_PDU);
3885   offset += 7; offset >>= 3;
3886   return offset;
3887 }
3888 static int dissect_TraceActivation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3889   int offset = 0;
3890   asn1_ctx_t asn1_ctx;
3891   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3892   offset = dissect_x2ap_TraceActivation(tvb, offset, &asn1_ctx, tree, hf_x2ap_TraceActivation_PDU);
3893   offset += 7; offset >>= 3;
3894   return offset;
3895 }
3896 static int dissect_UE_HistoryInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3897   int offset = 0;
3898   asn1_ctx_t asn1_ctx;
3899   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3900   offset = dissect_x2ap_UE_HistoryInformation(tvb, offset, &asn1_ctx, tree, hf_x2ap_UE_HistoryInformation_PDU);
3901   offset += 7; offset >>= 3;
3902   return offset;
3903 }
3904 static int dissect_UE_X2AP_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3905   int offset = 0;
3906   asn1_ctx_t asn1_ctx;
3907   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3908   offset = dissect_x2ap_UE_X2AP_ID(tvb, offset, &asn1_ctx, tree, hf_x2ap_UE_X2AP_ID_PDU);
3909   offset += 7; offset >>= 3;
3910   return offset;
3911 }
3912 static int dissect_HandoverRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3913   int offset = 0;
3914   asn1_ctx_t asn1_ctx;
3915   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3916   offset = dissect_x2ap_HandoverRequest(tvb, offset, &asn1_ctx, tree, hf_x2ap_HandoverRequest_PDU);
3917   offset += 7; offset >>= 3;
3918   return offset;
3919 }
3920 static int dissect_UE_ContextInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3921   int offset = 0;
3922   asn1_ctx_t asn1_ctx;
3923   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3924   offset = dissect_x2ap_UE_ContextInformation(tvb, offset, &asn1_ctx, tree, hf_x2ap_UE_ContextInformation_PDU);
3925   offset += 7; offset >>= 3;
3926   return offset;
3927 }
3928 static int dissect_E_RABs_ToBeSetup_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3929   int offset = 0;
3930   asn1_ctx_t asn1_ctx;
3931   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3932   offset = dissect_x2ap_E_RABs_ToBeSetup_Item(tvb, offset, &asn1_ctx, tree, hf_x2ap_E_RABs_ToBeSetup_Item_PDU);
3933   offset += 7; offset >>= 3;
3934   return offset;
3935 }
3936 static int dissect_HandoverRequestAcknowledge_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3937   int offset = 0;
3938   asn1_ctx_t asn1_ctx;
3939   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3940   offset = dissect_x2ap_HandoverRequestAcknowledge(tvb, offset, &asn1_ctx, tree, hf_x2ap_HandoverRequestAcknowledge_PDU);
3941   offset += 7; offset >>= 3;
3942   return offset;
3943 }
3944 static int dissect_E_RABs_Admitted_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3945   int offset = 0;
3946   asn1_ctx_t asn1_ctx;
3947   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3948   offset = dissect_x2ap_E_RABs_Admitted_List(tvb, offset, &asn1_ctx, tree, hf_x2ap_E_RABs_Admitted_List_PDU);
3949   offset += 7; offset >>= 3;
3950   return offset;
3951 }
3952 static int dissect_E_RABs_Admitted_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3953   int offset = 0;
3954   asn1_ctx_t asn1_ctx;
3955   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3956   offset = dissect_x2ap_E_RABs_Admitted_Item(tvb, offset, &asn1_ctx, tree, hf_x2ap_E_RABs_Admitted_Item_PDU);
3957   offset += 7; offset >>= 3;
3958   return offset;
3959 }
3960 static int dissect_HandoverPreparationFailure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3961   int offset = 0;
3962   asn1_ctx_t asn1_ctx;
3963   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3964   offset = dissect_x2ap_HandoverPreparationFailure(tvb, offset, &asn1_ctx, tree, hf_x2ap_HandoverPreparationFailure_PDU);
3965   offset += 7; offset >>= 3;
3966   return offset;
3967 }
3968 static int dissect_HandoverReport_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3969   int offset = 0;
3970   asn1_ctx_t asn1_ctx;
3971   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3972   offset = dissect_x2ap_HandoverReport(tvb, offset, &asn1_ctx, tree, hf_x2ap_HandoverReport_PDU);
3973   offset += 7; offset >>= 3;
3974   return offset;
3975 }
3976 static int dissect_SNStatusTransfer_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3977   int offset = 0;
3978   asn1_ctx_t asn1_ctx;
3979   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3980   offset = dissect_x2ap_SNStatusTransfer(tvb, offset, &asn1_ctx, tree, hf_x2ap_SNStatusTransfer_PDU);
3981   offset += 7; offset >>= 3;
3982   return offset;
3983 }
3984 static int dissect_E_RABs_SubjectToStatusTransfer_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3985   int offset = 0;
3986   asn1_ctx_t asn1_ctx;
3987   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3988   offset = dissect_x2ap_E_RABs_SubjectToStatusTransfer_List(tvb, offset, &asn1_ctx, tree, hf_x2ap_E_RABs_SubjectToStatusTransfer_List_PDU);
3989   offset += 7; offset >>= 3;
3990   return offset;
3991 }
3992 static int dissect_E_RABs_SubjectToStatusTransfer_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3993   int offset = 0;
3994   asn1_ctx_t asn1_ctx;
3995   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
3996   offset = dissect_x2ap_E_RABs_SubjectToStatusTransfer_Item(tvb, offset, &asn1_ctx, tree, hf_x2ap_E_RABs_SubjectToStatusTransfer_Item_PDU);
3997   offset += 7; offset >>= 3;
3998   return offset;
3999 }
4000 static int dissect_UEContextRelease_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4001   int offset = 0;
4002   asn1_ctx_t asn1_ctx;
4003   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
4004   offset = dissect_x2ap_UEContextRelease(tvb, offset, &asn1_ctx, tree, hf_x2ap_UEContextRelease_PDU);
4005   offset += 7; offset >>= 3;
4006   return offset;
4007 }
4008 static int dissect_HandoverCancel_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4009   int offset = 0;
4010   asn1_ctx_t asn1_ctx;
4011   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
4012   offset = dissect_x2ap_HandoverCancel(tvb, offset, &asn1_ctx, tree, hf_x2ap_HandoverCancel_PDU);
4013   offset += 7; offset >>= 3;
4014   return offset;
4015 }
4016 static int dissect_ErrorIndication_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4017   int offset = 0;
4018   asn1_ctx_t asn1_ctx;
4019   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
4020   offset = dissect_x2ap_ErrorIndication(tvb, offset, &asn1_ctx, tree, hf_x2ap_ErrorIndication_PDU);
4021   offset += 7; offset >>= 3;
4022   return offset;
4023 }
4024 static int dissect_ResetRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4025   int offset = 0;
4026   asn1_ctx_t asn1_ctx;
4027   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
4028   offset = dissect_x2ap_ResetRequest(tvb, offset, &asn1_ctx, tree, hf_x2ap_ResetRequest_PDU);
4029   offset += 7; offset >>= 3;
4030   return offset;
4031 }
4032 static int dissect_ResetResponse_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4033   int offset = 0;
4034   asn1_ctx_t asn1_ctx;
4035   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
4036   offset = dissect_x2ap_ResetResponse(tvb, offset, &asn1_ctx, tree, hf_x2ap_ResetResponse_PDU);
4037   offset += 7; offset >>= 3;
4038   return offset;
4039 }
4040 static int dissect_X2SetupRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4041   int offset = 0;
4042   asn1_ctx_t asn1_ctx;
4043   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
4044   offset = dissect_x2ap_X2SetupRequest(tvb, offset, &asn1_ctx, tree, hf_x2ap_X2SetupRequest_PDU);
4045   offset += 7; offset >>= 3;
4046   return offset;
4047 }
4048 static int dissect_X2SetupResponse_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4049   int offset = 0;
4050   asn1_ctx_t asn1_ctx;
4051   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
4052   offset = dissect_x2ap_X2SetupResponse(tvb, offset, &asn1_ctx, tree, hf_x2ap_X2SetupResponse_PDU);
4053   offset += 7; offset >>= 3;
4054   return offset;
4055 }
4056 static int dissect_X2SetupFailure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4057   int offset = 0;
4058   asn1_ctx_t asn1_ctx;
4059   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
4060   offset = dissect_x2ap_X2SetupFailure(tvb, offset, &asn1_ctx, tree, hf_x2ap_X2SetupFailure_PDU);
4061   offset += 7; offset >>= 3;
4062   return offset;
4063 }
4064 static int dissect_LoadInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4065   int offset = 0;
4066   asn1_ctx_t asn1_ctx;
4067   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
4068   offset = dissect_x2ap_LoadInformation(tvb, offset, &asn1_ctx, tree, hf_x2ap_LoadInformation_PDU);
4069   offset += 7; offset >>= 3;
4070   return offset;
4071 }
4072 static int dissect_CellInformation_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4073   int offset = 0;
4074   asn1_ctx_t asn1_ctx;
4075   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
4076   offset = dissect_x2ap_CellInformation_List(tvb, offset, &asn1_ctx, tree, hf_x2ap_CellInformation_List_PDU);
4077   offset += 7; offset >>= 3;
4078   return offset;
4079 }
4080 static int dissect_CellInformation_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4081   int offset = 0;
4082   asn1_ctx_t asn1_ctx;
4083   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
4084   offset = dissect_x2ap_CellInformation_Item(tvb, offset, &asn1_ctx, tree, hf_x2ap_CellInformation_Item_PDU);
4085   offset += 7; offset >>= 3;
4086   return offset;
4087 }
4088 static int dissect_ENBConfigurationUpdate_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4089   int offset = 0;
4090   asn1_ctx_t asn1_ctx;
4091   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
4092   offset = dissect_x2ap_ENBConfigurationUpdate(tvb, offset, &asn1_ctx, tree, hf_x2ap_ENBConfigurationUpdate_PDU);
4093   offset += 7; offset >>= 3;
4094   return offset;
4095 }
4096 static int dissect_ServedCellsToModify_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4097   int offset = 0;
4098   asn1_ctx_t asn1_ctx;
4099   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
4100   offset = dissect_x2ap_ServedCellsToModify(tvb, offset, &asn1_ctx, tree, hf_x2ap_ServedCellsToModify_PDU);
4101   offset += 7; offset >>= 3;
4102   return offset;
4103 }
4104 static int dissect_Old_ECGIs_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4105   int offset = 0;
4106   asn1_ctx_t asn1_ctx;
4107   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
4108   offset = dissect_x2ap_Old_ECGIs(tvb, offset, &asn1_ctx, tree, hf_x2ap_Old_ECGIs_PDU);
4109   offset += 7; offset >>= 3;
4110   return offset;
4111 }
4112 static int dissect_ENBConfigurationUpdateAcknowledge_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4113   int offset = 0;
4114   asn1_ctx_t asn1_ctx;
4115   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
4116   offset = dissect_x2ap_ENBConfigurationUpdateAcknowledge(tvb, offset, &asn1_ctx, tree, hf_x2ap_ENBConfigurationUpdateAcknowledge_PDU);
4117   offset += 7; offset >>= 3;
4118   return offset;
4119 }
4120 static int dissect_ENBConfigurationUpdateFailure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4121   int offset = 0;
4122   asn1_ctx_t asn1_ctx;
4123   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
4124   offset = dissect_x2ap_ENBConfigurationUpdateFailure(tvb, offset, &asn1_ctx, tree, hf_x2ap_ENBConfigurationUpdateFailure_PDU);
4125   offset += 7; offset >>= 3;
4126   return offset;
4127 }
4128 static int dissect_ResourceStatusRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4129   int offset = 0;
4130   asn1_ctx_t asn1_ctx;
4131   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
4132   offset = dissect_x2ap_ResourceStatusRequest(tvb, offset, &asn1_ctx, tree, hf_x2ap_ResourceStatusRequest_PDU);
4133   offset += 7; offset >>= 3;
4134   return offset;
4135 }
4136 static int dissect_CellToReport_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4137   int offset = 0;
4138   asn1_ctx_t asn1_ctx;
4139   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
4140   offset = dissect_x2ap_CellToReport_List(tvb, offset, &asn1_ctx, tree, hf_x2ap_CellToReport_List_PDU);
4141   offset += 7; offset >>= 3;
4142   return offset;
4143 }
4144 static int dissect_CellToReport_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4145   int offset = 0;
4146   asn1_ctx_t asn1_ctx;
4147   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
4148   offset = dissect_x2ap_CellToReport_Item(tvb, offset, &asn1_ctx, tree, hf_x2ap_CellToReport_Item_PDU);
4149   offset += 7; offset >>= 3;
4150   return offset;
4151 }
4152 static int dissect_ReportingPeriodicity_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4153   int offset = 0;
4154   asn1_ctx_t asn1_ctx;
4155   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
4156   offset = dissect_x2ap_ReportingPeriodicity(tvb, offset, &asn1_ctx, tree, hf_x2ap_ReportingPeriodicity_PDU);
4157   offset += 7; offset >>= 3;
4158   return offset;
4159 }
4160 static int dissect_ResourceStatusResponse_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4161   int offset = 0;
4162   asn1_ctx_t asn1_ctx;
4163   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
4164   offset = dissect_x2ap_ResourceStatusResponse(tvb, offset, &asn1_ctx, tree, hf_x2ap_ResourceStatusResponse_PDU);
4165   offset += 7; offset >>= 3;
4166   return offset;
4167 }
4168 static int dissect_ResourceStatusFailure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4169   int offset = 0;
4170   asn1_ctx_t asn1_ctx;
4171   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
4172   offset = dissect_x2ap_ResourceStatusFailure(tvb, offset, &asn1_ctx, tree, hf_x2ap_ResourceStatusFailure_PDU);
4173   offset += 7; offset >>= 3;
4174   return offset;
4175 }
4176 static int dissect_ResourceStatusUpdate_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4177   int offset = 0;
4178   asn1_ctx_t asn1_ctx;
4179   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
4180   offset = dissect_x2ap_ResourceStatusUpdate(tvb, offset, &asn1_ctx, tree, hf_x2ap_ResourceStatusUpdate_PDU);
4181   offset += 7; offset >>= 3;
4182   return offset;
4183 }
4184 static int dissect_CellMeasurementResult_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4185   int offset = 0;
4186   asn1_ctx_t asn1_ctx;
4187   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
4188   offset = dissect_x2ap_CellMeasurementResult_List(tvb, offset, &asn1_ctx, tree, hf_x2ap_CellMeasurementResult_List_PDU);
4189   offset += 7; offset >>= 3;
4190   return offset;
4191 }
4192 static int dissect_CellMeasurementResult_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4193   int offset = 0;
4194   asn1_ctx_t asn1_ctx;
4195   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
4196   offset = dissect_x2ap_CellMeasurementResult_Item(tvb, offset, &asn1_ctx, tree, hf_x2ap_CellMeasurementResult_Item_PDU);
4197   offset += 7; offset >>= 3;
4198   return offset;
4199 }
4200 static int dissect_PrivateMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4201   int offset = 0;
4202   asn1_ctx_t asn1_ctx;
4203   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
4204   offset = dissect_x2ap_PrivateMessage(tvb, offset, &asn1_ctx, tree, hf_x2ap_PrivateMessage_PDU);
4205   offset += 7; offset >>= 3;
4206   return offset;
4207 }
4208 static int dissect_MobilityChangeRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4209   int offset = 0;
4210   asn1_ctx_t asn1_ctx;
4211   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
4212   offset = dissect_x2ap_MobilityChangeRequest(tvb, offset, &asn1_ctx, tree, hf_x2ap_MobilityChangeRequest_PDU);
4213   offset += 7; offset >>= 3;
4214   return offset;
4215 }
4216 static int dissect_MobilityChangeAcknowledge_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4217   int offset = 0;
4218   asn1_ctx_t asn1_ctx;
4219   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
4220   offset = dissect_x2ap_MobilityChangeAcknowledge(tvb, offset, &asn1_ctx, tree, hf_x2ap_MobilityChangeAcknowledge_PDU);
4221   offset += 7; offset >>= 3;
4222   return offset;
4223 }
4224 static int dissect_MobilityChangeFailure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4225   int offset = 0;
4226   asn1_ctx_t asn1_ctx;
4227   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
4228   offset = dissect_x2ap_MobilityChangeFailure(tvb, offset, &asn1_ctx, tree, hf_x2ap_MobilityChangeFailure_PDU);
4229   offset += 7; offset >>= 3;
4230   return offset;
4231 }
4232 static int dissect_RLFIndication_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4233   int offset = 0;
4234   asn1_ctx_t asn1_ctx;
4235   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
4236   offset = dissect_x2ap_RLFIndication(tvb, offset, &asn1_ctx, tree, hf_x2ap_RLFIndication_PDU);
4237   offset += 7; offset >>= 3;
4238   return offset;
4239 }
4240 static void dissect_X2AP_PDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4241   asn1_ctx_t asn1_ctx;
4242   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
4243   dissect_x2ap_X2AP_PDU(tvb, 0, &asn1_ctx, tree, hf_x2ap_X2AP_PDU_PDU);
4244 }
4245
4246
4247 /*--- End of included file: packet-x2ap-fn.c ---*/
4248 #line 94 "packet-x2ap-template.c"
4249
4250 static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
4251 {
4252   return (dissector_try_port(x2ap_ies_dissector_table, ProtocolIE_ID, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
4253 }
4254
4255 static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
4256 {
4257   return (dissector_try_port(x2ap_extension_dissector_table, ProtocolIE_ID, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
4258 }
4259
4260 static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
4261 {
4262   return (dissector_try_port(x2ap_proc_imsg_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
4263 }
4264
4265 static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
4266 {
4267   return (dissector_try_port(x2ap_proc_sout_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
4268 }
4269
4270 static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
4271 {
4272   return (dissector_try_port(x2ap_proc_uout_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
4273 }
4274
4275 static void
4276 dissect_x2ap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
4277 {
4278         proto_item      *x2ap_item = NULL;
4279         proto_tree      *x2ap_tree = NULL;
4280
4281         /* make entry in the Protocol column on summary display */
4282         col_set_str(pinfo->cinfo, COL_PROTOCOL, "X2AP");
4283
4284         /* create the x2ap protocol tree */
4285         x2ap_item = proto_tree_add_item(tree, proto_x2ap, tvb, 0, -1, FALSE);
4286         x2ap_tree = proto_item_add_subtree(x2ap_item, ett_x2ap);
4287         
4288         dissect_X2AP_PDU_PDU(tvb, pinfo, x2ap_tree);
4289 }
4290
4291 /*--- proto_register_x2ap -------------------------------------------*/
4292 void proto_register_x2ap(void) {
4293
4294   /* List of fields */
4295
4296   static hf_register_info hf[] = {
4297     { &hf_x2ap_transportLayerAddressIPv4,
4298       { "transportLayerAddress(IPv4)", "x2ap.transportLayerAddressIPv4",
4299         FT_IPv4, BASE_NONE, NULL, 0,
4300         NULL, HFILL }},
4301     { &hf_x2ap_transportLayerAddressIPv6,
4302       { "transportLayerAddress(IPv6)", "x2ap.transportLayerAddressIPv6",
4303         FT_IPv4, BASE_NONE, NULL, 0,
4304         NULL, HFILL }},
4305
4306
4307 /*--- Included file: packet-x2ap-hfarr.c ---*/
4308 #line 1 "packet-x2ap-hfarr.c"
4309     { &hf_x2ap_Cause_PDU,
4310       { "Cause", "x2ap.Cause",
4311         FT_UINT32, BASE_DEC, VALS(x2ap_Cause_vals), 0,
4312         "x2ap.Cause", HFILL }},
4313     { &hf_x2ap_CompositeAvailableCapacityGroup_PDU,
4314       { "CompositeAvailableCapacityGroup", "x2ap.CompositeAvailableCapacityGroup",
4315         FT_NONE, BASE_NONE, NULL, 0,
4316         "x2ap.CompositeAvailableCapacityGroup", HFILL }},
4317     { &hf_x2ap_CriticalityDiagnostics_PDU,
4318       { "CriticalityDiagnostics", "x2ap.CriticalityDiagnostics",
4319         FT_NONE, BASE_NONE, NULL, 0,
4320         "x2ap.CriticalityDiagnostics", HFILL }},
4321     { &hf_x2ap_CRNTI_PDU,
4322       { "CRNTI", "x2ap.CRNTI",
4323         FT_BYTES, BASE_NONE, NULL, 0,
4324         "x2ap.CRNTI", HFILL }},
4325     { &hf_x2ap_ECGI_PDU,
4326       { "ECGI", "x2ap.ECGI",
4327         FT_NONE, BASE_NONE, NULL, 0,
4328         "x2ap.ECGI", HFILL }},
4329     { &hf_x2ap_E_RAB_List_PDU,
4330       { "E-RAB-List", "x2ap.E_RAB_List",
4331         FT_UINT32, BASE_DEC, NULL, 0,
4332         "x2ap.E_RAB_List", HFILL }},
4333     { &hf_x2ap_E_RAB_Item_PDU,
4334       { "E-RAB-Item", "x2ap.E_RAB_Item",
4335         FT_NONE, BASE_NONE, NULL, 0,
4336         "x2ap.E_RAB_Item", HFILL }},
4337     { &hf_x2ap_GlobalENB_ID_PDU,
4338       { "GlobalENB-ID", "x2ap.GlobalENB_ID",
4339         FT_NONE, BASE_NONE, NULL, 0,
4340         "x2ap.GlobalENB_ID", HFILL }},
4341     { &hf_x2ap_GUGroupIDList_PDU,
4342       { "GUGroupIDList", "x2ap.GUGroupIDList",
4343         FT_UINT32, BASE_DEC, NULL, 0,
4344         "x2ap.GUGroupIDList", HFILL }},
4345     { &hf_x2ap_GUMMEI_PDU,
4346       { "GUMMEI", "x2ap.GUMMEI",
4347         FT_NONE, BASE_NONE, NULL, 0,
4348         "x2ap.GUMMEI", HFILL }},
4349     { &hf_x2ap_HandoverReportType_PDU,
4350       { "HandoverReportType", "x2ap.HandoverReportType",
4351         FT_UINT32, BASE_DEC, VALS(x2ap_HandoverReportType_vals), 0,
4352         "x2ap.HandoverReportType", HFILL }},
4353     { &hf_x2ap_Measurement_ID_PDU,
4354       { "Measurement-ID", "x2ap.Measurement_ID",
4355         FT_UINT32, BASE_DEC, NULL, 0,
4356         "x2ap.Measurement_ID", HFILL }},
4357     { &hf_x2ap_MobilityParametersModificationRange_PDU,
4358       { "MobilityParametersModificationRange", "x2ap.MobilityParametersModificationRange",
4359         FT_NONE, BASE_NONE, NULL, 0,
4360         "x2ap.MobilityParametersModificationRange", HFILL }},
4361     { &hf_x2ap_MobilityParametersInformation_PDU,
4362       { "MobilityParametersInformation", "x2ap.MobilityParametersInformation",
4363         FT_NONE, BASE_NONE, NULL, 0,
4364         "x2ap.MobilityParametersInformation", HFILL }},
4365     { &hf_x2ap_Number_of_Antennaports_PDU,
4366       { "Number-of-Antennaports", "x2ap.Number_of_Antennaports",
4367         FT_UINT32, BASE_DEC, VALS(x2ap_Number_of_Antennaports_vals), 0,
4368         "x2ap.Number_of_Antennaports", HFILL }},
4369     { &hf_x2ap_PCI_PDU,
4370       { "PCI", "x2ap.PCI",
4371         FT_UINT32, BASE_DEC, NULL, 0,
4372         "x2ap.PCI", HFILL }},
4373     { &hf_x2ap_PRACH_Configuration_PDU,
4374       { "PRACH-Configuration", "x2ap.PRACH_Configuration",
4375         FT_NONE, BASE_NONE, NULL, 0,
4376         "x2ap.PRACH_Configuration", HFILL }},
4377     { &hf_x2ap_Registration_Request_PDU,
4378       { "Registration-Request", "x2ap.Registration_Request",
4379         FT_UINT32, BASE_DEC, VALS(x2ap_Registration_Request_vals), 0,
4380         "x2ap.Registration_Request", HFILL }},
4381     { &hf_x2ap_ReportCharacteristics_PDU,
4382       { "ReportCharacteristics", "x2ap.ReportCharacteristics",
4383         FT_BYTES, BASE_NONE, NULL, 0,
4384         "x2ap.ReportCharacteristics", HFILL }},
4385     { &hf_x2ap_ServedCells_PDU,
4386       { "ServedCells", "x2ap.ServedCells",
4387         FT_UINT32, BASE_DEC, NULL, 0,
4388         "x2ap.ServedCells", HFILL }},
4389     { &hf_x2ap_ShortMAC_I_PDU,
4390       { "ShortMAC-I", "x2ap.ShortMAC_I",
4391         FT_BYTES, BASE_NONE, NULL, 0,
4392         "x2ap.ShortMAC_I", HFILL }},
4393     { &hf_x2ap_SRVCCOperationPossible_PDU,
4394       { "SRVCCOperationPossible", "x2ap.SRVCCOperationPossible",
4395         FT_UINT32, BASE_DEC, VALS(x2ap_SRVCCOperationPossible_vals), 0,
4396         "x2ap.SRVCCOperationPossible", HFILL }},
4397     { &hf_x2ap_TargeteNBtoSource_eNBTransparentContainer_PDU,
4398       { "TargeteNBtoSource-eNBTransparentContainer", "x2ap.TargeteNBtoSource_eNBTransparentContainer",
4399         FT_BYTES, BASE_NONE, NULL, 0,
4400         "x2ap.TargeteNBtoSource_eNBTransparentContainer", HFILL }},
4401     { &hf_x2ap_TimeToWait_PDU,
4402       { "TimeToWait", "x2ap.TimeToWait",
4403         FT_UINT32, BASE_DEC, VALS(x2ap_TimeToWait_vals), 0,
4404         "x2ap.TimeToWait", HFILL }},
4405     { &hf_x2ap_TraceActivation_PDU,
4406       { "TraceActivation", "x2ap.TraceActivation",
4407         FT_NONE, BASE_NONE, NULL, 0,
4408         "x2ap.TraceActivation", HFILL }},
4409     { &hf_x2ap_UE_HistoryInformation_PDU,
4410       { "UE-HistoryInformation", "x2ap.UE_HistoryInformation",
4411         FT_UINT32, BASE_DEC, NULL, 0,
4412         "x2ap.UE_HistoryInformation", HFILL }},
4413     { &hf_x2ap_UE_X2AP_ID_PDU,
4414       { "UE-X2AP-ID", "x2ap.UE_X2AP_ID",
4415         FT_UINT32, BASE_DEC, NULL, 0,
4416         "x2ap.UE_X2AP_ID", HFILL }},
4417     { &hf_x2ap_HandoverRequest_PDU,
4418       { "HandoverRequest", "x2ap.HandoverRequest",
4419         FT_NONE, BASE_NONE, NULL, 0,
4420         "x2ap.HandoverRequest", HFILL }},
4421     { &hf_x2ap_UE_ContextInformation_PDU,
4422       { "UE-ContextInformation", "x2ap.UE_ContextInformation",
4423         FT_NONE, BASE_NONE, NULL, 0,
4424         "x2ap.UE_ContextInformation", HFILL }},
4425     { &hf_x2ap_E_RABs_ToBeSetup_Item_PDU,
4426       { "E-RABs-ToBeSetup-Item", "x2ap.E_RABs_ToBeSetup_Item",
4427         FT_NONE, BASE_NONE, NULL, 0,
4428         "x2ap.E_RABs_ToBeSetup_Item", HFILL }},
4429     { &hf_x2ap_HandoverRequestAcknowledge_PDU,
4430       { "HandoverRequestAcknowledge", "x2ap.HandoverRequestAcknowledge",
4431         FT_NONE, BASE_NONE, NULL, 0,
4432         "x2ap.HandoverRequestAcknowledge", HFILL }},
4433     { &hf_x2ap_E_RABs_Admitted_List_PDU,
4434       { "E-RABs-Admitted-List", "x2ap.E_RABs_Admitted_List",
4435         FT_UINT32, BASE_DEC, NULL, 0,
4436         "x2ap.E_RABs_Admitted_List", HFILL }},
4437     { &hf_x2ap_E_RABs_Admitted_Item_PDU,
4438       { "E-RABs-Admitted-Item", "x2ap.E_RABs_Admitted_Item",
4439         FT_NONE, BASE_NONE, NULL, 0,
4440         "x2ap.E_RABs_Admitted_Item", HFILL }},
4441     { &hf_x2ap_HandoverPreparationFailure_PDU,
4442       { "HandoverPreparationFailure", "x2ap.HandoverPreparationFailure",
4443         FT_NONE, BASE_NONE, NULL, 0,
4444         "x2ap.HandoverPreparationFailure", HFILL }},
4445     { &hf_x2ap_HandoverReport_PDU,
4446       { "HandoverReport", "x2ap.HandoverReport",
4447         FT_NONE, BASE_NONE, NULL, 0,
4448         "x2ap.HandoverReport", HFILL }},
4449     { &hf_x2ap_SNStatusTransfer_PDU,
4450       { "SNStatusTransfer", "x2ap.SNStatusTransfer",
4451         FT_NONE, BASE_NONE, NULL, 0,
4452         "x2ap.SNStatusTransfer", HFILL }},
4453     { &hf_x2ap_E_RABs_SubjectToStatusTransfer_List_PDU,
4454       { "E-RABs-SubjectToStatusTransfer-List", "x2ap.E_RABs_SubjectToStatusTransfer_List",
4455         FT_UINT32, BASE_DEC, NULL, 0,
4456         "x2ap.E_RABs_SubjectToStatusTransfer_List", HFILL }},
4457     { &hf_x2ap_E_RABs_SubjectToStatusTransfer_Item_PDU,
4458       { "E-RABs-SubjectToStatusTransfer-Item", "x2ap.E_RABs_SubjectToStatusTransfer_Item",
4459         FT_NONE, BASE_NONE, NULL, 0,
4460         "x2ap.E_RABs_SubjectToStatusTransfer_Item", HFILL }},
4461     { &hf_x2ap_UEContextRelease_PDU,
4462       { "UEContextRelease", "x2ap.UEContextRelease",
4463         FT_NONE, BASE_NONE, NULL, 0,
4464         "x2ap.UEContextRelease", HFILL }},
4465     { &hf_x2ap_HandoverCancel_PDU,
4466       { "HandoverCancel", "x2ap.HandoverCancel",
4467         FT_NONE, BASE_NONE, NULL, 0,
4468         "x2ap.HandoverCancel", HFILL }},
4469     { &hf_x2ap_ErrorIndication_PDU,
4470       { "ErrorIndication", "x2ap.ErrorIndication",
4471         FT_NONE, BASE_NONE, NULL, 0,
4472         "x2ap.ErrorIndication", HFILL }},
4473     { &hf_x2ap_ResetRequest_PDU,
4474       { "ResetRequest", "x2ap.ResetRequest",
4475         FT_NONE, BASE_NONE, NULL, 0,
4476         "x2ap.ResetRequest", HFILL }},
4477     { &hf_x2ap_ResetResponse_PDU,
4478       { "ResetResponse", "x2ap.ResetResponse",
4479         FT_NONE, BASE_NONE, NULL, 0,
4480         "x2ap.ResetResponse", HFILL }},
4481     { &hf_x2ap_X2SetupRequest_PDU,
4482       { "X2SetupRequest", "x2ap.X2SetupRequest",
4483         FT_NONE, BASE_NONE, NULL, 0,
4484         "x2ap.X2SetupRequest", HFILL }},
4485     { &hf_x2ap_X2SetupResponse_PDU,
4486       { "X2SetupResponse", "x2ap.X2SetupResponse",
4487         FT_NONE, BASE_NONE, NULL, 0,
4488         "x2ap.X2SetupResponse", HFILL }},
4489     { &hf_x2ap_X2SetupFailure_PDU,
4490       { "X2SetupFailure", "x2ap.X2SetupFailure",
4491         FT_NONE, BASE_NONE, NULL, 0,
4492         "x2ap.X2SetupFailure", HFILL }},
4493     { &hf_x2ap_LoadInformation_PDU,
4494       { "LoadInformation", "x2ap.LoadInformation",
4495         FT_NONE, BASE_NONE, NULL, 0,
4496         "x2ap.LoadInformation", HFILL }},
4497     { &hf_x2ap_CellInformation_List_PDU,
4498       { "CellInformation-List", "x2ap.CellInformation_List",
4499         FT_UINT32, BASE_DEC, NULL, 0,
4500         "x2ap.CellInformation_List", HFILL }},
4501     { &hf_x2ap_CellInformation_Item_PDU,
4502       { "CellInformation-Item", "x2ap.CellInformation_Item",
4503         FT_NONE, BASE_NONE, NULL, 0,
4504         "x2ap.CellInformation_Item", HFILL }},
4505     { &hf_x2ap_ENBConfigurationUpdate_PDU,
4506       { "ENBConfigurationUpdate", "x2ap.ENBConfigurationUpdate",
4507         FT_NONE, BASE_NONE, NULL, 0,
4508         "x2ap.ENBConfigurationUpdate", HFILL }},
4509     { &hf_x2ap_ServedCellsToModify_PDU,
4510       { "ServedCellsToModify", "x2ap.ServedCellsToModify",
4511         FT_UINT32, BASE_DEC, NULL, 0,
4512         "x2ap.ServedCellsToModify", HFILL }},
4513     { &hf_x2ap_Old_ECGIs_PDU,
4514       { "Old-ECGIs", "x2ap.Old_ECGIs",
4515         FT_UINT32, BASE_DEC, NULL, 0,
4516         "x2ap.Old_ECGIs", HFILL }},
4517     { &hf_x2ap_ENBConfigurationUpdateAcknowledge_PDU,
4518       { "ENBConfigurationUpdateAcknowledge", "x2ap.ENBConfigurationUpdateAcknowledge",
4519         FT_NONE, BASE_NONE, NULL, 0,
4520         "x2ap.ENBConfigurationUpdateAcknowledge", HFILL }},
4521     { &hf_x2ap_ENBConfigurationUpdateFailure_PDU,
4522       { "ENBConfigurationUpdateFailure", "x2ap.ENBConfigurationUpdateFailure",
4523         FT_NONE, BASE_NONE, NULL, 0,
4524         "x2ap.ENBConfigurationUpdateFailure", HFILL }},
4525     { &hf_x2ap_ResourceStatusRequest_PDU,
4526       { "ResourceStatusRequest", "x2ap.ResourceStatusRequest",
4527         FT_NONE, BASE_NONE, NULL, 0,
4528         "x2ap.ResourceStatusRequest", HFILL }},
4529     { &hf_x2ap_CellToReport_List_PDU,
4530       { "CellToReport-List", "x2ap.CellToReport_List",
4531         FT_UINT32, BASE_DEC, NULL, 0,
4532         "x2ap.CellToReport_List", HFILL }},
4533     { &hf_x2ap_CellToReport_Item_PDU,
4534       { "CellToReport-Item", "x2ap.CellToReport_Item",
4535         FT_NONE, BASE_NONE, NULL, 0,
4536         "x2ap.CellToReport_Item", HFILL }},
4537     { &hf_x2ap_ReportingPeriodicity_PDU,
4538       { "ReportingPeriodicity", "x2ap.ReportingPeriodicity",
4539         FT_UINT32, BASE_DEC, VALS(x2ap_ReportingPeriodicity_vals), 0,
4540         "x2ap.ReportingPeriodicity", HFILL }},
4541     { &hf_x2ap_ResourceStatusResponse_PDU,
4542       { "ResourceStatusResponse", "x2ap.ResourceStatusResponse",
4543         FT_NONE, BASE_NONE, NULL, 0,
4544         "x2ap.ResourceStatusResponse", HFILL }},
4545     { &hf_x2ap_ResourceStatusFailure_PDU,
4546       { "ResourceStatusFailure", "x2ap.ResourceStatusFailure",
4547         FT_NONE, BASE_NONE, NULL, 0,
4548         "x2ap.ResourceStatusFailure", HFILL }},
4549     { &hf_x2ap_ResourceStatusUpdate_PDU,
4550       { "ResourceStatusUpdate", "x2ap.ResourceStatusUpdate",
4551         FT_NONE, BASE_NONE, NULL, 0,
4552         "x2ap.ResourceStatusUpdate", HFILL }},
4553     { &hf_x2ap_CellMeasurementResult_List_PDU,
4554       { "CellMeasurementResult-List", "x2ap.CellMeasurementResult_List",
4555         FT_UINT32, BASE_DEC, NULL, 0,
4556         "x2ap.CellMeasurementResult_List", HFILL }},
4557     { &hf_x2ap_CellMeasurementResult_Item_PDU,
4558       { "CellMeasurementResult-Item", "x2ap.CellMeasurementResult_Item",
4559         FT_NONE, BASE_NONE, NULL, 0,
4560         "x2ap.CellMeasurementResult_Item", HFILL }},
4561     { &hf_x2ap_PrivateMessage_PDU,
4562       { "PrivateMessage", "x2ap.PrivateMessage",
4563         FT_NONE, BASE_NONE, NULL, 0,
4564         "x2ap.PrivateMessage", HFILL }},
4565     { &hf_x2ap_MobilityChangeRequest_PDU,
4566       { "MobilityChangeRequest", "x2ap.MobilityChangeRequest",
4567         FT_NONE, BASE_NONE, NULL, 0,
4568         "x2ap.MobilityChangeRequest", HFILL }},
4569     { &hf_x2ap_MobilityChangeAcknowledge_PDU,
4570       { "MobilityChangeAcknowledge", "x2ap.MobilityChangeAcknowledge",
4571         FT_NONE, BASE_NONE, NULL, 0,
4572         "x2ap.MobilityChangeAcknowledge", HFILL }},
4573     { &hf_x2ap_MobilityChangeFailure_PDU,
4574       { "MobilityChangeFailure", "x2ap.MobilityChangeFailure",
4575         FT_NONE, BASE_NONE, NULL, 0,
4576         "x2ap.MobilityChangeFailure", HFILL }},
4577     { &hf_x2ap_RLFIndication_PDU,
4578       { "RLFIndication", "x2ap.RLFIndication",
4579         FT_NONE, BASE_NONE, NULL, 0,
4580         "x2ap.RLFIndication", HFILL }},
4581     { &hf_x2ap_X2AP_PDU_PDU,
4582       { "X2AP-PDU", "x2ap.X2AP_PDU",
4583         FT_UINT32, BASE_DEC, VALS(x2ap_X2AP_PDU_vals), 0,
4584         "x2ap.X2AP_PDU", HFILL }},
4585     { &hf_x2ap_local,
4586       { "local", "x2ap.local",
4587         FT_UINT32, BASE_DEC, NULL, 0,
4588         "x2ap.INTEGER_0_maxPrivateIEs", HFILL }},
4589     { &hf_x2ap_global,
4590       { "global", "x2ap.global",
4591         FT_OID, BASE_NONE, NULL, 0,
4592         "x2ap.OBJECT_IDENTIFIER", HFILL }},
4593     { &hf_x2ap_ProtocolIE_Container_item,
4594       { "ProtocolIE-Field", "x2ap.ProtocolIE_Field",
4595         FT_NONE, BASE_NONE, NULL, 0,
4596         "x2ap.ProtocolIE_Field", HFILL }},
4597     { &hf_x2ap_id,
4598       { "id", "x2ap.id",
4599         FT_UINT32, BASE_DEC, VALS(x2ap_ProtocolIE_ID_vals), 0,
4600         "x2ap.ProtocolIE_ID", HFILL }},
4601     { &hf_x2ap_criticality,
4602       { "criticality", "x2ap.criticality",
4603         FT_UINT32, BASE_DEC, VALS(x2ap_Criticality_vals), 0,
4604         "x2ap.Criticality", HFILL }},
4605     { &hf_x2ap_protocolIE_Field_value,
4606       { "value", "x2ap.value",
4607         FT_NONE, BASE_NONE, NULL, 0,
4608         "x2ap.ProtocolIE_Field_value", HFILL }},
4609     { &hf_x2ap_ProtocolExtensionContainer_item,
4610       { "ProtocolExtensionField", "x2ap.ProtocolExtensionField",
4611         FT_NONE, BASE_NONE, NULL, 0,
4612         "x2ap.ProtocolExtensionField", HFILL }},
4613     { &hf_x2ap_extension_id,
4614       { "id", "x2ap.id",
4615         FT_UINT32, BASE_DEC, VALS(x2ap_ProtocolIE_ID_vals), 0,
4616         "x2ap.ProtocolIE_ID", HFILL }},
4617     { &hf_x2ap_extensionValue,
4618       { "extensionValue", "x2ap.extensionValue",
4619         FT_NONE, BASE_NONE, NULL, 0,
4620         "x2ap.T_extensionValue", HFILL }},
4621     { &hf_x2ap_PrivateIE_Container_item,
4622       { "PrivateIE-Field", "x2ap.PrivateIE_Field",
4623         FT_NONE, BASE_NONE, NULL, 0,
4624         "x2ap.PrivateIE_Field", HFILL }},
4625     { &hf_x2ap_private_id,
4626       { "id", "x2ap.id",
4627         FT_UINT32, BASE_DEC, VALS(x2ap_PrivateIE_ID_vals), 0,
4628         "x2ap.PrivateIE_ID", HFILL }},
4629     { &hf_x2ap_privateIE_Field_value,
4630       { "value", "x2ap.value",
4631         FT_NONE, BASE_NONE, NULL, 0,
4632         "x2ap.PrivateIE_Field_value", HFILL }},
4633     { &hf_x2ap_key_eNodeB_star,
4634       { "key-eNodeB-star", "x2ap.key_eNodeB_star",
4635         FT_BYTES, BASE_NONE, NULL, 0,
4636         "x2ap.Key_eNodeB_Star", HFILL }},
4637     { &hf_x2ap_nextHopChainingCount,
4638       { "nextHopChainingCount", "x2ap.nextHopChainingCount",
4639         FT_UINT32, BASE_DEC, NULL, 0,
4640         "x2ap.NextHopChainingCount", HFILL }},
4641     { &hf_x2ap_iE_Extensions,
4642       { "iE-Extensions", "x2ap.iE_Extensions",
4643         FT_UINT32, BASE_DEC, NULL, 0,
4644         "x2ap.ProtocolExtensionContainer", HFILL }},
4645     { &hf_x2ap_priorityLevel,
4646       { "priorityLevel", "x2ap.priorityLevel",
4647         FT_UINT32, BASE_DEC, VALS(x2ap_PriorityLevel_vals), 0,
4648         "x2ap.PriorityLevel", HFILL }},
4649     { &hf_x2ap_pre_emptionCapability,
4650       { "pre-emptionCapability", "x2ap.pre_emptionCapability",
4651         FT_UINT32, BASE_DEC, VALS(x2ap_Pre_emptionCapability_vals), 0,
4652         "x2ap.Pre_emptionCapability", HFILL }},
4653     { &hf_x2ap_pre_emptionVulnerability,
4654       { "pre-emptionVulnerability", "x2ap.pre_emptionVulnerability",
4655         FT_UINT32, BASE_DEC, VALS(x2ap_Pre_emptionVulnerability_vals), 0,
4656         "x2ap.Pre_emptionVulnerability", HFILL }},
4657     { &hf_x2ap_BroadcastPLMNs_Item_item,
4658       { "PLMN-Identity", "x2ap.PLMN_Identity",
4659         FT_BYTES, BASE_NONE, NULL, 0,
4660         "x2ap.PLMN_Identity", HFILL }},
4661     { &hf_x2ap_radioNetwork,
4662       { "radioNetwork", "x2ap.radioNetwork",
4663         FT_UINT32, BASE_DEC, VALS(x2ap_CauseRadioNetwork_vals), 0,
4664         "x2ap.CauseRadioNetwork", HFILL }},
4665     { &hf_x2ap_transport,
4666       { "transport", "x2ap.transport",
4667         FT_UINT32, BASE_DEC, VALS(x2ap_CauseTransport_vals), 0,
4668         "x2ap.CauseTransport", HFILL }},
4669     { &hf_x2ap_protocol,
4670       { "protocol", "x2ap.protocol",
4671         FT_UINT32, BASE_DEC, VALS(x2ap_CauseProtocol_vals), 0,
4672         "x2ap.CauseProtocol", HFILL }},
4673     { &hf_x2ap_misc,
4674       { "misc", "x2ap.misc",
4675         FT_UINT32, BASE_DEC, VALS(x2ap_CauseMisc_vals), 0,
4676         "x2ap.CauseMisc", HFILL }},
4677     { &hf_x2ap_cell_Size,
4678       { "cell-Size", "x2ap.cell_Size",
4679         FT_UINT32, BASE_DEC, VALS(x2ap_Cell_Size_vals), 0,
4680         "x2ap.Cell_Size", HFILL }},
4681     { &hf_x2ap_dL_CompositeAvailableCapacity,
4682       { "dL-CompositeAvailableCapacity", "x2ap.dL_CompositeAvailableCapacity",
4683         FT_NONE, BASE_NONE, NULL, 0,
4684         "x2ap.CompositeAvailableCapacity", HFILL }},
4685     { &hf_x2ap_uL_CompositeAvailableCapacity,
4686       { "uL-CompositeAvailableCapacity", "x2ap.uL_CompositeAvailableCapacity",
4687         FT_NONE, BASE_NONE, NULL, 0,
4688         "x2ap.CompositeAvailableCapacity", HFILL }},
4689     { &hf_x2ap_cellCapacityClassValue,
4690       { "cellCapacityClassValue", "x2ap.cellCapacityClassValue",
4691         FT_UINT32, BASE_DEC, NULL, 0,
4692         "x2ap.CellCapacityClassValue", HFILL }},
4693     { &hf_x2ap_capacityValue,
4694       { "capacityValue", "x2ap.capacityValue",
4695         FT_UINT32, BASE_DEC, NULL, 0,
4696         "x2ap.CapacityValue", HFILL }},
4697     { &hf_x2ap_pDCP_SN,
4698       { "pDCP-SN", "x2ap.pDCP_SN",
4699         FT_UINT32, BASE_DEC, NULL, 0,
4700         "x2ap.PDCP_SN", HFILL }},
4701     { &hf_x2ap_hFN,
4702       { "hFN", "x2ap.hFN",
4703         FT_UINT32, BASE_DEC, NULL, 0,
4704         "x2ap.HFN", HFILL }},
4705     { &hf_x2ap_procedureCode,
4706       { "procedureCode", "x2ap.procedureCode",
4707         FT_UINT32, BASE_DEC, VALS(x2ap_ProcedureCode_vals), 0,
4708         "x2ap.ProcedureCode", HFILL }},
4709     { &hf_x2ap_triggeringMessage,
4710       { "triggeringMessage", "x2ap.triggeringMessage",
4711         FT_UINT32, BASE_DEC, VALS(x2ap_TriggeringMessage_vals), 0,
4712         "x2ap.TriggeringMessage", HFILL }},
4713     { &hf_x2ap_procedureCriticality,
4714       { "procedureCriticality", "x2ap.procedureCriticality",
4715         FT_UINT32, BASE_DEC, VALS(x2ap_Criticality_vals), 0,
4716         "x2ap.Criticality", HFILL }},
4717     { &hf_x2ap_iEsCriticalityDiagnostics,
4718       { "iEsCriticalityDiagnostics", "x2ap.iEsCriticalityDiagnostics",
4719         FT_UINT32, BASE_DEC, NULL, 0,
4720         "x2ap.CriticalityDiagnostics_IE_List", HFILL }},
4721     { &hf_x2ap_CriticalityDiagnostics_IE_List_item,
4722       { "CriticalityDiagnostics-IE-List item", "x2ap.CriticalityDiagnostics_IE_List_item",
4723         FT_NONE, BASE_NONE, NULL, 0,
4724         "x2ap.CriticalityDiagnostics_IE_List_item", HFILL }},
4725     { &hf_x2ap_iECriticality,
4726       { "iECriticality", "x2ap.iECriticality",
4727         FT_UINT32, BASE_DEC, VALS(x2ap_Criticality_vals), 0,
4728         "x2ap.Criticality", HFILL }},
4729     { &hf_x2ap_iE_ID,
4730       { "iE-ID", "x2ap.iE_ID",
4731         FT_UINT32, BASE_DEC, VALS(x2ap_ProtocolIE_ID_vals), 0,
4732         "x2ap.ProtocolIE_ID", HFILL }},
4733     { &hf_x2ap_typeOfError,
4734       { "typeOfError", "x2ap.typeOfError",
4735         FT_UINT32, BASE_DEC, VALS(x2ap_TypeOfError_vals), 0,
4736         "x2ap.TypeOfError", HFILL }},
4737     { &hf_x2ap_uL_EARFCN,
4738       { "uL-EARFCN", "x2ap.uL_EARFCN",
4739         FT_UINT32, BASE_DEC, NULL, 0,
4740         "x2ap.EARFCN", HFILL }},
4741     { &hf_x2ap_dL_EARFCN,
4742       { "dL-EARFCN", "x2ap.dL_EARFCN",
4743         FT_UINT32, BASE_DEC, NULL, 0,
4744         "x2ap.EARFCN", HFILL }},
4745     { &hf_x2ap_uL_Transmission_Bandwidth,
4746       { "uL-Transmission-Bandwidth", "x2ap.uL_Transmission_Bandwidth",
4747         FT_UINT32, BASE_DEC, VALS(x2ap_Transmission_Bandwidth_vals), 0,
4748         "x2ap.Transmission_Bandwidth", HFILL }},
4749     { &hf_x2ap_dL_Transmission_Bandwidth,
4750       { "dL-Transmission-Bandwidth", "x2ap.dL_Transmission_Bandwidth",
4751         FT_UINT32, BASE_DEC, VALS(x2ap_Transmission_Bandwidth_vals), 0,
4752         "x2ap.Transmission_Bandwidth", HFILL }},
4753     { &hf_x2ap_eARFCN,
4754       { "eARFCN", "x2ap.eARFCN",
4755         FT_UINT32, BASE_DEC, NULL, 0,
4756         "x2ap.EARFCN", HFILL }},
4757     { &hf_x2ap_transmission_Bandwidth,
4758       { "transmission-Bandwidth", "x2ap.transmission_Bandwidth",
4759         FT_UINT32, BASE_DEC, VALS(x2ap_Transmission_Bandwidth_vals), 0,
4760         "x2ap.Transmission_Bandwidth", HFILL }},
4761     { &hf_x2ap_subframeAssignment,
4762       { "subframeAssignment", "x2ap.subframeAssignment",
4763         FT_UINT32, BASE_DEC, VALS(x2ap_SubframeAssignment_vals), 0,
4764         "x2ap.SubframeAssignment", HFILL }},
4765     { &hf_x2ap_specialSubframe_Info,
4766       { "specialSubframe-Info", "x2ap.specialSubframe_Info",
4767         FT_NONE, BASE_NONE, NULL, 0,
4768         "x2ap.SpecialSubframe_Info", HFILL }},
4769     { &hf_x2ap_fDD,
4770       { "fDD", "x2ap.fDD",
4771         FT_NONE, BASE_NONE, NULL, 0,
4772         "x2ap.FDD_Info", HFILL }},
4773     { &hf_x2ap_tDD,
4774       { "tDD", "x2ap.tDD",
4775         FT_NONE, BASE_NONE, NULL, 0,
4776         "x2ap.TDD_Info", HFILL }},
4777     { &hf_x2ap_pLMN_Identity,
4778       { "pLMN-Identity", "x2ap.pLMN_Identity",
4779         FT_BYTES, BASE_NONE, NULL, 0,
4780         "x2ap.PLMN_Identity", HFILL }},
4781     { &hf_x2ap_eUTRANcellIdentifier,
4782       { "eUTRANcellIdentifier", "x2ap.eUTRANcellIdentifier",
4783         FT_BYTES, BASE_NONE, NULL, 0,
4784         "x2ap.EUTRANCellIdentifier", HFILL }},
4785     { &hf_x2ap_macro_eNB_ID,
4786       { "macro-eNB-ID", "x2ap.macro_eNB_ID",
4787         FT_BYTES, BASE_NONE, NULL, 0,
4788         "x2ap.BIT_STRING_SIZE_20", HFILL }},
4789     { &hf_x2ap_home_eNB_ID,
4790       { "home-eNB-ID", "x2ap.home_eNB_ID",
4791         FT_BYTES, BASE_NONE, NULL, 0,
4792         "x2ap.BIT_STRING_SIZE_28", HFILL }},
4793     { &hf_x2ap_EPLMNs_item,
4794       { "PLMN-Identity", "x2ap.PLMN_Identity",
4795         FT_BYTES, BASE_NONE, NULL, 0,
4796         "x2ap.PLMN_Identity", HFILL }},
4797     { &hf_x2ap_qCI,
4798       { "qCI", "x2ap.qCI",
4799         FT_UINT32, BASE_DEC, NULL, 0,
4800         "x2ap.QCI", HFILL }},
4801     { &hf_x2ap_allocationAndRetentionPriority,
4802       { "allocationAndRetentionPriority", "x2ap.allocationAndRetentionPriority",
4803         FT_NONE, BASE_NONE, NULL, 0,
4804         "x2ap.AllocationAndRetentionPriority", HFILL }},
4805     { &hf_x2ap_gbrQosInformation,
4806       { "gbrQosInformation", "x2ap.gbrQosInformation",
4807         FT_NONE, BASE_NONE, NULL, 0,
4808         "x2ap.GBR_QosInformation", HFILL }},
4809     { &hf_x2ap_E_RAB_List_item,
4810       { "ProtocolIE-Single-Container", "x2ap.ProtocolIE_Single_Container",
4811         FT_NONE, BASE_NONE, NULL, 0,
4812         "x2ap.ProtocolIE_Single_Container", HFILL }},
4813     { &hf_x2ap_e_RAB_ID,
4814       { "e-RAB-ID", "x2ap.e_RAB_ID",
4815         FT_UINT32, BASE_DEC, NULL, 0,
4816         "x2ap.E_RAB_ID", HFILL }},
4817     { &hf_x2ap_cause,
4818       { "cause", "x2ap.cause",
4819         FT_UINT32, BASE_DEC, VALS(x2ap_Cause_vals), 0,
4820         "x2ap.Cause", HFILL }},
4821     { &hf_x2ap_ForbiddenTAs_item,
4822       { "ForbiddenTAs-Item", "x2ap.ForbiddenTAs_Item",
4823         FT_NONE, BASE_NONE, NULL, 0,
4824         "x2ap.ForbiddenTAs_Item", HFILL }},
4825     { &hf_x2ap_forbiddenTACs,
4826       { "forbiddenTACs", "x2ap.forbiddenTACs",
4827         FT_UINT32, BASE_DEC, NULL, 0,
4828         "x2ap.ForbiddenTACs", HFILL }},
4829     { &hf_x2ap_ForbiddenTACs_item,
4830       { "TAC", "x2ap.TAC",
4831         FT_BYTES, BASE_NONE, NULL, 0,
4832         "x2ap.TAC", HFILL }},
4833     { &hf_x2ap_ForbiddenLAs_item,
4834       { "ForbiddenLAs-Item", "x2ap.ForbiddenLAs_Item",
4835         FT_NONE, BASE_NONE, NULL, 0,
4836         "x2ap.ForbiddenLAs_Item", HFILL }},
4837     { &hf_x2ap_forbiddenLACs,
4838       { "forbiddenLACs", "x2ap.forbiddenLACs",
4839         FT_UINT32, BASE_DEC, NULL, 0,
4840         "x2ap.ForbiddenLACs", HFILL }},
4841     { &hf_x2ap_ForbiddenLACs_item,
4842       { "LAC", "x2ap.LAC",
4843         FT_BYTES, BASE_NONE, NULL, 0,
4844         "x2ap.LAC", HFILL }},
4845     { &hf_x2ap_e_RAB_MaximumBitrateDL,
4846       { "e-RAB-MaximumBitrateDL", "x2ap.e_RAB_MaximumBitrateDL",
4847         FT_UINT64, BASE_DEC, NULL, 0,
4848         "x2ap.BitRate", HFILL }},
4849     { &hf_x2ap_e_RAB_MaximumBitrateUL,
4850       { "e-RAB-MaximumBitrateUL", "x2ap.e_RAB_MaximumBitrateUL",
4851         FT_UINT64, BASE_DEC, NULL, 0,
4852         "x2ap.BitRate", HFILL }},
4853     { &hf_x2ap_e_RAB_GuaranteedBitrateDL,
4854       { "e-RAB-GuaranteedBitrateDL", "x2ap.e_RAB_GuaranteedBitrateDL",
4855         FT_UINT64, BASE_DEC, NULL, 0,
4856         "x2ap.BitRate", HFILL }},
4857     { &hf_x2ap_e_RAB_GuaranteedBitrateUL,
4858       { "e-RAB-GuaranteedBitrateUL", "x2ap.e_RAB_GuaranteedBitrateUL",
4859         FT_UINT64, BASE_DEC, NULL, 0,
4860         "x2ap.BitRate", HFILL }},
4861     { &hf_x2ap_eNB_ID,
4862       { "eNB-ID", "x2ap.eNB_ID",
4863         FT_UINT32, BASE_DEC, VALS(x2ap_ENB_ID_vals), 0,
4864         "x2ap.ENB_ID", HFILL }},
4865     { &hf_x2ap_transportLayerAddress,
4866       { "transportLayerAddress", "x2ap.transportLayerAddress",
4867         FT_BYTES, BASE_NONE, NULL, 0,
4868         "x2ap.TransportLayerAddress", HFILL }},
4869     { &hf_x2ap_gTP_TEID,
4870       { "gTP-TEID", "x2ap.gTP_TEID",
4871         FT_BYTES, BASE_NONE, NULL, 0,
4872         "x2ap.GTP_TEI", HFILL }},
4873     { &hf_x2ap_GUGroupIDList_item,
4874       { "GU-Group-ID", "x2ap.GU_Group_ID",
4875         FT_NONE, BASE_NONE, NULL, 0,
4876         "x2ap.GU_Group_ID", HFILL }},
4877     { &hf_x2ap_mME_Group_ID,
4878       { "mME-Group-ID", "x2ap.mME_Group_ID",
4879         FT_BYTES, BASE_NONE, NULL, 0,
4880         "x2ap.MME_Group_ID", HFILL }},
4881     { &hf_x2ap_gU_Group_ID,
4882       { "gU-Group-ID", "x2ap.gU_Group_ID",
4883         FT_NONE, BASE_NONE, NULL, 0,
4884         "x2ap.GU_Group_ID", HFILL }},
4885     { &hf_x2ap_mMME_Code,
4886       { "mMME-Code", "x2ap.mMME_Code",
4887         FT_BYTES, BASE_NONE, NULL, 0,
4888         "x2ap.MME_Code", HFILL }},
4889     { &hf_x2ap_servingPLMN,
4890       { "servingPLMN", "x2ap.servingPLMN",
4891         FT_BYTES, BASE_NONE, NULL, 0,
4892         "x2ap.PLMN_Identity", HFILL }},
4893     { &hf_x2ap_equivalentPLMNs,
4894       { "equivalentPLMNs", "x2ap.equivalentPLMNs",
4895         FT_UINT32, BASE_DEC, NULL, 0,
4896         "x2ap.EPLMNs", HFILL }},
4897     { &hf_x2ap_forbiddenTAs,
4898       { "forbiddenTAs", "x2ap.forbiddenTAs",
4899         FT_UINT32, BASE_DEC, NULL, 0,
4900         "x2ap.ForbiddenTAs", HFILL }},
4901     { &hf_x2ap_forbiddenLAs,
4902       { "forbiddenLAs", "x2ap.forbiddenLAs",
4903         FT_UINT32, BASE_DEC, NULL, 0,
4904         "x2ap.ForbiddenLAs", HFILL }},
4905     { &hf_x2ap_forbiddenInterRATs,
4906       { "forbiddenInterRATs", "x2ap.forbiddenInterRATs",
4907         FT_UINT32, BASE_DEC, VALS(x2ap_ForbiddenInterRATs_vals), 0,
4908         "x2ap.ForbiddenInterRATs", HFILL }},
4909     { &hf_x2ap_dLHWLoadIndicator,
4910       { "dLHWLoadIndicator", "x2ap.dLHWLoadIndicator",
4911         FT_UINT32, BASE_DEC, VALS(x2ap_LoadIndicator_vals), 0,
4912         "x2ap.LoadIndicator", HFILL }},
4913     { &hf_x2ap_uLHWLoadIndicator,
4914       { "uLHWLoadIndicator", "x2ap.uLHWLoadIndicator",
4915         FT_UINT32, BASE_DEC, VALS(x2ap_LoadIndicator_vals), 0,
4916         "x2ap.LoadIndicator", HFILL }},
4917     { &hf_x2ap_e_UTRAN_Cell,
4918       { "e-UTRAN-Cell", "x2ap.e_UTRAN_Cell",
4919         FT_NONE, BASE_NONE, NULL, 0,
4920         "x2ap.LastVisitedEUTRANCellInformation", HFILL }},
4921     { &hf_x2ap_uTRAN_Cell,
4922       { "uTRAN-Cell", "x2ap.uTRAN_Cell",
4923         FT_BYTES, BASE_NONE, NULL, 0,
4924         "x2ap.LastVisitedUTRANCellInformation", HFILL }},
4925     { &hf_x2ap_gERAN_Cell,
4926       { "gERAN-Cell", "x2ap.gERAN_Cell",
4927         FT_UINT32, BASE_DEC, VALS(x2ap_LastVisitedGERANCellInformation_vals), 0,
4928         "x2ap.LastVisitedGERANCellInformation", HFILL }},
4929     { &hf_x2ap_global_Cell_ID,
4930       { "global-Cell-ID", "x2ap.global_Cell_ID",
4931         FT_NONE, BASE_NONE, NULL, 0,
4932         "x2ap.ECGI", HFILL }},
4933     { &hf_x2ap_cellType,
4934       { "cellType", "x2ap.cellType",
4935         FT_NONE, BASE_NONE, NULL, 0,
4936         "x2ap.CellType", HFILL }},
4937     { &hf_x2ap_time_UE_StayedInCell,
4938       { "time-UE-StayedInCell", "x2ap.time_UE_StayedInCell",
4939         FT_UINT32, BASE_DEC, NULL, 0,
4940         "x2ap.Time_UE_StayedInCell", HFILL }},
4941     { &hf_x2ap_undefined,
4942       { "undefined", "x2ap.undefined",
4943         FT_NONE, BASE_NONE, NULL, 0,
4944         "x2ap.NULL", HFILL }},
4945     { &hf_x2ap_eventType,
4946       { "eventType", "x2ap.eventType",
4947         FT_UINT32, BASE_DEC, VALS(x2ap_EventType_vals), 0,
4948         "x2ap.EventType", HFILL }},
4949     { &hf_x2ap_reportArea,
4950       { "reportArea", "x2ap.reportArea",
4951         FT_UINT32, BASE_DEC, VALS(x2ap_ReportArea_vals), 0,
4952         "x2ap.ReportArea", HFILL }},
4953     { &hf_x2ap_handoverTriggerChangeLowerLimit,
4954       { "handoverTriggerChangeLowerLimit", "x2ap.handoverTriggerChangeLowerLimit",
4955         FT_INT32, BASE_DEC, NULL, 0,
4956         "x2ap.INTEGER_M20_20", HFILL }},
4957     { &hf_x2ap_handoverTriggerChangeUpperLimit,
4958       { "handoverTriggerChangeUpperLimit", "x2ap.handoverTriggerChangeUpperLimit",
4959         FT_INT32, BASE_DEC, NULL, 0,
4960         "x2ap.INTEGER_M20_20", HFILL }},
4961     { &hf_x2ap_handoverTriggerChange,
4962       { "handoverTriggerChange", "x2ap.handoverTriggerChange",
4963         FT_INT32, BASE_DEC, NULL, 0,
4964         "x2ap.INTEGER_M20_20", HFILL }},
4965     { &hf_x2ap_Neighbour_Information_item,
4966       { "Neighbour-Information item", "x2ap.Neighbour_Information_item",
4967         FT_NONE, BASE_NONE, NULL, 0,
4968         "x2ap.Neighbour_Information_item", HFILL }},
4969     { &hf_x2ap_eCGI,
4970       { "eCGI", "x2ap.eCGI",
4971         FT_NONE, BASE_NONE, NULL, 0,
4972         "x2ap.ECGI", HFILL }},
4973     { &hf_x2ap_pCI,
4974       { "pCI", "x2ap.pCI",
4975         FT_UINT32, BASE_DEC, NULL, 0,
4976         "x2ap.PCI", HFILL }},
4977     { &hf_x2ap_rootSequenceIndex,
4978       { "rootSequenceIndex", "x2ap.rootSequenceIndex",
4979         FT_UINT32, BASE_DEC, NULL, 0,
4980         "x2ap.INTEGER_0_837", HFILL }},
4981     { &hf_x2ap_zeroCorrelationIndex,
4982       { "zeroCorrelationIndex", "x2ap.zeroCorrelationIndex",
4983         FT_UINT32, BASE_DEC, NULL, 0,
4984         "x2ap.INTEGER_0_15", HFILL }},
4985     { &hf_x2ap_highSpeedFlag,
4986       { "highSpeedFlag", "x2ap.highSpeedFlag",
4987         FT_BOOLEAN, BASE_NONE, NULL, 0,
4988         "x2ap.BOOLEAN", HFILL }},
4989     { &hf_x2ap_prach_FreqOffset,
4990       { "prach-FreqOffset", "x2ap.prach_FreqOffset",
4991         FT_UINT32, BASE_DEC, NULL, 0,
4992         "x2ap.INTEGER_0_94", HFILL }},
4993     { &hf_x2ap_prach_ConfigIndex,
4994       { "prach-ConfigIndex", "x2ap.prach_ConfigIndex",
4995         FT_UINT32, BASE_DEC, NULL, 0,
4996         "x2ap.INTEGER_0_63", HFILL }},
4997     { &hf_x2ap_rNTP_PerPRB,
4998       { "rNTP-PerPRB", "x2ap.rNTP_PerPRB",
4999         FT_BYTES, BASE_NONE, NULL, 0,
5000         "x2ap.BIT_STRING_SIZE_6_110_", HFILL }},
5001     { &hf_x2ap_rNTP_Threshold,
5002       { "rNTP-Threshold", "x2ap.rNTP_Threshold",
5003         FT_UINT32, BASE_DEC, VALS(x2ap_RNTP_Threshold_vals), 0,
5004         "x2ap.RNTP_Threshold", HFILL }},
5005     { &hf_x2ap_numberOfCellSpecificAntennaPorts,
5006       { "numberOfCellSpecificAntennaPorts", "x2ap.numberOfCellSpecificAntennaPorts",
5007         FT_UINT32, BASE_DEC, VALS(x2ap_T_numberOfCellSpecificAntennaPorts_vals), 0,
5008         "x2ap.T_numberOfCellSpecificAntennaPorts", HFILL }},
5009     { &hf_x2ap_p_B,
5010       { "p-B", "x2ap.p_B",
5011         FT_UINT32, BASE_DEC, NULL, 0,
5012         "x2ap.INTEGER_0_3_", HFILL }},
5013     { &hf_x2ap_pDCCH_InterferenceImpact,
5014       { "pDCCH-InterferenceImpact", "x2ap.pDCCH_InterferenceImpact",
5015         FT_UINT32, BASE_DEC, NULL, 0,
5016         "x2ap.INTEGER_0_4_", HFILL }},
5017     { &hf_x2ap_dL_GBR_PRB_usage,
5018       { "dL-GBR-PRB-usage", "x2ap.dL_GBR_PRB_usage",
5019         FT_UINT32, BASE_DEC, NULL, 0,
5020         "x2ap.DL_GBR_PRB_usage", HFILL }},
5021     { &hf_x2ap_uL_GBR_PRB_usage,
5022       { "uL-GBR-PRB-usage", "x2ap.uL_GBR_PRB_usage",
5023         FT_UINT32, BASE_DEC, NULL, 0,
5024         "x2ap.UL_GBR_PRB_usage", HFILL }},
5025     { &hf_x2ap_dL_non_GBR_PRB_usage,
5026       { "dL-non-GBR-PRB-usage", "x2ap.dL_non_GBR_PRB_usage",
5027         FT_UINT32, BASE_DEC, NULL, 0,
5028         "x2ap.DL_non_GBR_PRB_usage", HFILL }},
5029     { &hf_x2ap_uL_non_GBR_PRB_usage,
5030       { "uL-non-GBR-PRB-usage", "x2ap.uL_non_GBR_PRB_usage",
5031         FT_UINT32, BASE_DEC, NULL, 0,
5032         "x2ap.UL_non_GBR_PRB_usage", HFILL }},
5033     { &hf_x2ap_dL_Total_PRB_usage,
5034       { "dL-Total-PRB-usage", "x2ap.dL_Total_PRB_usage",
5035         FT_UINT32, BASE_DEC, NULL, 0,
5036         "x2ap.DL_Total_PRB_usage", HFILL }},
5037     { &hf_x2ap_uL_Total_PRB_usage,
5038       { "uL-Total-PRB-usage", "x2ap.uL_Total_PRB_usage",
5039         FT_UINT32, BASE_DEC, NULL, 0,
5040         "x2ap.UL_Total_PRB_usage", HFILL }},
5041     { &hf_x2ap_dLS1TNLLoadIndicator,
5042       { "dLS1TNLLoadIndicator", "x2ap.dLS1TNLLoadIndicator",
5043         FT_UINT32, BASE_DEC, VALS(x2ap_LoadIndicator_vals), 0,
5044         "x2ap.LoadIndicator", HFILL }},
5045     { &hf_x2ap_uLS1TNLLoadIndicator,
5046       { "uLS1TNLLoadIndicator", "x2ap.uLS1TNLLoadIndicator",
5047         FT_UINT32, BASE_DEC, VALS(x2ap_LoadIndicator_vals), 0,
5048         "x2ap.LoadIndicator", HFILL }},
5049     { &hf_x2ap_ServedCells_item,
5050       { "ServedCells item", "x2ap.ServedCells_item",
5051         FT_NONE, BASE_NONE, NULL, 0,
5052         "x2ap.ServedCells_item", HFILL }},
5053     { &hf_x2ap_servedCellInfo,
5054       { "servedCellInfo", "x2ap.servedCellInfo",
5055         FT_NONE, BASE_NONE, NULL, 0,
5056         "x2ap.ServedCell_Information", HFILL }},
5057     { &hf_x2ap_neighbour_Info,
5058       { "neighbour-Info", "x2ap.neighbour_Info",
5059         FT_UINT32, BASE_DEC, NULL, 0,
5060         "x2ap.Neighbour_Information", HFILL }},
5061     { &hf_x2ap_cellId,
5062       { "cellId", "x2ap.cellId",
5063         FT_NONE, BASE_NONE, NULL, 0,
5064         "x2ap.ECGI", HFILL }},
5065     { &hf_x2ap_tAC,
5066       { "tAC", "x2ap.tAC",
5067         FT_BYTES, BASE_NONE, NULL, 0,
5068         "x2ap.TAC", HFILL }},
5069     { &hf_x2ap_broadcastPLMNs,
5070       { "broadcastPLMNs", "x2ap.broadcastPLMNs",
5071         FT_UINT32, BASE_DEC, NULL, 0,
5072         "x2ap.BroadcastPLMNs_Item", HFILL }},
5073     { &hf_x2ap_eUTRA_Mode_Info,
5074       { "eUTRA-Mode-Info", "x2ap.eUTRA_Mode_Info",
5075         FT_UINT32, BASE_DEC, VALS(x2ap_EUTRA_Mode_Info_vals), 0,
5076         "x2ap.EUTRA_Mode_Info", HFILL }},
5077     { &hf_x2ap_specialSubframePatterns,
5078       { "specialSubframePatterns", "x2ap.specialSubframePatterns",
5079         FT_UINT32, BASE_DEC, VALS(x2ap_SpecialSubframePatterns_vals), 0,
5080         "x2ap.SpecialSubframePatterns", HFILL }},
5081     { &hf_x2ap_cyclicPrefixDL,
5082       { "cyclicPrefixDL", "x2ap.cyclicPrefixDL",
5083         FT_UINT32, BASE_DEC, VALS(x2ap_CyclicPrefixDL_vals), 0,
5084         "x2ap.CyclicPrefixDL", HFILL }},
5085     { &hf_x2ap_cyclicPrefixUL,
5086       { "cyclicPrefixUL", "x2ap.cyclicPrefixUL",
5087         FT_UINT32, BASE_DEC, VALS(x2ap_CyclicPrefixUL_vals), 0,
5088         "x2ap.CyclicPrefixUL", HFILL }},
5089     { &hf_x2ap_eUTRANTraceID,
5090       { "eUTRANTraceID", "x2ap.eUTRANTraceID",
5091         FT_BYTES, BASE_NONE, NULL, 0,
5092         "x2ap.EUTRANTraceID", HFILL }},
5093     { &hf_x2ap_interfacesToTrace,
5094       { "interfacesToTrace", "x2ap.interfacesToTrace",
5095         FT_BYTES, BASE_NONE, NULL, 0,
5096         "x2ap.InterfacesToTrace", HFILL }},
5097     { &hf_x2ap_traceDepth,
5098       { "traceDepth", "x2ap.traceDepth",
5099         FT_UINT32, BASE_DEC, VALS(x2ap_TraceDepth_vals), 0,
5100         "x2ap.TraceDepth", HFILL }},
5101     { &hf_x2ap_traceCollectionEntityIPAddress,
5102       { "traceCollectionEntityIPAddress", "x2ap.traceCollectionEntityIPAddress",
5103         FT_BYTES, BASE_NONE, NULL, 0,
5104         "x2ap.TraceCollectionEntityIPAddress", HFILL }},
5105     { &hf_x2ap_UE_HistoryInformation_item,
5106       { "LastVisitedCell-Item", "x2ap.LastVisitedCell_Item",
5107         FT_UINT32, BASE_DEC, VALS(x2ap_LastVisitedCell_Item_vals), 0,
5108         "x2ap.LastVisitedCell_Item", HFILL }},
5109     { &hf_x2ap_uEaggregateMaximumBitRateDownlink,
5110       { "uEaggregateMaximumBitRateDownlink", "x2ap.uEaggregateMaximumBitRateDownlink",
5111         FT_UINT64, BASE_DEC, NULL, 0,
5112         "x2ap.BitRate", HFILL }},
5113     { &hf_x2ap_uEaggregateMaximumBitRateUplink,
5114       { "uEaggregateMaximumBitRateUplink", "x2ap.uEaggregateMaximumBitRateUplink",
5115         FT_UINT64, BASE_DEC, NULL, 0,
5116         "x2ap.BitRate", HFILL }},
5117     { &hf_x2ap_encryptionAlgorithms,
5118       { "encryptionAlgorithms", "x2ap.encryptionAlgorithms",
5119         FT_BYTES, BASE_NONE, NULL, 0,
5120         "x2ap.EncryptionAlgorithms", HFILL }},
5121     { &hf_x2ap_integrityProtectionAlgorithms,
5122       { "integrityProtectionAlgorithms", "x2ap.integrityProtectionAlgorithms",
5123         FT_BYTES, BASE_NONE, NULL, 0,
5124         "x2ap.IntegrityProtectionAlgorithms", HFILL }},
5125     { &hf_x2ap_UL_InterferenceOverloadIndication_item,
5126       { "UL-InterferenceOverloadIndication-Item", "x2ap.UL_InterferenceOverloadIndication_Item",
5127         FT_UINT32, BASE_DEC, VALS(x2ap_UL_InterferenceOverloadIndication_Item_vals), 0,
5128         "x2ap.UL_InterferenceOverloadIndication_Item", HFILL }},
5129     { &hf_x2ap_UL_HighInterferenceIndicationInfo_item,
5130       { "UL-HighInterferenceIndicationInfo-Item", "x2ap.UL_HighInterferenceIndicationInfo_Item",
5131         FT_NONE, BASE_NONE, NULL, 0,
5132         "x2ap.UL_HighInterferenceIndicationInfo_Item", HFILL }},
5133     { &hf_x2ap_target_Cell_ID,
5134       { "target-Cell-ID", "x2ap.target_Cell_ID",
5135         FT_NONE, BASE_NONE, NULL, 0,
5136         "x2ap.ECGI", HFILL }},
5137     { &hf_x2ap_ul_interferenceindication,
5138       { "ul-interferenceindication", "x2ap.ul_interferenceindication",
5139         FT_BYTES, BASE_NONE, NULL, 0,
5140         "x2ap.UL_HighInterferenceIndication", HFILL }},
5141     { &hf_x2ap_protocolIEs,
5142       { "protocolIEs", "x2ap.protocolIEs",
5143         FT_UINT32, BASE_DEC, NULL, 0,
5144         "x2ap.ProtocolIE_Container", HFILL }},
5145     { &hf_x2ap_mME_UE_S1AP_ID,
5146       { "mME-UE-S1AP-ID", "x2ap.mME_UE_S1AP_ID",
5147         FT_UINT32, BASE_DEC, NULL, 0,
5148         "x2ap.UE_S1AP_ID", HFILL }},
5149     { &hf_x2ap_uESecurityCapabilities,
5150       { "uESecurityCapabilities", "x2ap.uESecurityCapabilities",
5151         FT_NONE, BASE_NONE, NULL, 0,
5152         "x2ap.UESecurityCapabilities", HFILL }},
5153     { &hf_x2ap_aS_SecurityInformation,
5154       { "aS-SecurityInformation", "x2ap.aS_SecurityInformation",
5155         FT_NONE, BASE_NONE, NULL, 0,
5156         "x2ap.AS_SecurityInformation", HFILL }},
5157     { &hf_x2ap_uEaggregateMaximumBitRate,
5158       { "uEaggregateMaximumBitRate", "x2ap.uEaggregateMaximumBitRate",
5159         FT_NONE, BASE_NONE, NULL, 0,
5160         "x2ap.UEAggregateMaximumBitRate", HFILL }},
5161     { &hf_x2ap_subscriberProfileIDforRFP,
5162       { "subscriberProfileIDforRFP", "x2ap.subscriberProfileIDforRFP",
5163         FT_UINT32, BASE_DEC, NULL, 0,
5164         "x2ap.SubscriberProfileIDforRFP", HFILL }},
5165     { &hf_x2ap_e_RABs_ToBeSetup_List,
5166       { "e-RABs-ToBeSetup-List", "x2ap.e_RABs_ToBeSetup_List",
5167         FT_UINT32, BASE_DEC, NULL, 0,
5168         "x2ap.E_RABs_ToBeSetup_List", HFILL }},
5169     { &hf_x2ap_rRC_Context,
5170       { "rRC-Context", "x2ap.rRC_Context",
5171         FT_BYTES, BASE_NONE, NULL, 0,
5172         "x2ap.RRC_Context", HFILL }},
5173     { &hf_x2ap_handoverRestrictionList,
5174       { "handoverRestrictionList", "x2ap.handoverRestrictionList",
5175         FT_NONE, BASE_NONE, NULL, 0,
5176         "x2ap.HandoverRestrictionList", HFILL }},
5177     { &hf_x2ap_locationReportingInformation,
5178       { "locationReportingInformation", "x2ap.locationReportingInformation",
5179         FT_NONE, BASE_NONE, NULL, 0,
5180         "x2ap.LocationReportingInformation", HFILL }},
5181     { &hf_x2ap_E_RABs_ToBeSetup_List_item,
5182       { "ProtocolIE-Single-Container", "x2ap.ProtocolIE_Single_Container",
5183         FT_NONE, BASE_NONE, NULL, 0,
5184         "x2ap.ProtocolIE_Single_Container", HFILL }},
5185     { &hf_x2ap_e_RAB_Level_QoS_Parameters,
5186       { "e-RAB-Level-QoS-Parameters", "x2ap.e_RAB_Level_QoS_Parameters",
5187         FT_NONE, BASE_NONE, NULL, 0,
5188         "x2ap.E_RAB_Level_QoS_Parameters", HFILL }},
5189     { &hf_x2ap_dL_Forwarding,
5190       { "dL-Forwarding", "x2ap.dL_Forwarding",
5191         FT_UINT32, BASE_DEC, VALS(x2ap_DL_Forwarding_vals), 0,
5192         "x2ap.DL_Forwarding", HFILL }},
5193     { &hf_x2ap_uL_GTPtunnelEndpoint,
5194       { "uL-GTPtunnelEndpoint", "x2ap.uL_GTPtunnelEndpoint",
5195         FT_NONE, BASE_NONE, NULL, 0,
5196         "x2ap.GTPtunnelEndpoint", HFILL }},
5197     { &hf_x2ap_E_RABs_Admitted_List_item,
5198       { "ProtocolIE-Single-Container", "x2ap.ProtocolIE_Single_Container",
5199         FT_NONE, BASE_NONE, NULL, 0,
5200         "x2ap.ProtocolIE_Single_Container", HFILL }},
5201     { &hf_x2ap_uL_GTP_TunnelEndpoint,
5202       { "uL-GTP-TunnelEndpoint", "x2ap.uL_GTP_TunnelEndpoint",
5203         FT_NONE, BASE_NONE, NULL, 0,
5204         "x2ap.GTPtunnelEndpoint", HFILL }},
5205     { &hf_x2ap_dL_GTP_TunnelEndpoint,
5206       { "dL-GTP-TunnelEndpoint", "x2ap.dL_GTP_TunnelEndpoint",
5207         FT_NONE, BASE_NONE, NULL, 0,
5208         "x2ap.GTPtunnelEndpoint", HFILL }},
5209     { &hf_x2ap_E_RABs_SubjectToStatusTransfer_List_item,
5210       { "ProtocolIE-Single-Container", "x2ap.ProtocolIE_Single_Container",
5211         FT_NONE, BASE_NONE, NULL, 0,
5212         "x2ap.ProtocolIE_Single_Container", HFILL }},
5213     { &hf_x2ap_receiveStatusofULPDCPSDUs,
5214       { "receiveStatusofULPDCPSDUs", "x2ap.receiveStatusofULPDCPSDUs",
5215         FT_BYTES, BASE_NONE, NULL, 0,
5216         "x2ap.ReceiveStatusofULPDCPSDUs", HFILL }},
5217     { &hf_x2ap_uL_COUNTvalue,
5218       { "uL-COUNTvalue", "x2ap.uL_COUNTvalue",
5219         FT_NONE, BASE_NONE, NULL, 0,
5220         "x2ap.COUNTvalue", HFILL }},
5221     { &hf_x2ap_dL_COUNTvalue,
5222       { "dL-COUNTvalue", "x2ap.dL_COUNTvalue",
5223         FT_NONE, BASE_NONE, NULL, 0,
5224         "x2ap.COUNTvalue", HFILL }},
5225     { &hf_x2ap_CellInformation_List_item,
5226       { "ProtocolIE-Single-Container", "x2ap.ProtocolIE_Single_Container",
5227         FT_NONE, BASE_NONE, NULL, 0,
5228         "x2ap.ProtocolIE_Single_Container", HFILL }},
5229     { &hf_x2ap_cell_ID,
5230       { "cell-ID", "x2ap.cell_ID",
5231         FT_NONE, BASE_NONE, NULL, 0,
5232         "x2ap.ECGI", HFILL }},
5233     { &hf_x2ap_ul_InterferenceOverloadIndication,
5234       { "ul-InterferenceOverloadIndication", "x2ap.ul_InterferenceOverloadIndication",
5235         FT_UINT32, BASE_DEC, NULL, 0,
5236         "x2ap.UL_InterferenceOverloadIndication", HFILL }},
5237     { &hf_x2ap_ul_HighInterferenceIndicationInfo,
5238       { "ul-HighInterferenceIndicationInfo", "x2ap.ul_HighInterferenceIndicationInfo",
5239         FT_UINT32, BASE_DEC, NULL, 0,
5240         "x2ap.UL_HighInterferenceIndicationInfo", HFILL }},
5241     { &hf_x2ap_relativeNarrowbandTxPower,
5242       { "relativeNarrowbandTxPower", "x2ap.relativeNarrowbandTxPower",
5243         FT_NONE, BASE_NONE, NULL, 0,
5244         "x2ap.RelativeNarrowbandTxPower", HFILL }},
5245     { &hf_x2ap_ServedCellsToModify_item,
5246       { "ServedCellsToModify-Item", "x2ap.ServedCellsToModify_Item",
5247         FT_NONE, BASE_NONE, NULL, 0,
5248         "x2ap.ServedCellsToModify_Item", HFILL }},
5249     { &hf_x2ap_old_ecgi,
5250       { "old-ecgi", "x2ap.old_ecgi",
5251         FT_NONE, BASE_NONE, NULL, 0,
5252         "x2ap.ECGI", HFILL }},
5253     { &hf_x2ap_Old_ECGIs_item,
5254       { "ECGI", "x2ap.ECGI",
5255         FT_NONE, BASE_NONE, NULL, 0,
5256         "x2ap.ECGI", HFILL }},
5257     { &hf_x2ap_CellToReport_List_item,
5258       { "ProtocolIE-Single-Container", "x2ap.ProtocolIE_Single_Container",
5259         FT_NONE, BASE_NONE, NULL, 0,
5260         "x2ap.ProtocolIE_Single_Container", HFILL }},
5261     { &hf_x2ap_CellMeasurementResult_List_item,
5262       { "ProtocolIE-Single-Container", "x2ap.ProtocolIE_Single_Container",
5263         FT_NONE, BASE_NONE, NULL, 0,
5264         "x2ap.ProtocolIE_Single_Container", HFILL }},
5265     { &hf_x2ap_hWOverLoadIndicator,
5266       { "hWOverLoadIndicator", "x2ap.hWOverLoadIndicator",
5267         FT_NONE, BASE_NONE, NULL, 0,
5268         "x2ap.HWLoadIndicator", HFILL }},
5269     { &hf_x2ap_s1TNLOverLoadIndicator,
5270       { "s1TNLOverLoadIndicator", "x2ap.s1TNLOverLoadIndicator",
5271         FT_NONE, BASE_NONE, NULL, 0,
5272         "x2ap.S1TNLLoadIndicator", HFILL }},
5273     { &hf_x2ap_radioresourceStatus,
5274       { "radioresourceStatus", "x2ap.radioresourceStatus",
5275         FT_NONE, BASE_NONE, NULL, 0,
5276         "x2ap.RadioResourceStatus", HFILL }},
5277     { &hf_x2ap_privateIEs,
5278       { "privateIEs", "x2ap.privateIEs",
5279         FT_UINT32, BASE_DEC, NULL, 0,
5280         "x2ap.PrivateIE_Container", HFILL }},
5281     { &hf_x2ap_initiatingMessage,
5282       { "initiatingMessage", "x2ap.initiatingMessage",
5283         FT_NONE, BASE_NONE, NULL, 0,
5284         "x2ap.InitiatingMessage", HFILL }},
5285     { &hf_x2ap_successfulOutcome,
5286       { "successfulOutcome", "x2ap.successfulOutcome",
5287         FT_NONE, BASE_NONE, NULL, 0,
5288         "x2ap.SuccessfulOutcome", HFILL }},
5289     { &hf_x2ap_unsuccessfulOutcome,
5290       { "unsuccessfulOutcome", "x2ap.unsuccessfulOutcome",
5291         FT_NONE, BASE_NONE, NULL, 0,
5292         "x2ap.UnsuccessfulOutcome", HFILL }},
5293     { &hf_x2ap_initiatingMessage_value,
5294       { "value", "x2ap.value",
5295         FT_NONE, BASE_NONE, NULL, 0,
5296         "x2ap.InitiatingMessage_value", HFILL }},
5297     { &hf_x2ap_successfulOutcome_value,
5298       { "value", "x2ap.value",
5299         FT_NONE, BASE_NONE, NULL, 0,
5300         "x2ap.SuccessfulOutcome_value", HFILL }},
5301     { &hf_x2ap_value,
5302       { "value", "x2ap.value",
5303         FT_NONE, BASE_NONE, NULL, 0,
5304         "x2ap.UnsuccessfulOutcome_value", HFILL }},
5305
5306 /*--- End of included file: packet-x2ap-hfarr.c ---*/
5307 #line 152 "packet-x2ap-template.c"
5308   };
5309
5310   /* List of subtrees */
5311   static gint *ett[] = {
5312                   &ett_x2ap,
5313                   &ett_x2ap_TransportLayerAddress,
5314
5315 /*--- Included file: packet-x2ap-ettarr.c ---*/
5316 #line 1 "packet-x2ap-ettarr.c"
5317     &ett_x2ap_PrivateIE_ID,
5318     &ett_x2ap_ProtocolIE_Container,
5319     &ett_x2ap_ProtocolIE_Field,
5320     &ett_x2ap_ProtocolExtensionContainer,
5321     &ett_x2ap_ProtocolExtensionField,
5322     &ett_x2ap_PrivateIE_Container,
5323     &ett_x2ap_PrivateIE_Field,
5324     &ett_x2ap_AS_SecurityInformation,
5325     &ett_x2ap_AllocationAndRetentionPriority,
5326     &ett_x2ap_BroadcastPLMNs_Item,
5327     &ett_x2ap_Cause,
5328     &ett_x2ap_CellType,
5329     &ett_x2ap_CompositeAvailableCapacityGroup,
5330     &ett_x2ap_CompositeAvailableCapacity,
5331     &ett_x2ap_COUNTvalue,
5332     &ett_x2ap_CriticalityDiagnostics,
5333     &ett_x2ap_CriticalityDiagnostics_IE_List,
5334     &ett_x2ap_CriticalityDiagnostics_IE_List_item,
5335     &ett_x2ap_FDD_Info,
5336     &ett_x2ap_TDD_Info,
5337     &ett_x2ap_EUTRA_Mode_Info,
5338     &ett_x2ap_ECGI,
5339     &ett_x2ap_ENB_ID,
5340     &ett_x2ap_EPLMNs,
5341     &ett_x2ap_E_RAB_Level_QoS_Parameters,
5342     &ett_x2ap_E_RAB_List,
5343     &ett_x2ap_E_RAB_Item,
5344     &ett_x2ap_ForbiddenTAs,
5345     &ett_x2ap_ForbiddenTAs_Item,
5346     &ett_x2ap_ForbiddenTACs,
5347     &ett_x2ap_ForbiddenLAs,
5348     &ett_x2ap_ForbiddenLAs_Item,
5349     &ett_x2ap_ForbiddenLACs,
5350     &ett_x2ap_GBR_QosInformation,
5351     &ett_x2ap_GlobalENB_ID,
5352     &ett_x2ap_GTPtunnelEndpoint,
5353     &ett_x2ap_GUGroupIDList,
5354     &ett_x2ap_GU_Group_ID,
5355     &ett_x2ap_GUMMEI,
5356     &ett_x2ap_HandoverRestrictionList,
5357     &ett_x2ap_HWLoadIndicator,
5358     &ett_x2ap_LastVisitedCell_Item,
5359     &ett_x2ap_LastVisitedEUTRANCellInformation,
5360     &ett_x2ap_LastVisitedGERANCellInformation,
5361     &ett_x2ap_LocationReportingInformation,
5362     &ett_x2ap_MobilityParametersModificationRange,
5363     &ett_x2ap_MobilityParametersInformation,
5364     &ett_x2ap_Neighbour_Information,
5365     &ett_x2ap_Neighbour_Information_item,
5366     &ett_x2ap_PRACH_Configuration,
5367     &ett_x2ap_RelativeNarrowbandTxPower,
5368     &ett_x2ap_RadioResourceStatus,
5369     &ett_x2ap_S1TNLLoadIndicator,
5370     &ett_x2ap_ServedCells,
5371     &ett_x2ap_ServedCells_item,
5372     &ett_x2ap_ServedCell_Information,
5373     &ett_x2ap_SpecialSubframe_Info,
5374     &ett_x2ap_TraceActivation,
5375     &ett_x2ap_UE_HistoryInformation,
5376     &ett_x2ap_UEAggregateMaximumBitRate,
5377     &ett_x2ap_UESecurityCapabilities,
5378     &ett_x2ap_UL_InterferenceOverloadIndication,
5379     &ett_x2ap_UL_HighInterferenceIndicationInfo,
5380     &ett_x2ap_UL_HighInterferenceIndicationInfo_Item,
5381     &ett_x2ap_HandoverRequest,
5382     &ett_x2ap_UE_ContextInformation,
5383     &ett_x2ap_E_RABs_ToBeSetup_List,
5384     &ett_x2ap_E_RABs_ToBeSetup_Item,
5385     &ett_x2ap_HandoverRequestAcknowledge,
5386     &ett_x2ap_E_RABs_Admitted_List,
5387     &ett_x2ap_E_RABs_Admitted_Item,
5388     &ett_x2ap_HandoverPreparationFailure,
5389     &ett_x2ap_HandoverReport,
5390     &ett_x2ap_SNStatusTransfer,
5391     &ett_x2ap_E_RABs_SubjectToStatusTransfer_List,
5392     &ett_x2ap_E_RABs_SubjectToStatusTransfer_Item,
5393     &ett_x2ap_UEContextRelease,
5394     &ett_x2ap_HandoverCancel,
5395     &ett_x2ap_ErrorIndication,
5396     &ett_x2ap_ResetRequest,
5397     &ett_x2ap_ResetResponse,
5398     &ett_x2ap_X2SetupRequest,
5399     &ett_x2ap_X2SetupResponse,
5400     &ett_x2ap_X2SetupFailure,
5401     &ett_x2ap_LoadInformation,
5402     &ett_x2ap_CellInformation_List,
5403     &ett_x2ap_CellInformation_Item,
5404     &ett_x2ap_ENBConfigurationUpdate,
5405     &ett_x2ap_ServedCellsToModify,
5406     &ett_x2ap_ServedCellsToModify_Item,
5407     &ett_x2ap_Old_ECGIs,
5408     &ett_x2ap_ENBConfigurationUpdateAcknowledge,
5409     &ett_x2ap_ENBConfigurationUpdateFailure,
5410     &ett_x2ap_ResourceStatusRequest,
5411     &ett_x2ap_CellToReport_List,
5412     &ett_x2ap_CellToReport_Item,
5413     &ett_x2ap_ResourceStatusResponse,
5414     &ett_x2ap_ResourceStatusFailure,
5415     &ett_x2ap_ResourceStatusUpdate,
5416     &ett_x2ap_CellMeasurementResult_List,
5417     &ett_x2ap_CellMeasurementResult_Item,
5418     &ett_x2ap_PrivateMessage,
5419     &ett_x2ap_MobilityChangeRequest,
5420     &ett_x2ap_MobilityChangeAcknowledge,
5421     &ett_x2ap_MobilityChangeFailure,
5422     &ett_x2ap_RLFIndication,
5423     &ett_x2ap_X2AP_PDU,
5424     &ett_x2ap_InitiatingMessage,
5425     &ett_x2ap_SuccessfulOutcome,
5426     &ett_x2ap_UnsuccessfulOutcome,
5427
5428 /*--- End of included file: packet-x2ap-ettarr.c ---*/
5429 #line 159 "packet-x2ap-template.c"
5430   };
5431
5432   module_t *x2ap_module;
5433
5434   /* Register protocol */
5435   proto_x2ap = proto_register_protocol(PNAME, PSNAME, PFNAME);
5436   /* Register fields and subtrees */
5437   proto_register_field_array(proto_x2ap, hf, array_length(hf));
5438   proto_register_subtree_array(ett, array_length(ett));
5439  
5440   /* Register dissector */
5441   register_dissector("x2ap", dissect_x2ap, proto_x2ap);
5442
5443   /* Register dissector tables */
5444   x2ap_ies_dissector_table = register_dissector_table("x2ap.ies", "X2AP-PROTOCOL-IES", FT_UINT32, BASE_DEC);
5445   x2ap_extension_dissector_table = register_dissector_table("x2ap.extension", "X2AP-PROTOCOL-EXTENSION", FT_UINT32, BASE_DEC);
5446   x2ap_proc_imsg_dissector_table = register_dissector_table("x2ap.proc.imsg", "X2AP-ELEMENTARY-PROCEDURE InitiatingMessage", FT_UINT32, BASE_DEC);
5447   x2ap_proc_sout_dissector_table = register_dissector_table("x2ap.proc.sout", "X2AP-ELEMENTARY-PROCEDURE SuccessfulOutcome", FT_UINT32, BASE_DEC);
5448   x2ap_proc_uout_dissector_table = register_dissector_table("x2ap.proc.uout", "X2AP-ELEMENTARY-PROCEDURE UnsuccessfulOutcome", FT_UINT32, BASE_DEC);
5449
5450   /* Register configuration options for ports */
5451   x2ap_module = prefs_register_protocol(proto_x2ap, proto_reg_handoff_x2ap);
5452
5453   prefs_register_uint_preference(x2ap_module, "sctp.port",
5454                                  "X2AP SCTP Port",
5455                                  "Set the SCTP port for X2AP messages",
5456                                  10,
5457                                  &gbl_x2apSctpPort);
5458
5459 }
5460
5461
5462 /*--- proto_reg_handoff_x2ap ---------------------------------------*/
5463 void
5464 proto_reg_handoff_x2ap(void)
5465 {
5466         dissector_handle_t x2ap_handle;
5467         static gboolean Initialized=FALSE;
5468         static guint SctpPort;
5469
5470         x2ap_handle = find_dissector("x2ap");
5471         if (!Initialized) {
5472                 dissector_add_handle("sctp.port", x2ap_handle);  /* for "decode-as" */
5473                 dissector_add("sctp.ppi", X2AP_PAYLOAD_PROTOCOL_ID, x2ap_handle);
5474                 Initialized=TRUE;
5475
5476 /*--- Included file: packet-x2ap-dis-tab.c ---*/
5477 #line 1 "packet-x2ap-dis-tab.c"
5478   dissector_add("x2ap.ies", id_E_RABs_Admitted_Item, new_create_dissector_handle(dissect_E_RABs_Admitted_Item_PDU, proto_x2ap));
5479   dissector_add("x2ap.ies", id_E_RABs_Admitted_List, new_create_dissector_handle(dissect_E_RABs_Admitted_List_PDU, proto_x2ap));
5480   dissector_add("x2ap.ies", id_E_RAB_Item, new_create_dissector_handle(dissect_E_RAB_Item_PDU, proto_x2ap));
5481   dissector_add("x2ap.ies", id_E_RABs_NotAdmitted_List, new_create_dissector_handle(dissect_E_RAB_List_PDU, proto_x2ap));
5482   dissector_add("x2ap.ies", id_E_RABs_ToBeSetup_Item, new_create_dissector_handle(dissect_E_RABs_ToBeSetup_Item_PDU, proto_x2ap));
5483   dissector_add("x2ap.ies", id_Cause, new_create_dissector_handle(dissect_Cause_PDU, proto_x2ap));
5484   dissector_add("x2ap.ies", id_CellInformation, new_create_dissector_handle(dissect_CellInformation_List_PDU, proto_x2ap));
5485   dissector_add("x2ap.ies", id_CellInformation_Item, new_create_dissector_handle(dissect_CellInformation_Item_PDU, proto_x2ap));
5486   dissector_add("x2ap.ies", id_New_eNB_UE_X2AP_ID, new_create_dissector_handle(dissect_UE_X2AP_ID_PDU, proto_x2ap));
5487   dissector_add("x2ap.ies", id_Old_eNB_UE_X2AP_ID, new_create_dissector_handle(dissect_UE_X2AP_ID_PDU, proto_x2ap));
5488   dissector_add("x2ap.ies", id_TargetCell_ID, new_create_dissector_handle(dissect_ECGI_PDU, proto_x2ap));
5489   dissector_add("x2ap.ies", id_TargeteNBtoSource_eNBTransparentContainer, new_create_dissector_handle(dissect_TargeteNBtoSource_eNBTransparentContainer_PDU, proto_x2ap));
5490   dissector_add("x2ap.ies", id_TraceActivation, new_create_dissector_handle(dissect_TraceActivation_PDU, proto_x2ap));
5491   dissector_add("x2ap.ies", id_UE_ContextInformation, new_create_dissector_handle(dissect_UE_ContextInformation_PDU, proto_x2ap));
5492   dissector_add("x2ap.ies", id_UE_HistoryInformation, new_create_dissector_handle(dissect_UE_HistoryInformation_PDU, proto_x2ap));
5493   dissector_add("x2ap.ies", id_UE_X2AP_ID, new_create_dissector_handle(dissect_UE_X2AP_ID_PDU, proto_x2ap));
5494   dissector_add("x2ap.ies", id_CriticalityDiagnostics, new_create_dissector_handle(dissect_CriticalityDiagnostics_PDU, proto_x2ap));
5495   dissector_add("x2ap.ies", id_E_RABs_SubjectToStatusTransfer_List, new_create_dissector_handle(dissect_E_RABs_SubjectToStatusTransfer_List_PDU, proto_x2ap));
5496   dissector_add("x2ap.ies", id_E_RABs_SubjectToStatusTransfer_Item, new_create_dissector_handle(dissect_E_RABs_SubjectToStatusTransfer_Item_PDU, proto_x2ap));
5497   dissector_add("x2ap.ies", id_ServedCells, new_create_dissector_handle(dissect_ServedCells_PDU, proto_x2ap));
5498   dissector_add("x2ap.ies", id_GlobalENB_ID, new_create_dissector_handle(dissect_GlobalENB_ID_PDU, proto_x2ap));
5499   dissector_add("x2ap.ies", id_TimeToWait, new_create_dissector_handle(dissect_TimeToWait_PDU, proto_x2ap));
5500   dissector_add("x2ap.ies", id_GUMMEI_ID, new_create_dissector_handle(dissect_GUMMEI_PDU, proto_x2ap));
5501   dissector_add("x2ap.ies", id_GUGroupIDList, new_create_dissector_handle(dissect_GUGroupIDList_PDU, proto_x2ap));
5502   dissector_add("x2ap.ies", id_ServedCellsToAdd, new_create_dissector_handle(dissect_ServedCells_PDU, proto_x2ap));
5503   dissector_add("x2ap.ies", id_ServedCellsToModify, new_create_dissector_handle(dissect_ServedCellsToModify_PDU, proto_x2ap));
5504   dissector_add("x2ap.ies", id_ServedCellsToDelete, new_create_dissector_handle(dissect_Old_ECGIs_PDU, proto_x2ap));
5505   dissector_add("x2ap.ies", id_Registration_Request, new_create_dissector_handle(dissect_Registration_Request_PDU, proto_x2ap));
5506   dissector_add("x2ap.ies", id_CellToReport, new_create_dissector_handle(dissect_CellToReport_List_PDU, proto_x2ap));
5507   dissector_add("x2ap.ies", id_ReportingPeriodicity, new_create_dissector_handle(dissect_ReportingPeriodicity_PDU, proto_x2ap));
5508   dissector_add("x2ap.ies", id_CellToReport_Item, new_create_dissector_handle(dissect_CellToReport_Item_PDU, proto_x2ap));
5509   dissector_add("x2ap.ies", id_CellMeasurementResult, new_create_dissector_handle(dissect_CellMeasurementResult_List_PDU, proto_x2ap));
5510   dissector_add("x2ap.ies", id_CellMeasurementResult_Item, new_create_dissector_handle(dissect_CellMeasurementResult_Item_PDU, proto_x2ap));
5511   dissector_add("x2ap.ies", id_GUGroupIDToAddList, new_create_dissector_handle(dissect_GUGroupIDList_PDU, proto_x2ap));
5512   dissector_add("x2ap.ies", id_GUGroupIDToDeleteList, new_create_dissector_handle(dissect_GUGroupIDList_PDU, proto_x2ap));
5513   dissector_add("x2ap.ies", id_SRVCCOperationPossible, new_create_dissector_handle(dissect_SRVCCOperationPossible_PDU, proto_x2ap));
5514   dissector_add("x2ap.ies", id_ReportCharacteristics, new_create_dissector_handle(dissect_ReportCharacteristics_PDU, proto_x2ap));
5515   dissector_add("x2ap.ies", id_ENB1_Measurement_ID, new_create_dissector_handle(dissect_Measurement_ID_PDU, proto_x2ap));
5516   dissector_add("x2ap.ies", id_ENB2_Measurement_ID, new_create_dissector_handle(dissect_Measurement_ID_PDU, proto_x2ap));
5517   dissector_add("x2ap.ies", id_ENB1_Cell_ID, new_create_dissector_handle(dissect_ECGI_PDU, proto_x2ap));
5518   dissector_add("x2ap.ies", id_ENB2_Cell_ID, new_create_dissector_handle(dissect_ECGI_PDU, proto_x2ap));
5519   dissector_add("x2ap.ies", id_ENB2_Proposed_Mobility_Parameters, new_create_dissector_handle(dissect_MobilityParametersInformation_PDU, proto_x2ap));
5520   dissector_add("x2ap.ies", id_ENB1_Mobility_Parameters, new_create_dissector_handle(dissect_MobilityParametersInformation_PDU, proto_x2ap));
5521   dissector_add("x2ap.ies", id_ENB2_Mobility_Parameters_Modification_Range, new_create_dissector_handle(dissect_MobilityParametersModificationRange_PDU, proto_x2ap));
5522   dissector_add("x2ap.ies", id_FailureCellPCI, new_create_dissector_handle(dissect_PCI_PDU, proto_x2ap));
5523   dissector_add("x2ap.ies", id_Re_establishmentCellECGI, new_create_dissector_handle(dissect_ECGI_PDU, proto_x2ap));
5524   dissector_add("x2ap.ies", id_FailureCellCRNTI, new_create_dissector_handle(dissect_CRNTI_PDU, proto_x2ap));
5525   dissector_add("x2ap.ies", id_ShortMAC_I, new_create_dissector_handle(dissect_ShortMAC_I_PDU, proto_x2ap));
5526   dissector_add("x2ap.ies", id_SourceCellECGI, new_create_dissector_handle(dissect_ECGI_PDU, proto_x2ap));
5527   dissector_add("x2ap.ies", id_FailureCellECGI, new_create_dissector_handle(dissect_ECGI_PDU, proto_x2ap));
5528   dissector_add("x2ap.ies", id_HandoverReportType, new_create_dissector_handle(dissect_HandoverReportType_PDU, proto_x2ap));
5529   dissector_add("x2ap.extension", id_Number_of_Antennaports, new_create_dissector_handle(dissect_Number_of_Antennaports_PDU, proto_x2ap));
5530   dissector_add("x2ap.extension", id_CompositeAvailableCapacityGroup, new_create_dissector_handle(dissect_CompositeAvailableCapacityGroup_PDU, proto_x2ap));
5531   dissector_add("x2ap.extension", id_PRACH_Configuration, new_create_dissector_handle(dissect_PRACH_Configuration_PDU, proto_x2ap));
5532   dissector_add("x2ap.proc.imsg", id_handoverPreparation, new_create_dissector_handle(dissect_HandoverRequest_PDU, proto_x2ap));
5533   dissector_add("x2ap.proc.sout", id_handoverPreparation, new_create_dissector_handle(dissect_HandoverRequestAcknowledge_PDU, proto_x2ap));
5534   dissector_add("x2ap.proc.uout", id_handoverPreparation, new_create_dissector_handle(dissect_HandoverPreparationFailure_PDU, proto_x2ap));
5535   dissector_add("x2ap.proc.imsg", id_snStatusTransfer, new_create_dissector_handle(dissect_SNStatusTransfer_PDU, proto_x2ap));
5536   dissector_add("x2ap.proc.imsg", id_uEContextRelease, new_create_dissector_handle(dissect_UEContextRelease_PDU, proto_x2ap));
5537   dissector_add("x2ap.proc.imsg", id_handoverCancel, new_create_dissector_handle(dissect_HandoverCancel_PDU, proto_x2ap));
5538   dissector_add("x2ap.proc.imsg", id_errorIndication, new_create_dissector_handle(dissect_ErrorIndication_PDU, proto_x2ap));
5539   dissector_add("x2ap.proc.imsg", id_reset, new_create_dissector_handle(dissect_ResetRequest_PDU, proto_x2ap));
5540   dissector_add("x2ap.proc.sout", id_reset, new_create_dissector_handle(dissect_ResetResponse_PDU, proto_x2ap));
5541   dissector_add("x2ap.proc.imsg", id_x2Setup, new_create_dissector_handle(dissect_X2SetupRequest_PDU, proto_x2ap));
5542   dissector_add("x2ap.proc.sout", id_x2Setup, new_create_dissector_handle(dissect_X2SetupResponse_PDU, proto_x2ap));
5543   dissector_add("x2ap.proc.uout", id_x2Setup, new_create_dissector_handle(dissect_X2SetupFailure_PDU, proto_x2ap));
5544   dissector_add("x2ap.proc.imsg", id_loadIndication, new_create_dissector_handle(dissect_LoadInformation_PDU, proto_x2ap));
5545   dissector_add("x2ap.proc.imsg", id_eNBConfigurationUpdate, new_create_dissector_handle(dissect_ENBConfigurationUpdate_PDU, proto_x2ap));
5546   dissector_add("x2ap.proc.sout", id_eNBConfigurationUpdate, new_create_dissector_handle(dissect_ENBConfigurationUpdateAcknowledge_PDU, proto_x2ap));
5547   dissector_add("x2ap.proc.uout", id_eNBConfigurationUpdate, new_create_dissector_handle(dissect_ENBConfigurationUpdateFailure_PDU, proto_x2ap));
5548   dissector_add("x2ap.proc.imsg", id_resourceStatusReportingInitiation, new_create_dissector_handle(dissect_ResourceStatusRequest_PDU, proto_x2ap));
5549   dissector_add("x2ap.proc.sout", id_resourceStatusReportingInitiation, new_create_dissector_handle(dissect_ResourceStatusResponse_PDU, proto_x2ap));
5550   dissector_add("x2ap.proc.uout", id_resourceStatusReportingInitiation, new_create_dissector_handle(dissect_ResourceStatusFailure_PDU, proto_x2ap));
5551   dissector_add("x2ap.proc.imsg", id_resourceStatusReporting, new_create_dissector_handle(dissect_ResourceStatusUpdate_PDU, proto_x2ap));
5552   dissector_add("x2ap.proc.imsg", id_privateMessage, new_create_dissector_handle(dissect_PrivateMessage_PDU, proto_x2ap));
5553   dissector_add("x2ap.proc.imsg", id_handoverReport, new_create_dissector_handle(dissect_HandoverReport_PDU, proto_x2ap));
5554   dissector_add("x2ap.proc.imsg", id_rLFIndication, new_create_dissector_handle(dissect_RLFIndication_PDU, proto_x2ap));
5555   dissector_add("x2ap.proc.imsg", id_mobilitySettingsChange, new_create_dissector_handle(dissect_MobilityChangeRequest_PDU, proto_x2ap));
5556   dissector_add("x2ap.proc.sout", id_mobilitySettingsChange, new_create_dissector_handle(dissect_MobilityChangeAcknowledge_PDU, proto_x2ap));
5557   dissector_add("x2ap.proc.uout", id_mobilitySettingsChange, new_create_dissector_handle(dissect_MobilityChangeFailure_PDU, proto_x2ap));
5558
5559
5560 /*--- End of included file: packet-x2ap-dis-tab.c ---*/
5561 #line 205 "packet-x2ap-template.c"
5562         } else {
5563                 if (SctpPort != 0) {
5564                         dissector_delete("sctp.port", SctpPort, x2ap_handle);
5565                 }
5566         }
5567
5568         SctpPort=gbl_x2apSctpPort;
5569         if (SctpPort != 0) {
5570                 dissector_add("sctp.port", SctpPort, x2ap_handle);
5571         }
5572
5573 }
5574
5575