#include <string.h> and/or #include <stdio.h> not needed.
[obnox/wireshark/wip.git] / epan / dissectors / packet-s1ap.c
1 /* Do not modify this file.                                                   */
2 /* It is created automatically by the ASN.1 to Wireshark dissector compiler   */
3 /* packet-s1ap.c                                                              */
4 /* ../../tools/asn2wrs.py -p s1ap -c ./s1ap.cnf -s ./packet-s1ap-template -D . S1AP-CommonDataTypes.asn S1AP-Constants.asn S1AP-Containers.asn S1AP-IEs.asn S1AP-PDU-Contents.asn S1AP-PDU-Descriptions.asn */
5
6 /* Input file: packet-s1ap-template.c */
7
8 #line 1 "packet-s1ap-template.c"
9 /* packet-s1ap.c
10  * Routines for E-UTRAN S1 Application Protocol (S1AP) packet dissection
11  * Copyright 2007-2009, Anders Broman <anders.broman@ericsson.com>
12  *
13  * $Id$
14  *
15  * Wireshark - Network traffic analyzer
16  * By Gerald Combs <gerald@wireshark.org>
17  * Copyright 1998 Gerald Combs
18  *
19  * This program is free software; you can redistribute it and/or
20  * modify it under the terms of the GNU General Public License
21  * as published by the Free Software Foundation; either version 2
22  * of the License, or (at your option) any later version.
23  *
24  * This program is distributed in the hope that it will be useful,
25  * but WITHOUT ANY WARRANTY; without even the implied warranty of
26  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
27  * GNU General Public License for more details.
28  *
29  * You should have received a copy of the GNU General Public License
30  * along with this program; if not, write to the Free Software
31  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
32  *
33  * Based on the RANAP dissector
34  *
35  * References: 3GPP TS 36.413 V8.5.0 (2009-03)
36  */
37
38 #ifdef HAVE_CONFIG_H
39 # include "config.h"
40 #endif
41
42 #include <glib.h>
43 #include <epan/packet.h>
44
45 #include <ctype.h>
46 #include <epan/strutil.h>
47 #include <epan/asn1.h>
48 #include <epan/prefs.h>
49 #include <epan/sctpppids.h>
50
51 #include "packet-ber.h"
52 #include "packet-per.h"
53 #include "packet-e212.h"
54 #include "packet-sccp.h"
55 #include "packet-lte-rrc.h"
56
57 #ifdef _MSC_VER
58 /* disable: "warning C4146: unary minus operator applied to unsigned type, result still unsigned" */
59 #pragma warning(disable:4146)
60 #endif
61
62 #define PNAME  "S1 Application Protocol"
63 #define PSNAME "S1AP"
64 #define PFNAME "s1ap"
65
66 /* Dissector will use SCTP PPID 18 or SCTP port. IANA assigned port = 36412 */
67 #define SCTP_PORT_S1AP  36412
68
69 static dissector_handle_t nas_eps_handle;
70
71
72 /*--- Included file: packet-s1ap-val.h ---*/
73 #line 1 "packet-s1ap-val.h"
74 #define maxPrivateIEs                  65535
75 #define maxProtocolExtensions          65535
76 #define maxProtocolIEs                 65535
77 #define maxNrOfCSGs                    256
78 #define maxNrOfE_RABs                  256
79 #define maxnoofTAIs                    256
80 #define maxnoofTACs                    256
81 #define maxNrOfErrors                  256
82 #define maxnoofBPLMNs                  6
83 #define maxnoofPLMNsPerMME             32
84 #define maxnoofEPLMNs                  15
85 #define maxnoofEPLMNsPlusOne           16
86 #define maxnoofForbLACs                4096
87 #define maxnoofForbTACs                4096
88 #define maxNrOfIndividualS1ConnectionsToReset 256
89 #define maxnoofCells                   16
90 #define maxnoofTAIforWarning           65535
91 #define maxnoofCellID                  65535
92 #define maxnoofEmergencyAreaID         65535
93 #define maxnoofCellinTAI               65535
94 #define maxnoofCellinEAI               65535
95 #define maxnoofeNBX2TLAs               2
96 #define maxnoofRATs                    8
97 #define maxnoofGroupIDs                65535
98 #define maxnoofMMECs                   256
99
100 typedef enum _ProcedureCode_enum {
101   id_HandoverPreparation =   0,
102   id_HandoverResourceAllocation =   1,
103   id_HandoverNotification =   2,
104   id_PathSwitchRequest =   3,
105   id_HandoverCancel =   4,
106   id_E_RABSetup =   5,
107   id_E_RABModify =   6,
108   id_E_RABRelease =   7,
109   id_E_RABReleaseIndication =   8,
110   id_InitialContextSetup =   9,
111   id_Paging    =  10,
112   id_downlinkNASTransport =  11,
113   id_initialUEMessage =  12,
114   id_uplinkNASTransport =  13,
115   id_Reset     =  14,
116   id_ErrorIndication =  15,
117   id_NASNonDeliveryIndication =  16,
118   id_S1Setup   =  17,
119   id_UEContextReleaseRequest =  18,
120   id_DownlinkS1cdma2000tunneling =  19,
121   id_UplinkS1cdma2000tunneling =  20,
122   id_UEContextModification =  21,
123   id_UECapabilityInfoIndication =  22,
124   id_UEContextRelease =  23,
125   id_eNBStatusTransfer =  24,
126   id_MMEStatusTransfer =  25,
127   id_DeactivateTrace =  26,
128   id_TraceStart =  27,
129   id_TraceFailureIndication =  28,
130   id_ENBConfigurationUpdate =  29,
131   id_MMEConfigurationUpdate =  30,
132   id_LocationReportingControl =  31,
133   id_LocationReportingFailureIndication =  32,
134   id_LocationReport =  33,
135   id_OverloadStart =  34,
136   id_OverloadStop =  35,
137   id_WriteReplaceWarning =  36,
138   id_eNBDirectInformationTransfer =  37,
139   id_MMEDirectInformationTransfer =  38,
140   id_PrivateMessage =  39,
141   id_eNBConfigurationTransfer =  40,
142   id_MMEConfigurationTransfer =  41,
143   id_CellTrafficTrace =  42,
144   id_Kill      =  43,
145   id_downlinkUEAssociatedLPPaTransport =  44,
146   id_uplinkUEAssociatedLPPaTransport =  45,
147   id_downlinkNonUEAssociatedLPPaTransport =  46,
148   id_uplinkNonUEAssociatedLPPaTransport =  47
149 } ProcedureCode_enum;
150
151 typedef enum _ProtocolIE_ID_enum {
152   id_MME_UE_S1AP_ID =   0,
153   id_HandoverType =   1,
154   id_Cause     =   2,
155   id_SourceID  =   3,
156   id_TargetID  =   4,
157   id_eNB_UE_S1AP_ID =   8,
158   id_E_RABSubjecttoDataForwardingList =  12,
159   id_E_RABtoReleaseListHOCmd =  13,
160   id_E_RABDataForwardingItem =  14,
161   id_E_RABReleaseItemBearerRelComp =  15,
162   id_E_RABToBeSetupListBearerSUReq =  16,
163   id_E_RABToBeSetupItemBearerSUReq =  17,
164   id_E_RABAdmittedList =  18,
165   id_E_RABFailedToSetupListHOReqAck =  19,
166   id_E_RABAdmittedItem =  20,
167   id_E_RABFailedtoSetupItemHOReqAck =  21,
168   id_E_RABToBeSwitchedDLList =  22,
169   id_E_RABToBeSwitchedDLItem =  23,
170   id_E_RABToBeSetupListCtxtSUReq =  24,
171   id_TraceActivation =  25,
172   id_NAS_PDU   =  26,
173   id_E_RABToBeSetupItemHOReq =  27,
174   id_E_RABSetupListBearerSURes =  28,
175   id_E_RABFailedToSetupListBearerSURes =  29,
176   id_E_RABToBeModifiedListBearerModReq =  30,
177   id_E_RABModifyListBearerModRes =  31,
178   id_E_RABFailedToModifyList =  32,
179   id_E_RABToBeReleasedList =  33,
180   id_E_RABFailedToReleaseList =  34,
181   id_E_RABItem =  35,
182   id_E_RABToBeModifiedItemBearerModReq =  36,
183   id_E_RABModifyItemBearerModRes =  37,
184   id_E_RABReleaseItem =  38,
185   id_E_RABSetupItemBearerSURes =  39,
186   id_SecurityContext =  40,
187   id_HandoverRestrictionList =  41,
188   id_UEPagingID =  43,
189   id_pagingDRX =  44,
190   id_TAIList   =  46,
191   id_TAIItem   =  47,
192   id_E_RABFailedToSetupListCtxtSURes =  48,
193   id_E_RABReleaseItemHOCmd =  49,
194   id_E_RABSetupItemCtxtSURes =  50,
195   id_E_RABSetupListCtxtSURes =  51,
196   id_E_RABToBeSetupItemCtxtSUReq =  52,
197   id_E_RABToBeSetupListHOReq =  53,
198   id_GERANtoLTEHOInformationRes =  55,
199   id_UTRANtoLTEHOInformationRes =  57,
200   id_CriticalityDiagnostics =  58,
201   id_Global_ENB_ID =  59,
202   id_eNBname   =  60,
203   id_MMEname   =  61,
204   id_ServedPLMNs =  63,
205   id_SupportedTAs =  64,
206   id_TimeToWait =  65,
207   id_uEaggregateMaximumBitrate =  66,
208   id_TAI       =  67,
209   id_E_RABReleaseListBearerRelComp =  69,
210   id_cdma2000PDU =  70,
211   id_cdma2000RATType =  71,
212   id_cdma2000SectorID =  72,
213   id_SecurityKey =  73,
214   id_UERadioCapability =  74,
215   id_GUMMEI_ID =  75,
216   id_E_RABInformationListItem =  78,
217   id_Direct_Forwarding_Path_Availability =  79,
218   id_UEIdentityIndexValue =  80,
219   id_cdma2000HOStatus =  83,
220   id_cdma2000HORequiredIndication =  84,
221   id_E_UTRAN_Trace_ID =  86,
222   id_RelativeMMECapacity =  87,
223   id_SourceMME_UE_S1AP_ID =  88,
224   id_Bearers_SubjectToStatusTransfer_Item =  89,
225   id_eNB_StatusTransfer_TransparentContainer =  90,
226   id_UE_associatedLogicalS1_ConnectionItem =  91,
227   id_ResetType =  92,
228   id_UE_associatedLogicalS1_ConnectionListResAck =  93,
229   id_E_RABToBeSwitchedULItem =  94,
230   id_E_RABToBeSwitchedULList =  95,
231   id_S_TMSI    =  96,
232   id_cdma2000OneXRAND =  97,
233   id_RequestType =  98,
234   id_UE_S1AP_IDs =  99,
235   id_EUTRAN_CGI = 100,
236   id_OverloadResponse = 101,
237   id_cdma2000OneXSRVCCInfo = 102,
238   id_E_RABFailedToBeReleasedList = 103,
239   id_Source_ToTarget_TransparentContainer = 104,
240   id_ServedGUMMEIs = 105,
241   id_SubscriberProfileIDforRFP = 106,
242   id_UESecurityCapabilities = 107,
243   id_CSFallbackIndicator = 108,
244   id_CNDomain  = 109,
245   id_E_RABReleasedList = 110,
246   id_MessageIdentifier = 111,
247   id_SerialNumber = 112,
248   id_WarningAreaList = 113,
249   id_RepetitionPeriod = 114,
250   id_NumberofBroadcastRequest = 115,
251   id_WarningType = 116,
252   id_WarningSecurityInfo = 117,
253   id_DataCodingScheme = 118,
254   id_WarningMessageContents = 119,
255   id_BroadcastCompletedAreaList = 120,
256   id_Inter_SystemInformationTransferTypeEDT = 121,
257   id_Inter_SystemInformationTransferTypeMDT = 122,
258   id_Target_ToSource_TransparentContainer = 123,
259   id_SRVCCOperationPossible = 124,
260   id_SRVCCHOIndication = 125,
261   id_NAS_DownlinkCount = 126,
262   id_CSG_Id    = 127,
263   id_CSG_IdList = 128,
264   id_SONConfigurationTransferECT = 129,
265   id_SONConfigurationTransferMCT = 130,
266   id_TraceCollectionEntityIPAddress = 131,
267   id_MSClassmark2 = 132,
268   id_MSClassmark3 = 133,
269   id_RRC_Establishment_Cause = 134,
270   id_NASSecurityParametersfromE_UTRAN = 135,
271   id_NASSecurityParameterstoE_UTRAN = 136,
272   id_DefaultPagingDRX = 137,
273   id_Source_ToTarget_TransparentContainer_Secondary = 138,
274   id_Target_ToSource_TransparentContainer_Secondary = 139,
275   id_EUTRANRoundTripDelayEstimationInfo = 140,
276   id_BroadcastCancelledAreaList = 141,
277   id_ConcurrentWarningMessageIndicator = 142,
278   id_Data_Forwarding_Not_Possible = 143,
279   id_ExtendedRepetitionPeriod = 144,
280   id_CellAccessMode = 145,
281   id_CSGMembershipStatus = 146,
282   id_LPPa_PDU  = 147,
283   id_Routing_ID = 148
284 } ProtocolIE_ID_enum;
285
286 /*--- End of included file: packet-s1ap-val.h ---*/
287 #line 64 "packet-s1ap-template.c"
288
289 /* Initialize the protocol and registered fields */
290 static int proto_s1ap = -1;
291
292 static int hf_s1ap_transportLayerAddressIPv4 = -1;
293 static int hf_s1ap_transportLayerAddressIPv6 = -1;
294
295 /*--- Included file: packet-s1ap-hf.c ---*/
296 #line 1 "packet-s1ap-hf.c"
297 static int hf_s1ap_Bearers_SubjectToStatusTransfer_Item_PDU = -1;  /* Bearers_SubjectToStatusTransfer_Item */
298 static int hf_s1ap_BroadcastCancelledAreaList_PDU = -1;  /* BroadcastCancelledAreaList */
299 static int hf_s1ap_BroadcastCompletedAreaList_PDU = -1;  /* BroadcastCompletedAreaList */
300 static int hf_s1ap_Cause_PDU = -1;                /* Cause */
301 static int hf_s1ap_CellAccessMode_PDU = -1;       /* CellAccessMode */
302 static int hf_s1ap_Cdma2000PDU_PDU = -1;          /* Cdma2000PDU */
303 static int hf_s1ap_Cdma2000RATType_PDU = -1;      /* Cdma2000RATType */
304 static int hf_s1ap_Cdma2000SectorID_PDU = -1;     /* Cdma2000SectorID */
305 static int hf_s1ap_Cdma2000HOStatus_PDU = -1;     /* Cdma2000HOStatus */
306 static int hf_s1ap_Cdma2000HORequiredIndication_PDU = -1;  /* Cdma2000HORequiredIndication */
307 static int hf_s1ap_Cdma2000OneXSRVCCInfo_PDU = -1;  /* Cdma2000OneXSRVCCInfo */
308 static int hf_s1ap_Cdma2000OneXRAND_PDU = -1;     /* Cdma2000OneXRAND */
309 static int hf_s1ap_CNDomain_PDU = -1;             /* CNDomain */
310 static int hf_s1ap_ConcurrentWarningMessageIndicator_PDU = -1;  /* ConcurrentWarningMessageIndicator */
311 static int hf_s1ap_CSFallbackIndicator_PDU = -1;  /* CSFallbackIndicator */
312 static int hf_s1ap_CSG_Id_PDU = -1;               /* CSG_Id */
313 static int hf_s1ap_CSG_IdList_PDU = -1;           /* CSG_IdList */
314 static int hf_s1ap_CSGMembershipStatus_PDU = -1;  /* CSGMembershipStatus */
315 static int hf_s1ap_CriticalityDiagnostics_PDU = -1;  /* CriticalityDiagnostics */
316 static int hf_s1ap_DataCodingScheme_PDU = -1;     /* DataCodingScheme */
317 static int hf_s1ap_Direct_Forwarding_Path_Availability_PDU = -1;  /* Direct_Forwarding_Path_Availability */
318 static int hf_s1ap_Data_Forwarding_Not_Possible_PDU = -1;  /* Data_Forwarding_Not_Possible */
319 static int hf_s1ap_Global_ENB_ID_PDU = -1;        /* Global_ENB_ID */
320 static int hf_s1ap_ENB_StatusTransfer_TransparentContainer_PDU = -1;  /* ENB_StatusTransfer_TransparentContainer */
321 static int hf_s1ap_ENB_UE_S1AP_ID_PDU = -1;       /* ENB_UE_S1AP_ID */
322 static int hf_s1ap_ENBname_PDU = -1;              /* ENBname */
323 static int hf_s1ap_E_RABInformationListItem_PDU = -1;  /* E_RABInformationListItem */
324 static int hf_s1ap_E_RABList_PDU = -1;            /* E_RABList */
325 static int hf_s1ap_E_RABItem_PDU = -1;            /* E_RABItem */
326 static int hf_s1ap_EUTRAN_CGI_PDU = -1;           /* EUTRAN_CGI */
327 static int hf_s1ap_EUTRANRoundTripDelayEstimationInfo_PDU = -1;  /* EUTRANRoundTripDelayEstimationInfo */
328 static int hf_s1ap_ExtendedRepetitionPeriod_PDU = -1;  /* ExtendedRepetitionPeriod */
329 static int hf_s1ap_GUMMEI_PDU = -1;               /* GUMMEI */
330 static int hf_s1ap_HandoverRestrictionList_PDU = -1;  /* HandoverRestrictionList */
331 static int hf_s1ap_HandoverType_PDU = -1;         /* HandoverType */
332 static int hf_s1ap_LPPa_PDU_PDU = -1;             /* LPPa_PDU */
333 static int hf_s1ap_MessageIdentifier_PDU = -1;    /* MessageIdentifier */
334 static int hf_s1ap_MMEname_PDU = -1;              /* MMEname */
335 static int hf_s1ap_MME_UE_S1AP_ID_PDU = -1;       /* MME_UE_S1AP_ID */
336 static int hf_s1ap_MSClassmark2_PDU = -1;         /* MSClassmark2 */
337 static int hf_s1ap_MSClassmark3_PDU = -1;         /* MSClassmark3 */
338 static int hf_s1ap_NAS_PDU_PDU = -1;              /* NAS_PDU */
339 static int hf_s1ap_NASSecurityParametersfromE_UTRAN_PDU = -1;  /* NASSecurityParametersfromE_UTRAN */
340 static int hf_s1ap_NASSecurityParameterstoE_UTRAN_PDU = -1;  /* NASSecurityParameterstoE_UTRAN */
341 static int hf_s1ap_NumberofBroadcastRequest_PDU = -1;  /* NumberofBroadcastRequest */
342 static int hf_s1ap_OverloadResponse_PDU = -1;     /* OverloadResponse */
343 static int hf_s1ap_PagingDRX_PDU = -1;            /* PagingDRX */
344 static int hf_s1ap_RelativeMMECapacity_PDU = -1;  /* RelativeMMECapacity */
345 static int hf_s1ap_RequestType_PDU = -1;          /* RequestType */
346 static int hf_s1ap_RepetitionPeriod_PDU = -1;     /* RepetitionPeriod */
347 static int hf_s1ap_RRC_Establishment_Cause_PDU = -1;  /* RRC_Establishment_Cause */
348 static int hf_s1ap_Routing_ID_PDU = -1;           /* Routing_ID */
349 static int hf_s1ap_SecurityKey_PDU = -1;          /* SecurityKey */
350 static int hf_s1ap_SecurityContext_PDU = -1;      /* SecurityContext */
351 static int hf_s1ap_SerialNumber_PDU = -1;         /* SerialNumber */
352 static int hf_s1ap_SONConfigurationTransfer_PDU = -1;  /* SONConfigurationTransfer */
353 static int hf_s1ap_Source_ToTarget_TransparentContainer_PDU = -1;  /* Source_ToTarget_TransparentContainer */
354 static int hf_s1ap_SourceBSS_ToTargetBSS_TransparentContainer_PDU = -1;  /* SourceBSS_ToTargetBSS_TransparentContainer */
355 static int hf_s1ap_SRVCCOperationPossible_PDU = -1;  /* SRVCCOperationPossible */
356 static int hf_s1ap_SRVCCHOIndication_PDU = -1;    /* SRVCCHOIndication */
357 static int hf_s1ap_SourceeNB_ToTargeteNB_TransparentContainer_PDU = -1;  /* SourceeNB_ToTargeteNB_TransparentContainer */
358 static int hf_s1ap_SourceRNC_ToTargetRNC_TransparentContainer_PDU = -1;  /* SourceRNC_ToTargetRNC_TransparentContainer */
359 static int hf_s1ap_ServedGUMMEIs_PDU = -1;        /* ServedGUMMEIs */
360 static int hf_s1ap_ServedPLMNs_PDU = -1;          /* ServedPLMNs */
361 static int hf_s1ap_SubscriberProfileIDforRFP_PDU = -1;  /* SubscriberProfileIDforRFP */
362 static int hf_s1ap_SupportedTAs_PDU = -1;         /* SupportedTAs */
363 static int hf_s1ap_S_TMSI_PDU = -1;               /* S_TMSI */
364 static int hf_s1ap_TAI_PDU = -1;                  /* TAI */
365 static int hf_s1ap_TargetID_PDU = -1;             /* TargetID */
366 static int hf_s1ap_TargeteNB_ToSourceeNB_TransparentContainer_PDU = -1;  /* TargeteNB_ToSourceeNB_TransparentContainer */
367 static int hf_s1ap_Target_ToSource_TransparentContainer_PDU = -1;  /* Target_ToSource_TransparentContainer */
368 static int hf_s1ap_TargetRNC_ToSourceRNC_TransparentContainer_PDU = -1;  /* TargetRNC_ToSourceRNC_TransparentContainer */
369 static int hf_s1ap_TargetBSS_ToSourceBSS_TransparentContainer_PDU = -1;  /* TargetBSS_ToSourceBSS_TransparentContainer */
370 static int hf_s1ap_TimeToWait_PDU = -1;           /* TimeToWait */
371 static int hf_s1ap_TransportLayerAddress_PDU = -1;  /* TransportLayerAddress */
372 static int hf_s1ap_TraceActivation_PDU = -1;      /* TraceActivation */
373 static int hf_s1ap_UEAggregateMaximumBitrate_PDU = -1;  /* UEAggregateMaximumBitrate */
374 static int hf_s1ap_UE_S1AP_IDs_PDU = -1;          /* UE_S1AP_IDs */
375 static int hf_s1ap_UE_associatedLogicalS1_ConnectionItem_PDU = -1;  /* UE_associatedLogicalS1_ConnectionItem */
376 static int hf_s1ap_UEIdentityIndexValue_PDU = -1;  /* UEIdentityIndexValue */
377 static int hf_s1ap_UEPagingID_PDU = -1;           /* UEPagingID */
378 static int hf_s1ap_UERadioCapability_PDU = -1;    /* UERadioCapability */
379 static int hf_s1ap_UESecurityCapabilities_PDU = -1;  /* UESecurityCapabilities */
380 static int hf_s1ap_WarningAreaList_PDU = -1;      /* WarningAreaList */
381 static int hf_s1ap_WarningType_PDU = -1;          /* WarningType */
382 static int hf_s1ap_WarningSecurityInfo_PDU = -1;  /* WarningSecurityInfo */
383 static int hf_s1ap_WarningMessageContents_PDU = -1;  /* WarningMessageContents */
384 static int hf_s1ap_HandoverRequired_PDU = -1;     /* HandoverRequired */
385 static int hf_s1ap_HandoverCommand_PDU = -1;      /* HandoverCommand */
386 static int hf_s1ap_E_RABSubjecttoDataForwardingList_PDU = -1;  /* E_RABSubjecttoDataForwardingList */
387 static int hf_s1ap_E_RABDataForwardingItem_PDU = -1;  /* E_RABDataForwardingItem */
388 static int hf_s1ap_HandoverPreparationFailure_PDU = -1;  /* HandoverPreparationFailure */
389 static int hf_s1ap_HandoverRequest_PDU = -1;      /* HandoverRequest */
390 static int hf_s1ap_E_RABToBeSetupListHOReq_PDU = -1;  /* E_RABToBeSetupListHOReq */
391 static int hf_s1ap_E_RABToBeSetupItemHOReq_PDU = -1;  /* E_RABToBeSetupItemHOReq */
392 static int hf_s1ap_HandoverRequestAcknowledge_PDU = -1;  /* HandoverRequestAcknowledge */
393 static int hf_s1ap_E_RABAdmittedList_PDU = -1;    /* E_RABAdmittedList */
394 static int hf_s1ap_E_RABAdmittedItem_PDU = -1;    /* E_RABAdmittedItem */
395 static int hf_s1ap_E_RABFailedtoSetupListHOReqAck_PDU = -1;  /* E_RABFailedtoSetupListHOReqAck */
396 static int hf_s1ap_E_RABFailedToSetupItemHOReqAck_PDU = -1;  /* E_RABFailedToSetupItemHOReqAck */
397 static int hf_s1ap_HandoverFailure_PDU = -1;      /* HandoverFailure */
398 static int hf_s1ap_HandoverNotify_PDU = -1;       /* HandoverNotify */
399 static int hf_s1ap_PathSwitchRequest_PDU = -1;    /* PathSwitchRequest */
400 static int hf_s1ap_E_RABToBeSwitchedDLList_PDU = -1;  /* E_RABToBeSwitchedDLList */
401 static int hf_s1ap_E_RABToBeSwitchedDLItem_PDU = -1;  /* E_RABToBeSwitchedDLItem */
402 static int hf_s1ap_PathSwitchRequestAcknowledge_PDU = -1;  /* PathSwitchRequestAcknowledge */
403 static int hf_s1ap_E_RABToBeSwitchedULList_PDU = -1;  /* E_RABToBeSwitchedULList */
404 static int hf_s1ap_E_RABToBeSwitchedULItem_PDU = -1;  /* E_RABToBeSwitchedULItem */
405 static int hf_s1ap_PathSwitchRequestFailure_PDU = -1;  /* PathSwitchRequestFailure */
406 static int hf_s1ap_HandoverCancel_PDU = -1;       /* HandoverCancel */
407 static int hf_s1ap_HandoverCancelAcknowledge_PDU = -1;  /* HandoverCancelAcknowledge */
408 static int hf_s1ap_E_RABSetupRequest_PDU = -1;    /* E_RABSetupRequest */
409 static int hf_s1ap_E_RABToBeSetupListBearerSUReq_PDU = -1;  /* E_RABToBeSetupListBearerSUReq */
410 static int hf_s1ap_E_RABToBeSetupItemBearerSUReq_PDU = -1;  /* E_RABToBeSetupItemBearerSUReq */
411 static int hf_s1ap_E_RABSetupResponse_PDU = -1;   /* E_RABSetupResponse */
412 static int hf_s1ap_E_RABSetupListBearerSURes_PDU = -1;  /* E_RABSetupListBearerSURes */
413 static int hf_s1ap_E_RABSetupItemBearerSURes_PDU = -1;  /* E_RABSetupItemBearerSURes */
414 static int hf_s1ap_E_RABModifyRequest_PDU = -1;   /* E_RABModifyRequest */
415 static int hf_s1ap_E_RABToBeModifiedListBearerModReq_PDU = -1;  /* E_RABToBeModifiedListBearerModReq */
416 static int hf_s1ap_E_RABToBeModifiedItemBearerModReq_PDU = -1;  /* E_RABToBeModifiedItemBearerModReq */
417 static int hf_s1ap_E_RABModifyResponse_PDU = -1;  /* E_RABModifyResponse */
418 static int hf_s1ap_E_RABModifyListBearerModRes_PDU = -1;  /* E_RABModifyListBearerModRes */
419 static int hf_s1ap_E_RABModifyItemBearerModRes_PDU = -1;  /* E_RABModifyItemBearerModRes */
420 static int hf_s1ap_E_RABReleaseCommand_PDU = -1;  /* E_RABReleaseCommand */
421 static int hf_s1ap_E_RABReleaseResponse_PDU = -1;  /* E_RABReleaseResponse */
422 static int hf_s1ap_E_RABReleaseListBearerRelComp_PDU = -1;  /* E_RABReleaseListBearerRelComp */
423 static int hf_s1ap_E_RABReleaseItemBearerRelComp_PDU = -1;  /* E_RABReleaseItemBearerRelComp */
424 static int hf_s1ap_E_RABReleaseIndication_PDU = -1;  /* E_RABReleaseIndication */
425 static int hf_s1ap_InitialContextSetupRequest_PDU = -1;  /* InitialContextSetupRequest */
426 static int hf_s1ap_E_RABToBeSetupListCtxtSUReq_PDU = -1;  /* E_RABToBeSetupListCtxtSUReq */
427 static int hf_s1ap_E_RABToBeSetupItemCtxtSUReq_PDU = -1;  /* E_RABToBeSetupItemCtxtSUReq */
428 static int hf_s1ap_InitialContextSetupResponse_PDU = -1;  /* InitialContextSetupResponse */
429 static int hf_s1ap_E_RABSetupListCtxtSURes_PDU = -1;  /* E_RABSetupListCtxtSURes */
430 static int hf_s1ap_E_RABSetupItemCtxtSURes_PDU = -1;  /* E_RABSetupItemCtxtSURes */
431 static int hf_s1ap_InitialContextSetupFailure_PDU = -1;  /* InitialContextSetupFailure */
432 static int hf_s1ap_Paging_PDU = -1;               /* Paging */
433 static int hf_s1ap_TAIList_PDU = -1;              /* TAIList */
434 static int hf_s1ap_TAIItem_PDU = -1;              /* TAIItem */
435 static int hf_s1ap_UEContextReleaseRequest_PDU = -1;  /* UEContextReleaseRequest */
436 static int hf_s1ap_UEContextReleaseCommand_PDU = -1;  /* UEContextReleaseCommand */
437 static int hf_s1ap_UEContextReleaseComplete_PDU = -1;  /* UEContextReleaseComplete */
438 static int hf_s1ap_UEContextModificationRequest_PDU = -1;  /* UEContextModificationRequest */
439 static int hf_s1ap_UEContextModificationResponse_PDU = -1;  /* UEContextModificationResponse */
440 static int hf_s1ap_UEContextModificationFailure_PDU = -1;  /* UEContextModificationFailure */
441 static int hf_s1ap_DownlinkNASTransport_PDU = -1;  /* DownlinkNASTransport */
442 static int hf_s1ap_InitialUEMessage_PDU = -1;     /* InitialUEMessage */
443 static int hf_s1ap_UplinkNASTransport_PDU = -1;   /* UplinkNASTransport */
444 static int hf_s1ap_NASNonDeliveryIndication_PDU = -1;  /* NASNonDeliveryIndication */
445 static int hf_s1ap_Reset_PDU = -1;                /* Reset */
446 static int hf_s1ap_ResetType_PDU = -1;            /* ResetType */
447 static int hf_s1ap_ResetAcknowledge_PDU = -1;     /* ResetAcknowledge */
448 static int hf_s1ap_UE_associatedLogicalS1_ConnectionListResAck_PDU = -1;  /* UE_associatedLogicalS1_ConnectionListResAck */
449 static int hf_s1ap_ErrorIndication_PDU = -1;      /* ErrorIndication */
450 static int hf_s1ap_S1SetupRequest_PDU = -1;       /* S1SetupRequest */
451 static int hf_s1ap_S1SetupResponse_PDU = -1;      /* S1SetupResponse */
452 static int hf_s1ap_S1SetupFailure_PDU = -1;       /* S1SetupFailure */
453 static int hf_s1ap_ENBConfigurationUpdate_PDU = -1;  /* ENBConfigurationUpdate */
454 static int hf_s1ap_ENBConfigurationUpdateAcknowledge_PDU = -1;  /* ENBConfigurationUpdateAcknowledge */
455 static int hf_s1ap_ENBConfigurationUpdateFailure_PDU = -1;  /* ENBConfigurationUpdateFailure */
456 static int hf_s1ap_MMEConfigurationUpdate_PDU = -1;  /* MMEConfigurationUpdate */
457 static int hf_s1ap_MMEConfigurationUpdateAcknowledge_PDU = -1;  /* MMEConfigurationUpdateAcknowledge */
458 static int hf_s1ap_MMEConfigurationUpdateFailure_PDU = -1;  /* MMEConfigurationUpdateFailure */
459 static int hf_s1ap_DownlinkS1cdma2000tunneling_PDU = -1;  /* DownlinkS1cdma2000tunneling */
460 static int hf_s1ap_UplinkS1cdma2000tunneling_PDU = -1;  /* UplinkS1cdma2000tunneling */
461 static int hf_s1ap_UECapabilityInfoIndication_PDU = -1;  /* UECapabilityInfoIndication */
462 static int hf_s1ap_ENBStatusTransfer_PDU = -1;    /* ENBStatusTransfer */
463 static int hf_s1ap_MMEStatusTransfer_PDU = -1;    /* MMEStatusTransfer */
464 static int hf_s1ap_TraceStart_PDU = -1;           /* TraceStart */
465 static int hf_s1ap_TraceFailureIndication_PDU = -1;  /* TraceFailureIndication */
466 static int hf_s1ap_DeactivateTrace_PDU = -1;      /* DeactivateTrace */
467 static int hf_s1ap_CellTrafficTrace_PDU = -1;     /* CellTrafficTrace */
468 static int hf_s1ap_LocationReportingControl_PDU = -1;  /* LocationReportingControl */
469 static int hf_s1ap_LocationReportingFailureIndication_PDU = -1;  /* LocationReportingFailureIndication */
470 static int hf_s1ap_LocationReport_PDU = -1;       /* LocationReport */
471 static int hf_s1ap_OverloadStart_PDU = -1;        /* OverloadStart */
472 static int hf_s1ap_OverloadStop_PDU = -1;         /* OverloadStop */
473 static int hf_s1ap_WriteReplaceWarningRequest_PDU = -1;  /* WriteReplaceWarningRequest */
474 static int hf_s1ap_WriteReplaceWarningResponse_PDU = -1;  /* WriteReplaceWarningResponse */
475 static int hf_s1ap_ENBDirectInformationTransfer_PDU = -1;  /* ENBDirectInformationTransfer */
476 static int hf_s1ap_Inter_SystemInformationTransferType_PDU = -1;  /* Inter_SystemInformationTransferType */
477 static int hf_s1ap_MMEDirectInformationTransfer_PDU = -1;  /* MMEDirectInformationTransfer */
478 static int hf_s1ap_ENBConfigurationTransfer_PDU = -1;  /* ENBConfigurationTransfer */
479 static int hf_s1ap_MMEConfigurationTransfer_PDU = -1;  /* MMEConfigurationTransfer */
480 static int hf_s1ap_PrivateMessage_PDU = -1;       /* PrivateMessage */
481 static int hf_s1ap_KillRequest_PDU = -1;          /* KillRequest */
482 static int hf_s1ap_KillResponse_PDU = -1;         /* KillResponse */
483 static int hf_s1ap_DownlinkUEAssociatedLPPaTransport_PDU = -1;  /* DownlinkUEAssociatedLPPaTransport */
484 static int hf_s1ap_UplinkUEAssociatedLPPaTransport_PDU = -1;  /* UplinkUEAssociatedLPPaTransport */
485 static int hf_s1ap_DownlinkNonUEAssociatedLPPaTransport_PDU = -1;  /* DownlinkNonUEAssociatedLPPaTransport */
486 static int hf_s1ap_UplinkNonUEAssociatedLPPaTransport_PDU = -1;  /* UplinkNonUEAssociatedLPPaTransport */
487 static int hf_s1ap_S1AP_PDU_PDU = -1;             /* S1AP_PDU */
488 static int hf_s1ap_local = -1;                    /* INTEGER_0_65535 */
489 static int hf_s1ap_global = -1;                   /* OBJECT_IDENTIFIER */
490 static int hf_s1ap_ProtocolIE_Container_item = -1;  /* ProtocolIE_Field */
491 static int hf_s1ap_id = -1;                       /* ProtocolIE_ID */
492 static int hf_s1ap_criticality = -1;              /* Criticality */
493 static int hf_s1ap_ie_field_value = -1;           /* T_ie_field_value */
494 static int hf_s1ap_ProtocolIE_ContainerList_item = -1;  /* ProtocolIE_SingleContainer */
495 static int hf_s1ap_ProtocolExtensionContainer_item = -1;  /* ProtocolExtensionField */
496 static int hf_s1ap_ext_id = -1;                   /* ProtocolExtensionID */
497 static int hf_s1ap_extensionValue = -1;           /* T_extensionValue */
498 static int hf_s1ap_PrivateIE_Container_item = -1;  /* PrivateIE_Field */
499 static int hf_s1ap_private_id = -1;               /* PrivateIE_ID */
500 static int hf_s1ap_value = -1;                    /* T_value */
501 static int hf_s1ap_priorityLevel = -1;            /* PriorityLevel */
502 static int hf_s1ap_pre_emptionCapability = -1;    /* Pre_emptionCapability */
503 static int hf_s1ap_pre_emptionVulnerability = -1;  /* Pre_emptionVulnerability */
504 static int hf_s1ap_iE_Extensions = -1;            /* ProtocolExtensionContainer */
505 static int hf_s1ap_Bearers_SubjectToStatusTransferList_item = -1;  /* ProtocolIE_SingleContainer */
506 static int hf_s1ap_e_RAB_ID = -1;                 /* E_RAB_ID */
507 static int hf_s1ap_uL_COUNTvalue = -1;            /* COUNTvalue */
508 static int hf_s1ap_dL_COUNTvalue = -1;            /* COUNTvalue */
509 static int hf_s1ap_receiveStatusofULPDCPSDUs = -1;  /* ReceiveStatusofULPDCPSDUs */
510 static int hf_s1ap_BPLMNs_item = -1;              /* PLMNidentity */
511 static int hf_s1ap_cellID_Cancelled = -1;         /* CellID_Cancelled */
512 static int hf_s1ap_tAI_Cancelled = -1;            /* TAI_Cancelled */
513 static int hf_s1ap_emergencyAreaID_Cancelled = -1;  /* EmergencyAreaID_Cancelled */
514 static int hf_s1ap_cellID_Broadcast = -1;         /* CellID_Broadcast */
515 static int hf_s1ap_tAI_Broadcast = -1;            /* TAI_Broadcast */
516 static int hf_s1ap_emergencyAreaID_Broadcast = -1;  /* EmergencyAreaID_Broadcast */
517 static int hf_s1ap_CancelledCellinEAI_item = -1;  /* CancelledCellinEAI_Item */
518 static int hf_s1ap_eCGI = -1;                     /* EUTRAN_CGI */
519 static int hf_s1ap_numberOfBroadcasts = -1;       /* NumberOfBroadcasts */
520 static int hf_s1ap_CancelledCellinTAI_item = -1;  /* CancelledCellinTAI_Item */
521 static int hf_s1ap_radioNetwork = -1;             /* CauseRadioNetwork */
522 static int hf_s1ap_transport = -1;                /* CauseTransport */
523 static int hf_s1ap_nas = -1;                      /* CauseNas */
524 static int hf_s1ap_protocol = -1;                 /* CauseProtocol */
525 static int hf_s1ap_misc = -1;                     /* CauseMisc */
526 static int hf_s1ap_CellID_Broadcast_item = -1;    /* CellID_Broadcast_Item */
527 static int hf_s1ap_CellID_Cancelled_item = -1;    /* CellID_Cancelled_Item */
528 static int hf_s1ap_cdma2000OneXMEID = -1;         /* Cdma2000OneXMEID */
529 static int hf_s1ap_cdma2000OneXMSI = -1;          /* Cdma2000OneXMSI */
530 static int hf_s1ap_cdma2000OneXPilot = -1;        /* Cdma2000OneXPilot */
531 static int hf_s1ap_cell_Size = -1;                /* Cell_Size */
532 static int hf_s1ap_pLMNidentity = -1;             /* PLMNidentity */
533 static int hf_s1ap_lAC = -1;                      /* LAC */
534 static int hf_s1ap_cI = -1;                       /* CI */
535 static int hf_s1ap_rAC = -1;                      /* RAC */
536 static int hf_s1ap_CSG_IdList_item = -1;          /* CSG_IdList_Item */
537 static int hf_s1ap_cSG_Id = -1;                   /* CSG_Id */
538 static int hf_s1ap_pDCP_SN = -1;                  /* PDCP_SN */
539 static int hf_s1ap_hFN = -1;                      /* HFN */
540 static int hf_s1ap_procedureCode = -1;            /* ProcedureCode */
541 static int hf_s1ap_triggeringMessage = -1;        /* TriggeringMessage */
542 static int hf_s1ap_procedureCriticality = -1;     /* Criticality */
543 static int hf_s1ap_iEsCriticalityDiagnostics = -1;  /* CriticalityDiagnostics_IE_List */
544 static int hf_s1ap_CriticalityDiagnostics_IE_List_item = -1;  /* CriticalityDiagnostics_IE_Item */
545 static int hf_s1ap_iECriticality = -1;            /* Criticality */
546 static int hf_s1ap_iE_ID = -1;                    /* ProtocolIE_ID */
547 static int hf_s1ap_typeOfError = -1;              /* TypeOfError */
548 static int hf_s1ap_ECGIList_item = -1;            /* EUTRAN_CGI */
549 static int hf_s1ap_EmergencyAreaIDList_item = -1;  /* EmergencyAreaID */
550 static int hf_s1ap_EmergencyAreaID_Broadcast_item = -1;  /* EmergencyAreaID_Broadcast_Item */
551 static int hf_s1ap_emergencyAreaID = -1;          /* EmergencyAreaID */
552 static int hf_s1ap_completedCellinEAI = -1;       /* CompletedCellinEAI */
553 static int hf_s1ap_EmergencyAreaID_Cancelled_item = -1;  /* EmergencyAreaID_Cancelled_Item */
554 static int hf_s1ap_cancelledCellinEAI = -1;       /* CancelledCellinEAI */
555 static int hf_s1ap_CompletedCellinEAI_item = -1;  /* CompletedCellinEAI_Item */
556 static int hf_s1ap_macroENB_ID = -1;              /* BIT_STRING_SIZE_20 */
557 static int hf_s1ap_homeENB_ID = -1;               /* BIT_STRING_SIZE_28 */
558 static int hf_s1ap_lAI = -1;                      /* LAI */
559 static int hf_s1ap_eNB_ID = -1;                   /* ENB_ID */
560 static int hf_s1ap_bearers_SubjectToStatusTransferList = -1;  /* Bearers_SubjectToStatusTransferList */
561 static int hf_s1ap_ENBX2TLAs_item = -1;           /* TransportLayerAddress */
562 static int hf_s1ap_EPLMNs_item = -1;              /* PLMNidentity */
563 static int hf_s1ap_E_RABInformationList_item = -1;  /* ProtocolIE_SingleContainer */
564 static int hf_s1ap_dL_Forwarding = -1;            /* DL_Forwarding */
565 static int hf_s1ap_E_RABList_item = -1;           /* ProtocolIE_SingleContainer */
566 static int hf_s1ap_cause = -1;                    /* Cause */
567 static int hf_s1ap_qCI = -1;                      /* QCI */
568 static int hf_s1ap_allocationRetentionPriority = -1;  /* AllocationAndRetentionPriority */
569 static int hf_s1ap_gbrQosInformation = -1;        /* GBR_QosInformation */
570 static int hf_s1ap_cell_ID = -1;                  /* CellIdentity */
571 static int hf_s1ap_ForbiddenTAs_item = -1;        /* ForbiddenTAs_Item */
572 static int hf_s1ap_pLMN_Identity = -1;            /* PLMNidentity */
573 static int hf_s1ap_forbiddenTACs = -1;            /* ForbiddenTACs */
574 static int hf_s1ap_ForbiddenTACs_item = -1;       /* TAC */
575 static int hf_s1ap_ForbiddenLAs_item = -1;        /* ForbiddenLAs_Item */
576 static int hf_s1ap_forbiddenLACs = -1;            /* ForbiddenLACs */
577 static int hf_s1ap_ForbiddenLACs_item = -1;       /* LAC */
578 static int hf_s1ap_e_RAB_MaximumBitrateDL = -1;   /* BitRate */
579 static int hf_s1ap_e_RAB_MaximumBitrateUL = -1;   /* BitRate */
580 static int hf_s1ap_e_RAB_GuaranteedBitrateDL = -1;  /* BitRate */
581 static int hf_s1ap_e_RAB_GuaranteedBitrateUL = -1;  /* BitRate */
582 static int hf_s1ap_mME_Group_ID = -1;             /* MME_Group_ID */
583 static int hf_s1ap_mME_Code = -1;                 /* MME_Code */
584 static int hf_s1ap_servingPLMN = -1;              /* PLMNidentity */
585 static int hf_s1ap_equivalentPLMNs = -1;          /* EPLMNs */
586 static int hf_s1ap_forbiddenTAs = -1;             /* ForbiddenTAs */
587 static int hf_s1ap_forbiddenLAs = -1;             /* ForbiddenLAs */
588 static int hf_s1ap_forbiddenInterRATs = -1;       /* ForbiddenInterRATs */
589 static int hf_s1ap_e_UTRAN_Cell = -1;             /* LastVisitedEUTRANCellInformation */
590 static int hf_s1ap_uTRAN_Cell = -1;               /* LastVisitedUTRANCellInformation */
591 static int hf_s1ap_gERAN_Cell = -1;               /* LastVisitedGERANCellInformation */
592 static int hf_s1ap_global_Cell_ID = -1;           /* EUTRAN_CGI */
593 static int hf_s1ap_cellType = -1;                 /* CellType */
594 static int hf_s1ap_time_UE_StayedInCell = -1;     /* Time_UE_StayedInCell */
595 static int hf_s1ap_undefined = -1;                /* NULL */
596 static int hf_s1ap_overloadAction = -1;           /* OverloadAction */
597 static int hf_s1ap_eventType = -1;                /* EventType */
598 static int hf_s1ap_reportArea = -1;               /* ReportArea */
599 static int hf_s1ap_rIMInformation = -1;           /* RIMInformation */
600 static int hf_s1ap_rIMRoutingAddress = -1;        /* RIMRoutingAddress */
601 static int hf_s1ap_gERAN_Cell_ID = -1;            /* GERAN_Cell_ID */
602 static int hf_s1ap_nextHopChainingCount = -1;     /* INTEGER_0_7 */
603 static int hf_s1ap_nextHopParameter = -1;         /* SecurityKey */
604 static int hf_s1ap_sONInformationRequest = -1;    /* SONInformationRequest */
605 static int hf_s1ap_sONInformationReply = -1;      /* SONInformationReply */
606 static int hf_s1ap_x2TNLConfigurationInfo = -1;   /* X2TNLConfigurationInfo */
607 static int hf_s1ap_targeteNB_ID = -1;             /* TargeteNB_ID */
608 static int hf_s1ap_sourceeNB_ID = -1;             /* SourceeNB_ID */
609 static int hf_s1ap_sONInformation = -1;           /* SONInformation */
610 static int hf_s1ap_global_ENB_ID = -1;            /* Global_ENB_ID */
611 static int hf_s1ap_selected_TAI = -1;             /* TAI */
612 static int hf_s1ap_rRC_Container = -1;            /* RRC_Container */
613 static int hf_s1ap_e_RABInformationList = -1;     /* E_RABInformationList */
614 static int hf_s1ap_targetCell_ID = -1;            /* EUTRAN_CGI */
615 static int hf_s1ap_subscriberProfileIDforRFP = -1;  /* SubscriberProfileIDforRFP */
616 static int hf_s1ap_uE_HistoryInformation = -1;    /* UE_HistoryInformation */
617 static int hf_s1ap_ServedGUMMEIs_item = -1;       /* ServedGUMMEIsItem */
618 static int hf_s1ap_servedPLMNs = -1;              /* ServedPLMNs */
619 static int hf_s1ap_servedGroupIDs = -1;           /* ServedGroupIDs */
620 static int hf_s1ap_servedMMECs = -1;              /* ServedMMECs */
621 static int hf_s1ap_ServedGroupIDs_item = -1;      /* MME_Group_ID */
622 static int hf_s1ap_ServedMMECs_item = -1;         /* MME_Code */
623 static int hf_s1ap_ServedPLMNs_item = -1;         /* PLMNidentity */
624 static int hf_s1ap_SupportedTAs_item = -1;        /* SupportedTAs_Item */
625 static int hf_s1ap_tAC = -1;                      /* TAC */
626 static int hf_s1ap_broadcastPLMNs = -1;           /* BPLMNs */
627 static int hf_s1ap_mMEC = -1;                     /* MME_Code */
628 static int hf_s1ap_m_TMSI = -1;                   /* M_TMSI */
629 static int hf_s1ap_TAIListforWarning_item = -1;   /* TAI */
630 static int hf_s1ap_TAI_Broadcast_item = -1;       /* TAI_Broadcast_Item */
631 static int hf_s1ap_tAI = -1;                      /* TAI */
632 static int hf_s1ap_completedCellinTAI = -1;       /* CompletedCellinTAI */
633 static int hf_s1ap_TAI_Cancelled_item = -1;       /* TAI_Cancelled_Item */
634 static int hf_s1ap_cancelledCellinTAI = -1;       /* CancelledCellinTAI */
635 static int hf_s1ap_CompletedCellinTAI_item = -1;  /* CompletedCellinTAI_Item */
636 static int hf_s1ap_targetRNC_ID = -1;             /* TargetRNC_ID */
637 static int hf_s1ap_cGI = -1;                      /* CGI */
638 static int hf_s1ap_rNC_ID = -1;                   /* RNC_ID */
639 static int hf_s1ap_extendedRNC_ID = -1;           /* ExtendedRNC_ID */
640 static int hf_s1ap_e_UTRAN_Trace_ID = -1;         /* E_UTRAN_Trace_ID */
641 static int hf_s1ap_interfacesToTrace = -1;        /* InterfacesToTrace */
642 static int hf_s1ap_traceDepth = -1;               /* TraceDepth */
643 static int hf_s1ap_traceCollectionEntityIPAddress = -1;  /* TransportLayerAddress */
644 static int hf_s1ap_uEaggregateMaximumBitRateDL = -1;  /* BitRate */
645 static int hf_s1ap_uEaggregateMaximumBitRateUL = -1;  /* BitRate */
646 static int hf_s1ap_uE_S1AP_ID_pair = -1;          /* UE_S1AP_ID_pair */
647 static int hf_s1ap_mME_UE_S1AP_ID = -1;           /* MME_UE_S1AP_ID */
648 static int hf_s1ap_eNB_UE_S1AP_ID = -1;           /* ENB_UE_S1AP_ID */
649 static int hf_s1ap_UE_HistoryInformation_item = -1;  /* LastVisitedCell_Item */
650 static int hf_s1ap_s_TMSI = -1;                   /* S_TMSI */
651 static int hf_s1ap_iMSI = -1;                     /* IMSI */
652 static int hf_s1ap_encryptionAlgorithms = -1;     /* EncryptionAlgorithms */
653 static int hf_s1ap_integrityProtectionAlgorithms = -1;  /* IntegrityProtectionAlgorithms */
654 static int hf_s1ap_cellIDList = -1;               /* ECGIList */
655 static int hf_s1ap_trackingAreaListforWarning = -1;  /* TAIListforWarning */
656 static int hf_s1ap_emergencyAreaIDList = -1;      /* EmergencyAreaIDList */
657 static int hf_s1ap_eNBX2TransportLayerAddresses = -1;  /* ENBX2TLAs */
658 static int hf_s1ap_protocolIEs = -1;              /* ProtocolIE_Container */
659 static int hf_s1ap_dL_transportLayerAddress = -1;  /* TransportLayerAddress */
660 static int hf_s1ap_dL_gTP_TEID = -1;              /* GTP_TEID */
661 static int hf_s1ap_uL_TransportLayerAddress = -1;  /* TransportLayerAddress */
662 static int hf_s1ap_uL_GTP_TEID = -1;              /* GTP_TEID */
663 static int hf_s1ap_transportLayerAddress = -1;    /* TransportLayerAddress */
664 static int hf_s1ap_gTP_TEID = -1;                 /* GTP_TEID */
665 static int hf_s1ap_e_RABlevelQosParameters = -1;  /* E_RABLevelQoSParameters */
666 static int hf_s1ap_E_RABToBeSetupListBearerSUReq_item = -1;  /* ProtocolIE_SingleContainer */
667 static int hf_s1ap_e_RABlevelQoSParameters = -1;  /* E_RABLevelQoSParameters */
668 static int hf_s1ap_nAS_PDU = -1;                  /* NAS_PDU */
669 static int hf_s1ap_E_RABSetupListBearerSURes_item = -1;  /* ProtocolIE_SingleContainer */
670 static int hf_s1ap_E_RABToBeModifiedListBearerModReq_item = -1;  /* ProtocolIE_SingleContainer */
671 static int hf_s1ap_e_RABLevelQoSParameters = -1;  /* E_RABLevelQoSParameters */
672 static int hf_s1ap_E_RABModifyListBearerModRes_item = -1;  /* ProtocolIE_SingleContainer */
673 static int hf_s1ap_E_RABReleaseListBearerRelComp_item = -1;  /* ProtocolIE_SingleContainer */
674 static int hf_s1ap_E_RABToBeSetupListCtxtSUReq_item = -1;  /* ProtocolIE_SingleContainer */
675 static int hf_s1ap_E_RABSetupListCtxtSURes_item = -1;  /* ProtocolIE_SingleContainer */
676 static int hf_s1ap_TAIList_item = -1;             /* ProtocolIE_SingleContainer */
677 static int hf_s1ap_s1_Interface = -1;             /* ResetAll */
678 static int hf_s1ap_partOfS1_Interface = -1;       /* UE_associatedLogicalS1_ConnectionListRes */
679 static int hf_s1ap_UE_associatedLogicalS1_ConnectionListRes_item = -1;  /* ProtocolIE_SingleContainer */
680 static int hf_s1ap_UE_associatedLogicalS1_ConnectionListResAck_item = -1;  /* ProtocolIE_SingleContainer */
681 static int hf_s1ap_rIMTransfer = -1;              /* RIMTransfer */
682 static int hf_s1ap_privateIEs = -1;               /* PrivateIE_Container */
683 static int hf_s1ap_initiatingMessage = -1;        /* InitiatingMessage */
684 static int hf_s1ap_successfulOutcome = -1;        /* SuccessfulOutcome */
685 static int hf_s1ap_unsuccessfulOutcome = -1;      /* UnsuccessfulOutcome */
686 static int hf_s1ap_initiatingMessagevalue = -1;   /* InitiatingMessage_value */
687 static int hf_s1ap_successfulOutcome_value = -1;  /* SuccessfulOutcome_value */
688 static int hf_s1ap_unsuccessfulOutcome_value = -1;  /* UnsuccessfulOutcome_value */
689
690 /*--- End of included file: packet-s1ap-hf.c ---*/
691 #line 71 "packet-s1ap-template.c"
692
693 /* Initialize the subtree pointers */
694 static int ett_s1ap = -1;
695 static int ett_s1ap_TransportLayerAddress = -1;
696 static int ett_s1ap_ToTargetTransparentContainer = -1;
697 static int ett_s1ap_ToSourceTransparentContainer = -1;
698 static int ett_s1ap_RRCContainer = -1;
699
700
701 /*--- Included file: packet-s1ap-ett.c ---*/
702 #line 1 "packet-s1ap-ett.c"
703 static gint ett_s1ap_PrivateIE_ID = -1;
704 static gint ett_s1ap_ProtocolIE_Container = -1;
705 static gint ett_s1ap_ProtocolIE_Field = -1;
706 static gint ett_s1ap_ProtocolIE_ContainerList = -1;
707 static gint ett_s1ap_ProtocolExtensionContainer = -1;
708 static gint ett_s1ap_ProtocolExtensionField = -1;
709 static gint ett_s1ap_PrivateIE_Container = -1;
710 static gint ett_s1ap_PrivateIE_Field = -1;
711 static gint ett_s1ap_AllocationAndRetentionPriority = -1;
712 static gint ett_s1ap_Bearers_SubjectToStatusTransferList = -1;
713 static gint ett_s1ap_Bearers_SubjectToStatusTransfer_Item = -1;
714 static gint ett_s1ap_BPLMNs = -1;
715 static gint ett_s1ap_BroadcastCancelledAreaList = -1;
716 static gint ett_s1ap_BroadcastCompletedAreaList = -1;
717 static gint ett_s1ap_CancelledCellinEAI = -1;
718 static gint ett_s1ap_CancelledCellinEAI_Item = -1;
719 static gint ett_s1ap_CancelledCellinTAI = -1;
720 static gint ett_s1ap_CancelledCellinTAI_Item = -1;
721 static gint ett_s1ap_Cause = -1;
722 static gint ett_s1ap_CellID_Broadcast = -1;
723 static gint ett_s1ap_CellID_Broadcast_Item = -1;
724 static gint ett_s1ap_CellID_Cancelled = -1;
725 static gint ett_s1ap_CellID_Cancelled_Item = -1;
726 static gint ett_s1ap_Cdma2000OneXSRVCCInfo = -1;
727 static gint ett_s1ap_CellType = -1;
728 static gint ett_s1ap_CGI = -1;
729 static gint ett_s1ap_CSG_IdList = -1;
730 static gint ett_s1ap_CSG_IdList_Item = -1;
731 static gint ett_s1ap_COUNTvalue = -1;
732 static gint ett_s1ap_CriticalityDiagnostics = -1;
733 static gint ett_s1ap_CriticalityDiagnostics_IE_List = -1;
734 static gint ett_s1ap_CriticalityDiagnostics_IE_Item = -1;
735 static gint ett_s1ap_ECGIList = -1;
736 static gint ett_s1ap_EmergencyAreaIDList = -1;
737 static gint ett_s1ap_EmergencyAreaID_Broadcast = -1;
738 static gint ett_s1ap_EmergencyAreaID_Broadcast_Item = -1;
739 static gint ett_s1ap_EmergencyAreaID_Cancelled = -1;
740 static gint ett_s1ap_EmergencyAreaID_Cancelled_Item = -1;
741 static gint ett_s1ap_CompletedCellinEAI = -1;
742 static gint ett_s1ap_CompletedCellinEAI_Item = -1;
743 static gint ett_s1ap_ENB_ID = -1;
744 static gint ett_s1ap_GERAN_Cell_ID = -1;
745 static gint ett_s1ap_Global_ENB_ID = -1;
746 static gint ett_s1ap_ENB_StatusTransfer_TransparentContainer = -1;
747 static gint ett_s1ap_ENBX2TLAs = -1;
748 static gint ett_s1ap_EPLMNs = -1;
749 static gint ett_s1ap_E_RABInformationList = -1;
750 static gint ett_s1ap_E_RABInformationListItem = -1;
751 static gint ett_s1ap_E_RABList = -1;
752 static gint ett_s1ap_E_RABItem = -1;
753 static gint ett_s1ap_E_RABLevelQoSParameters = -1;
754 static gint ett_s1ap_EUTRAN_CGI = -1;
755 static gint ett_s1ap_ForbiddenTAs = -1;
756 static gint ett_s1ap_ForbiddenTAs_Item = -1;
757 static gint ett_s1ap_ForbiddenTACs = -1;
758 static gint ett_s1ap_ForbiddenLAs = -1;
759 static gint ett_s1ap_ForbiddenLAs_Item = -1;
760 static gint ett_s1ap_ForbiddenLACs = -1;
761 static gint ett_s1ap_GBR_QosInformation = -1;
762 static gint ett_s1ap_GUMMEI = -1;
763 static gint ett_s1ap_HandoverRestrictionList = -1;
764 static gint ett_s1ap_LAI = -1;
765 static gint ett_s1ap_LastVisitedCell_Item = -1;
766 static gint ett_s1ap_LastVisitedEUTRANCellInformation = -1;
767 static gint ett_s1ap_LastVisitedGERANCellInformation = -1;
768 static gint ett_s1ap_OverloadResponse = -1;
769 static gint ett_s1ap_RequestType = -1;
770 static gint ett_s1ap_RIMTransfer = -1;
771 static gint ett_s1ap_RIMRoutingAddress = -1;
772 static gint ett_s1ap_SecurityContext = -1;
773 static gint ett_s1ap_SONInformation = -1;
774 static gint ett_s1ap_SONInformationReply = -1;
775 static gint ett_s1ap_SONConfigurationTransfer = -1;
776 static gint ett_s1ap_SourceeNB_ID = -1;
777 static gint ett_s1ap_SourceeNB_ToTargeteNB_TransparentContainer = -1;
778 static gint ett_s1ap_ServedGUMMEIs = -1;
779 static gint ett_s1ap_ServedGUMMEIsItem = -1;
780 static gint ett_s1ap_ServedGroupIDs = -1;
781 static gint ett_s1ap_ServedMMECs = -1;
782 static gint ett_s1ap_ServedPLMNs = -1;
783 static gint ett_s1ap_SupportedTAs = -1;
784 static gint ett_s1ap_SupportedTAs_Item = -1;
785 static gint ett_s1ap_S_TMSI = -1;
786 static gint ett_s1ap_TAIListforWarning = -1;
787 static gint ett_s1ap_TAI = -1;
788 static gint ett_s1ap_TAI_Broadcast = -1;
789 static gint ett_s1ap_TAI_Broadcast_Item = -1;
790 static gint ett_s1ap_TAI_Cancelled = -1;
791 static gint ett_s1ap_TAI_Cancelled_Item = -1;
792 static gint ett_s1ap_CompletedCellinTAI = -1;
793 static gint ett_s1ap_CompletedCellinTAI_Item = -1;
794 static gint ett_s1ap_TargetID = -1;
795 static gint ett_s1ap_TargeteNB_ID = -1;
796 static gint ett_s1ap_TargetRNC_ID = -1;
797 static gint ett_s1ap_TargeteNB_ToSourceeNB_TransparentContainer = -1;
798 static gint ett_s1ap_TraceActivation = -1;
799 static gint ett_s1ap_UEAggregateMaximumBitrate = -1;
800 static gint ett_s1ap_UE_S1AP_IDs = -1;
801 static gint ett_s1ap_UE_S1AP_ID_pair = -1;
802 static gint ett_s1ap_UE_associatedLogicalS1_ConnectionItem = -1;
803 static gint ett_s1ap_UE_HistoryInformation = -1;
804 static gint ett_s1ap_UEPagingID = -1;
805 static gint ett_s1ap_UESecurityCapabilities = -1;
806 static gint ett_s1ap_WarningAreaList = -1;
807 static gint ett_s1ap_X2TNLConfigurationInfo = -1;
808 static gint ett_s1ap_HandoverRequired = -1;
809 static gint ett_s1ap_HandoverCommand = -1;
810 static gint ett_s1ap_E_RABDataForwardingItem = -1;
811 static gint ett_s1ap_HandoverPreparationFailure = -1;
812 static gint ett_s1ap_HandoverRequest = -1;
813 static gint ett_s1ap_E_RABToBeSetupItemHOReq = -1;
814 static gint ett_s1ap_HandoverRequestAcknowledge = -1;
815 static gint ett_s1ap_E_RABAdmittedItem = -1;
816 static gint ett_s1ap_E_RABFailedToSetupItemHOReqAck = -1;
817 static gint ett_s1ap_HandoverFailure = -1;
818 static gint ett_s1ap_HandoverNotify = -1;
819 static gint ett_s1ap_PathSwitchRequest = -1;
820 static gint ett_s1ap_E_RABToBeSwitchedDLItem = -1;
821 static gint ett_s1ap_PathSwitchRequestAcknowledge = -1;
822 static gint ett_s1ap_E_RABToBeSwitchedULItem = -1;
823 static gint ett_s1ap_PathSwitchRequestFailure = -1;
824 static gint ett_s1ap_HandoverCancel = -1;
825 static gint ett_s1ap_HandoverCancelAcknowledge = -1;
826 static gint ett_s1ap_E_RABSetupRequest = -1;
827 static gint ett_s1ap_E_RABToBeSetupListBearerSUReq = -1;
828 static gint ett_s1ap_E_RABToBeSetupItemBearerSUReq = -1;
829 static gint ett_s1ap_E_RABSetupResponse = -1;
830 static gint ett_s1ap_E_RABSetupListBearerSURes = -1;
831 static gint ett_s1ap_E_RABSetupItemBearerSURes = -1;
832 static gint ett_s1ap_E_RABModifyRequest = -1;
833 static gint ett_s1ap_E_RABToBeModifiedListBearerModReq = -1;
834 static gint ett_s1ap_E_RABToBeModifiedItemBearerModReq = -1;
835 static gint ett_s1ap_E_RABModifyResponse = -1;
836 static gint ett_s1ap_E_RABModifyListBearerModRes = -1;
837 static gint ett_s1ap_E_RABModifyItemBearerModRes = -1;
838 static gint ett_s1ap_E_RABReleaseCommand = -1;
839 static gint ett_s1ap_E_RABReleaseResponse = -1;
840 static gint ett_s1ap_E_RABReleaseListBearerRelComp = -1;
841 static gint ett_s1ap_E_RABReleaseItemBearerRelComp = -1;
842 static gint ett_s1ap_E_RABReleaseIndication = -1;
843 static gint ett_s1ap_InitialContextSetupRequest = -1;
844 static gint ett_s1ap_E_RABToBeSetupListCtxtSUReq = -1;
845 static gint ett_s1ap_E_RABToBeSetupItemCtxtSUReq = -1;
846 static gint ett_s1ap_InitialContextSetupResponse = -1;
847 static gint ett_s1ap_E_RABSetupListCtxtSURes = -1;
848 static gint ett_s1ap_E_RABSetupItemCtxtSURes = -1;
849 static gint ett_s1ap_InitialContextSetupFailure = -1;
850 static gint ett_s1ap_Paging = -1;
851 static gint ett_s1ap_TAIList = -1;
852 static gint ett_s1ap_TAIItem = -1;
853 static gint ett_s1ap_UEContextReleaseRequest = -1;
854 static gint ett_s1ap_UEContextReleaseCommand = -1;
855 static gint ett_s1ap_UEContextReleaseComplete = -1;
856 static gint ett_s1ap_UEContextModificationRequest = -1;
857 static gint ett_s1ap_UEContextModificationResponse = -1;
858 static gint ett_s1ap_UEContextModificationFailure = -1;
859 static gint ett_s1ap_DownlinkNASTransport = -1;
860 static gint ett_s1ap_InitialUEMessage = -1;
861 static gint ett_s1ap_UplinkNASTransport = -1;
862 static gint ett_s1ap_NASNonDeliveryIndication = -1;
863 static gint ett_s1ap_Reset = -1;
864 static gint ett_s1ap_ResetType = -1;
865 static gint ett_s1ap_UE_associatedLogicalS1_ConnectionListRes = -1;
866 static gint ett_s1ap_ResetAcknowledge = -1;
867 static gint ett_s1ap_UE_associatedLogicalS1_ConnectionListResAck = -1;
868 static gint ett_s1ap_ErrorIndication = -1;
869 static gint ett_s1ap_S1SetupRequest = -1;
870 static gint ett_s1ap_S1SetupResponse = -1;
871 static gint ett_s1ap_S1SetupFailure = -1;
872 static gint ett_s1ap_ENBConfigurationUpdate = -1;
873 static gint ett_s1ap_ENBConfigurationUpdateAcknowledge = -1;
874 static gint ett_s1ap_ENBConfigurationUpdateFailure = -1;
875 static gint ett_s1ap_MMEConfigurationUpdate = -1;
876 static gint ett_s1ap_MMEConfigurationUpdateAcknowledge = -1;
877 static gint ett_s1ap_MMEConfigurationUpdateFailure = -1;
878 static gint ett_s1ap_DownlinkS1cdma2000tunneling = -1;
879 static gint ett_s1ap_UplinkS1cdma2000tunneling = -1;
880 static gint ett_s1ap_UECapabilityInfoIndication = -1;
881 static gint ett_s1ap_ENBStatusTransfer = -1;
882 static gint ett_s1ap_MMEStatusTransfer = -1;
883 static gint ett_s1ap_TraceStart = -1;
884 static gint ett_s1ap_TraceFailureIndication = -1;
885 static gint ett_s1ap_DeactivateTrace = -1;
886 static gint ett_s1ap_CellTrafficTrace = -1;
887 static gint ett_s1ap_LocationReportingControl = -1;
888 static gint ett_s1ap_LocationReportingFailureIndication = -1;
889 static gint ett_s1ap_LocationReport = -1;
890 static gint ett_s1ap_OverloadStart = -1;
891 static gint ett_s1ap_OverloadStop = -1;
892 static gint ett_s1ap_WriteReplaceWarningRequest = -1;
893 static gint ett_s1ap_WriteReplaceWarningResponse = -1;
894 static gint ett_s1ap_ENBDirectInformationTransfer = -1;
895 static gint ett_s1ap_Inter_SystemInformationTransferType = -1;
896 static gint ett_s1ap_MMEDirectInformationTransfer = -1;
897 static gint ett_s1ap_ENBConfigurationTransfer = -1;
898 static gint ett_s1ap_MMEConfigurationTransfer = -1;
899 static gint ett_s1ap_PrivateMessage = -1;
900 static gint ett_s1ap_KillRequest = -1;
901 static gint ett_s1ap_KillResponse = -1;
902 static gint ett_s1ap_DownlinkUEAssociatedLPPaTransport = -1;
903 static gint ett_s1ap_UplinkUEAssociatedLPPaTransport = -1;
904 static gint ett_s1ap_DownlinkNonUEAssociatedLPPaTransport = -1;
905 static gint ett_s1ap_UplinkNonUEAssociatedLPPaTransport = -1;
906 static gint ett_s1ap_S1AP_PDU = -1;
907 static gint ett_s1ap_InitiatingMessage = -1;
908 static gint ett_s1ap_SuccessfulOutcome = -1;
909 static gint ett_s1ap_UnsuccessfulOutcome = -1;
910
911 /*--- End of included file: packet-s1ap-ett.c ---*/
912 #line 80 "packet-s1ap-template.c"
913
914 enum{
915         INITIATING_MESSAGE,
916         SUCCESSFUL_OUTCOME,
917         UNSUCCESSFUL_OUTCOME
918 };
919
920 /* Global variables */
921 static guint32 ProcedureCode;
922 static guint32 ProtocolIE_ID;
923 static guint32 ProtocolExtensionID;
924 static guint gbl_s1apSctpPort=SCTP_PORT_S1AP;
925 static guint32 handover_type_value;
926 static guint32 message_type;
927
928 /* Dissector tables */
929 static dissector_table_t s1ap_ies_dissector_table;
930 static dissector_table_t s1ap_ies_p1_dissector_table;
931 static dissector_table_t s1ap_ies_p2_dissector_table;
932 static dissector_table_t s1ap_extension_dissector_table;
933 static dissector_table_t s1ap_proc_imsg_dissector_table;
934 static dissector_table_t s1ap_proc_sout_dissector_table;
935 static dissector_table_t s1ap_proc_uout_dissector_table;
936
937 static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
938 /* Currently not used
939 static int dissect_ProtocolIEFieldPairFirstValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
940 static int dissect_ProtocolIEFieldPairSecondValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
941 */
942 static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
943 static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
944 static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
945 static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
946
947 static int dissect_SourceeNB_ToTargeteNB_TransparentContainer_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
948 static int dissect_TargeteNB_ToSourceeNB_TransparentContainer_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
949 static int dissect_SourceRNC_ToTargetRNC_TransparentContainer_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
950 static int dissect_TargetRNC_ToSourceRNC_TransparentContainer_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
951 static int dissect_SourceBSS_ToTargetBSS_TransparentContainer_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
952 static int dissect_TargetBSS_ToSourceBSS_TransparentContainer_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
953
954
955 /*--- Included file: packet-s1ap-fn.c ---*/
956 #line 1 "packet-s1ap-fn.c"
957
958 static const value_string s1ap_Criticality_vals[] = {
959   {   0, "reject" },
960   {   1, "ignore" },
961   {   2, "notify" },
962   { 0, NULL }
963 };
964
965
966 static int
967 dissect_s1ap_Criticality(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
968   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
969                                      3, NULL, FALSE, 0, NULL);
970
971   return offset;
972 }
973
974
975
976 static int
977 dissect_s1ap_INTEGER_0_65535(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
978   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
979                                                             0U, 65535U, NULL, FALSE);
980
981   return offset;
982 }
983
984
985
986 static int
987 dissect_s1ap_OBJECT_IDENTIFIER(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
988   offset = dissect_per_object_identifier(tvb, offset, actx, tree, hf_index, NULL);
989
990   return offset;
991 }
992
993
994 static const value_string s1ap_PrivateIE_ID_vals[] = {
995   {   0, "local" },
996   {   1, "global" },
997   { 0, NULL }
998 };
999
1000 static const per_choice_t PrivateIE_ID_choice[] = {
1001   {   0, &hf_s1ap_local          , ASN1_NO_EXTENSIONS     , dissect_s1ap_INTEGER_0_65535 },
1002   {   1, &hf_s1ap_global         , ASN1_NO_EXTENSIONS     , dissect_s1ap_OBJECT_IDENTIFIER },
1003   { 0, NULL, 0, NULL }
1004 };
1005
1006 static int
1007 dissect_s1ap_PrivateIE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1008   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1009                                  ett_s1ap_PrivateIE_ID, PrivateIE_ID_choice,
1010                                  NULL);
1011
1012   return offset;
1013 }
1014
1015
1016 static const value_string s1ap_ProcedureCode_vals[] = {
1017   { id_HandoverPreparation, "id-HandoverPreparation" },
1018   { id_HandoverResourceAllocation, "id-HandoverResourceAllocation" },
1019   { id_HandoverNotification, "id-HandoverNotification" },
1020   { id_PathSwitchRequest, "id-PathSwitchRequest" },
1021   { id_HandoverCancel, "id-HandoverCancel" },
1022   { id_E_RABSetup, "id-E-RABSetup" },
1023   { id_E_RABModify, "id-E-RABModify" },
1024   { id_E_RABRelease, "id-E-RABRelease" },
1025   { id_E_RABReleaseIndication, "id-E-RABReleaseIndication" },
1026   { id_InitialContextSetup, "id-InitialContextSetup" },
1027   { id_Paging, "id-Paging" },
1028   { id_downlinkNASTransport, "id-downlinkNASTransport" },
1029   { id_initialUEMessage, "id-initialUEMessage" },
1030   { id_uplinkNASTransport, "id-uplinkNASTransport" },
1031   { id_Reset, "id-Reset" },
1032   { id_ErrorIndication, "id-ErrorIndication" },
1033   { id_NASNonDeliveryIndication, "id-NASNonDeliveryIndication" },
1034   { id_S1Setup, "id-S1Setup" },
1035   { id_UEContextReleaseRequest, "id-UEContextReleaseRequest" },
1036   { id_DownlinkS1cdma2000tunneling, "id-DownlinkS1cdma2000tunneling" },
1037   { id_UplinkS1cdma2000tunneling, "id-UplinkS1cdma2000tunneling" },
1038   { id_UEContextModification, "id-UEContextModification" },
1039   { id_UECapabilityInfoIndication, "id-UECapabilityInfoIndication" },
1040   { id_UEContextRelease, "id-UEContextRelease" },
1041   { id_eNBStatusTransfer, "id-eNBStatusTransfer" },
1042   { id_MMEStatusTransfer, "id-MMEStatusTransfer" },
1043   { id_DeactivateTrace, "id-DeactivateTrace" },
1044   { id_TraceStart, "id-TraceStart" },
1045   { id_TraceFailureIndication, "id-TraceFailureIndication" },
1046   { id_ENBConfigurationUpdate, "id-ENBConfigurationUpdate" },
1047   { id_MMEConfigurationUpdate, "id-MMEConfigurationUpdate" },
1048   { id_LocationReportingControl, "id-LocationReportingControl" },
1049   { id_LocationReportingFailureIndication, "id-LocationReportingFailureIndication" },
1050   { id_LocationReport, "id-LocationReport" },
1051   { id_OverloadStart, "id-OverloadStart" },
1052   { id_OverloadStop, "id-OverloadStop" },
1053   { id_WriteReplaceWarning, "id-WriteReplaceWarning" },
1054   { id_eNBDirectInformationTransfer, "id-eNBDirectInformationTransfer" },
1055   { id_MMEDirectInformationTransfer, "id-MMEDirectInformationTransfer" },
1056   { id_PrivateMessage, "id-PrivateMessage" },
1057   { id_eNBConfigurationTransfer, "id-eNBConfigurationTransfer" },
1058   { id_MMEConfigurationTransfer, "id-MMEConfigurationTransfer" },
1059   { id_CellTrafficTrace, "id-CellTrafficTrace" },
1060   { id_Kill, "id-Kill" },
1061   { id_downlinkUEAssociatedLPPaTransport, "id-downlinkUEAssociatedLPPaTransport" },
1062   { id_uplinkUEAssociatedLPPaTransport, "id-uplinkUEAssociatedLPPaTransport" },
1063   { id_downlinkNonUEAssociatedLPPaTransport, "id-downlinkNonUEAssociatedLPPaTransport" },
1064   { id_uplinkNonUEAssociatedLPPaTransport, "id-uplinkNonUEAssociatedLPPaTransport" },
1065   { 0, NULL }
1066 };
1067
1068
1069 static int
1070 dissect_s1ap_ProcedureCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1071   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1072                                                             0U, 255U, &ProcedureCode, FALSE);
1073
1074 #line 80 "s1ap.cnf"
1075      col_add_fstr(actx->pinfo->cinfo, COL_INFO, "%s ",
1076                  val_to_str(ProcedureCode, s1ap_ProcedureCode_vals,
1077                             "unknown message"));
1078
1079   return offset;
1080 }
1081
1082
1083
1084 static int
1085 dissect_s1ap_ProtocolExtensionID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1086   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1087                                                             0U, 65535U, &ProtocolExtensionID, FALSE);
1088
1089   return offset;
1090 }
1091
1092
1093 static const value_string s1ap_ProtocolIE_ID_vals[] = {
1094   { id_MME_UE_S1AP_ID, "id-MME-UE-S1AP-ID" },
1095   { id_HandoverType, "id-HandoverType" },
1096   { id_Cause, "id-Cause" },
1097   { id_SourceID, "id-SourceID" },
1098   { id_TargetID, "id-TargetID" },
1099   { id_eNB_UE_S1AP_ID, "id-eNB-UE-S1AP-ID" },
1100   { id_E_RABSubjecttoDataForwardingList, "id-E-RABSubjecttoDataForwardingList" },
1101   { id_E_RABtoReleaseListHOCmd, "id-E-RABtoReleaseListHOCmd" },
1102   { id_E_RABDataForwardingItem, "id-E-RABDataForwardingItem" },
1103   { id_E_RABReleaseItemBearerRelComp, "id-E-RABReleaseItemBearerRelComp" },
1104   { id_E_RABToBeSetupListBearerSUReq, "id-E-RABToBeSetupListBearerSUReq" },
1105   { id_E_RABToBeSetupItemBearerSUReq, "id-E-RABToBeSetupItemBearerSUReq" },
1106   { id_E_RABAdmittedList, "id-E-RABAdmittedList" },
1107   { id_E_RABFailedToSetupListHOReqAck, "id-E-RABFailedToSetupListHOReqAck" },
1108   { id_E_RABAdmittedItem, "id-E-RABAdmittedItem" },
1109   { id_E_RABFailedtoSetupItemHOReqAck, "id-E-RABFailedtoSetupItemHOReqAck" },
1110   { id_E_RABToBeSwitchedDLList, "id-E-RABToBeSwitchedDLList" },
1111   { id_E_RABToBeSwitchedDLItem, "id-E-RABToBeSwitchedDLItem" },
1112   { id_E_RABToBeSetupListCtxtSUReq, "id-E-RABToBeSetupListCtxtSUReq" },
1113   { id_TraceActivation, "id-TraceActivation" },
1114   { id_NAS_PDU, "id-NAS-PDU" },
1115   { id_E_RABToBeSetupItemHOReq, "id-E-RABToBeSetupItemHOReq" },
1116   { id_E_RABSetupListBearerSURes, "id-E-RABSetupListBearerSURes" },
1117   { id_E_RABFailedToSetupListBearerSURes, "id-E-RABFailedToSetupListBearerSURes" },
1118   { id_E_RABToBeModifiedListBearerModReq, "id-E-RABToBeModifiedListBearerModReq" },
1119   { id_E_RABModifyListBearerModRes, "id-E-RABModifyListBearerModRes" },
1120   { id_E_RABFailedToModifyList, "id-E-RABFailedToModifyList" },
1121   { id_E_RABToBeReleasedList, "id-E-RABToBeReleasedList" },
1122   { id_E_RABFailedToReleaseList, "id-E-RABFailedToReleaseList" },
1123   { id_E_RABItem, "id-E-RABItem" },
1124   { id_E_RABToBeModifiedItemBearerModReq, "id-E-RABToBeModifiedItemBearerModReq" },
1125   { id_E_RABModifyItemBearerModRes, "id-E-RABModifyItemBearerModRes" },
1126   { id_E_RABReleaseItem, "id-E-RABReleaseItem" },
1127   { id_E_RABSetupItemBearerSURes, "id-E-RABSetupItemBearerSURes" },
1128   { id_SecurityContext, "id-SecurityContext" },
1129   { id_HandoverRestrictionList, "id-HandoverRestrictionList" },
1130   { id_UEPagingID, "id-UEPagingID" },
1131   { id_pagingDRX, "id-pagingDRX" },
1132   { id_TAIList, "id-TAIList" },
1133   { id_TAIItem, "id-TAIItem" },
1134   { id_E_RABFailedToSetupListCtxtSURes, "id-E-RABFailedToSetupListCtxtSURes" },
1135   { id_E_RABReleaseItemHOCmd, "id-E-RABReleaseItemHOCmd" },
1136   { id_E_RABSetupItemCtxtSURes, "id-E-RABSetupItemCtxtSURes" },
1137   { id_E_RABSetupListCtxtSURes, "id-E-RABSetupListCtxtSURes" },
1138   { id_E_RABToBeSetupItemCtxtSUReq, "id-E-RABToBeSetupItemCtxtSUReq" },
1139   { id_E_RABToBeSetupListHOReq, "id-E-RABToBeSetupListHOReq" },
1140   { id_GERANtoLTEHOInformationRes, "id-GERANtoLTEHOInformationRes" },
1141   { id_UTRANtoLTEHOInformationRes, "id-UTRANtoLTEHOInformationRes" },
1142   { id_CriticalityDiagnostics, "id-CriticalityDiagnostics" },
1143   { id_Global_ENB_ID, "id-Global-ENB-ID" },
1144   { id_eNBname, "id-eNBname" },
1145   { id_MMEname, "id-MMEname" },
1146   { id_ServedPLMNs, "id-ServedPLMNs" },
1147   { id_SupportedTAs, "id-SupportedTAs" },
1148   { id_TimeToWait, "id-TimeToWait" },
1149   { id_uEaggregateMaximumBitrate, "id-uEaggregateMaximumBitrate" },
1150   { id_TAI, "id-TAI" },
1151   { id_E_RABReleaseListBearerRelComp, "id-E-RABReleaseListBearerRelComp" },
1152   { id_cdma2000PDU, "id-cdma2000PDU" },
1153   { id_cdma2000RATType, "id-cdma2000RATType" },
1154   { id_cdma2000SectorID, "id-cdma2000SectorID" },
1155   { id_SecurityKey, "id-SecurityKey" },
1156   { id_UERadioCapability, "id-UERadioCapability" },
1157   { id_GUMMEI_ID, "id-GUMMEI-ID" },
1158   { id_E_RABInformationListItem, "id-E-RABInformationListItem" },
1159   { id_Direct_Forwarding_Path_Availability, "id-Direct-Forwarding-Path-Availability" },
1160   { id_UEIdentityIndexValue, "id-UEIdentityIndexValue" },
1161   { id_cdma2000HOStatus, "id-cdma2000HOStatus" },
1162   { id_cdma2000HORequiredIndication, "id-cdma2000HORequiredIndication" },
1163   { id_E_UTRAN_Trace_ID, "id-E-UTRAN-Trace-ID" },
1164   { id_RelativeMMECapacity, "id-RelativeMMECapacity" },
1165   { id_SourceMME_UE_S1AP_ID, "id-SourceMME-UE-S1AP-ID" },
1166   { id_Bearers_SubjectToStatusTransfer_Item, "id-Bearers-SubjectToStatusTransfer-Item" },
1167   { id_eNB_StatusTransfer_TransparentContainer, "id-eNB-StatusTransfer-TransparentContainer" },
1168   { id_UE_associatedLogicalS1_ConnectionItem, "id-UE-associatedLogicalS1-ConnectionItem" },
1169   { id_ResetType, "id-ResetType" },
1170   { id_UE_associatedLogicalS1_ConnectionListResAck, "id-UE-associatedLogicalS1-ConnectionListResAck" },
1171   { id_E_RABToBeSwitchedULItem, "id-E-RABToBeSwitchedULItem" },
1172   { id_E_RABToBeSwitchedULList, "id-E-RABToBeSwitchedULList" },
1173   { id_S_TMSI, "id-S-TMSI" },
1174   { id_cdma2000OneXRAND, "id-cdma2000OneXRAND" },
1175   { id_RequestType, "id-RequestType" },
1176   { id_UE_S1AP_IDs, "id-UE-S1AP-IDs" },
1177   { id_EUTRAN_CGI, "id-EUTRAN-CGI" },
1178   { id_OverloadResponse, "id-OverloadResponse" },
1179   { id_cdma2000OneXSRVCCInfo, "id-cdma2000OneXSRVCCInfo" },
1180   { id_E_RABFailedToBeReleasedList, "id-E-RABFailedToBeReleasedList" },
1181   { id_Source_ToTarget_TransparentContainer, "id-Source-ToTarget-TransparentContainer" },
1182   { id_ServedGUMMEIs, "id-ServedGUMMEIs" },
1183   { id_SubscriberProfileIDforRFP, "id-SubscriberProfileIDforRFP" },
1184   { id_UESecurityCapabilities, "id-UESecurityCapabilities" },
1185   { id_CSFallbackIndicator, "id-CSFallbackIndicator" },
1186   { id_CNDomain, "id-CNDomain" },
1187   { id_E_RABReleasedList, "id-E-RABReleasedList" },
1188   { id_MessageIdentifier, "id-MessageIdentifier" },
1189   { id_SerialNumber, "id-SerialNumber" },
1190   { id_WarningAreaList, "id-WarningAreaList" },
1191   { id_RepetitionPeriod, "id-RepetitionPeriod" },
1192   { id_NumberofBroadcastRequest, "id-NumberofBroadcastRequest" },
1193   { id_WarningType, "id-WarningType" },
1194   { id_WarningSecurityInfo, "id-WarningSecurityInfo" },
1195   { id_DataCodingScheme, "id-DataCodingScheme" },
1196   { id_WarningMessageContents, "id-WarningMessageContents" },
1197   { id_BroadcastCompletedAreaList, "id-BroadcastCompletedAreaList" },
1198   { id_Inter_SystemInformationTransferTypeEDT, "id-Inter-SystemInformationTransferTypeEDT" },
1199   { id_Inter_SystemInformationTransferTypeMDT, "id-Inter-SystemInformationTransferTypeMDT" },
1200   { id_Target_ToSource_TransparentContainer, "id-Target-ToSource-TransparentContainer" },
1201   { id_SRVCCOperationPossible, "id-SRVCCOperationPossible" },
1202   { id_SRVCCHOIndication, "id-SRVCCHOIndication" },
1203   { id_NAS_DownlinkCount, "id-NAS-DownlinkCount" },
1204   { id_CSG_Id, "id-CSG-Id" },
1205   { id_CSG_IdList, "id-CSG-IdList" },
1206   { id_SONConfigurationTransferECT, "id-SONConfigurationTransferECT" },
1207   { id_SONConfigurationTransferMCT, "id-SONConfigurationTransferMCT" },
1208   { id_TraceCollectionEntityIPAddress, "id-TraceCollectionEntityIPAddress" },
1209   { id_MSClassmark2, "id-MSClassmark2" },
1210   { id_MSClassmark3, "id-MSClassmark3" },
1211   { id_RRC_Establishment_Cause, "id-RRC-Establishment-Cause" },
1212   { id_NASSecurityParametersfromE_UTRAN, "id-NASSecurityParametersfromE-UTRAN" },
1213   { id_NASSecurityParameterstoE_UTRAN, "id-NASSecurityParameterstoE-UTRAN" },
1214   { id_DefaultPagingDRX, "id-DefaultPagingDRX" },
1215   { id_Source_ToTarget_TransparentContainer_Secondary, "id-Source-ToTarget-TransparentContainer-Secondary" },
1216   { id_Target_ToSource_TransparentContainer_Secondary, "id-Target-ToSource-TransparentContainer-Secondary" },
1217   { id_EUTRANRoundTripDelayEstimationInfo, "id-EUTRANRoundTripDelayEstimationInfo" },
1218   { id_BroadcastCancelledAreaList, "id-BroadcastCancelledAreaList" },
1219   { id_ConcurrentWarningMessageIndicator, "id-ConcurrentWarningMessageIndicator" },
1220   { id_Data_Forwarding_Not_Possible, "id-Data-Forwarding-Not-Possible" },
1221   { id_ExtendedRepetitionPeriod, "id-ExtendedRepetitionPeriod" },
1222   { id_CellAccessMode, "id-CellAccessMode" },
1223   { id_CSGMembershipStatus, "id-CSGMembershipStatus" },
1224   { id_LPPa_PDU, "id-LPPa-PDU" },
1225   { id_Routing_ID, "id-Routing-ID" },
1226   { 0, NULL }
1227 };
1228
1229
1230 static int
1231 dissect_s1ap_ProtocolIE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1232   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1233                                                             0U, 65535U, &ProtocolIE_ID, FALSE);
1234
1235 #line 63 "s1ap.cnf"
1236   if (tree) {
1237     proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", val_to_str(ProtocolIE_ID, VALS(s1ap_ProtocolIE_ID_vals), "unknown (%d)"));
1238   }
1239
1240   return offset;
1241 }
1242
1243
1244 static const value_string s1ap_TriggeringMessage_vals[] = {
1245   {   0, "initiating-message" },
1246   {   1, "successful-outcome" },
1247   {   2, "unsuccessfull-outcome" },
1248   { 0, NULL }
1249 };
1250
1251
1252 static int
1253 dissect_s1ap_TriggeringMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1254   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1255                                      3, NULL, FALSE, 0, NULL);
1256
1257   return offset;
1258 }
1259
1260
1261
1262 static int
1263 dissect_s1ap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1264   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue);
1265
1266   return offset;
1267 }
1268
1269
1270 static const per_sequence_t ProtocolIE_Field_sequence[] = {
1271   { &hf_s1ap_id             , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_ProtocolIE_ID },
1272   { &hf_s1ap_criticality    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_Criticality },
1273   { &hf_s1ap_ie_field_value , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_T_ie_field_value },
1274   { NULL, 0, 0, NULL }
1275 };
1276
1277 static int
1278 dissect_s1ap_ProtocolIE_Field(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1279   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1280                                    ett_s1ap_ProtocolIE_Field, ProtocolIE_Field_sequence);
1281
1282   return offset;
1283 }
1284
1285
1286 static const per_sequence_t ProtocolIE_Container_sequence_of[1] = {
1287   { &hf_s1ap_ProtocolIE_Container_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_ProtocolIE_Field },
1288 };
1289
1290 static int
1291 dissect_s1ap_ProtocolIE_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1292   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1293                                                   ett_s1ap_ProtocolIE_Container, ProtocolIE_Container_sequence_of,
1294                                                   0, maxProtocolIEs, FALSE);
1295
1296   return offset;
1297 }
1298
1299
1300
1301 static int
1302 dissect_s1ap_ProtocolIE_SingleContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1303   offset = dissect_s1ap_ProtocolIE_Field(tvb, offset, actx, tree, hf_index);
1304
1305   return offset;
1306 }
1307
1308
1309 static const per_sequence_t ProtocolIE_ContainerList_sequence_of[1] = {
1310   { &hf_s1ap_ProtocolIE_ContainerList_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_ProtocolIE_SingleContainer },
1311 };
1312
1313 static int
1314 dissect_s1ap_ProtocolIE_ContainerList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1315 #line 105 "s1ap.cnf"
1316   static const asn1_par_def_t ProtocolIE_ContainerList_pars[] = {
1317     { "lowerBound", ASN1_PAR_INTEGER },
1318     { "upperBound", ASN1_PAR_INTEGER },
1319     { NULL, 0 }
1320   };
1321   asn1_stack_frame_check(actx, "ProtocolIE-ContainerList", ProtocolIE_ContainerList_pars);
1322
1323   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1324                                                   ett_s1ap_ProtocolIE_ContainerList, ProtocolIE_ContainerList_sequence_of,
1325                                                   asn1_param_get_integer(actx,"lowerBound"), asn1_param_get_integer(actx,"upperBound"), FALSE);
1326
1327   return offset;
1328 }
1329
1330
1331
1332 static int
1333 dissect_s1ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1334   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue);
1335
1336   return offset;
1337 }
1338
1339
1340 static const per_sequence_t ProtocolExtensionField_sequence[] = {
1341   { &hf_s1ap_ext_id         , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_ProtocolExtensionID },
1342   { &hf_s1ap_criticality    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_Criticality },
1343   { &hf_s1ap_extensionValue , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_T_extensionValue },
1344   { NULL, 0, 0, NULL }
1345 };
1346
1347 static int
1348 dissect_s1ap_ProtocolExtensionField(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1349   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1350                                    ett_s1ap_ProtocolExtensionField, ProtocolExtensionField_sequence);
1351
1352   return offset;
1353 }
1354
1355
1356 static const per_sequence_t ProtocolExtensionContainer_sequence_of[1] = {
1357   { &hf_s1ap_ProtocolExtensionContainer_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_ProtocolExtensionField },
1358 };
1359
1360 static int
1361 dissect_s1ap_ProtocolExtensionContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1362   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1363                                                   ett_s1ap_ProtocolExtensionContainer, ProtocolExtensionContainer_sequence_of,
1364                                                   1, maxProtocolExtensions, FALSE);
1365
1366   return offset;
1367 }
1368
1369
1370
1371 static int
1372 dissect_s1ap_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1373   offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL);
1374
1375   return offset;
1376 }
1377
1378
1379 static const per_sequence_t PrivateIE_Field_sequence[] = {
1380   { &hf_s1ap_private_id     , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_PrivateIE_ID },
1381   { &hf_s1ap_criticality    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_Criticality },
1382   { &hf_s1ap_value          , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_T_value },
1383   { NULL, 0, 0, NULL }
1384 };
1385
1386 static int
1387 dissect_s1ap_PrivateIE_Field(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1388   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1389                                    ett_s1ap_PrivateIE_Field, PrivateIE_Field_sequence);
1390
1391   return offset;
1392 }
1393
1394
1395 static const per_sequence_t PrivateIE_Container_sequence_of[1] = {
1396   { &hf_s1ap_PrivateIE_Container_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_PrivateIE_Field },
1397 };
1398
1399 static int
1400 dissect_s1ap_PrivateIE_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1401   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1402                                                   ett_s1ap_PrivateIE_Container, PrivateIE_Container_sequence_of,
1403                                                   1, maxPrivateIEs, FALSE);
1404
1405   return offset;
1406 }
1407
1408
1409 static const value_string s1ap_PriorityLevel_vals[] = {
1410   {   0, "spare" },
1411   {   1, "highest" },
1412   {  14, "lowest" },
1413   {  15, "no-priority" },
1414   { 0, NULL }
1415 };
1416
1417
1418 static int
1419 dissect_s1ap_PriorityLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1420   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1421                                                             0U, 15U, NULL, FALSE);
1422
1423   return offset;
1424 }
1425
1426
1427 static const value_string s1ap_Pre_emptionCapability_vals[] = {
1428   {   0, "shall-not-trigger-pre-emption" },
1429   {   1, "may-trigger-pre-emption" },
1430   { 0, NULL }
1431 };
1432
1433
1434 static int
1435 dissect_s1ap_Pre_emptionCapability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1436   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1437                                      2, NULL, FALSE, 0, NULL);
1438
1439   return offset;
1440 }
1441
1442
1443 static const value_string s1ap_Pre_emptionVulnerability_vals[] = {
1444   {   0, "not-pre-emptable" },
1445   {   1, "pre-emptable" },
1446   { 0, NULL }
1447 };
1448
1449
1450 static int
1451 dissect_s1ap_Pre_emptionVulnerability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1452   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1453                                      2, NULL, FALSE, 0, NULL);
1454
1455   return offset;
1456 }
1457
1458
1459 static const per_sequence_t AllocationAndRetentionPriority_sequence[] = {
1460   { &hf_s1ap_priorityLevel  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_PriorityLevel },
1461   { &hf_s1ap_pre_emptionCapability, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_Pre_emptionCapability },
1462   { &hf_s1ap_pre_emptionVulnerability, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_Pre_emptionVulnerability },
1463   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
1464   { NULL, 0, 0, NULL }
1465 };
1466
1467 static int
1468 dissect_s1ap_AllocationAndRetentionPriority(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1469   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1470                                    ett_s1ap_AllocationAndRetentionPriority, AllocationAndRetentionPriority_sequence);
1471
1472   return offset;
1473 }
1474
1475
1476 static const per_sequence_t Bearers_SubjectToStatusTransferList_sequence_of[1] = {
1477   { &hf_s1ap_Bearers_SubjectToStatusTransferList_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_ProtocolIE_SingleContainer },
1478 };
1479
1480 static int
1481 dissect_s1ap_Bearers_SubjectToStatusTransferList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1482   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1483                                                   ett_s1ap_Bearers_SubjectToStatusTransferList, Bearers_SubjectToStatusTransferList_sequence_of,
1484                                                   1, maxNrOfE_RABs, FALSE);
1485
1486   return offset;
1487 }
1488
1489
1490
1491 static int
1492 dissect_s1ap_E_RAB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1493   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1494                                                             0U, 15U, NULL, TRUE);
1495
1496   return offset;
1497 }
1498
1499
1500
1501 static int
1502 dissect_s1ap_PDCP_SN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1503   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1504                                                             0U, 4095U, NULL, FALSE);
1505
1506   return offset;
1507 }
1508
1509
1510
1511 static int
1512 dissect_s1ap_HFN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1513   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1514                                                             0U, 1048575U, NULL, FALSE);
1515
1516   return offset;
1517 }
1518
1519
1520 static const per_sequence_t COUNTvalue_sequence[] = {
1521   { &hf_s1ap_pDCP_SN        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_PDCP_SN },
1522   { &hf_s1ap_hFN            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_HFN },
1523   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
1524   { NULL, 0, 0, NULL }
1525 };
1526
1527 static int
1528 dissect_s1ap_COUNTvalue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1529   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1530                                    ett_s1ap_COUNTvalue, COUNTvalue_sequence);
1531
1532   return offset;
1533 }
1534
1535
1536
1537 static int
1538 dissect_s1ap_ReceiveStatusofULPDCPSDUs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1539   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1540                                      4096, 4096, FALSE, NULL);
1541
1542   return offset;
1543 }
1544
1545
1546 static const per_sequence_t Bearers_SubjectToStatusTransfer_Item_sequence[] = {
1547   { &hf_s1ap_e_RAB_ID       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_E_RAB_ID },
1548   { &hf_s1ap_uL_COUNTvalue  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_COUNTvalue },
1549   { &hf_s1ap_dL_COUNTvalue  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_COUNTvalue },
1550   { &hf_s1ap_receiveStatusofULPDCPSDUs, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ReceiveStatusofULPDCPSDUs },
1551   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
1552   { NULL, 0, 0, NULL }
1553 };
1554
1555 static int
1556 dissect_s1ap_Bearers_SubjectToStatusTransfer_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1557   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1558                                    ett_s1ap_Bearers_SubjectToStatusTransfer_Item, Bearers_SubjectToStatusTransfer_Item_sequence);
1559
1560   return offset;
1561 }
1562
1563
1564
1565 static int
1566 dissect_s1ap_BitRate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1567   offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index,
1568                                                             0U, G_GINT64_CONSTANT(10000000000U), NULL, FALSE);
1569
1570   return offset;
1571 }
1572
1573
1574
1575
1576 static int
1577 dissect_s1ap_PLMNidentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1578 #line 167 "s1ap.cnf"
1579   tvbuff_t *parameter_tvb=NULL;
1580
1581   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1582                                        3, 3, FALSE, &parameter_tvb);
1583         if(tvb_length(tvb)==0) 
1584                 return offset;
1585                 
1586         if (!parameter_tvb)
1587                 return offset;
1588         dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, tree, 0, FALSE);
1589
1590
1591   return offset;
1592 }
1593
1594
1595 static const per_sequence_t BPLMNs_sequence_of[1] = {
1596   { &hf_s1ap_BPLMNs_item    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_PLMNidentity },
1597 };
1598
1599 static int
1600 dissect_s1ap_BPLMNs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1601   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1602                                                   ett_s1ap_BPLMNs, BPLMNs_sequence_of,
1603                                                   1, maxnoofBPLMNs, FALSE);
1604
1605   return offset;
1606 }
1607
1608
1609
1610 static int
1611 dissect_s1ap_CellIdentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1612   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1613                                      28, 28, FALSE, NULL);
1614
1615   return offset;
1616 }
1617
1618
1619 static const per_sequence_t EUTRAN_CGI_sequence[] = {
1620   { &hf_s1ap_pLMNidentity   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_PLMNidentity },
1621   { &hf_s1ap_cell_ID        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_CellIdentity },
1622   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
1623   { NULL, 0, 0, NULL }
1624 };
1625
1626 static int
1627 dissect_s1ap_EUTRAN_CGI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1628   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1629                                    ett_s1ap_EUTRAN_CGI, EUTRAN_CGI_sequence);
1630
1631   return offset;
1632 }
1633
1634
1635
1636 static int
1637 dissect_s1ap_NumberOfBroadcasts(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1638   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1639                                                             0U, 65535U, NULL, FALSE);
1640
1641   return offset;
1642 }
1643
1644
1645 static const per_sequence_t CellID_Cancelled_Item_sequence[] = {
1646   { &hf_s1ap_eCGI           , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_EUTRAN_CGI },
1647   { &hf_s1ap_numberOfBroadcasts, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_NumberOfBroadcasts },
1648   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
1649   { NULL, 0, 0, NULL }
1650 };
1651
1652 static int
1653 dissect_s1ap_CellID_Cancelled_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1654   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1655                                    ett_s1ap_CellID_Cancelled_Item, CellID_Cancelled_Item_sequence);
1656
1657   return offset;
1658 }
1659
1660
1661 static const per_sequence_t CellID_Cancelled_sequence_of[1] = {
1662   { &hf_s1ap_CellID_Cancelled_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_CellID_Cancelled_Item },
1663 };
1664
1665 static int
1666 dissect_s1ap_CellID_Cancelled(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1667   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1668                                                   ett_s1ap_CellID_Cancelled, CellID_Cancelled_sequence_of,
1669                                                   1, maxnoofCellID, FALSE);
1670
1671   return offset;
1672 }
1673
1674
1675
1676 static int
1677 dissect_s1ap_TAC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1678   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1679                                        2, 2, FALSE, NULL);
1680
1681   return offset;
1682 }
1683
1684
1685 static const per_sequence_t TAI_sequence[] = {
1686   { &hf_s1ap_pLMNidentity   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_PLMNidentity },
1687   { &hf_s1ap_tAC            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_TAC },
1688   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
1689   { NULL, 0, 0, NULL }
1690 };
1691
1692 static int
1693 dissect_s1ap_TAI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1694   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1695                                    ett_s1ap_TAI, TAI_sequence);
1696
1697   return offset;
1698 }
1699
1700
1701 static const per_sequence_t CancelledCellinTAI_Item_sequence[] = {
1702   { &hf_s1ap_eCGI           , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_EUTRAN_CGI },
1703   { &hf_s1ap_numberOfBroadcasts, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_NumberOfBroadcasts },
1704   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
1705   { NULL, 0, 0, NULL }
1706 };
1707
1708 static int
1709 dissect_s1ap_CancelledCellinTAI_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1710   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1711                                    ett_s1ap_CancelledCellinTAI_Item, CancelledCellinTAI_Item_sequence);
1712
1713   return offset;
1714 }
1715
1716
1717 static const per_sequence_t CancelledCellinTAI_sequence_of[1] = {
1718   { &hf_s1ap_CancelledCellinTAI_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_CancelledCellinTAI_Item },
1719 };
1720
1721 static int
1722 dissect_s1ap_CancelledCellinTAI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1723   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1724                                                   ett_s1ap_CancelledCellinTAI, CancelledCellinTAI_sequence_of,
1725                                                   1, maxnoofCellinTAI, FALSE);
1726
1727   return offset;
1728 }
1729
1730
1731 static const per_sequence_t TAI_Cancelled_Item_sequence[] = {
1732   { &hf_s1ap_tAI            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_TAI },
1733   { &hf_s1ap_cancelledCellinTAI, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_CancelledCellinTAI },
1734   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
1735   { NULL, 0, 0, NULL }
1736 };
1737
1738 static int
1739 dissect_s1ap_TAI_Cancelled_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1740   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1741                                    ett_s1ap_TAI_Cancelled_Item, TAI_Cancelled_Item_sequence);
1742
1743   return offset;
1744 }
1745
1746
1747 static const per_sequence_t TAI_Cancelled_sequence_of[1] = {
1748   { &hf_s1ap_TAI_Cancelled_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_TAI_Cancelled_Item },
1749 };
1750
1751 static int
1752 dissect_s1ap_TAI_Cancelled(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1753   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1754                                                   ett_s1ap_TAI_Cancelled, TAI_Cancelled_sequence_of,
1755                                                   1, maxnoofTAIforWarning, FALSE);
1756
1757   return offset;
1758 }
1759
1760
1761
1762 static int
1763 dissect_s1ap_EmergencyAreaID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1764   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1765                                        3, 3, FALSE, NULL);
1766
1767   return offset;
1768 }
1769
1770
1771 static const per_sequence_t CancelledCellinEAI_Item_sequence[] = {
1772   { &hf_s1ap_eCGI           , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_EUTRAN_CGI },
1773   { &hf_s1ap_numberOfBroadcasts, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_NumberOfBroadcasts },
1774   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
1775   { NULL, 0, 0, NULL }
1776 };
1777
1778 static int
1779 dissect_s1ap_CancelledCellinEAI_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1780   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1781                                    ett_s1ap_CancelledCellinEAI_Item, CancelledCellinEAI_Item_sequence);
1782
1783   return offset;
1784 }
1785
1786
1787 static const per_sequence_t CancelledCellinEAI_sequence_of[1] = {
1788   { &hf_s1ap_CancelledCellinEAI_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_CancelledCellinEAI_Item },
1789 };
1790
1791 static int
1792 dissect_s1ap_CancelledCellinEAI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1793   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1794                                                   ett_s1ap_CancelledCellinEAI, CancelledCellinEAI_sequence_of,
1795                                                   1, maxnoofCellinEAI, FALSE);
1796
1797   return offset;
1798 }
1799
1800
1801 static const per_sequence_t EmergencyAreaID_Cancelled_Item_sequence[] = {
1802   { &hf_s1ap_emergencyAreaID, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_EmergencyAreaID },
1803   { &hf_s1ap_cancelledCellinEAI, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_CancelledCellinEAI },
1804   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
1805   { NULL, 0, 0, NULL }
1806 };
1807
1808 static int
1809 dissect_s1ap_EmergencyAreaID_Cancelled_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1810   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1811                                    ett_s1ap_EmergencyAreaID_Cancelled_Item, EmergencyAreaID_Cancelled_Item_sequence);
1812
1813   return offset;
1814 }
1815
1816
1817 static const per_sequence_t EmergencyAreaID_Cancelled_sequence_of[1] = {
1818   { &hf_s1ap_EmergencyAreaID_Cancelled_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_EmergencyAreaID_Cancelled_Item },
1819 };
1820
1821 static int
1822 dissect_s1ap_EmergencyAreaID_Cancelled(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1823   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1824                                                   ett_s1ap_EmergencyAreaID_Cancelled, EmergencyAreaID_Cancelled_sequence_of,
1825                                                   1, maxnoofEmergencyAreaID, FALSE);
1826
1827   return offset;
1828 }
1829
1830
1831 static const value_string s1ap_BroadcastCancelledAreaList_vals[] = {
1832   {   0, "cellID-Cancelled" },
1833   {   1, "tAI-Cancelled" },
1834   {   2, "emergencyAreaID-Cancelled" },
1835   { 0, NULL }
1836 };
1837
1838 static const per_choice_t BroadcastCancelledAreaList_choice[] = {
1839   {   0, &hf_s1ap_cellID_Cancelled, ASN1_EXTENSION_ROOT    , dissect_s1ap_CellID_Cancelled },
1840   {   1, &hf_s1ap_tAI_Cancelled  , ASN1_EXTENSION_ROOT    , dissect_s1ap_TAI_Cancelled },
1841   {   2, &hf_s1ap_emergencyAreaID_Cancelled, ASN1_EXTENSION_ROOT    , dissect_s1ap_EmergencyAreaID_Cancelled },
1842   { 0, NULL, 0, NULL }
1843 };
1844
1845 static int
1846 dissect_s1ap_BroadcastCancelledAreaList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1847   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1848                                  ett_s1ap_BroadcastCancelledAreaList, BroadcastCancelledAreaList_choice,
1849                                  NULL);
1850
1851   return offset;
1852 }
1853
1854
1855 static const per_sequence_t CellID_Broadcast_Item_sequence[] = {
1856   { &hf_s1ap_eCGI           , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_EUTRAN_CGI },
1857   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
1858   { NULL, 0, 0, NULL }
1859 };
1860
1861 static int
1862 dissect_s1ap_CellID_Broadcast_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1863   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1864                                    ett_s1ap_CellID_Broadcast_Item, CellID_Broadcast_Item_sequence);
1865
1866   return offset;
1867 }
1868
1869
1870 static const per_sequence_t CellID_Broadcast_sequence_of[1] = {
1871   { &hf_s1ap_CellID_Broadcast_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_CellID_Broadcast_Item },
1872 };
1873
1874 static int
1875 dissect_s1ap_CellID_Broadcast(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1876   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1877                                                   ett_s1ap_CellID_Broadcast, CellID_Broadcast_sequence_of,
1878                                                   1, maxnoofCellID, FALSE);
1879
1880   return offset;
1881 }
1882
1883
1884 static const per_sequence_t CompletedCellinTAI_Item_sequence[] = {
1885   { &hf_s1ap_eCGI           , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_EUTRAN_CGI },
1886   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
1887   { NULL, 0, 0, NULL }
1888 };
1889
1890 static int
1891 dissect_s1ap_CompletedCellinTAI_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1892   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1893                                    ett_s1ap_CompletedCellinTAI_Item, CompletedCellinTAI_Item_sequence);
1894
1895   return offset;
1896 }
1897
1898
1899 static const per_sequence_t CompletedCellinTAI_sequence_of[1] = {
1900   { &hf_s1ap_CompletedCellinTAI_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_CompletedCellinTAI_Item },
1901 };
1902
1903 static int
1904 dissect_s1ap_CompletedCellinTAI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1905   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1906                                                   ett_s1ap_CompletedCellinTAI, CompletedCellinTAI_sequence_of,
1907                                                   1, maxnoofCellinTAI, FALSE);
1908
1909   return offset;
1910 }
1911
1912
1913 static const per_sequence_t TAI_Broadcast_Item_sequence[] = {
1914   { &hf_s1ap_tAI            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_TAI },
1915   { &hf_s1ap_completedCellinTAI, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_CompletedCellinTAI },
1916   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
1917   { NULL, 0, 0, NULL }
1918 };
1919
1920 static int
1921 dissect_s1ap_TAI_Broadcast_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1922   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1923                                    ett_s1ap_TAI_Broadcast_Item, TAI_Broadcast_Item_sequence);
1924
1925   return offset;
1926 }
1927
1928
1929 static const per_sequence_t TAI_Broadcast_sequence_of[1] = {
1930   { &hf_s1ap_TAI_Broadcast_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_TAI_Broadcast_Item },
1931 };
1932
1933 static int
1934 dissect_s1ap_TAI_Broadcast(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1935   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1936                                                   ett_s1ap_TAI_Broadcast, TAI_Broadcast_sequence_of,
1937                                                   1, maxnoofTAIforWarning, FALSE);
1938
1939   return offset;
1940 }
1941
1942
1943 static const per_sequence_t CompletedCellinEAI_Item_sequence[] = {
1944   { &hf_s1ap_eCGI           , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_EUTRAN_CGI },
1945   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
1946   { NULL, 0, 0, NULL }
1947 };
1948
1949 static int
1950 dissect_s1ap_CompletedCellinEAI_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1951   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1952                                    ett_s1ap_CompletedCellinEAI_Item, CompletedCellinEAI_Item_sequence);
1953
1954   return offset;
1955 }
1956
1957
1958 static const per_sequence_t CompletedCellinEAI_sequence_of[1] = {
1959   { &hf_s1ap_CompletedCellinEAI_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_CompletedCellinEAI_Item },
1960 };
1961
1962 static int
1963 dissect_s1ap_CompletedCellinEAI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1964   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1965                                                   ett_s1ap_CompletedCellinEAI, CompletedCellinEAI_sequence_of,
1966                                                   1, maxnoofCellinEAI, FALSE);
1967
1968   return offset;
1969 }
1970
1971
1972 static const per_sequence_t EmergencyAreaID_Broadcast_Item_sequence[] = {
1973   { &hf_s1ap_emergencyAreaID, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_EmergencyAreaID },
1974   { &hf_s1ap_completedCellinEAI, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_CompletedCellinEAI },
1975   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
1976   { NULL, 0, 0, NULL }
1977 };
1978
1979 static int
1980 dissect_s1ap_EmergencyAreaID_Broadcast_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1981   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1982                                    ett_s1ap_EmergencyAreaID_Broadcast_Item, EmergencyAreaID_Broadcast_Item_sequence);
1983
1984   return offset;
1985 }
1986
1987
1988 static const per_sequence_t EmergencyAreaID_Broadcast_sequence_of[1] = {
1989   { &hf_s1ap_EmergencyAreaID_Broadcast_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_EmergencyAreaID_Broadcast_Item },
1990 };
1991
1992 static int
1993 dissect_s1ap_EmergencyAreaID_Broadcast(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1994   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1995                                                   ett_s1ap_EmergencyAreaID_Broadcast, EmergencyAreaID_Broadcast_sequence_of,
1996                                                   1, maxnoofEmergencyAreaID, FALSE);
1997
1998   return offset;
1999 }
2000
2001
2002 static const value_string s1ap_BroadcastCompletedAreaList_vals[] = {
2003   {   0, "cellID-Broadcast" },
2004   {   1, "tAI-Broadcast" },
2005   {   2, "emergencyAreaID-Broadcast" },
2006   { 0, NULL }
2007 };
2008
2009 static const per_choice_t BroadcastCompletedAreaList_choice[] = {
2010   {   0, &hf_s1ap_cellID_Broadcast, ASN1_EXTENSION_ROOT    , dissect_s1ap_CellID_Broadcast },
2011   {   1, &hf_s1ap_tAI_Broadcast  , ASN1_EXTENSION_ROOT    , dissect_s1ap_TAI_Broadcast },
2012   {   2, &hf_s1ap_emergencyAreaID_Broadcast, ASN1_EXTENSION_ROOT    , dissect_s1ap_EmergencyAreaID_Broadcast },
2013   { 0, NULL, 0, NULL }
2014 };
2015
2016 static int
2017 dissect_s1ap_BroadcastCompletedAreaList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2018   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2019                                  ett_s1ap_BroadcastCompletedAreaList, BroadcastCompletedAreaList_choice,
2020                                  NULL);
2021
2022   return offset;
2023 }
2024
2025
2026 static const value_string s1ap_CauseRadioNetwork_vals[] = {
2027   {   0, "unspecified" },
2028   {   1, "tx2relocoverall-expiry" },
2029   {   2, "successful-handover" },
2030   {   3, "release-due-to-eutran-generated-reason" },
2031   {   4, "handover-cancelled" },
2032   {   5, "partial-handover" },
2033   {   6, "ho-failure-in-target-EPC-eNB-or-target-system" },
2034   {   7, "ho-target-not-allowed" },
2035   {   8, "tS1relocoverall-expiry" },
2036   {   9, "tS1relocprep-expiry" },
2037   {  10, "cell-not-available" },
2038   {  11, "unknown-targetID" },
2039   {  12, "no-radio-resources-available-in-target-cell" },
2040   {  13, "unknown-mme-ue-s1ap-id" },
2041   {  14, "unknown-enb-ue-s1ap-id" },
2042   {  15, "unknown-pair-ue-s1ap-id" },
2043   {  16, "handover-desirable-for-radio-reason" },
2044   {  17, "time-critical-handover" },
2045   {  18, "resource-optimisation-handover" },
2046   {  19, "reduce-load-in-serving-cell" },
2047   {  20, "user-inactivity" },
2048   {  21, "radio-connection-with-ue-lost" },
2049   {  22, "load-balancing-tau-required" },
2050   {  23, "cs-fallback-triggered" },
2051   {  24, "ue-not-available-for-ps-service" },
2052   {  25, "radio-resources-not-available" },
2053   {  26, "failure-in-radio-interface-procedure" },
2054   {  27, "invalid-qos-combination" },
2055   {  28, "interrat-redirection" },
2056   {  29, "interaction-with-other-procedure" },
2057   {  30, "unknown-E-RAB-ID" },
2058   {  31, "multiple-E-RAB-ID-instances" },
2059   {  32, "encryption-and-or-integrity-protection-algorithms-not-supported" },
2060   {  33, "s1-intra-system-handover-triggered" },
2061   {  34, "s1-inter-system-handover-triggered" },
2062   {  35, "x2-handover-triggered" },
2063   {  36, "redirection-towards-1xRTT" },
2064   {  37, "not-supported-QCI-value" },
2065   {  38, "invalid-CSG-Id" },
2066   { 0, NULL }
2067 };
2068
2069
2070 static int
2071 dissect_s1ap_CauseRadioNetwork(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2072   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2073                                      36, NULL, TRUE, 3, NULL);
2074
2075   return offset;
2076 }
2077
2078
2079 static const value_string s1ap_CauseTransport_vals[] = {
2080   {   0, "transport-resource-unavailable" },
2081   {   1, "unspecified" },
2082   { 0, NULL }
2083 };
2084
2085
2086 static int
2087 dissect_s1ap_CauseTransport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2088   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2089                                      2, NULL, TRUE, 0, NULL);
2090
2091   return offset;
2092 }
2093
2094
2095 static const value_string s1ap_CauseNas_vals[] = {
2096   {   0, "normal-release" },
2097   {   1, "authentication-failure" },
2098   {   2, "detach" },
2099   {   3, "unspecified" },
2100   { 0, NULL }
2101 };
2102
2103
2104 static int
2105 dissect_s1ap_CauseNas(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2106   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2107                                      4, NULL, TRUE, 0, NULL);
2108
2109   return offset;
2110 }
2111
2112
2113 static const value_string s1ap_CauseProtocol_vals[] = {
2114   {   0, "transfer-syntax-error" },
2115   {   1, "abstract-syntax-error-reject" },
2116   {   2, "abstract-syntax-error-ignore-and-notify" },
2117   {   3, "message-not-compatible-with-receiver-state" },
2118   {   4, "semantic-error" },
2119   {   5, "abstract-syntax-error-falsely-constructed-message" },
2120   {   6, "unspecified" },
2121   { 0, NULL }
2122 };
2123
2124
2125 static int
2126 dissect_s1ap_CauseProtocol(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2127   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2128                                      7, NULL, TRUE, 0, NULL);
2129
2130   return offset;
2131 }
2132
2133
2134 static const value_string s1ap_CauseMisc_vals[] = {
2135   {   0, "control-processing-overload" },
2136   {   1, "not-enough-user-plane-processing-resources" },
2137   {   2, "hardware-failure" },
2138   {   3, "om-intervention" },
2139   {   4, "unspecified" },
2140   {   5, "unknown-PLMN" },
2141   { 0, NULL }
2142 };
2143
2144
2145 static int
2146 dissect_s1ap_CauseMisc(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2147   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2148                                      6, NULL, TRUE, 0, NULL);
2149
2150   return offset;
2151 }
2152
2153
2154 static const value_string s1ap_Cause_vals[] = {
2155   {   0, "radioNetwork" },
2156   {   1, "transport" },
2157   {   2, "nas" },
2158   {   3, "protocol" },
2159   {   4, "misc" },
2160   { 0, NULL }
2161 };
2162
2163 static const per_choice_t Cause_choice[] = {
2164   {   0, &hf_s1ap_radioNetwork   , ASN1_EXTENSION_ROOT    , dissect_s1ap_CauseRadioNetwork },
2165   {   1, &hf_s1ap_transport      , ASN1_EXTENSION_ROOT    , dissect_s1ap_CauseTransport },
2166   {   2, &hf_s1ap_nas            , ASN1_EXTENSION_ROOT    , dissect_s1ap_CauseNas },
2167   {   3, &hf_s1ap_protocol       , ASN1_EXTENSION_ROOT    , dissect_s1ap_CauseProtocol },
2168   {   4, &hf_s1ap_misc           , ASN1_EXTENSION_ROOT    , dissect_s1ap_CauseMisc },
2169   { 0, NULL, 0, NULL }
2170 };
2171
2172 static int
2173 dissect_s1ap_Cause(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2174   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2175                                  ett_s1ap_Cause, Cause_choice,
2176                                  NULL);
2177
2178   return offset;
2179 }
2180
2181
2182 static const value_string s1ap_CellAccessMode_vals[] = {
2183   {   0, "hybrid" },
2184   { 0, NULL }
2185 };
2186
2187
2188 static int
2189 dissect_s1ap_CellAccessMode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2190   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2191                                      1, NULL, TRUE, 0, NULL);
2192
2193   return offset;
2194 }
2195
2196
2197
2198 static int
2199 dissect_s1ap_Cdma2000PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2200   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
2201                                        NO_BOUND, NO_BOUND, FALSE, NULL);
2202
2203   return offset;
2204 }
2205
2206
2207 static const value_string s1ap_Cdma2000RATType_vals[] = {
2208   {   0, "hRPD" },
2209   {   1, "onexRTT" },
2210   { 0, NULL }
2211 };
2212
2213
2214 static int
2215 dissect_s1ap_Cdma2000RATType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2216   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2217                                      2, NULL, TRUE, 0, NULL);
2218
2219   return offset;
2220 }
2221
2222
2223
2224 static int
2225 dissect_s1ap_Cdma2000SectorID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2226   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
2227                                        NO_BOUND, NO_BOUND, FALSE, NULL);
2228
2229   return offset;
2230 }
2231
2232
2233 static const value_string s1ap_Cdma2000HOStatus_vals[] = {
2234   {   0, "hOSuccess" },
2235   {   1, "hOFailure" },
2236   { 0, NULL }
2237 };
2238
2239
2240 static int
2241 dissect_s1ap_Cdma2000HOStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2242   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2243                                      2, NULL, TRUE, 0, NULL);
2244
2245   return offset;
2246 }
2247
2248
2249 static const value_string s1ap_Cdma2000HORequiredIndication_vals[] = {
2250   {   0, "true" },
2251   { 0, NULL }
2252 };
2253
2254
2255 static int
2256 dissect_s1ap_Cdma2000HORequiredIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2257   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2258                                      1, NULL, TRUE, 0, NULL);
2259
2260   return offset;
2261 }
2262
2263
2264
2265 static int
2266 dissect_s1ap_Cdma2000OneXMEID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2267   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
2268                                        NO_BOUND, NO_BOUND, FALSE, NULL);
2269
2270   return offset;
2271 }
2272
2273
2274
2275 static int
2276 dissect_s1ap_Cdma2000OneXMSI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2277   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
2278                                        NO_BOUND, NO_BOUND, FALSE, NULL);
2279
2280   return offset;
2281 }
2282
2283
2284
2285 static int
2286 dissect_s1ap_Cdma2000OneXPilot(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2287   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
2288                                        NO_BOUND, NO_BOUND, FALSE, NULL);
2289
2290   return offset;
2291 }
2292
2293
2294 static const per_sequence_t Cdma2000OneXSRVCCInfo_sequence[] = {
2295   { &hf_s1ap_cdma2000OneXMEID, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_Cdma2000OneXMEID },
2296   { &hf_s1ap_cdma2000OneXMSI, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_Cdma2000OneXMSI },
2297   { &hf_s1ap_cdma2000OneXPilot, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_Cdma2000OneXPilot },
2298   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
2299   { NULL, 0, 0, NULL }
2300 };
2301
2302 static int
2303 dissect_s1ap_Cdma2000OneXSRVCCInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2304   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2305                                    ett_s1ap_Cdma2000OneXSRVCCInfo, Cdma2000OneXSRVCCInfo_sequence);
2306
2307   return offset;
2308 }
2309
2310
2311
2312 static int
2313 dissect_s1ap_Cdma2000OneXRAND(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2314   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
2315                                        NO_BOUND, NO_BOUND, FALSE, NULL);
2316
2317   return offset;
2318 }
2319
2320
2321 static const value_string s1ap_Cell_Size_vals[] = {
2322   {   0, "verysmall" },
2323   {   1, "small" },
2324   {   2, "medium" },
2325   {   3, "large" },
2326   { 0, NULL }
2327 };
2328
2329
2330 static int
2331 dissect_s1ap_Cell_Size(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2332   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2333                                      4, NULL, TRUE, 0, NULL);
2334
2335   return offset;
2336 }
2337
2338
2339 static const per_sequence_t CellType_sequence[] = {
2340   { &hf_s1ap_cell_Size      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_Cell_Size },
2341   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
2342   { NULL, 0, 0, NULL }
2343 };
2344
2345 static int
2346 dissect_s1ap_CellType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2347   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2348                                    ett_s1ap_CellType, CellType_sequence);
2349
2350   return offset;
2351 }
2352
2353
2354
2355 static int
2356 dissect_s1ap_LAC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2357   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
2358                                        2, 2, FALSE, NULL);
2359
2360   return offset;
2361 }
2362
2363
2364
2365 static int
2366 dissect_s1ap_CI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2367   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
2368                                        2, 2, FALSE, NULL);
2369
2370   return offset;
2371 }
2372
2373
2374
2375 static int
2376 dissect_s1ap_RAC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2377   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
2378                                        1, 1, FALSE, NULL);
2379
2380   return offset;
2381 }
2382
2383
2384 static const per_sequence_t CGI_sequence[] = {
2385   { &hf_s1ap_pLMNidentity   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_PLMNidentity },
2386   { &hf_s1ap_lAC            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_LAC },
2387   { &hf_s1ap_cI             , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_CI },
2388   { &hf_s1ap_rAC            , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_RAC },
2389   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
2390   { NULL, 0, 0, NULL }
2391 };
2392
2393 static int
2394 dissect_s1ap_CGI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2395   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2396                                    ett_s1ap_CGI, CGI_sequence);
2397
2398   return offset;
2399 }
2400
2401
2402 static const value_string s1ap_CNDomain_vals[] = {
2403   {   0, "ps" },
2404   {   1, "cs" },
2405   { 0, NULL }
2406 };
2407
2408
2409 static int
2410 dissect_s1ap_CNDomain(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2411   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2412                                      2, NULL, FALSE, 0, NULL);
2413
2414   return offset;
2415 }
2416
2417
2418 static const value_string s1ap_ConcurrentWarningMessageIndicator_vals[] = {
2419   {   0, "true" },
2420   { 0, NULL }
2421 };
2422
2423
2424 static int
2425 dissect_s1ap_ConcurrentWarningMessageIndicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2426   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2427                                      1, NULL, FALSE, 0, NULL);
2428
2429   return offset;
2430 }
2431
2432
2433 static const value_string s1ap_CSFallbackIndicator_vals[] = {
2434   {   0, "cs-fallback-required" },
2435   {   1, "cs-fallback-high-priority" },
2436   { 0, NULL }
2437 };
2438
2439
2440 static int
2441 dissect_s1ap_CSFallbackIndicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2442   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2443                                      1, NULL, TRUE, 1, NULL);
2444
2445   return offset;
2446 }
2447
2448
2449
2450 static int
2451 dissect_s1ap_CSG_Id(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2452   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
2453                                      27, 27, FALSE, NULL);
2454
2455   return offset;
2456 }
2457
2458
2459 static const per_sequence_t CSG_IdList_Item_sequence[] = {
2460   { &hf_s1ap_cSG_Id         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_CSG_Id },
2461   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
2462   { NULL, 0, 0, NULL }
2463 };
2464
2465 static int
2466 dissect_s1ap_CSG_IdList_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2467   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2468                                    ett_s1ap_CSG_IdList_Item, CSG_IdList_Item_sequence);
2469
2470   return offset;
2471 }
2472
2473
2474 static const per_sequence_t CSG_IdList_sequence_of[1] = {
2475   { &hf_s1ap_CSG_IdList_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_CSG_IdList_Item },
2476 };
2477
2478 static int
2479 dissect_s1ap_CSG_IdList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2480   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2481                                                   ett_s1ap_CSG_IdList, CSG_IdList_sequence_of,
2482                                                   1, maxNrOfCSGs, FALSE);
2483
2484   return offset;
2485 }
2486
2487
2488 static const value_string s1ap_CSGMembershipStatus_vals[] = {
2489   {   0, "member" },
2490   {   1, "not-member" },
2491   { 0, NULL }
2492 };
2493
2494
2495 static int
2496 dissect_s1ap_CSGMembershipStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2497   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2498                                      2, NULL, FALSE, 0, NULL);
2499
2500   return offset;
2501 }
2502
2503
2504 static const value_string s1ap_TypeOfError_vals[] = {
2505   {   0, "not-understood" },
2506   {   1, "missing" },
2507   { 0, NULL }
2508 };
2509
2510
2511 static int
2512 dissect_s1ap_TypeOfError(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2513   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2514                                      2, NULL, TRUE, 0, NULL);
2515
2516   return offset;
2517 }
2518
2519
2520 static const per_sequence_t CriticalityDiagnostics_IE_Item_sequence[] = {
2521   { &hf_s1ap_iECriticality  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_Criticality },
2522   { &hf_s1ap_iE_ID          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_ProtocolIE_ID },
2523   { &hf_s1ap_typeOfError    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_TypeOfError },
2524   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
2525   { NULL, 0, 0, NULL }
2526 };
2527
2528 static int
2529 dissect_s1ap_CriticalityDiagnostics_IE_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2530   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2531                                    ett_s1ap_CriticalityDiagnostics_IE_Item, CriticalityDiagnostics_IE_Item_sequence);
2532
2533   return offset;
2534 }
2535
2536
2537 static const per_sequence_t CriticalityDiagnostics_IE_List_sequence_of[1] = {
2538   { &hf_s1ap_CriticalityDiagnostics_IE_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_CriticalityDiagnostics_IE_Item },
2539 };
2540
2541 static int
2542 dissect_s1ap_CriticalityDiagnostics_IE_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2543   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2544                                                   ett_s1ap_CriticalityDiagnostics_IE_List, CriticalityDiagnostics_IE_List_sequence_of,
2545                                                   1, maxNrOfErrors, FALSE);
2546
2547   return offset;
2548 }
2549
2550
2551 static const per_sequence_t CriticalityDiagnostics_sequence[] = {
2552   { &hf_s1ap_procedureCode  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProcedureCode },
2553   { &hf_s1ap_triggeringMessage, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_TriggeringMessage },
2554   { &hf_s1ap_procedureCriticality, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_Criticality },
2555   { &hf_s1ap_iEsCriticalityDiagnostics, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_CriticalityDiagnostics_IE_List },
2556   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
2557   { NULL, 0, 0, NULL }
2558 };
2559
2560 static int
2561 dissect_s1ap_CriticalityDiagnostics(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2562   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2563                                    ett_s1ap_CriticalityDiagnostics, CriticalityDiagnostics_sequence);
2564
2565   return offset;
2566 }
2567
2568
2569
2570 static int
2571 dissect_s1ap_DataCodingScheme(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2572   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
2573                                      8, 8, FALSE, NULL);
2574
2575   return offset;
2576 }
2577
2578
2579 static const value_string s1ap_DL_Forwarding_vals[] = {
2580   {   0, "dL-Forwarding-proposed" },
2581   { 0, NULL }
2582 };
2583
2584
2585 static int
2586 dissect_s1ap_DL_Forwarding(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2587   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2588                                      1, NULL, TRUE, 0, NULL);
2589
2590   return offset;
2591 }
2592
2593
2594 static const value_string s1ap_Direct_Forwarding_Path_Availability_vals[] = {
2595   {   0, "directPathAvailable" },
2596   { 0, NULL }
2597 };
2598
2599
2600 static int
2601 dissect_s1ap_Direct_Forwarding_Path_Availability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2602   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2603                                      1, NULL, TRUE, 0, NULL);
2604
2605   return offset;
2606 }
2607
2608
2609 static const value_string s1ap_Data_Forwarding_Not_Possible_vals[] = {
2610   {   0, "data-Forwarding-not-Possible" },
2611   { 0, NULL }
2612 };
2613
2614
2615 static int
2616 dissect_s1ap_Data_Forwarding_Not_Possible(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2617   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2618                                      1, NULL, TRUE, 0, NULL);
2619
2620   return offset;
2621 }
2622
2623
2624 static const per_sequence_t ECGIList_sequence_of[1] = {
2625   { &hf_s1ap_ECGIList_item  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_EUTRAN_CGI },
2626 };
2627
2628 static int
2629 dissect_s1ap_ECGIList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2630   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2631                                                   ett_s1ap_ECGIList, ECGIList_sequence_of,
2632                                                   1, maxnoofCellID, FALSE);
2633
2634   return offset;
2635 }
2636
2637
2638 static const per_sequence_t EmergencyAreaIDList_sequence_of[1] = {
2639   { &hf_s1ap_EmergencyAreaIDList_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_EmergencyAreaID },
2640 };
2641
2642 static int
2643 dissect_s1ap_EmergencyAreaIDList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2644   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2645                                                   ett_s1ap_EmergencyAreaIDList, EmergencyAreaIDList_sequence_of,
2646                                                   1, maxnoofEmergencyAreaID, FALSE);
2647
2648   return offset;
2649 }
2650
2651
2652
2653 static int
2654 dissect_s1ap_BIT_STRING_SIZE_20(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2655   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
2656                                      20, 20, FALSE, NULL);
2657
2658   return offset;
2659 }
2660
2661
2662
2663 static int
2664 dissect_s1ap_BIT_STRING_SIZE_28(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2665   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
2666                                      28, 28, FALSE, NULL);
2667
2668   return offset;
2669 }
2670
2671
2672 static const value_string s1ap_ENB_ID_vals[] = {
2673   {   0, "macroENB-ID" },
2674   {   1, "homeENB-ID" },
2675   { 0, NULL }
2676 };
2677
2678 static const per_choice_t ENB_ID_choice[] = {
2679   {   0, &hf_s1ap_macroENB_ID    , ASN1_EXTENSION_ROOT    , dissect_s1ap_BIT_STRING_SIZE_20 },
2680   {   1, &hf_s1ap_homeENB_ID     , ASN1_EXTENSION_ROOT    , dissect_s1ap_BIT_STRING_SIZE_28 },
2681   { 0, NULL, 0, NULL }
2682 };
2683
2684 static int
2685 dissect_s1ap_ENB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2686   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2687                                  ett_s1ap_ENB_ID, ENB_ID_choice,
2688                                  NULL);
2689
2690   return offset;
2691 }
2692
2693
2694 static const per_sequence_t LAI_sequence[] = {
2695   { &hf_s1ap_pLMNidentity   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_PLMNidentity },
2696   { &hf_s1ap_lAC            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_LAC },
2697   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
2698   { NULL, 0, 0, NULL }
2699 };
2700
2701 static int
2702 dissect_s1ap_LAI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2703   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2704                                    ett_s1ap_LAI, LAI_sequence);
2705
2706   return offset;
2707 }
2708
2709
2710 static const per_sequence_t GERAN_Cell_ID_sequence[] = {
2711   { &hf_s1ap_lAI            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_LAI },
2712   { &hf_s1ap_rAC            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_RAC },
2713   { &hf_s1ap_cI             , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_CI },
2714   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
2715   { NULL, 0, 0, NULL }
2716 };
2717
2718 static int
2719 dissect_s1ap_GERAN_Cell_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2720   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2721                                    ett_s1ap_GERAN_Cell_ID, GERAN_Cell_ID_sequence);
2722
2723   return offset;
2724 }
2725
2726
2727 static const per_sequence_t Global_ENB_ID_sequence[] = {
2728   { &hf_s1ap_pLMNidentity   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_PLMNidentity },
2729   { &hf_s1ap_eNB_ID         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_ENB_ID },
2730   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
2731   { NULL, 0, 0, NULL }
2732 };
2733
2734 static int
2735 dissect_s1ap_Global_ENB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2736   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2737                                    ett_s1ap_Global_ENB_ID, Global_ENB_ID_sequence);
2738
2739   return offset;
2740 }
2741
2742
2743 static const per_sequence_t ENB_StatusTransfer_TransparentContainer_sequence[] = {
2744   { &hf_s1ap_bearers_SubjectToStatusTransferList, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_Bearers_SubjectToStatusTransferList },
2745   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
2746   { NULL, 0, 0, NULL }
2747 };
2748
2749 static int
2750 dissect_s1ap_ENB_StatusTransfer_TransparentContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2751   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2752                                    ett_s1ap_ENB_StatusTransfer_TransparentContainer, ENB_StatusTransfer_TransparentContainer_sequence);
2753
2754   return offset;
2755 }
2756
2757
2758
2759 static int
2760 dissect_s1ap_ENB_UE_S1AP_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2761   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2762                                                             0U, 16777215U, NULL, FALSE);
2763
2764   return offset;
2765 }
2766
2767
2768
2769 static int
2770 dissect_s1ap_ENBname(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2771   offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index,
2772                                           1, 150, TRUE);
2773
2774   return offset;
2775 }
2776
2777
2778
2779 static int
2780 dissect_s1ap_TransportLayerAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2781 #line 189 "s1ap.cnf"
2782   tvbuff_t *parameter_tvb=NULL;
2783   proto_tree *subtree;
2784   gint tvb_len;
2785   
2786   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
2787                                      1, 160, TRUE, &parameter_tvb);
2788
2789   if (!parameter_tvb)
2790     return offset;
2791
2792         /* Get the length */
2793         tvb_len = tvb_length(parameter_tvb);
2794         subtree = proto_item_add_subtree(actx->created_item, ett_s1ap_TransportLayerAddress);
2795         if (tvb_len==4){
2796                 /* IPv4 */
2797                  proto_tree_add_item(subtree, hf_s1ap_transportLayerAddressIPv4, parameter_tvb, 0, tvb_len, FALSE);
2798         }
2799         if (tvb_len==16){
2800                 /* IPv6 */
2801                  proto_tree_add_item(subtree, hf_s1ap_transportLayerAddressIPv6, parameter_tvb, 0, tvb_len, FALSE);
2802         }
2803
2804
2805   return offset;
2806 }
2807
2808
2809 static const per_sequence_t ENBX2TLAs_sequence_of[1] = {
2810   { &hf_s1ap_ENBX2TLAs_item , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_TransportLayerAddress },
2811 };
2812
2813 static int
2814 dissect_s1ap_ENBX2TLAs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2815   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2816                                                   ett_s1ap_ENBX2TLAs, ENBX2TLAs_sequence_of,
2817                                                   1, maxnoofeNBX2TLAs, FALSE);
2818
2819   return offset;
2820 }
2821
2822
2823
2824 static int
2825 dissect_s1ap_EncryptionAlgorithms(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2826   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
2827                                      16, 16, TRUE, NULL);
2828
2829   return offset;
2830 }
2831
2832
2833 static const per_sequence_t EPLMNs_sequence_of[1] = {
2834   { &hf_s1ap_EPLMNs_item    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_PLMNidentity },
2835 };
2836
2837 static int
2838 dissect_s1ap_EPLMNs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2839   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2840                                                   ett_s1ap_EPLMNs, EPLMNs_sequence_of,
2841                                                   1, maxnoofEPLMNs, FALSE);
2842
2843   return offset;
2844 }
2845
2846
2847 static const value_string s1ap_EventType_vals[] = {
2848   {   0, "direct" },
2849   {   1, "change-of-serve-cell" },
2850   {   2, "stop-change-of-serve-cell" },
2851   { 0, NULL }
2852 };
2853
2854
2855 static int
2856 dissect_s1ap_EventType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2857   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2858                                      3, NULL, TRUE, 0, NULL);
2859
2860   return offset;
2861 }
2862
2863
2864 static const per_sequence_t E_RABInformationList_sequence_of[1] = {
2865   { &hf_s1ap_E_RABInformationList_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_ProtocolIE_SingleContainer },
2866 };
2867
2868 static int
2869 dissect_s1ap_E_RABInformationList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2870   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2871                                                   ett_s1ap_E_RABInformationList, E_RABInformationList_sequence_of,
2872                                                   1, maxNrOfE_RABs, FALSE);
2873
2874   return offset;
2875 }
2876
2877
2878 static const per_sequence_t E_RABInformationListItem_sequence[] = {
2879   { &hf_s1ap_e_RAB_ID       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_E_RAB_ID },
2880   { &hf_s1ap_dL_Forwarding  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_DL_Forwarding },
2881   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
2882   { NULL, 0, 0, NULL }
2883 };
2884
2885 static int
2886 dissect_s1ap_E_RABInformationListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2887   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2888                                    ett_s1ap_E_RABInformationListItem, E_RABInformationListItem_sequence);
2889
2890   return offset;
2891 }
2892
2893
2894 static const per_sequence_t E_RABList_sequence_of[1] = {
2895   { &hf_s1ap_E_RABList_item , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_ProtocolIE_SingleContainer },
2896 };
2897
2898 static int
2899 dissect_s1ap_E_RABList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2900   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2901                                                   ett_s1ap_E_RABList, E_RABList_sequence_of,
2902                                                   1, maxNrOfE_RABs, FALSE);
2903
2904   return offset;
2905 }
2906
2907
2908 static const per_sequence_t E_RABItem_sequence[] = {
2909   { &hf_s1ap_e_RAB_ID       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_E_RAB_ID },
2910   { &hf_s1ap_cause          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_Cause },
2911   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
2912   { NULL, 0, 0, NULL }
2913 };
2914
2915 static int
2916 dissect_s1ap_E_RABItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2917   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2918                                    ett_s1ap_E_RABItem, E_RABItem_sequence);
2919
2920   return offset;
2921 }
2922
2923
2924
2925 static int
2926 dissect_s1ap_QCI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2927   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2928                                                             0U, 255U, NULL, FALSE);
2929
2930   return offset;
2931 }
2932
2933
2934 static const per_sequence_t GBR_QosInformation_sequence[] = {
2935   { &hf_s1ap_e_RAB_MaximumBitrateDL, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_BitRate },
2936   { &hf_s1ap_e_RAB_MaximumBitrateUL, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_BitRate },
2937   { &hf_s1ap_e_RAB_GuaranteedBitrateDL, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_BitRate },
2938   { &hf_s1ap_e_RAB_GuaranteedBitrateUL, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_BitRate },
2939   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
2940   { NULL, 0, 0, NULL }
2941 };
2942
2943 static int
2944 dissect_s1ap_GBR_QosInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2945   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2946                                    ett_s1ap_GBR_QosInformation, GBR_QosInformation_sequence);
2947
2948   return offset;
2949 }
2950
2951
2952 static const per_sequence_t E_RABLevelQoSParameters_sequence[] = {
2953   { &hf_s1ap_qCI            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_QCI },
2954   { &hf_s1ap_allocationRetentionPriority, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_AllocationAndRetentionPriority },
2955   { &hf_s1ap_gbrQosInformation, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_GBR_QosInformation },
2956   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
2957   { NULL, 0, 0, NULL }
2958 };
2959
2960 static int
2961 dissect_s1ap_E_RABLevelQoSParameters(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2962   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2963                                    ett_s1ap_E_RABLevelQoSParameters, E_RABLevelQoSParameters_sequence);
2964
2965   return offset;
2966 }
2967
2968
2969
2970 static int
2971 dissect_s1ap_EUTRANRoundTripDelayEstimationInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2972   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2973                                                             0U, 255U, NULL, FALSE);
2974
2975   return offset;
2976 }
2977
2978
2979
2980 static int
2981 dissect_s1ap_ExtendedRNC_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2982   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2983                                                             4096U, 65535U, NULL, FALSE);
2984
2985   return offset;
2986 }
2987
2988
2989
2990 static int
2991 dissect_s1ap_ExtendedRepetitionPeriod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2992   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2993                                                             4096U, 131071U, NULL, FALSE);
2994
2995   return offset;
2996 }
2997
2998
2999 static const value_string s1ap_ForbiddenInterRATs_vals[] = {
3000   {   0, "all" },
3001   {   1, "geran" },
3002   {   2, "utran" },
3003   {   3, "cdma2000" },
3004   { 0, NULL }
3005 };
3006
3007
3008 static int
3009 dissect_s1ap_ForbiddenInterRATs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3010   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
3011                                      4, NULL, TRUE, 0, NULL);
3012
3013   return offset;
3014 }
3015
3016
3017 static const per_sequence_t ForbiddenTACs_sequence_of[1] = {
3018   { &hf_s1ap_ForbiddenTACs_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_TAC },
3019 };
3020
3021 static int
3022 dissect_s1ap_ForbiddenTACs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3023   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
3024                                                   ett_s1ap_ForbiddenTACs, ForbiddenTACs_sequence_of,
3025                                                   1, maxnoofForbTACs, FALSE);
3026
3027   return offset;
3028 }
3029
3030
3031 static const per_sequence_t ForbiddenTAs_Item_sequence[] = {
3032   { &hf_s1ap_pLMN_Identity  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_PLMNidentity },
3033   { &hf_s1ap_forbiddenTACs  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_ForbiddenTACs },
3034   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
3035   { NULL, 0, 0, NULL }
3036 };
3037
3038 static int
3039 dissect_s1ap_ForbiddenTAs_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3040   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3041                                    ett_s1ap_ForbiddenTAs_Item, ForbiddenTAs_Item_sequence);
3042
3043   return offset;
3044 }
3045
3046
3047 static const per_sequence_t ForbiddenTAs_sequence_of[1] = {
3048   { &hf_s1ap_ForbiddenTAs_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_ForbiddenTAs_Item },
3049 };
3050
3051 static int
3052 dissect_s1ap_ForbiddenTAs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3053   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
3054                                                   ett_s1ap_ForbiddenTAs, ForbiddenTAs_sequence_of,
3055                                                   1, maxnoofEPLMNsPlusOne, FALSE);
3056
3057   return offset;
3058 }
3059
3060
3061 static const per_sequence_t ForbiddenLACs_sequence_of[1] = {
3062   { &hf_s1ap_ForbiddenLACs_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_LAC },
3063 };
3064
3065 static int
3066 dissect_s1ap_ForbiddenLACs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3067   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
3068                                                   ett_s1ap_ForbiddenLACs, ForbiddenLACs_sequence_of,
3069                                                   1, maxnoofForbLACs, FALSE);
3070
3071   return offset;
3072 }
3073
3074
3075 static const per_sequence_t ForbiddenLAs_Item_sequence[] = {
3076   { &hf_s1ap_pLMN_Identity  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_PLMNidentity },
3077   { &hf_s1ap_forbiddenLACs  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_ForbiddenLACs },
3078   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
3079   { NULL, 0, 0, NULL }
3080 };
3081
3082 static int
3083 dissect_s1ap_ForbiddenLAs_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3084   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3085                                    ett_s1ap_ForbiddenLAs_Item, ForbiddenLAs_Item_sequence);
3086
3087   return offset;
3088 }
3089
3090
3091 static const per_sequence_t ForbiddenLAs_sequence_of[1] = {
3092   { &hf_s1ap_ForbiddenLAs_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_s1ap_ForbiddenLAs_Item },
3093 };
3094
3095 static int
3096 dissect_s1ap_ForbiddenLAs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3097   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
3098                                                   ett_s1ap_ForbiddenLAs, ForbiddenLAs_sequence_of,
3099                                                   1, maxnoofEPLMNsPlusOne, FALSE);
3100
3101   return offset;
3102 }
3103
3104
3105
3106 static int
3107 dissect_s1ap_GTP_TEID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3108   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
3109                                        4, 4, FALSE, NULL);
3110
3111   return offset;
3112 }
3113
3114
3115
3116 static int
3117 dissect_s1ap_MME_Group_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3118   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
3119                                        2, 2, FALSE, NULL);
3120
3121   return offset;
3122 }
3123
3124
3125
3126 static int
3127 dissect_s1ap_MME_Code(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3128   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
3129                                        1, 1, FALSE, NULL);
3130
3131   return offset;
3132 }
3133
3134
3135 static const per_sequence_t GUMMEI_sequence[] = {
3136   { &hf_s1ap_pLMN_Identity  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_PLMNidentity },
3137   { &hf_s1ap_mME_Group_ID   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_MME_Group_ID },
3138   { &hf_s1ap_mME_Code       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_MME_Code },
3139   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
3140   { NULL, 0, 0, NULL }
3141 };
3142
3143 static int
3144 dissect_s1ap_GUMMEI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3145   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3146                                    ett_s1ap_GUMMEI, GUMMEI_sequence);
3147
3148   return offset;
3149 }
3150
3151
3152 static const per_sequence_t HandoverRestrictionList_sequence[] = {
3153   { &hf_s1ap_servingPLMN    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_PLMNidentity },
3154   { &hf_s1ap_equivalentPLMNs, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_EPLMNs },
3155   { &hf_s1ap_forbiddenTAs   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ForbiddenTAs },
3156   { &hf_s1ap_forbiddenLAs   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ForbiddenLAs },
3157   { &hf_s1ap_forbiddenInterRATs, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ForbiddenInterRATs },
3158   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
3159   { NULL, 0, 0, NULL }
3160 };
3161
3162 static int
3163 dissect_s1ap_HandoverRestrictionList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3164   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3165                                    ett_s1ap_HandoverRestrictionList, HandoverRestrictionList_sequence);
3166
3167   return offset;
3168 }
3169
3170
3171 static const value_string s1ap_HandoverType_vals[] = {
3172   {   0, "intralte" },
3173   {   1, "ltetoutran" },
3174   {   2, "ltetogeran" },
3175   {   3, "utrantolte" },
3176   {   4, "gerantolte" },
3177   { 0, NULL }
3178 };
3179
3180
3181 static int
3182 dissect_s1ap_HandoverType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3183 #line 224 "s1ap.cnf"
3184
3185   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
3186                                      5, &handover_type_value, TRUE, 0, NULL);
3187
3188
3189
3190
3191   return offset;
3192 }
3193
3194
3195
3196 static int
3197 dissect_s1ap_IMSI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3198   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
3199                                        3, 8, FALSE, NULL);
3200
3201   return offset;
3202 }
3203
3204
3205
3206 static int
3207 dissect_s1ap_IntegrityProtectionAlgorithms(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3208   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
3209                                      16, 16, TRUE, NULL);
3210
3211   return offset;
3212 }
3213
3214
3215
3216 static int
3217 dissect_s1ap_InterfacesToTrace(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3218   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
3219                                      8, 8, FALSE, NULL);
3220
3221   return offset;
3222 }
3223
3224
3225
3226 static int
3227 dissect_s1ap_Time_UE_StayedInCell(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3228   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3229                                                             0U, 4095U, NULL, FALSE);
3230
3231   return offset;
3232 }
3233
3234
3235 static const per_sequence_t LastVisitedEUTRANCellInformation_sequence[] = {
3236   { &hf_s1ap_global_Cell_ID , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_EUTRAN_CGI },
3237   { &hf_s1ap_cellType       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_CellType },
3238   { &hf_s1ap_time_UE_StayedInCell, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_s1ap_Time_UE_StayedInCell },
3239   { &hf_s1ap_iE_Extensions  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_s1ap_ProtocolExtensionContainer },
3240   { NULL, 0, 0, NULL }
3241 };
3242
3243 static int