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