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