5023a11c0ad53055e160c7dbfd49955256014f4b
[obnox/wireshark/wip.git] / epan / dissectors / packet-hnbap.c
1 /* Do not modify this file.                                                   */
2 /* It is created automatically by the ASN.1 to Wireshark dissector compiler   */
3 /* packet-hnbap.c                                                             */
4 /* ../../tools/asn2wrs.py -p hnbap -c ./hnbap.cnf -s ./packet-hnbap-template -D . HNBAP-CommonDataTypes.asn HNBAP-Constants.asn HNBAP-Containers.asn HNBAP-IEs.asn HNBAP-PDU-Contents.asn HNBAP-PDU-Descriptions.asn */
5
6 /* Input file: packet-hnbap-template.c */
7
8 #line 1 "packet-hnbap-template.c"
9 /* packet-hnbap-template.c
10  * Routines for UMTS Node B Application Part(HNBAP) packet dissection
11  * Copyright 2010 Neil Piercy, ip.access Limited <Neil.Piercy@ipaccess.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  * Ref: 3GPP TS 25.469 version 8.4.0 Release 8
34  */
35
36 #ifdef HAVE_CONFIG_H
37 # include "config.h"
38 #endif
39
40 #include <glib.h>
41 #include <string.h>
42
43 #include <epan/packet.h>
44 #include <epan/sctpppids.h>
45 #include <epan/asn1.h>
46 #include <epan/prefs.h>
47
48 #include "packet-per.h"
49
50 #ifdef _MSC_VER
51 /* disable: "warning C4146: unary minus operator applied to unsigned type, result still unsigned" */
52 #pragma warning(disable:4146)
53 #endif
54
55 #define PNAME  "UTRAN Iuh interface HNBAP signalling"
56 #define PSNAME "HNBAP"
57 #define PFNAME "hnbap"
58 /* Dissector will use SCTP PPID 20 or SCTP port. IANA assigned port = 29169*/
59 #define SCTP_PORT_HNBAP              29169
60
61
62 /*--- Included file: packet-hnbap-val.h ---*/
63 #line 1 "packet-hnbap-val.h"
64 #define maxPrivateIEs                  65535
65 #define maxProtocolExtensions          65535
66 #define maxProtocolIEs                 65535
67 #define maxNrOfErrors                  256
68 #define maxUEs                         64
69
70 typedef enum _ProcedureCode_enum {
71   id_HNBRegister =   1,
72   id_HNBDe_Register =   2,
73   id_UERegister =   3,
74   id_UEDe_Register =   4,
75   id_ErrorIndication =   5,
76   id_privateMessage =   6
77 } ProcedureCode_enum;
78
79 typedef enum _ProtocolIE_ID_enum {
80   id_Cause     =   1,
81   id_CriticalityDiagnostics =   2,
82   id_HNB_Identity =   3,
83   id_Context_ID =   4,
84   id_UE_Identity =   5,
85   id_LAC       =   6,
86   id_RAC       =   7,
87   id_HNB_Location_Information =   8,
88   id_PLMNidentity =   9,
89   id_SAC       =  10,
90   id_CellIdentity =  11,
91   id_Registration_Cause =  12,
92   id_UE_Capabilities =  13,
93   id_RNC_ID    =  14,
94   id_CSG_ID    =  15,
95   id_BackoffTimer =  16,
96   id_HNB_Internet_Information =  17,
97   id_HNB_Cell_Access_Mode =  18,
98   id_MuxPortNumber =  19,
99   id_Service_Area_For_Broadcast =  20,
100   id_CSGMembershipStatus =  21
101 } ProtocolIE_ID_enum;
102
103 /*--- End of included file: packet-hnbap-val.h ---*/
104 #line 54 "packet-hnbap-template.c"
105
106 /* Initialize the protocol and registered fields */
107 static int proto_hnbap = -1;
108
109
110 /*--- Included file: packet-hnbap-hf.c ---*/
111 #line 1 "packet-hnbap-hf.c"
112 static int hf_hnbap_BackoffTimer_PDU = -1;        /* BackoffTimer */
113 static int hf_hnbap_Cause_PDU = -1;               /* Cause */
114 static int hf_hnbap_CellIdentity_PDU = -1;        /* CellIdentity */
115 static int hf_hnbap_Context_ID_PDU = -1;          /* Context_ID */
116 static int hf_hnbap_CriticalityDiagnostics_PDU = -1;  /* CriticalityDiagnostics */
117 static int hf_hnbap_CSG_ID_PDU = -1;              /* CSG_ID */
118 static int hf_hnbap_CSGMembershipStatus_PDU = -1;  /* CSGMembershipStatus */
119 static int hf_hnbap_HNB_Cell_Access_Mode_PDU = -1;  /* HNB_Cell_Access_Mode */
120 static int hf_hnbap_HNB_Location_Information_PDU = -1;  /* HNB_Location_Information */
121 static int hf_hnbap_HNB_Identity_PDU = -1;        /* HNB_Identity */
122 static int hf_hnbap_IP_Address_PDU = -1;          /* IP_Address */
123 static int hf_hnbap_LAC_PDU = -1;                 /* LAC */
124 static int hf_hnbap_MuxPortNumber_PDU = -1;       /* MuxPortNumber */
125 static int hf_hnbap_PLMNidentity_PDU = -1;        /* PLMNidentity */
126 static int hf_hnbap_RAC_PDU = -1;                 /* RAC */
127 static int hf_hnbap_Registration_Cause_PDU = -1;  /* Registration_Cause */
128 static int hf_hnbap_RNC_ID_PDU = -1;              /* RNC_ID */
129 static int hf_hnbap_SAC_PDU = -1;                 /* SAC */
130 static int hf_hnbap_UE_Capabilities_PDU = -1;     /* UE_Capabilities */
131 static int hf_hnbap_UE_Identity_PDU = -1;         /* UE_Identity */
132 static int hf_hnbap_HNBRegisterRequest_PDU = -1;  /* HNBRegisterRequest */
133 static int hf_hnbap_HNBRegisterAccept_PDU = -1;   /* HNBRegisterAccept */
134 static int hf_hnbap_HNBRegisterReject_PDU = -1;   /* HNBRegisterReject */
135 static int hf_hnbap_HNBDe_Register_PDU = -1;      /* HNBDe_Register */
136 static int hf_hnbap_UERegisterRequest_PDU = -1;   /* UERegisterRequest */
137 static int hf_hnbap_UERegisterAccept_PDU = -1;    /* UERegisterAccept */
138 static int hf_hnbap_UERegisterReject_PDU = -1;    /* UERegisterReject */
139 static int hf_hnbap_UEDe_Register_PDU = -1;       /* UEDe_Register */
140 static int hf_hnbap_ErrorIndication_PDU = -1;     /* ErrorIndication */
141 static int hf_hnbap_PrivateMessage_PDU = -1;      /* PrivateMessage */
142 static int hf_hnbap_HNBAP_PDU_PDU = -1;           /* HNBAP_PDU */
143 static int hf_hnbap_local = -1;                   /* INTEGER_0_65535 */
144 static int hf_hnbap_global = -1;                  /* OBJECT_IDENTIFIER */
145 static int hf_hnbap_ProtocolIE_Container_item = -1;  /* ProtocolIE_Field */
146 static int hf_hnbap_protocol_ie_field_id = -1;    /* ProtocolIE_ID */
147 static int hf_hnbap_criticality = -1;             /* Criticality */
148 static int hf_hnbap_ie_field_value = -1;          /* ProtocolIE_Field_value */
149 static int hf_hnbap_ProtocolExtensionContainer_item = -1;  /* ProtocolExtensionField */
150 static int hf_hnbap_id = -1;                      /* ProtocolIE_ID */
151 static int hf_hnbap_extensionValue = -1;          /* T_extensionValue */
152 static int hf_hnbap_PrivateIE_Container_item = -1;  /* PrivateIE_Field */
153 static int hf_hnbap_private_ie_field_id = -1;     /* PrivateIE_ID */
154 static int hf_hnbap_private_value = -1;           /* PrivateIE_Field_value */
155 static int hf_hnbap_directionOfAltitude = -1;     /* T_directionOfAltitude */
156 static int hf_hnbap_altitude = -1;                /* INTEGER_0_32767 */
157 static int hf_hnbap_radioNetwork = -1;            /* CauseRadioNetwork */
158 static int hf_hnbap_transport = -1;               /* CauseTransport */
159 static int hf_hnbap_protocol = -1;                /* CauseProtocol */
160 static int hf_hnbap_misc = -1;                    /* CauseMisc */
161 static int hf_hnbap_procedureCode = -1;           /* ProcedureCode */
162 static int hf_hnbap_triggeringMessage = -1;       /* TriggeringMessage */
163 static int hf_hnbap_procedureCriticality = -1;    /* Criticality */
164 static int hf_hnbap_iEsCriticalityDiagnostics = -1;  /* CriticalityDiagnostics_IE_List */
165 static int hf_hnbap_iE_Extensions = -1;           /* ProtocolExtensionContainer */
166 static int hf_hnbap_CriticalityDiagnostics_IE_List_item = -1;  /* CriticalityDiagnostics_IE_List_item */
167 static int hf_hnbap_iECriticality = -1;           /* Criticality */
168 static int hf_hnbap_iE_ID = -1;                   /* ProtocolIE_ID */
169 static int hf_hnbap_typeOfError = -1;             /* TypeOfError */
170 static int hf_hnbap_pLMNidentity = -1;            /* PLMNidentity */
171 static int hf_hnbap_lAC = -1;                     /* LAC */
172 static int hf_hnbap_cI = -1;                      /* CI */
173 static int hf_hnbap_geographical_location_geographical_coordinates = -1;  /* GeographicalCoordinates */
174 static int hf_hnbap_altitudeAndDirection = -1;    /* AltitudeAndDirection */
175 static int hf_hnbap_latitudeSign = -1;            /* T_latitudeSign */
176 static int hf_hnbap_latitude = -1;                /* INTEGER_0_8388607 */
177 static int hf_hnbap_longitude = -1;               /* INTEGER_M8388608_8388607 */
178 static int hf_hnbap_macroCoverageInfo = -1;       /* MacroCoverageInformation */
179 static int hf_hnbap_hnb_location_information_geographical_coordinates = -1;  /* GeographicalLocation */
180 static int hf_hnbap_hNB_Identity_Info = -1;       /* HNB_Identity_Info */
181 static int hf_hnbap_iMSIDS41 = -1;                /* IMSIDS41 */
182 static int hf_hnbap_eSN = -1;                     /* ESN */
183 static int hf_hnbap_ipaddress = -1;               /* T_ipaddress */
184 static int hf_hnbap_ipv4info = -1;                /* Ipv4Address */
185 static int hf_hnbap_ipv6info = -1;                /* Ipv6Address */
186 static int hf_hnbap_pLMNID = -1;                  /* PLMNidentity */
187 static int hf_hnbap_cellIdentity = -1;            /* MacroCellID */
188 static int hf_hnbap_uTRANCellID = -1;             /* UTRANCellID */
189 static int hf_hnbap_gERANCellID = -1;             /* CGI */
190 static int hf_hnbap_pTMSI = -1;                   /* PTMSI */
191 static int hf_hnbap_rAI = -1;                     /* RAI */
192 static int hf_hnbap_lAI = -1;                     /* LAI */
193 static int hf_hnbap_rAC = -1;                     /* RAC */
194 static int hf_hnbap_tMSI = -1;                    /* BIT_STRING_SIZE_32 */
195 static int hf_hnbap_access_stratum_release_indicator = -1;  /* Access_stratum_release_indicator */
196 static int hf_hnbap_csg_indicator = -1;           /* CSG_Indicator */
197 static int hf_hnbap_uTRANcellID = -1;             /* CellIdentity */
198 static int hf_hnbap_iMSI = -1;                    /* IMSI */
199 static int hf_hnbap_tMSILAI = -1;                 /* TMSILAI */
200 static int hf_hnbap_pTMSIRAI = -1;                /* PTMSIRAI */
201 static int hf_hnbap_iMEI = -1;                    /* IMEI */
202 static int hf_hnbap_iMSIESN = -1;                 /* IMSIESN */
203 static int hf_hnbap_tMSIDS1 = -1;                 /* TMSIDS41 */
204 static int hf_hnbap_protocolIEs = -1;             /* ProtocolIE_Container */
205 static int hf_hnbap_protocolExtensions = -1;      /* ProtocolExtensionContainer */
206 static int hf_hnbap_privateIEs = -1;              /* PrivateIE_Container */
207 static int hf_hnbap_initiatingMessage = -1;       /* InitiatingMessage */
208 static int hf_hnbap_successfulOutcome = -1;       /* SuccessfulOutcome */
209 static int hf_hnbap_unsuccessfulOutcome = -1;     /* UnsuccessfulOutcome */
210 static int hf_hnbap_initiatingMessagevalue = -1;  /* InitiatingMessage_value */
211 static int hf_hnbap_successfulOutcome_value = -1;  /* SuccessfulOutcome_value */
212 static int hf_hnbap_unsuccessfulOutcome_value = -1;  /* UnsuccessfulOutcome_value */
213
214 /*--- End of included file: packet-hnbap-hf.c ---*/
215 #line 59 "packet-hnbap-template.c"
216
217 /* Initialize the subtree pointers */
218 static int ett_hnbap = -1;
219
220
221 /*--- Included file: packet-hnbap-ett.c ---*/
222 #line 1 "packet-hnbap-ett.c"
223 static gint ett_hnbap_PrivateIE_ID = -1;
224 static gint ett_hnbap_ProtocolIE_Container = -1;
225 static gint ett_hnbap_ProtocolIE_Field = -1;
226 static gint ett_hnbap_ProtocolExtensionContainer = -1;
227 static gint ett_hnbap_ProtocolExtensionField = -1;
228 static gint ett_hnbap_PrivateIE_Container = -1;
229 static gint ett_hnbap_PrivateIE_Field = -1;
230 static gint ett_hnbap_AltitudeAndDirection = -1;
231 static gint ett_hnbap_Cause = -1;
232 static gint ett_hnbap_CriticalityDiagnostics = -1;
233 static gint ett_hnbap_CriticalityDiagnostics_IE_List = -1;
234 static gint ett_hnbap_CriticalityDiagnostics_IE_List_item = -1;
235 static gint ett_hnbap_CGI = -1;
236 static gint ett_hnbap_GeographicalLocation = -1;
237 static gint ett_hnbap_GeographicalCoordinates = -1;
238 static gint ett_hnbap_HNB_Location_Information = -1;
239 static gint ett_hnbap_HNB_Identity = -1;
240 static gint ett_hnbap_IMSIESN = -1;
241 static gint ett_hnbap_IP_Address = -1;
242 static gint ett_hnbap_T_ipaddress = -1;
243 static gint ett_hnbap_LAI = -1;
244 static gint ett_hnbap_MacroCoverageInformation = -1;
245 static gint ett_hnbap_MacroCellID = -1;
246 static gint ett_hnbap_PTMSIRAI = -1;
247 static gint ett_hnbap_RAI = -1;
248 static gint ett_hnbap_TMSILAI = -1;
249 static gint ett_hnbap_UE_Capabilities = -1;
250 static gint ett_hnbap_UTRANCellID = -1;
251 static gint ett_hnbap_UE_Identity = -1;
252 static gint ett_hnbap_HNBRegisterRequest = -1;
253 static gint ett_hnbap_HNBRegisterAccept = -1;
254 static gint ett_hnbap_HNBRegisterReject = -1;
255 static gint ett_hnbap_HNBDe_Register = -1;
256 static gint ett_hnbap_UERegisterRequest = -1;
257 static gint ett_hnbap_UERegisterAccept = -1;
258 static gint ett_hnbap_UERegisterReject = -1;
259 static gint ett_hnbap_UEDe_Register = -1;
260 static gint ett_hnbap_ErrorIndication = -1;
261 static gint ett_hnbap_PrivateMessage = -1;
262 static gint ett_hnbap_HNBAP_PDU = -1;
263 static gint ett_hnbap_InitiatingMessage = -1;
264 static gint ett_hnbap_SuccessfulOutcome = -1;
265 static gint ett_hnbap_UnsuccessfulOutcome = -1;
266
267 /*--- End of included file: packet-hnbap-ett.c ---*/
268 #line 64 "packet-hnbap-template.c"
269
270 /* Global variables */
271 static guint32 ProcedureCode;
272 static guint32 ProtocolIE_ID;
273 static guint global_sctp_port = SCTP_PORT_HNBAP;
274
275 /* Dissector tables */
276 static dissector_table_t hnbap_ies_dissector_table;
277 static dissector_table_t hnbap_extension_dissector_table;
278 static dissector_table_t hnbap_proc_imsg_dissector_table;
279 static dissector_table_t hnbap_proc_sout_dissector_table;
280 static dissector_table_t hnbap_proc_uout_dissector_table;
281
282 static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
283 static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
284 static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
285 static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
286 static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
287 void proto_reg_handoff_hnbap(void);
288
289
290 /*--- Included file: packet-hnbap-fn.c ---*/
291 #line 1 "packet-hnbap-fn.c"
292
293 static const value_string hnbap_Criticality_vals[] = {
294   {   0, "reject" },
295   {   1, "ignore" },
296   {   2, "notify" },
297   { 0, NULL }
298 };
299
300
301 static int
302 dissect_hnbap_Criticality(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
303   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
304                                      3, NULL, FALSE, 0, NULL);
305
306   return offset;
307 }
308
309
310
311 static int
312 dissect_hnbap_INTEGER_0_65535(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
313   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
314                                                             0U, 65535U, NULL, FALSE);
315
316   return offset;
317 }
318
319
320
321 static int
322 dissect_hnbap_OBJECT_IDENTIFIER(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
323   offset = dissect_per_object_identifier(tvb, offset, actx, tree, hf_index, NULL);
324
325   return offset;
326 }
327
328
329 static const value_string hnbap_PrivateIE_ID_vals[] = {
330   {   0, "local" },
331   {   1, "global" },
332   { 0, NULL }
333 };
334
335 static const per_choice_t PrivateIE_ID_choice[] = {
336   {   0, &hf_hnbap_local         , ASN1_NO_EXTENSIONS     , dissect_hnbap_INTEGER_0_65535 },
337   {   1, &hf_hnbap_global        , ASN1_NO_EXTENSIONS     , dissect_hnbap_OBJECT_IDENTIFIER },
338   { 0, NULL, 0, NULL }
339 };
340
341 static int
342 dissect_hnbap_PrivateIE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
343   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
344                                  ett_hnbap_PrivateIE_ID, PrivateIE_ID_choice,
345                                  NULL);
346
347   return offset;
348 }
349
350
351 static const value_string hnbap_ProcedureCode_vals[] = {
352   { id_HNBRegister, "id-HNBRegister" },
353   { id_HNBDe_Register, "id-HNBDe-Register" },
354   { id_UERegister, "id-UERegister" },
355   { id_UEDe_Register, "id-UEDe-Register" },
356   { id_ErrorIndication, "id-ErrorIndication" },
357   { id_privateMessage, "id-privateMessage" },
358   { 0, NULL }
359 };
360
361
362 static int
363 dissect_hnbap_ProcedureCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
364   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
365                                                             0U, 255U, &ProcedureCode, FALSE);
366
367 #line 59 "hnbap.cnf"
368   if (strcmp(val_to_str(ProcedureCode, hnbap_ProcedureCode_vals, "Unknown"), "Unknown") == 0) {
369     col_set_str(actx->pinfo->cinfo, COL_INFO,
370                       "Unknown Message");
371   } /* Known Procedures should be included below and broken out as ELEMENTARY names to avoid confusion */
372
373
374   return offset;
375 }
376
377
378 static const value_string hnbap_ProtocolIE_ID_vals[] = {
379   { id_Cause, "id-Cause" },
380   { id_CriticalityDiagnostics, "id-CriticalityDiagnostics" },
381   { id_HNB_Identity, "id-HNB-Identity" },
382   { id_Context_ID, "id-Context-ID" },
383   { id_UE_Identity, "id-UE-Identity" },
384   { id_LAC, "id-LAC" },
385   { id_RAC, "id-RAC" },
386   { id_HNB_Location_Information, "id-HNB-Location-Information" },
387   { id_PLMNidentity, "id-PLMNidentity" },
388   { id_SAC, "id-SAC" },
389   { id_CellIdentity, "id-CellIdentity" },
390   { id_Registration_Cause, "id-Registration-Cause" },
391   { id_UE_Capabilities, "id-UE-Capabilities" },
392   { id_RNC_ID, "id-RNC-ID" },
393   { id_CSG_ID, "id-CSG-ID" },
394   { id_BackoffTimer, "id-BackoffTimer" },
395   { id_HNB_Internet_Information, "id-HNB-Internet-Information" },
396   { id_HNB_Cell_Access_Mode, "id-HNB-Cell-Access-Mode" },
397   { id_MuxPortNumber, "id-MuxPortNumber" },
398   { id_Service_Area_For_Broadcast, "id-Service-Area-For-Broadcast" },
399   { id_CSGMembershipStatus, "id-CSGMembershipStatus" },
400   { 0, NULL }
401 };
402
403
404 static int
405 dissect_hnbap_ProtocolIE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
406   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
407                                                             0U, maxProtocolIEs, &ProtocolIE_ID, FALSE);
408
409 #line 48 "hnbap.cnf"
410   if (tree) {
411     proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", val_to_str(ProtocolIE_ID, VALS(hnbap_ProtocolIE_ID_vals), "unknown (%d)"));
412   }
413
414   return offset;
415 }
416
417
418 static const value_string hnbap_TriggeringMessage_vals[] = {
419   {   0, "initiating-message" },
420   {   1, "successful-outcome" },
421   {   2, "unsuccessful-outcome" },
422   { 0, NULL }
423 };
424
425
426 static int
427 dissect_hnbap_TriggeringMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
428   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
429                                      3, NULL, FALSE, 0, NULL);
430
431   return offset;
432 }
433
434
435
436 static int
437 dissect_hnbap_ProtocolIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
438   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue);
439
440   return offset;
441 }
442
443
444 static const per_sequence_t ProtocolIE_Field_sequence[] = {
445   { &hf_hnbap_protocol_ie_field_id, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_hnbap_ProtocolIE_ID },
446   { &hf_hnbap_criticality   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_hnbap_Criticality },
447   { &hf_hnbap_ie_field_value, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_hnbap_ProtocolIE_Field_value },
448   { NULL, 0, 0, NULL }
449 };
450
451 static int
452 dissect_hnbap_ProtocolIE_Field(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
453   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
454                                    ett_hnbap_ProtocolIE_Field, ProtocolIE_Field_sequence);
455
456   return offset;
457 }
458
459
460 static const per_sequence_t ProtocolIE_Container_sequence_of[1] = {
461   { &hf_hnbap_ProtocolIE_Container_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_hnbap_ProtocolIE_Field },
462 };
463
464 static int
465 dissect_hnbap_ProtocolIE_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
466   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
467                                                   ett_hnbap_ProtocolIE_Container, ProtocolIE_Container_sequence_of,
468                                                   0, maxProtocolIEs, FALSE);
469
470   return offset;
471 }
472
473
474
475 static int
476 dissect_hnbap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
477   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue);
478
479   return offset;
480 }
481
482
483 static const per_sequence_t ProtocolExtensionField_sequence[] = {
484   { &hf_hnbap_id            , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_hnbap_ProtocolIE_ID },
485   { &hf_hnbap_criticality   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_hnbap_Criticality },
486   { &hf_hnbap_extensionValue, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_hnbap_T_extensionValue },
487   { NULL, 0, 0, NULL }
488 };
489
490 static int
491 dissect_hnbap_ProtocolExtensionField(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
492   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
493                                    ett_hnbap_ProtocolExtensionField, ProtocolExtensionField_sequence);
494
495   return offset;
496 }
497
498
499 static const per_sequence_t ProtocolExtensionContainer_sequence_of[1] = {
500   { &hf_hnbap_ProtocolExtensionContainer_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_hnbap_ProtocolExtensionField },
501 };
502
503 static int
504 dissect_hnbap_ProtocolExtensionContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
505   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
506                                                   ett_hnbap_ProtocolExtensionContainer, ProtocolExtensionContainer_sequence_of,
507                                                   1, maxProtocolExtensions, FALSE);
508
509   return offset;
510 }
511
512
513
514 static int
515 dissect_hnbap_PrivateIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
516   offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL);
517
518   return offset;
519 }
520
521
522 static const per_sequence_t PrivateIE_Field_sequence[] = {
523   { &hf_hnbap_private_ie_field_id, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_hnbap_PrivateIE_ID },
524   { &hf_hnbap_criticality   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_hnbap_Criticality },
525   { &hf_hnbap_private_value , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_hnbap_PrivateIE_Field_value },
526   { NULL, 0, 0, NULL }
527 };
528
529 static int
530 dissect_hnbap_PrivateIE_Field(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
531   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
532                                    ett_hnbap_PrivateIE_Field, PrivateIE_Field_sequence);
533
534   return offset;
535 }
536
537
538 static const per_sequence_t PrivateIE_Container_sequence_of[1] = {
539   { &hf_hnbap_PrivateIE_Container_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_hnbap_PrivateIE_Field },
540 };
541
542 static int
543 dissect_hnbap_PrivateIE_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
544   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
545                                                   ett_hnbap_PrivateIE_Container, PrivateIE_Container_sequence_of,
546                                                   1, maxPrivateIEs, FALSE);
547
548   return offset;
549 }
550
551
552 static const value_string hnbap_Access_stratum_release_indicator_vals[] = {
553   {   0, "r99" },
554   {   1, "rel-4" },
555   {   2, "rel-5" },
556   {   3, "rel-6" },
557   {   4, "rel-7" },
558   {   5, "rel-8" },
559   { 0, NULL }
560 };
561
562
563 static int
564 dissect_hnbap_Access_stratum_release_indicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
565   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
566                                      6, NULL, TRUE, 0, NULL);
567
568   return offset;
569 }
570
571
572 static const value_string hnbap_T_directionOfAltitude_vals[] = {
573   {   0, "height" },
574   {   1, "depth" },
575   { 0, NULL }
576 };
577
578
579 static int
580 dissect_hnbap_T_directionOfAltitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
581   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
582                                      2, NULL, FALSE, 0, NULL);
583
584   return offset;
585 }
586
587
588
589 static int
590 dissect_hnbap_INTEGER_0_32767(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
591   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
592                                                             0U, 32767U, NULL, FALSE);
593
594   return offset;
595 }
596
597
598 static const per_sequence_t AltitudeAndDirection_sequence[] = {
599   { &hf_hnbap_directionOfAltitude, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_hnbap_T_directionOfAltitude },
600   { &hf_hnbap_altitude      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_hnbap_INTEGER_0_32767 },
601   { NULL, 0, 0, NULL }
602 };
603
604 static int
605 dissect_hnbap_AltitudeAndDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
606   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
607                                    ett_hnbap_AltitudeAndDirection, AltitudeAndDirection_sequence);
608
609   return offset;
610 }
611
612
613
614 static int
615 dissect_hnbap_BackoffTimer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
616   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
617                                                             0U, 3600U, NULL, FALSE);
618
619   return offset;
620 }
621
622
623 static const value_string hnbap_CauseRadioNetwork_vals[] = {
624   {   0, "overload" },
625   {   1, "unauthorised-Location" },
626   {   2, "unauthorised-HNB" },
627   {   3, "hNB-parameter-mismatch" },
628   {   4, "invalid-UE-identity" },
629   {   5, "uE-not-allowed-on-this-HNB" },
630   {   6, "uE-unauthorised" },
631   {   7, "connection-with-UE-lost" },
632   {   8, "ue-RRC-telease" },
633   {   9, "hNB-not-registered" },
634   {  10, "unspecified" },
635   {  11, "normal" },
636   {  12, "uE-relocated" },
637   {  13, "ue-registered-in-another-HNB" },
638   { 0, NULL }
639 };
640
641
642 static int
643 dissect_hnbap_CauseRadioNetwork(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
644   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
645                                      14, NULL, TRUE, 0, NULL);
646
647   return offset;
648 }
649
650
651 static const value_string hnbap_CauseTransport_vals[] = {
652   {   0, "transport-resource-unavailable" },
653   {   1, "unspecified" },
654   { 0, NULL }
655 };
656
657
658 static int
659 dissect_hnbap_CauseTransport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
660   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
661                                      2, NULL, TRUE, 0, NULL);
662
663   return offset;
664 }
665
666
667 static const value_string hnbap_CauseProtocol_vals[] = {
668   {   0, "transfer-syntax-error" },
669   {   1, "abstract-syntax-error-reject" },
670   {   2, "abstract-syntax-error-ignore-and-notify" },
671   {   3, "message-not-compatible-with-receiver-state" },
672   {   4, "semantic-error" },
673   {   5, "unspecified" },
674   {   6, "abstract-syntax-error-falsely-constructed-message" },
675   { 0, NULL }
676 };
677
678
679 static int
680 dissect_hnbap_CauseProtocol(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
681   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
682                                      7, NULL, TRUE, 0, NULL);
683
684   return offset;
685 }
686
687
688 static const value_string hnbap_CauseMisc_vals[] = {
689   {   0, "processing-overload" },
690   {   1, "hardware-failure" },
691   {   2, "o-and-m-intervention" },
692   {   3, "unspecified" },
693   { 0, NULL }
694 };
695
696
697 static int
698 dissect_hnbap_CauseMisc(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
699   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
700                                      4, NULL, TRUE, 0, NULL);
701
702   return offset;
703 }
704
705
706 static const value_string hnbap_Cause_vals[] = {
707   {   0, "radioNetwork" },
708   {   1, "transport" },
709   {   2, "protocol" },
710   {   3, "misc" },
711   { 0, NULL }
712 };
713
714 static const per_choice_t Cause_choice[] = {
715   {   0, &hf_hnbap_radioNetwork  , ASN1_EXTENSION_ROOT    , dissect_hnbap_CauseRadioNetwork },
716   {   1, &hf_hnbap_transport     , ASN1_EXTENSION_ROOT    , dissect_hnbap_CauseTransport },
717   {   2, &hf_hnbap_protocol      , ASN1_EXTENSION_ROOT    , dissect_hnbap_CauseProtocol },
718   {   3, &hf_hnbap_misc          , ASN1_EXTENSION_ROOT    , dissect_hnbap_CauseMisc },
719   { 0, NULL, 0, NULL }
720 };
721
722 static int
723 dissect_hnbap_Cause(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
724   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
725                                  ett_hnbap_Cause, Cause_choice,
726                                  NULL);
727
728   return offset;
729 }
730
731
732
733 static int
734 dissect_hnbap_CellIdentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
735   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
736                                      28, 28, FALSE, NULL);
737
738   return offset;
739 }
740
741
742
743 static int
744 dissect_hnbap_Context_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
745   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
746                                      24, 24, FALSE, NULL);
747
748   return offset;
749 }
750
751
752 static const value_string hnbap_TypeOfError_vals[] = {
753   {   0, "not-understood" },
754   {   1, "missing" },
755   { 0, NULL }
756 };
757
758
759 static int
760 dissect_hnbap_TypeOfError(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
761   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
762                                      2, NULL, TRUE, 0, NULL);
763
764   return offset;
765 }
766
767
768 static const per_sequence_t CriticalityDiagnostics_IE_List_item_sequence[] = {
769   { &hf_hnbap_iECriticality , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_hnbap_Criticality },
770   { &hf_hnbap_iE_ID         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_hnbap_ProtocolIE_ID },
771   { &hf_hnbap_typeOfError   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_hnbap_TypeOfError },
772   { &hf_hnbap_iE_Extensions , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_hnbap_ProtocolExtensionContainer },
773   { NULL, 0, 0, NULL }
774 };
775
776 static int
777 dissect_hnbap_CriticalityDiagnostics_IE_List_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
778   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
779                                    ett_hnbap_CriticalityDiagnostics_IE_List_item, CriticalityDiagnostics_IE_List_item_sequence);
780
781   return offset;
782 }
783
784
785 static const per_sequence_t CriticalityDiagnostics_IE_List_sequence_of[1] = {
786   { &hf_hnbap_CriticalityDiagnostics_IE_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_hnbap_CriticalityDiagnostics_IE_List_item },
787 };
788
789 static int
790 dissect_hnbap_CriticalityDiagnostics_IE_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
791   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
792                                                   ett_hnbap_CriticalityDiagnostics_IE_List, CriticalityDiagnostics_IE_List_sequence_of,
793                                                   1, maxNrOfErrors, FALSE);
794
795   return offset;
796 }
797
798
799 static const per_sequence_t CriticalityDiagnostics_sequence[] = {
800   { &hf_hnbap_procedureCode , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_hnbap_ProcedureCode },
801   { &hf_hnbap_triggeringMessage, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_hnbap_TriggeringMessage },
802   { &hf_hnbap_procedureCriticality, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_hnbap_Criticality },
803   { &hf_hnbap_iEsCriticalityDiagnostics, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_hnbap_CriticalityDiagnostics_IE_List },
804   { &hf_hnbap_iE_Extensions , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_hnbap_ProtocolExtensionContainer },
805   { NULL, 0, 0, NULL }
806 };
807
808 static int
809 dissect_hnbap_CriticalityDiagnostics(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
810   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
811                                    ett_hnbap_CriticalityDiagnostics, CriticalityDiagnostics_sequence);
812
813   return offset;
814 }
815
816
817
818 static int
819 dissect_hnbap_CSG_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
820   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
821                                      27, 27, FALSE, NULL);
822
823   return offset;
824 }
825
826
827 static const value_string hnbap_CSG_Indicator_vals[] = {
828   {   0, "csg-capable" },
829   {   1, "not-csg-capable" },
830   { 0, NULL }
831 };
832
833
834 static int
835 dissect_hnbap_CSG_Indicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
836   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
837                                      2, NULL, TRUE, 0, NULL);
838
839   return offset;
840 }
841
842
843 static const value_string hnbap_CSGMembershipStatus_vals[] = {
844   {   0, "member" },
845   {   1, "non-member" },
846   { 0, NULL }
847 };
848
849
850 static int
851 dissect_hnbap_CSGMembershipStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
852   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
853                                      2, NULL, TRUE, 0, NULL);
854
855   return offset;
856 }
857
858
859
860 static int
861 dissect_hnbap_PLMNidentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
862   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
863                                        3, 3, FALSE, NULL);
864
865   return offset;
866 }
867
868
869
870 static int
871 dissect_hnbap_LAC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
872   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
873                                        2, 2, FALSE, NULL);
874
875   return offset;
876 }
877
878
879
880 static int
881 dissect_hnbap_CI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
882   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
883                                        2, 2, FALSE, NULL);
884
885   return offset;
886 }
887
888
889 static const per_sequence_t CGI_sequence[] = {
890   { &hf_hnbap_pLMNidentity  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_hnbap_PLMNidentity },
891   { &hf_hnbap_lAC           , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_hnbap_LAC },
892   { &hf_hnbap_cI            , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_hnbap_CI },
893   { &hf_hnbap_iE_Extensions , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_hnbap_ProtocolExtensionContainer },
894   { NULL, 0, 0, NULL }
895 };
896
897 static int
898 dissect_hnbap_CGI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
899   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
900                                    ett_hnbap_CGI, CGI_sequence);
901
902   return offset;
903 }
904
905
906
907 static int
908 dissect_hnbap_ESN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
909   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
910                                      32, 32, FALSE, NULL);
911
912   return offset;
913 }
914
915
916 static const value_string hnbap_T_latitudeSign_vals[] = {
917   {   0, "north" },
918   {   1, "south" },
919   { 0, NULL }
920 };
921
922
923 static int
924 dissect_hnbap_T_latitudeSign(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
925   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
926                                      2, NULL, FALSE, 0, NULL);
927
928   return offset;
929 }
930
931
932
933 static int
934 dissect_hnbap_INTEGER_0_8388607(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
935   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
936                                                             0U, 8388607U, NULL, FALSE);
937
938   return offset;
939 }
940
941
942
943 static int
944 dissect_hnbap_INTEGER_M8388608_8388607(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
945   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
946                                                             -8388608, 8388607U, NULL, FALSE);
947
948   return offset;
949 }
950
951
952 static const per_sequence_t GeographicalCoordinates_sequence[] = {
953   { &hf_hnbap_latitudeSign  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_hnbap_T_latitudeSign },
954   { &hf_hnbap_latitude      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_hnbap_INTEGER_0_8388607 },
955   { &hf_hnbap_longitude     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_hnbap_INTEGER_M8388608_8388607 },
956   { &hf_hnbap_iE_Extensions , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_hnbap_ProtocolExtensionContainer },
957   { NULL, 0, 0, NULL }
958 };
959
960 static int
961 dissect_hnbap_GeographicalCoordinates(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
962   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
963                                    ett_hnbap_GeographicalCoordinates, GeographicalCoordinates_sequence);
964
965   return offset;
966 }
967
968
969 static const per_sequence_t GeographicalLocation_sequence[] = {
970   { &hf_hnbap_geographical_location_geographical_coordinates, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_hnbap_GeographicalCoordinates },
971   { &hf_hnbap_altitudeAndDirection, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_hnbap_AltitudeAndDirection },
972   { &hf_hnbap_iE_Extensions , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_hnbap_ProtocolExtensionContainer },
973   { NULL, 0, 0, NULL }
974 };
975
976 static int
977 dissect_hnbap_GeographicalLocation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
978   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
979                                    ett_hnbap_GeographicalLocation, GeographicalLocation_sequence);
980
981   return offset;
982 }
983
984
985 static const value_string hnbap_HNB_Cell_Access_Mode_vals[] = {
986   {   0, "closed" },
987   {   1, "hybrid" },
988   {   2, "open" },
989   { 0, NULL }
990 };
991
992
993 static int
994 dissect_hnbap_HNB_Cell_Access_Mode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
995   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
996                                      3, NULL, TRUE, 0, NULL);
997
998   return offset;
999 }
1000
1001
1002
1003 static int
1004 dissect_hnbap_RAC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1005   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1006                                        1, 1, FALSE, NULL);
1007
1008   return offset;
1009 }
1010
1011
1012 static const per_sequence_t UTRANCellID_sequence[] = {
1013   { &hf_hnbap_lAC           , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_hnbap_LAC },
1014   { &hf_hnbap_rAC           , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_hnbap_RAC },
1015   { &hf_hnbap_pLMNidentity  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_hnbap_PLMNidentity },
1016   { &hf_hnbap_uTRANcellID   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_hnbap_CellIdentity },
1017   { &hf_hnbap_iE_Extensions , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_hnbap_ProtocolExtensionContainer },
1018   { NULL, 0, 0, NULL }
1019 };
1020
1021 static int
1022 dissect_hnbap_UTRANCellID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1023   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1024                                    ett_hnbap_UTRANCellID, UTRANCellID_sequence);
1025
1026   return offset;
1027 }
1028
1029
1030 static const value_string hnbap_MacroCellID_vals[] = {
1031   {   0, "uTRANCellID" },
1032   {   1, "gERANCellID" },
1033   { 0, NULL }
1034 };
1035
1036 static const per_choice_t MacroCellID_choice[] = {
1037   {   0, &hf_hnbap_uTRANCellID   , ASN1_EXTENSION_ROOT    , dissect_hnbap_UTRANCellID },
1038   {   1, &hf_hnbap_gERANCellID   , ASN1_EXTENSION_ROOT    , dissect_hnbap_CGI },
1039   { 0, NULL, 0, NULL }
1040 };
1041
1042 static int
1043 dissect_hnbap_MacroCellID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1044   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1045                                  ett_hnbap_MacroCellID, MacroCellID_choice,
1046                                  NULL);
1047
1048   return offset;
1049 }
1050
1051
1052 static const per_sequence_t MacroCoverageInformation_sequence[] = {
1053   { &hf_hnbap_cellIdentity  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_hnbap_MacroCellID },
1054   { &hf_hnbap_iE_Extensions , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_hnbap_ProtocolExtensionContainer },
1055   { NULL, 0, 0, NULL }
1056 };
1057
1058 static int
1059 dissect_hnbap_MacroCoverageInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1060   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1061                                    ett_hnbap_MacroCoverageInformation, MacroCoverageInformation_sequence);
1062
1063   return offset;
1064 }
1065
1066
1067 static const per_sequence_t HNB_Location_Information_sequence[] = {
1068   { &hf_hnbap_macroCoverageInfo, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_hnbap_MacroCoverageInformation },
1069   { &hf_hnbap_hnb_location_information_geographical_coordinates, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_hnbap_GeographicalLocation },
1070   { &hf_hnbap_iE_Extensions , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_hnbap_ProtocolExtensionContainer },
1071   { NULL, 0, 0, NULL }
1072 };
1073
1074 static int
1075 dissect_hnbap_HNB_Location_Information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1076   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1077                                    ett_hnbap_HNB_Location_Information, HNB_Location_Information_sequence);
1078
1079   return offset;
1080 }
1081
1082
1083
1084 static int
1085 dissect_hnbap_HNB_Identity_Info(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1086   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1087                                        1, 255, FALSE, NULL);
1088
1089   return offset;
1090 }
1091
1092
1093 static const per_sequence_t HNB_Identity_sequence[] = {
1094   { &hf_hnbap_hNB_Identity_Info, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_hnbap_HNB_Identity_Info },
1095   { &hf_hnbap_iE_Extensions , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_hnbap_ProtocolExtensionContainer },
1096   { NULL, 0, 0, NULL }
1097 };
1098
1099 static int
1100 dissect_hnbap_HNB_Identity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1101   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1102                                    ett_hnbap_HNB_Identity, HNB_Identity_sequence);
1103
1104   return offset;
1105 }
1106
1107
1108
1109 static int
1110 dissect_hnbap_IMEI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1111   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1112                                      60, 60, FALSE, NULL);
1113
1114   return offset;
1115 }
1116
1117
1118
1119 static int
1120 dissect_hnbap_IMSI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1121   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1122                                        3, 8, FALSE, NULL);
1123
1124   return offset;
1125 }
1126
1127
1128
1129 static int
1130 dissect_hnbap_IMSIDS41(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1131   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1132                                        5, 7, FALSE, NULL);
1133
1134   return offset;
1135 }
1136
1137
1138 static const per_sequence_t IMSIESN_sequence[] = {
1139   { &hf_hnbap_iMSIDS41      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_hnbap_IMSIDS41 },
1140   { &hf_hnbap_eSN           , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_hnbap_ESN },
1141   { NULL, 0, 0, NULL }
1142 };
1143
1144 static int
1145 dissect_hnbap_IMSIESN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1146   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1147                                    ett_hnbap_IMSIESN, IMSIESN_sequence);
1148
1149   return offset;
1150 }
1151
1152
1153
1154 static int
1155 dissect_hnbap_Ipv4Address(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1156   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1157                                        4, 4, FALSE, NULL);
1158
1159   return offset;
1160 }
1161
1162
1163
1164 static int
1165 dissect_hnbap_Ipv6Address(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1166   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1167                                        16, 16, FALSE, NULL);
1168
1169   return offset;
1170 }
1171
1172
1173 static const value_string hnbap_T_ipaddress_vals[] = {
1174   {   0, "ipv4info" },
1175   {   1, "ipv6info" },
1176   { 0, NULL }
1177 };
1178
1179 static const per_choice_t T_ipaddress_choice[] = {
1180   {   0, &hf_hnbap_ipv4info      , ASN1_EXTENSION_ROOT    , dissect_hnbap_Ipv4Address },
1181   {   1, &hf_hnbap_ipv6info      , ASN1_EXTENSION_ROOT    , dissect_hnbap_Ipv6Address },
1182   { 0, NULL, 0, NULL }
1183 };
1184
1185 static int
1186 dissect_hnbap_T_ipaddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1187   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1188                                  ett_hnbap_T_ipaddress, T_ipaddress_choice,
1189                                  NULL);
1190
1191   return offset;
1192 }
1193
1194
1195 static const per_sequence_t IP_Address_sequence[] = {
1196   { &hf_hnbap_ipaddress     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_hnbap_T_ipaddress },
1197   { &hf_hnbap_iE_Extensions , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_hnbap_ProtocolExtensionContainer },
1198   { NULL, 0, 0, NULL }
1199 };
1200
1201 static int
1202 dissect_hnbap_IP_Address(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1203   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1204                                    ett_hnbap_IP_Address, IP_Address_sequence);
1205
1206   return offset;
1207 }
1208
1209
1210 static const per_sequence_t LAI_sequence[] = {
1211   { &hf_hnbap_pLMNID        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_hnbap_PLMNidentity },
1212   { &hf_hnbap_lAC           , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_hnbap_LAC },
1213   { NULL, 0, 0, NULL }
1214 };
1215
1216 static int
1217 dissect_hnbap_LAI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1218   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1219                                    ett_hnbap_LAI, LAI_sequence);
1220
1221   return offset;
1222 }
1223
1224
1225
1226 static int
1227 dissect_hnbap_MuxPortNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1228   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1229                                                             1024U, 65535U, NULL, FALSE);
1230
1231   return offset;
1232 }
1233
1234
1235
1236 static int
1237 dissect_hnbap_PTMSI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1238   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1239                                      32, 32, FALSE, NULL);
1240
1241   return offset;
1242 }
1243
1244
1245 static const per_sequence_t RAI_sequence[] = {
1246   { &hf_hnbap_lAI           , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_hnbap_LAI },
1247   { &hf_hnbap_rAC           , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_hnbap_RAC },
1248   { NULL, 0, 0, NULL }
1249 };
1250
1251 static int
1252 dissect_hnbap_RAI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1253   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1254                                    ett_hnbap_RAI, RAI_sequence);
1255
1256   return offset;
1257 }
1258
1259
1260 static const per_sequence_t PTMSIRAI_sequence[] = {
1261   { &hf_hnbap_pTMSI         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_hnbap_PTMSI },
1262   { &hf_hnbap_rAI           , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_hnbap_RAI },
1263   { NULL, 0, 0, NULL }
1264 };
1265
1266 static int
1267 dissect_hnbap_PTMSIRAI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1268   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1269                                    ett_hnbap_PTMSIRAI, PTMSIRAI_sequence);
1270
1271   return offset;
1272 }
1273
1274
1275 static const value_string hnbap_Registration_Cause_vals[] = {
1276   {   0, "emergency-call" },
1277   {   1, "normal" },
1278   { 0, NULL }
1279 };
1280
1281
1282 static int
1283 dissect_hnbap_Registration_Cause(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1284   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1285                                      2, NULL, TRUE, 0, NULL);
1286
1287   return offset;
1288 }
1289
1290
1291
1292 static int
1293 dissect_hnbap_RNC_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1294   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1295                                                             0U, 65535U, NULL, FALSE);
1296
1297   return offset;
1298 }
1299
1300
1301
1302 static int
1303 dissect_hnbap_SAC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1304   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1305                                        2, 2, FALSE, NULL);
1306
1307   return offset;
1308 }
1309
1310
1311
1312 static int
1313 dissect_hnbap_BIT_STRING_SIZE_32(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1314   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1315                                      32, 32, FALSE, NULL);
1316
1317   return offset;
1318 }
1319
1320
1321 static const per_sequence_t TMSILAI_sequence[] = {
1322   { &hf_hnbap_tMSI          , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_hnbap_BIT_STRING_SIZE_32 },
1323   { &hf_hnbap_lAI           , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_hnbap_LAI },
1324   { NULL, 0, 0, NULL }
1325 };
1326
1327 static int
1328 dissect_hnbap_TMSILAI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1329   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1330                                    ett_hnbap_TMSILAI, TMSILAI_sequence);
1331
1332   return offset;
1333 }
1334
1335
1336
1337 static int
1338 dissect_hnbap_TMSIDS41(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1339   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1340                                        2, 17, FALSE, NULL);
1341
1342   return offset;
1343 }
1344
1345
1346 static const per_sequence_t UE_Capabilities_sequence[] = {
1347   { &hf_hnbap_access_stratum_release_indicator, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_hnbap_Access_stratum_release_indicator },
1348   { &hf_hnbap_csg_indicator , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_hnbap_CSG_Indicator },
1349   { &hf_hnbap_iE_Extensions , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_hnbap_ProtocolExtensionContainer },
1350   { NULL, 0, 0, NULL }
1351 };
1352
1353 static int
1354 dissect_hnbap_UE_Capabilities(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1355   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1356                                    ett_hnbap_UE_Capabilities, UE_Capabilities_sequence);
1357
1358   return offset;
1359 }
1360
1361
1362 static const value_string hnbap_UE_Identity_vals[] = {
1363   {   0, "iMSI" },
1364   {   1, "tMSILAI" },
1365   {   2, "pTMSIRAI" },
1366   {   3, "iMEI" },
1367   {   4, "eSN" },
1368   {   5, "iMSIDS41" },
1369   {   6, "iMSIESN" },
1370   {   7, "tMSIDS1" },
1371   { 0, NULL }
1372 };
1373
1374 static const per_choice_t UE_Identity_choice[] = {
1375   {   0, &hf_hnbap_iMSI          , ASN1_EXTENSION_ROOT    , dissect_hnbap_IMSI },
1376   {   1, &hf_hnbap_tMSILAI       , ASN1_EXTENSION_ROOT    , dissect_hnbap_TMSILAI },
1377   {   2, &hf_hnbap_pTMSIRAI      , ASN1_EXTENSION_ROOT    , dissect_hnbap_PTMSIRAI },
1378   {   3, &hf_hnbap_iMEI          , ASN1_EXTENSION_ROOT    , dissect_hnbap_IMEI },
1379   {   4, &hf_hnbap_eSN           , ASN1_EXTENSION_ROOT    , dissect_hnbap_ESN },
1380   {   5, &hf_hnbap_iMSIDS41      , ASN1_EXTENSION_ROOT    , dissect_hnbap_IMSIDS41 },
1381   {   6, &hf_hnbap_iMSIESN       , ASN1_EXTENSION_ROOT    , dissect_hnbap_IMSIESN },
1382   {   7, &hf_hnbap_tMSIDS1       , ASN1_EXTENSION_ROOT    , dissect_hnbap_TMSIDS41 },
1383   { 0, NULL, 0, NULL }
1384 };
1385
1386 static int
1387 dissect_hnbap_UE_Identity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1388   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1389                                  ett_hnbap_UE_Identity, UE_Identity_choice,
1390                                  NULL);
1391
1392   return offset;
1393 }
1394
1395
1396 static const per_sequence_t HNBRegisterRequest_sequence[] = {
1397   { &hf_hnbap_protocolIEs   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_hnbap_ProtocolIE_Container },
1398   { &hf_hnbap_protocolExtensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_hnbap_ProtocolExtensionContainer },
1399   { NULL, 0, 0, NULL }
1400 };
1401
1402 static int
1403 dissect_hnbap_HNBRegisterRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1404 #line 72 "hnbap.cnf"
1405     col_set_str(actx->pinfo->cinfo, COL_INFO,
1406                "HNB_REGISTER_REQUEST ");
1407   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1408                                    ett_hnbap_HNBRegisterRequest, HNBRegisterRequest_sequence);
1409
1410
1411
1412
1413   return offset;
1414 }
1415
1416
1417 static const per_sequence_t HNBRegisterAccept_sequence[] = {
1418   { &hf_hnbap_protocolIEs   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_hnbap_ProtocolIE_Container },
1419   { &hf_hnbap_protocolExtensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_hnbap_ProtocolExtensionContainer },
1420   { NULL, 0, 0, NULL }
1421 };
1422
1423 static int
1424 dissect_hnbap_HNBRegisterAccept(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1425 #line 77 "hnbap.cnf"
1426     col_set_str(actx->pinfo->cinfo, COL_INFO,
1427                "HNB_REGISTER_ACCEPT ");
1428   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1429                                    ett_hnbap_HNBRegisterAccept, HNBRegisterAccept_sequence);
1430
1431
1432
1433
1434   return offset;
1435 }
1436
1437
1438 static const per_sequence_t HNBRegisterReject_sequence[] = {
1439   { &hf_hnbap_protocolIEs   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_hnbap_ProtocolIE_Container },
1440   { &hf_hnbap_protocolExtensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_hnbap_ProtocolExtensionContainer },
1441   { NULL, 0, 0, NULL }
1442 };
1443
1444 static int
1445 dissect_hnbap_HNBRegisterReject(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1446 #line 82 "hnbap.cnf"
1447     col_set_str(actx->pinfo->cinfo, COL_INFO,
1448                "HNB_REGISTER_REJECT ");
1449   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1450                                    ett_hnbap_HNBRegisterReject, HNBRegisterReject_sequence);
1451
1452
1453
1454
1455   return offset;
1456 }
1457
1458
1459 static const per_sequence_t HNBDe_Register_sequence[] = {
1460   { &hf_hnbap_protocolIEs   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_hnbap_ProtocolIE_Container },
1461   { &hf_hnbap_protocolExtensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_hnbap_ProtocolExtensionContainer },
1462   { NULL, 0, 0, NULL }
1463 };
1464
1465 static int
1466 dissect_hnbap_HNBDe_Register(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1467 #line 107 "hnbap.cnf"
1468     col_set_str(actx->pinfo->cinfo, COL_INFO,
1469                "HNB_DE-REGISTER ");
1470   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1471                                    ett_hnbap_HNBDe_Register, HNBDe_Register_sequence);
1472
1473
1474
1475
1476   return offset;
1477 }
1478
1479
1480 static const per_sequence_t UERegisterRequest_sequence[] = {
1481   { &hf_hnbap_protocolIEs   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_hnbap_ProtocolIE_Container },
1482   { &hf_hnbap_protocolExtensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_hnbap_ProtocolExtensionContainer },
1483   { NULL, 0, 0, NULL }
1484 };
1485
1486 static int
1487 dissect_hnbap_UERegisterRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1488 #line 87 "hnbap.cnf"
1489     col_set_str(actx->pinfo->cinfo, COL_INFO,
1490                "UE_REGISTER_REQUEST ");
1491   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1492                                    ett_hnbap_UERegisterRequest, UERegisterRequest_sequence);
1493
1494
1495
1496
1497   return offset;
1498 }
1499
1500
1501 static const per_sequence_t UERegisterAccept_sequence[] = {
1502   { &hf_hnbap_protocolIEs   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_hnbap_ProtocolIE_Container },
1503   { &hf_hnbap_protocolExtensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_hnbap_ProtocolExtensionContainer },
1504   { NULL, 0, 0, NULL }
1505 };
1506
1507 static int
1508 dissect_hnbap_UERegisterAccept(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1509 #line 92 "hnbap.cnf"
1510     col_set_str(actx->pinfo->cinfo, COL_INFO,
1511                "UE_REGISTER_ACCEPT ");
1512   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1513                                    ett_hnbap_UERegisterAccept, UERegisterAccept_sequence);
1514
1515
1516
1517
1518   return offset;
1519 }
1520
1521
1522 static const per_sequence_t UERegisterReject_sequence[] = {
1523   { &hf_hnbap_protocolIEs   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_hnbap_ProtocolIE_Container },
1524   { &hf_hnbap_protocolExtensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_hnbap_ProtocolExtensionContainer },
1525   { NULL, 0, 0, NULL }
1526 };
1527
1528 static int
1529 dissect_hnbap_UERegisterReject(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1530 #line 97 "hnbap.cnf"
1531     col_set_str(actx->pinfo->cinfo, COL_INFO,
1532                "UE_REGISTER_REJECT ");
1533   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1534                                    ett_hnbap_UERegisterReject, UERegisterReject_sequence);
1535
1536
1537
1538
1539   return offset;
1540 }
1541
1542
1543 static const per_sequence_t UEDe_Register_sequence[] = {
1544   { &hf_hnbap_protocolIEs   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_hnbap_ProtocolIE_Container },
1545   { &hf_hnbap_protocolExtensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_hnbap_ProtocolExtensionContainer },
1546   { NULL, 0, 0, NULL }
1547 };
1548
1549 static int
1550 dissect_hnbap_UEDe_Register(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1551 #line 102 "hnbap.cnf"
1552     col_set_str(actx->pinfo->cinfo, COL_INFO,
1553                "UE_DE-REGISTER ");
1554   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1555                                    ett_hnbap_UEDe_Register, UEDe_Register_sequence);
1556
1557
1558
1559
1560   return offset;
1561 }
1562
1563
1564 static const per_sequence_t ErrorIndication_sequence[] = {
1565   { &hf_hnbap_protocolIEs   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_hnbap_ProtocolIE_Container },
1566   { &hf_hnbap_protocolExtensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_hnbap_ProtocolExtensionContainer },
1567   { NULL, 0, 0, NULL }
1568 };
1569
1570 static int
1571 dissect_hnbap_ErrorIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1572 #line 112 "hnbap.cnf"
1573     col_set_str(actx->pinfo->cinfo, COL_INFO,
1574                "ERROR_INDICATION ");
1575     col_set_fence(actx->pinfo->cinfo, COL_INFO); /* Protect info from CriticalityDiagnostics decodes */
1576   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1577                                    ett_hnbap_ErrorIndication, ErrorIndication_sequence);
1578
1579
1580
1581
1582   return offset;
1583 }
1584
1585
1586 static const per_sequence_t PrivateMessage_sequence[] = {
1587   { &hf_hnbap_privateIEs    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_hnbap_PrivateIE_Container },
1588   { NULL, 0, 0, NULL }
1589 };
1590
1591 static int
1592 dissect_hnbap_PrivateMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1593 #line 118 "hnbap.cnf"
1594     col_set_str(actx->pinfo->cinfo, COL_INFO,
1595                "PRIVATE_MESSAGE ");
1596   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1597                                    ett_hnbap_PrivateMessage, PrivateMessage_sequence);
1598
1599
1600
1601   return offset;
1602 }
1603
1604
1605
1606 static int
1607 dissect_hnbap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1608   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue);
1609
1610   return offset;
1611 }
1612
1613
1614 static const per_sequence_t InitiatingMessage_sequence[] = {
1615   { &hf_hnbap_procedureCode , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_hnbap_ProcedureCode },
1616   { &hf_hnbap_criticality   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_hnbap_Criticality },
1617   { &hf_hnbap_initiatingMessagevalue, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_hnbap_InitiatingMessage_value },
1618   { NULL, 0, 0, NULL }
1619 };
1620
1621 static int
1622 dissect_hnbap_InitiatingMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1623   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1624                                    ett_hnbap_InitiatingMessage, InitiatingMessage_sequence);
1625
1626   return offset;
1627 }
1628
1629
1630
1631 static int
1632 dissect_hnbap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1633   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue);
1634
1635   return offset;
1636 }
1637
1638
1639 static const per_sequence_t SuccessfulOutcome_sequence[] = {
1640   { &hf_hnbap_procedureCode , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_hnbap_ProcedureCode },
1641   { &hf_hnbap_criticality   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_hnbap_Criticality },
1642   { &hf_hnbap_successfulOutcome_value, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_hnbap_SuccessfulOutcome_value },
1643   { NULL, 0, 0, NULL }
1644 };
1645
1646 static int
1647 dissect_hnbap_SuccessfulOutcome(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1648   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1649                                    ett_hnbap_SuccessfulOutcome, SuccessfulOutcome_sequence);
1650
1651   return offset;
1652 }
1653
1654
1655
1656 static int
1657 dissect_hnbap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1658   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue);
1659
1660   return offset;
1661 }
1662
1663
1664 static const per_sequence_t UnsuccessfulOutcome_sequence[] = {
1665   { &hf_hnbap_procedureCode , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_hnbap_ProcedureCode },
1666   { &hf_hnbap_criticality   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_hnbap_Criticality },
1667   { &hf_hnbap_unsuccessfulOutcome_value, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_hnbap_UnsuccessfulOutcome_value },
1668   { NULL, 0, 0, NULL }
1669 };
1670
1671 static int
1672 dissect_hnbap_UnsuccessfulOutcome(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1673   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1674                                    ett_hnbap_UnsuccessfulOutcome, UnsuccessfulOutcome_sequence);
1675
1676   return offset;
1677 }
1678
1679
1680 static const value_string hnbap_HNBAP_PDU_vals[] = {
1681   {   0, "initiatingMessage" },
1682   {   1, "successfulOutcome" },
1683   {   2, "unsuccessfulOutcome" },
1684   { 0, NULL }
1685 };
1686
1687 static const per_choice_t HNBAP_PDU_choice[] = {
1688   {   0, &hf_hnbap_initiatingMessage, ASN1_EXTENSION_ROOT    , dissect_hnbap_InitiatingMessage },
1689   {   1, &hf_hnbap_successfulOutcome, ASN1_EXTENSION_ROOT    , dissect_hnbap_SuccessfulOutcome },
1690   {   2, &hf_hnbap_unsuccessfulOutcome, ASN1_EXTENSION_ROOT    , dissect_hnbap_UnsuccessfulOutcome },
1691   { 0, NULL, 0, NULL }
1692 };
1693
1694 static int
1695 dissect_hnbap_HNBAP_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1696   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1697                                  ett_hnbap_HNBAP_PDU, HNBAP_PDU_choice,
1698                                  NULL);
1699
1700   return offset;
1701 }
1702
1703 /*--- PDUs ---*/
1704
1705 static int dissect_BackoffTimer_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1706   int offset = 0;
1707   asn1_ctx_t asn1_ctx;
1708   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1709   offset = dissect_hnbap_BackoffTimer(tvb, offset, &asn1_ctx, tree, hf_hnbap_BackoffTimer_PDU);
1710   offset += 7; offset >>= 3;
1711   return offset;
1712 }
1713 static int dissect_Cause_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1714   int offset = 0;
1715   asn1_ctx_t asn1_ctx;
1716   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1717   offset = dissect_hnbap_Cause(tvb, offset, &asn1_ctx, tree, hf_hnbap_Cause_PDU);
1718   offset += 7; offset >>= 3;
1719   return offset;
1720 }
1721 static int dissect_CellIdentity_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1722   int offset = 0;
1723   asn1_ctx_t asn1_ctx;
1724   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1725   offset = dissect_hnbap_CellIdentity(tvb, offset, &asn1_ctx, tree, hf_hnbap_CellIdentity_PDU);
1726   offset += 7; offset >>= 3;
1727   return offset;
1728 }
1729 static int dissect_Context_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1730   int offset = 0;
1731   asn1_ctx_t asn1_ctx;
1732   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1733   offset = dissect_hnbap_Context_ID(tvb, offset, &asn1_ctx, tree, hf_hnbap_Context_ID_PDU);
1734   offset += 7; offset >>= 3;
1735   return offset;
1736 }
1737 static int dissect_CriticalityDiagnostics_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1738   int offset = 0;
1739   asn1_ctx_t asn1_ctx;
1740   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1741   offset = dissect_hnbap_CriticalityDiagnostics(tvb, offset, &asn1_ctx, tree, hf_hnbap_CriticalityDiagnostics_PDU);
1742   offset += 7; offset >>= 3;
1743   return offset;
1744 }
1745 static int dissect_CSG_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1746   int offset = 0;
1747   asn1_ctx_t asn1_ctx;
1748   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1749   offset = dissect_hnbap_CSG_ID(tvb, offset, &asn1_ctx, tree, hf_hnbap_CSG_ID_PDU);
1750   offset += 7; offset >>= 3;
1751   return offset;
1752 }
1753 static int dissect_CSGMembershipStatus_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1754   int offset = 0;
1755   asn1_ctx_t asn1_ctx;
1756   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1757   offset = dissect_hnbap_CSGMembershipStatus(tvb, offset, &asn1_ctx, tree, hf_hnbap_CSGMembershipStatus_PDU);
1758   offset += 7; offset >>= 3;
1759   return offset;
1760 }
1761 static int dissect_HNB_Cell_Access_Mode_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1762   int offset = 0;
1763   asn1_ctx_t asn1_ctx;
1764   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1765   offset = dissect_hnbap_HNB_Cell_Access_Mode(tvb, offset, &asn1_ctx, tree, hf_hnbap_HNB_Cell_Access_Mode_PDU);
1766   offset += 7; offset >>= 3;
1767   return offset;
1768 }
1769 static int dissect_HNB_Location_Information_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1770   int offset = 0;
1771   asn1_ctx_t asn1_ctx;
1772   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1773   offset = dissect_hnbap_HNB_Location_Information(tvb, offset, &asn1_ctx, tree, hf_hnbap_HNB_Location_Information_PDU);
1774   offset += 7; offset >>= 3;
1775   return offset;
1776 }
1777 static int dissect_HNB_Identity_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1778   int offset = 0;
1779   asn1_ctx_t asn1_ctx;
1780   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1781   offset = dissect_hnbap_HNB_Identity(tvb, offset, &asn1_ctx, tree, hf_hnbap_HNB_Identity_PDU);
1782   offset += 7; offset >>= 3;
1783   return offset;
1784 }
1785 static int dissect_IP_Address_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1786   int offset = 0;
1787   asn1_ctx_t asn1_ctx;
1788   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1789   offset = dissect_hnbap_IP_Address(tvb, offset, &asn1_ctx, tree, hf_hnbap_IP_Address_PDU);
1790   offset += 7; offset >>= 3;
1791   return offset;
1792 }
1793 static int dissect_LAC_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1794   int offset = 0;
1795   asn1_ctx_t asn1_ctx;
1796   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1797   offset = dissect_hnbap_LAC(tvb, offset, &asn1_ctx, tree, hf_hnbap_LAC_PDU);
1798   offset += 7; offset >>= 3;
1799   return offset;
1800 }
1801 static int dissect_MuxPortNumber_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1802   int offset = 0;
1803   asn1_ctx_t asn1_ctx;
1804   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1805   offset = dissect_hnbap_MuxPortNumber(tvb, offset, &asn1_ctx, tree, hf_hnbap_MuxPortNumber_PDU);
1806   offset += 7; offset >>= 3;
1807   return offset;
1808 }
1809 static int dissect_PLMNidentity_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1810   int offset = 0;
1811   asn1_ctx_t asn1_ctx;
1812   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1813   offset = dissect_hnbap_PLMNidentity(tvb, offset, &asn1_ctx, tree, hf_hnbap_PLMNidentity_PDU);
1814   offset += 7; offset >>= 3;
1815   return offset;
1816 }
1817 static int dissect_RAC_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1818   int offset = 0;
1819   asn1_ctx_t asn1_ctx;
1820   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1821   offset = dissect_hnbap_RAC(tvb, offset, &asn1_ctx, tree, hf_hnbap_RAC_PDU);
1822   offset += 7; offset >>= 3;
1823   return offset;
1824 }
1825 static int dissect_Registration_Cause_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1826   int offset = 0;
1827   asn1_ctx_t asn1_ctx;
1828   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1829   offset = dissect_hnbap_Registration_Cause(tvb, offset, &asn1_ctx, tree, hf_hnbap_Registration_Cause_PDU);
1830   offset += 7; offset >>= 3;
1831   return offset;
1832 }
1833 static int dissect_RNC_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1834   int offset = 0;
1835   asn1_ctx_t asn1_ctx;
1836   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1837   offset = dissect_hnbap_RNC_ID(tvb, offset, &asn1_ctx, tree, hf_hnbap_RNC_ID_PDU);
1838   offset += 7; offset >>= 3;
1839   return offset;
1840 }
1841 static int dissect_SAC_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1842   int offset = 0;
1843   asn1_ctx_t asn1_ctx;
1844   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1845   offset = dissect_hnbap_SAC(tvb, offset, &asn1_ctx, tree, hf_hnbap_SAC_PDU);
1846   offset += 7; offset >>= 3;
1847   return offset;
1848 }
1849 static int dissect_UE_Capabilities_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1850   int offset = 0;
1851   asn1_ctx_t asn1_ctx;
1852   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1853   offset = dissect_hnbap_UE_Capabilities(tvb, offset, &asn1_ctx, tree, hf_hnbap_UE_Capabilities_PDU);
1854   offset += 7; offset >>= 3;
1855   return offset;
1856 }
1857 static int dissect_UE_Identity_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1858   int offset = 0;
1859   asn1_ctx_t asn1_ctx;
1860   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1861   offset = dissect_hnbap_UE_Identity(tvb, offset, &asn1_ctx, tree, hf_hnbap_UE_Identity_PDU);
1862   offset += 7; offset >>= 3;
1863   return offset;
1864 }
1865 static int dissect_HNBRegisterRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1866   int offset = 0;
1867   asn1_ctx_t asn1_ctx;
1868   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1869   offset = dissect_hnbap_HNBRegisterRequest(tvb, offset, &asn1_ctx, tree, hf_hnbap_HNBRegisterRequest_PDU);
1870   offset += 7; offset >>= 3;
1871   return offset;
1872 }
1873 static int dissect_HNBRegisterAccept_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1874   int offset = 0;
1875   asn1_ctx_t asn1_ctx;
1876   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1877   offset = dissect_hnbap_HNBRegisterAccept(tvb, offset, &asn1_ctx, tree, hf_hnbap_HNBRegisterAccept_PDU);
1878   offset += 7; offset >>= 3;
1879   return offset;
1880 }
1881 static int dissect_HNBRegisterReject_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1882   int offset = 0;
1883   asn1_ctx_t asn1_ctx;
1884   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1885   offset = dissect_hnbap_HNBRegisterReject(tvb, offset, &asn1_ctx, tree, hf_hnbap_HNBRegisterReject_PDU);
1886   offset += 7; offset >>= 3;
1887   return offset;
1888 }
1889 static int dissect_HNBDe_Register_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1890   int offset = 0;
1891   asn1_ctx_t asn1_ctx;
1892   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1893   offset = dissect_hnbap_HNBDe_Register(tvb, offset, &asn1_ctx, tree, hf_hnbap_HNBDe_Register_PDU);
1894   offset += 7; offset >>= 3;
1895   return offset;
1896 }
1897 static int dissect_UERegisterRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1898   int offset = 0;
1899   asn1_ctx_t asn1_ctx;
1900   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1901   offset = dissect_hnbap_UERegisterRequest(tvb, offset, &asn1_ctx, tree, hf_hnbap_UERegisterRequest_PDU);
1902   offset += 7; offset >>= 3;
1903   return offset;
1904 }
1905 static int dissect_UERegisterAccept_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1906   int offset = 0;
1907   asn1_ctx_t asn1_ctx;
1908   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1909   offset = dissect_hnbap_UERegisterAccept(tvb, offset, &asn1_ctx, tree, hf_hnbap_UERegisterAccept_PDU);
1910   offset += 7; offset >>= 3;
1911   return offset;
1912 }
1913 static int dissect_UERegisterReject_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1914   int offset = 0;
1915   asn1_ctx_t asn1_ctx;
1916   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1917   offset = dissect_hnbap_UERegisterReject(tvb, offset, &asn1_ctx, tree, hf_hnbap_UERegisterReject_PDU);
1918   offset += 7; offset >>= 3;
1919   return offset;
1920 }
1921 static int dissect_UEDe_Register_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1922   int offset = 0;
1923   asn1_ctx_t asn1_ctx;
1924   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1925   offset = dissect_hnbap_UEDe_Register(tvb, offset, &asn1_ctx, tree, hf_hnbap_UEDe_Register_PDU);
1926   offset += 7; offset >>= 3;
1927   return offset;
1928 }
1929 static int dissect_ErrorIndication_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1930   int offset = 0;
1931   asn1_ctx_t asn1_ctx;
1932   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1933   offset = dissect_hnbap_ErrorIndication(tvb, offset, &asn1_ctx, tree, hf_hnbap_ErrorIndication_PDU);
1934   offset += 7; offset >>= 3;
1935   return offset;
1936 }
1937 static int dissect_PrivateMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1938   int offset = 0;
1939   asn1_ctx_t asn1_ctx;
1940   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1941   offset = dissect_hnbap_PrivateMessage(tvb, offset, &asn1_ctx, tree, hf_hnbap_PrivateMessage_PDU);
1942   offset += 7; offset >>= 3;
1943   return offset;
1944 }
1945 static void dissect_HNBAP_PDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1946   asn1_ctx_t asn1_ctx;
1947   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1948   dissect_hnbap_HNBAP_PDU(tvb, 0, &asn1_ctx, tree, hf_hnbap_HNBAP_PDU_PDU);
1949 }
1950
1951
1952 /*--- End of included file: packet-hnbap-fn.c ---*/
1953 #line 85 "packet-hnbap-template.c"
1954
1955 static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
1956 {
1957   return (dissector_try_port_new(hnbap_ies_dissector_table, ProtocolIE_ID, tvb, pinfo, tree, FALSE)) ? tvb_length(tvb) : 0;
1958 }
1959
1960 static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
1961 {
1962   return (dissector_try_port_new(hnbap_extension_dissector_table, ProtocolIE_ID, tvb, pinfo, tree, FALSE)) ? tvb_length(tvb) : 0;
1963 }
1964 #if 0
1965 static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
1966 {
1967   if (!ProcedureCode) return 0;
1968   return (dissector_try_string(hnbap_proc_imsg_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
1969 }
1970
1971 static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
1972 {
1973   if (!ProcedureCode) return 0;
1974   return (dissector_try_string(hnbap_proc_sout_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
1975 }
1976
1977 static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
1978 {
1979   if (!ProcedureCode) return 0;
1980   return (dissector_try_string(hnbap_proc_uout_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
1981 }
1982 #endif
1983
1984 static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
1985 {
1986   return (dissector_try_port_new(hnbap_proc_imsg_dissector_table, ProcedureCode, tvb, pinfo, tree, FALSE)) ? tvb_length(tvb) : 0;
1987 }
1988
1989 static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
1990 {
1991   return (dissector_try_port_new(hnbap_proc_sout_dissector_table, ProcedureCode, tvb, pinfo, tree, FALSE)) ? tvb_length(tvb) : 0;
1992 }
1993
1994 static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
1995 {
1996   return (dissector_try_port_new(hnbap_proc_uout_dissector_table, ProcedureCode, tvb, pinfo, tree, FALSE)) ? tvb_length(tvb) : 0;
1997 }
1998
1999 static void
2000 dissect_hnbap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
2001 {
2002     proto_item  *hnbap_item = NULL;
2003     proto_tree  *hnbap_tree = NULL;
2004
2005     /* make entry in the Protocol column on summary display */
2006     col_set_str(pinfo->cinfo, COL_PROTOCOL, "HNBAP");
2007
2008     /* create the hnbap protocol tree */
2009     hnbap_item = proto_tree_add_item(tree, proto_hnbap, tvb, 0, -1, FALSE);
2010     hnbap_tree = proto_item_add_subtree(hnbap_item, ett_hnbap);
2011
2012     dissect_HNBAP_PDU_PDU(tvb, pinfo, hnbap_tree);
2013 }
2014
2015 /*--- proto_register_hnbap -------------------------------------------*/
2016 void proto_register_hnbap(void) {
2017 module_t *hnbap_module;
2018
2019   /* List of fields */
2020
2021   static hf_register_info hf[] = {
2022
2023
2024 /*--- Included file: packet-hnbap-hfarr.c ---*/
2025 #line 1 "packet-hnbap-hfarr.c"
2026     { &hf_hnbap_BackoffTimer_PDU,
2027       { "BackoffTimer", "hnbap.BackoffTimer",
2028         FT_UINT32, BASE_DEC, NULL, 0,
2029         "hnbap.BackoffTimer", HFILL }},
2030     { &hf_hnbap_Cause_PDU,
2031       { "Cause", "hnbap.Cause",
2032         FT_UINT32, BASE_DEC, VALS(hnbap_Cause_vals), 0,
2033         "hnbap.Cause", HFILL }},
2034     { &hf_hnbap_CellIdentity_PDU,
2035       { "CellIdentity", "hnbap.CellIdentity",
2036         FT_BYTES, BASE_NONE, NULL, 0,
2037         "hnbap.CellIdentity", HFILL }},
2038     { &hf_hnbap_Context_ID_PDU,
2039       { "Context-ID", "hnbap.Context_ID",
2040         FT_BYTES, BASE_NONE, NULL, 0,
2041         "hnbap.Context_ID", HFILL }},
2042     { &hf_hnbap_CriticalityDiagnostics_PDU,
2043       { "CriticalityDiagnostics", "hnbap.CriticalityDiagnostics",
2044         FT_NONE, BASE_NONE, NULL, 0,
2045         "hnbap.CriticalityDiagnostics", HFILL }},
2046     { &hf_hnbap_CSG_ID_PDU,
2047       { "CSG-ID", "hnbap.CSG_ID",
2048         FT_BYTES, BASE_NONE, NULL, 0,
2049         "hnbap.CSG_ID", HFILL }},
2050     { &hf_hnbap_CSGMembershipStatus_PDU,
2051       { "CSGMembershipStatus", "hnbap.CSGMembershipStatus",
2052         FT_UINT32, BASE_DEC, VALS(hnbap_CSGMembershipStatus_vals), 0,
2053         "hnbap.CSGMembershipStatus", HFILL }},
2054     { &hf_hnbap_HNB_Cell_Access_Mode_PDU,
2055       { "HNB-Cell-Access-Mode", "hnbap.HNB_Cell_Access_Mode",
2056         FT_UINT32, BASE_DEC, VALS(hnbap_HNB_Cell_Access_Mode_vals), 0,
2057         "hnbap.HNB_Cell_Access_Mode", HFILL }},
2058     { &hf_hnbap_HNB_Location_Information_PDU,
2059       { "HNB-Location-Information", "hnbap.HNB_Location_Information",
2060         FT_NONE, BASE_NONE, NULL, 0,
2061         "hnbap.HNB_Location_Information", HFILL }},
2062     { &hf_hnbap_HNB_Identity_PDU,
2063       { "HNB-Identity", "hnbap.HNB_Identity",
2064         FT_NONE, BASE_NONE, NULL, 0,
2065         "hnbap.HNB_Identity", HFILL }},
2066     { &hf_hnbap_IP_Address_PDU,
2067       { "IP-Address", "hnbap.IP_Address",
2068         FT_NONE, BASE_NONE, NULL, 0,
2069         "hnbap.IP_Address", HFILL }},
2070     { &hf_hnbap_LAC_PDU,
2071       { "LAC", "hnbap.LAC",
2072         FT_BYTES, BASE_NONE, NULL, 0,
2073         "hnbap.LAC", HFILL }},
2074     { &hf_hnbap_MuxPortNumber_PDU,
2075       { "MuxPortNumber", "hnbap.MuxPortNumber",
2076         FT_UINT32, BASE_DEC, NULL, 0,
2077         "hnbap.MuxPortNumber", HFILL }},
2078     { &hf_hnbap_PLMNidentity_PDU,
2079       { "PLMNidentity", "hnbap.PLMNidentity",
2080         FT_BYTES, BASE_NONE, NULL, 0,
2081         "hnbap.PLMNidentity", HFILL }},
2082     { &hf_hnbap_RAC_PDU,
2083       { "RAC", "hnbap.RAC",
2084         FT_BYTES, BASE_NONE, NULL, 0,
2085         "hnbap.RAC", HFILL }},
2086     { &hf_hnbap_Registration_Cause_PDU,
2087       { "Registration-Cause", "hnbap.Registration_Cause",
2088         FT_UINT32, BASE_DEC, VALS(hnbap_Registration_Cause_vals), 0,
2089         "hnbap.Registration_Cause", HFILL }},
2090     { &hf_hnbap_RNC_ID_PDU,
2091       { "RNC-ID", "hnbap.RNC_ID",
2092         FT_UINT32, BASE_DEC, NULL, 0,
2093         "hnbap.RNC_ID", HFILL }},
2094     { &hf_hnbap_SAC_PDU,
2095       { "SAC", "hnbap.SAC",
2096         FT_BYTES, BASE_NONE, NULL, 0,
2097         "hnbap.SAC", HFILL }},
2098     { &hf_hnbap_UE_Capabilities_PDU,
2099       { "UE-Capabilities", "hnbap.UE_Capabilities",
2100         FT_NONE, BASE_NONE, NULL, 0,
2101         "hnbap.UE_Capabilities", HFILL }},
2102     { &hf_hnbap_UE_Identity_PDU,
2103       { "UE-Identity", "hnbap.UE_Identity",
2104         FT_UINT32, BASE_DEC, VALS(hnbap_UE_Identity_vals), 0,
2105         "hnbap.UE_Identity", HFILL }},
2106     { &hf_hnbap_HNBRegisterRequest_PDU,
2107       { "HNBRegisterRequest", "hnbap.HNBRegisterRequest",
2108         FT_NONE, BASE_NONE, NULL, 0,
2109         "hnbap.HNBRegisterRequest", HFILL }},
2110     { &hf_hnbap_HNBRegisterAccept_PDU,
2111       { "HNBRegisterAccept", "hnbap.HNBRegisterAccept",
2112         FT_NONE, BASE_NONE, NULL, 0,
2113         "hnbap.HNBRegisterAccept", HFILL }},
2114     { &hf_hnbap_HNBRegisterReject_PDU,
2115       { "HNBRegisterReject", "hnbap.HNBRegisterReject",
2116         FT_NONE, BASE_NONE, NULL, 0,
2117         "hnbap.HNBRegisterReject", HFILL }},
2118     { &hf_hnbap_HNBDe_Register_PDU,
2119       { "HNBDe-Register", "hnbap.HNBDe_Register",
2120         FT_NONE, BASE_NONE, NULL, 0,
2121         "hnbap.HNBDe_Register", HFILL }},
2122     { &hf_hnbap_UERegisterRequest_PDU,
2123       { "UERegisterRequest", "hnbap.UERegisterRequest",
2124         FT_NONE, BASE_NONE, NULL, 0,
2125         "hnbap.UERegisterRequest", HFILL }},
2126     { &hf_hnbap_UERegisterAccept_PDU,
2127       { "UERegisterAccept", "hnbap.UERegisterAccept",
2128         FT_NONE, BASE_NONE, NULL, 0,
2129         "hnbap.UERegisterAccept", HFILL }},
2130     { &hf_hnbap_UERegisterReject_PDU,
2131       { "UERegisterReject", "hnbap.UERegisterReject",
2132         FT_NONE, BASE_NONE, NULL, 0,
2133         "hnbap.UERegisterReject", HFILL }},
2134     { &hf_hnbap_UEDe_Register_PDU,
2135       { "UEDe-Register", "hnbap.UEDe_Register",
2136         FT_NONE, BASE_NONE, NULL, 0,
2137         "hnbap.UEDe_Register", HFILL }},
2138     { &hf_hnbap_ErrorIndication_PDU,
2139       { "ErrorIndication", "hnbap.ErrorIndication",
2140         FT_NONE, BASE_NONE, NULL, 0,
2141         "hnbap.ErrorIndication", HFILL }},
2142     { &hf_hnbap_PrivateMessage_PDU,
2143       { "PrivateMessage", "hnbap.PrivateMessage",
2144         FT_NONE, BASE_NONE, NULL, 0,
2145         "hnbap.PrivateMessage", HFILL }},
2146     { &hf_hnbap_HNBAP_PDU_PDU,
2147       { "HNBAP-PDU", "hnbap.HNBAP_PDU",
2148         FT_UINT32, BASE_DEC, VALS(hnbap_HNBAP_PDU_vals), 0,
2149         "hnbap.HNBAP_PDU", HFILL }},
2150     { &hf_hnbap_local,
2151       { "local", "hnbap.local",
2152         FT_UINT32, BASE_DEC, NULL, 0,
2153         "hnbap.INTEGER_0_65535", HFILL }},
2154     { &hf_hnbap_global,
2155       { "global", "hnbap.global",
2156         FT_OID, BASE_NONE, NULL, 0,
2157         "hnbap.OBJECT_IDENTIFIER", HFILL }},
2158     { &hf_hnbap_ProtocolIE_Container_item,
2159       { "ProtocolIE-Field", "hnbap.ProtocolIE_Field",
2160         FT_NONE, BASE_NONE, NULL, 0,
2161         "hnbap.ProtocolIE_Field", HFILL }},
2162     { &hf_hnbap_protocol_ie_field_id,
2163       { "id", "hnbap.id",
2164         FT_UINT32, BASE_DEC, VALS(hnbap_ProtocolIE_ID_vals), 0,
2165         "hnbap.ProtocolIE_ID", HFILL }},
2166     { &hf_hnbap_criticality,
2167       { "criticality", "hnbap.criticality",
2168         FT_UINT32, BASE_DEC, VALS(hnbap_Criticality_vals), 0,
2169         "hnbap.Criticality", HFILL }},
2170     { &hf_hnbap_ie_field_value,
2171       { "value", "hnbap.value",
2172         FT_NONE, BASE_NONE, NULL, 0,
2173         "hnbap.ProtocolIE_Field_value", HFILL }},
2174     { &hf_hnbap_ProtocolExtensionContainer_item,
2175       { "ProtocolExtensionField", "hnbap.ProtocolExtensionField",
2176         FT_NONE, BASE_NONE, NULL, 0,
2177         "hnbap.ProtocolExtensionField", HFILL }},
2178     { &hf_hnbap_id,
2179       { "id", "hnbap.id",
2180         FT_UINT32, BASE_DEC, VALS(hnbap_ProtocolIE_ID_vals), 0,
2181         "hnbap.ProtocolIE_ID", HFILL }},
2182     { &hf_hnbap_extensionValue,
2183       { "extensionValue", "hnbap.extensionValue",
2184         FT_NONE, BASE_NONE, NULL, 0,
2185         "hnbap.T_extensionValue", HFILL }},
2186     { &hf_hnbap_PrivateIE_Container_item,
2187       { "PrivateIE-Field", "hnbap.PrivateIE_Field",
2188         FT_NONE, BASE_NONE, NULL, 0,
2189         "hnbap.PrivateIE_Field", HFILL }},
2190     { &hf_hnbap_private_ie_field_id,
2191       { "id", "hnbap.id",
2192         FT_UINT32, BASE_DEC, VALS(hnbap_PrivateIE_ID_vals), 0,
2193         "hnbap.PrivateIE_ID", HFILL }},
2194     { &hf_hnbap_private_value,
2195       { "value", "hnbap.value",
2196         FT_NONE, BASE_NONE, NULL, 0,
2197         "hnbap.PrivateIE_Field_value", HFILL }},
2198     { &hf_hnbap_directionOfAltitude,
2199       { "directionOfAltitude", "hnbap.directionOfAltitude",
2200         FT_UINT32, BASE_DEC, VALS(hnbap_T_directionOfAltitude_vals), 0,
2201         "hnbap.T_directionOfAltitude", HFILL }},
2202     { &hf_hnbap_altitude,
2203       { "altitude", "hnbap.altitude",
2204         FT_UINT32, BASE_DEC, NULL, 0,
2205         "hnbap.INTEGER_0_32767", HFILL }},
2206     { &hf_hnbap_radioNetwork,
2207       { "radioNetwork", "hnbap.radioNetwork",
2208         FT_UINT32, BASE_DEC, VALS(hnbap_CauseRadioNetwork_vals), 0,
2209         "hnbap.CauseRadioNetwork", HFILL }},
2210     { &hf_hnbap_transport,
2211       { "transport", "hnbap.transport",
2212         FT_UINT32, BASE_DEC, VALS(hnbap_CauseTransport_vals), 0,
2213         "hnbap.CauseTransport", HFILL }},
2214     { &hf_hnbap_protocol,
2215       { "protocol", "hnbap.protocol",
2216         FT_UINT32, BASE_DEC, VALS(hnbap_CauseProtocol_vals), 0,
2217         "hnbap.CauseProtocol", HFILL }},
2218     { &hf_hnbap_misc,
2219       { "misc", "hnbap.misc",
2220         FT_UINT32, BASE_DEC, VALS(hnbap_CauseMisc_vals), 0,
2221         "hnbap.CauseMisc", HFILL }},
2222     { &hf_hnbap_procedureCode,
2223       { "procedureCode", "hnbap.procedureCode",
2224         FT_UINT32, BASE_DEC, VALS(hnbap_ProcedureCode_vals), 0,
2225         "hnbap.ProcedureCode", HFILL }},
2226     { &hf_hnbap_triggeringMessage,
2227       { "triggeringMessage", "hnbap.triggeringMessage",
2228         FT_UINT32, BASE_DEC, VALS(hnbap_TriggeringMessage_vals), 0,
2229         "hnbap.TriggeringMessage", HFILL }},
2230     { &hf_hnbap_procedureCriticality,
2231       { "procedureCriticality", "hnbap.procedureCriticality",
2232         FT_UINT32, BASE_DEC, VALS(hnbap_Criticality_vals), 0,
2233         "hnbap.Criticality", HFILL }},
2234     { &hf_hnbap_iEsCriticalityDiagnostics,
2235       { "iEsCriticalityDiagnostics", "hnbap.iEsCriticalityDiagnostics",
2236         FT_UINT32, BASE_DEC, NULL, 0,
2237         "hnbap.CriticalityDiagnostics_IE_List", HFILL }},
2238     { &hf_hnbap_iE_Extensions,
2239       { "iE-Extensions", "hnbap.iE_Extensions",
2240         FT_UINT32, BASE_DEC, NULL, 0,
2241         "hnbap.ProtocolExtensionContainer", HFILL }},
2242     { &hf_hnbap_CriticalityDiagnostics_IE_List_item,
2243       { "CriticalityDiagnostics-IE-List item", "hnbap.CriticalityDiagnostics_IE_List_item",
2244         FT_NONE, BASE_NONE, NULL, 0,
2245         "hnbap.CriticalityDiagnostics_IE_List_item", HFILL }},
2246     { &hf_hnbap_iECriticality,
2247       { "iECriticality", "hnbap.iECriticality",
2248         FT_UINT32, BASE_DEC, VALS(hnbap_Criticality_vals), 0,
2249         "hnbap.Criticality", HFILL }},
2250     { &hf_hnbap_iE_ID,
2251       { "iE-ID", "hnbap.iE_ID",
2252         FT_UINT32, BASE_DEC, VALS(hnbap_ProtocolIE_ID_vals), 0,
2253         "hnbap.ProtocolIE_ID", HFILL }},
2254     { &hf_hnbap_typeOfError,
2255       { "typeOfError", "hnbap.typeOfError",
2256         FT_UINT32, BASE_DEC, VALS(hnbap_TypeOfError_vals), 0,
2257         "hnbap.TypeOfError", HFILL }},
2258     { &hf_hnbap_pLMNidentity,
2259       { "pLMNidentity", "hnbap.pLMNidentity",
2260         FT_BYTES, BASE_NONE, NULL, 0,
2261         "hnbap.PLMNidentity", HFILL }},
2262     { &hf_hnbap_lAC,
2263       { "lAC", "hnbap.lAC",
2264         FT_BYTES, BASE_NONE, NULL, 0,
2265         "hnbap.LAC", HFILL }},
2266     { &hf_hnbap_cI,
2267       { "cI", "hnbap.cI",
2268         FT_BYTES, BASE_NONE, NULL, 0,
2269         "hnbap.CI", HFILL }},
2270     { &hf_hnbap_geographical_location_geographical_coordinates,
2271       { "geographicalCoordinates", "hnbap.geographicalCoordinates",
2272         FT_NONE, BASE_NONE, NULL, 0,
2273         "hnbap.GeographicalCoordinates", HFILL }},
2274     { &hf_hnbap_altitudeAndDirection,
2275       { "altitudeAndDirection", "hnbap.altitudeAndDirection",
2276         FT_NONE, BASE_NONE, NULL, 0,
2277         "hnbap.AltitudeAndDirection", HFILL }},
2278     { &hf_hnbap_latitudeSign,
2279       { "latitudeSign", "hnbap.latitudeSign",
2280         FT_UINT32, BASE_DEC, VALS(hnbap_T_latitudeSign_vals), 0,
2281         "hnbap.T_latitudeSign", HFILL }},
2282     { &hf_hnbap_latitude,
2283       { "latitude", "hnbap.latitude",
2284         FT_UINT32, BASE_DEC, NULL, 0,
2285         "hnbap.INTEGER_0_8388607", HFILL }},
2286     { &hf_hnbap_longitude,
2287       { "longitude", "hnbap.longitude",
2288         FT_INT32, BASE_DEC, NULL, 0,
2289         "hnbap.INTEGER_M8388608_8388607", HFILL }},
2290     { &hf_hnbap_macroCoverageInfo,
2291       { "macroCoverageInfo", "hnbap.macroCoverageInfo",
2292         FT_NONE, BASE_NONE, NULL, 0,
2293         "hnbap.MacroCoverageInformation", HFILL }},
2294     { &hf_hnbap_hnb_location_information_geographical_coordinates,
2295       { "geographicalCoordinates", "hnbap.geographicalCoordinates",
2296         FT_NONE, BASE_NONE, NULL, 0,
2297         "hnbap.GeographicalLocation", HFILL }},
2298     { &hf_hnbap_hNB_Identity_Info,
2299       { "hNB-Identity-Info", "hnbap.hNB_Identity_Info",
2300         FT_BYTES, BASE_NONE, NULL, 0,
2301         "hnbap.HNB_Identity_Info", HFILL }},
2302     { &hf_hnbap_iMSIDS41,
2303       { "iMSIDS41", "hnbap.iMSIDS41",
2304         FT_BYTES, BASE_NONE, NULL, 0,
2305         "hnbap.IMSIDS41", HFILL }},
2306     { &hf_hnbap_eSN,
2307       { "eSN", "hnbap.eSN",
2308         FT_BYTES, BASE_NONE, NULL, 0,
2309         "hnbap.ESN", HFILL }},
2310     { &hf_hnbap_ipaddress,
2311       { "ipaddress", "hnbap.ipaddress",
2312         FT_UINT32, BASE_DEC, VALS(hnbap_T_ipaddress_vals), 0,
2313         "hnbap.T_ipaddress", HFILL }},
2314     { &hf_hnbap_ipv4info,
2315       { "ipv4info", "hnbap.ipv4info",
2316         FT_BYTES, BASE_NONE, NULL, 0,
2317         "hnbap.Ipv4Address", HFILL }},
2318     { &hf_hnbap_ipv6info,
2319       { "ipv6info", "hnbap.ipv6info",
2320         FT_BYTES, BASE_NONE, NULL, 0,
2321         "hnbap.Ipv6Address", HFILL }},
2322     { &hf_hnbap_pLMNID,
2323       { "pLMNID", "hnbap.pLMNID",
2324         FT_BYTES, BASE_NONE, NULL, 0,
2325         "hnbap.PLMNidentity", HFILL }},
2326     { &hf_hnbap_cellIdentity,
2327       { "cellIdentity", "hnbap.cellIdentity",
2328         FT_UINT32, BASE_DEC, VALS(hnbap_MacroCellID_vals), 0,
2329         "hnbap.MacroCellID", HFILL }},
2330     { &hf_hnbap_uTRANCellID,
2331       { "uTRANCellID", "hnbap.uTRANCellID",
2332         FT_NONE, BASE_NONE, NULL, 0,
2333         "hnbap.UTRANCellID", HFILL }},
2334     { &hf_hnbap_gERANCellID,
2335       { "gERANCellID", "hnbap.gERANCellID",
2336         FT_NONE, BASE_NONE, NULL, 0,
2337         "hnbap.CGI", HFILL }},
2338     { &hf_hnbap_pTMSI,
2339       { "pTMSI", "hnbap.pTMSI",
2340         FT_BYTES, BASE_NONE, NULL, 0,
2341         "hnbap.PTMSI", HFILL }},
2342     { &hf_hnbap_rAI,
2343       { "rAI", "hnbap.rAI",
2344         FT_NONE, BASE_NONE, NULL, 0,
2345         "hnbap.RAI", HFILL }},
2346     { &hf_hnbap_lAI,
2347       { "lAI", "hnbap.lAI",
2348         FT_NONE, BASE_NONE, NULL, 0,
2349         "hnbap.LAI", HFILL }},
2350     { &hf_hnbap_rAC,
2351       { "rAC", "hnbap.rAC",
2352         FT_BYTES, BASE_NONE, NULL, 0,
2353         "hnbap.RAC", HFILL }},
2354     { &hf_hnbap_tMSI,
2355       { "tMSI", "hnbap.tMSI",
2356         FT_BYTES, BASE_NONE, NULL, 0,
2357         "hnbap.BIT_STRING_SIZE_32", HFILL }},
2358     { &hf_hnbap_access_stratum_release_indicator,
2359       { "access-stratum-release-indicator", "hnbap.access_stratum_release_indicator",
2360         FT_UINT32, BASE_DEC, VALS(hnbap_Access_stratum_release_indicator_vals), 0,
2361         "hnbap.Access_stratum_release_indicator", HFILL }},
2362     { &hf_hnbap_csg_indicator,
2363       { "csg-indicator", "hnbap.csg_indicator",
2364         FT_UINT32, BASE_DEC, VALS(hnbap_CSG_Indicator_vals), 0,
2365         "hnbap.CSG_Indicator", HFILL }},
2366     { &hf_hnbap_uTRANcellID,
2367       { "uTRANcellID", "hnbap.uTRANcellID",
2368         FT_BYTES, BASE_NONE, NULL, 0,
2369         "hnbap.CellIdentity", HFILL }},
2370     { &hf_hnbap_iMSI,
2371       { "iMSI", "hnbap.iMSI",
2372         FT_BYTES, BASE_NONE, NULL, 0,
2373         "hnbap.IMSI", HFILL }},
2374     { &hf_hnbap_tMSILAI,
2375       { "tMSILAI", "hnbap.tMSILAI",
2376         FT_NONE, BASE_NONE, NULL, 0,
2377         "hnbap.TMSILAI", HFILL }},
2378     { &hf_hnbap_pTMSIRAI,
2379       { "pTMSIRAI", "hnbap.pTMSIRAI",
2380         FT_NONE, BASE_NONE, NULL, 0,
2381         "hnbap.PTMSIRAI", HFILL }},
2382     { &hf_hnbap_iMEI,
2383       { "iMEI", "hnbap.iMEI",
2384         FT_BYTES, BASE_NONE, NULL, 0,
2385         "hnbap.IMEI", HFILL }},
2386     { &hf_hnbap_iMSIESN,
2387       { "iMSIESN", "hnbap.iMSIESN",
2388         FT_NONE, BASE_NONE, NULL, 0,
2389         "hnbap.IMSIESN", HFILL }},
2390     { &hf_hnbap_tMSIDS1,
2391       { "tMSIDS1", "hnbap.tMSIDS1",
2392         FT_BYTES, BASE_NONE, NULL, 0,
2393         "hnbap.TMSIDS41", HFILL }},
2394     { &hf_hnbap_protocolIEs,
2395       { "protocolIEs", "hnbap.protocolIEs",
2396         FT_UINT32, BASE_DEC, NULL, 0,
2397         "hnbap.ProtocolIE_Container", HFILL }},
2398     { &hf_hnbap_protocolExtensions,
2399       { "protocolExtensions", "hnbap.protocolExtensions",
2400         FT_UINT32, BASE_DEC, NULL, 0,
2401         "hnbap.ProtocolExtensionContainer", HFILL }},
2402     { &hf_hnbap_privateIEs,
2403       { "privateIEs", "hnbap.privateIEs",
2404         FT_UINT32, BASE_DEC, NULL, 0,
2405         "hnbap.PrivateIE_Container", HFILL }},
2406     { &hf_hnbap_initiatingMessage,
2407       { "initiatingMessage", "hnbap.initiatingMessage",
2408         FT_NONE, BASE_NONE, NULL, 0,
2409         "hnbap.InitiatingMessage", HFILL }},
2410     { &hf_hnbap_successfulOutcome,
2411       { "successfulOutcome", "hnbap.successfulOutcome",
2412         FT_NONE, BASE_NONE, NULL, 0,
2413         "hnbap.SuccessfulOutcome", HFILL }},
2414     { &hf_hnbap_unsuccessfulOutcome,
2415       { "unsuccessfulOutcome", "hnbap.unsuccessfulOutcome",
2416         FT_NONE, BASE_NONE, NULL, 0,
2417         "hnbap.UnsuccessfulOutcome", HFILL }},
2418     { &hf_hnbap_initiatingMessagevalue,
2419       { "value", "hnbap.value",
2420         FT_NONE, BASE_NONE, NULL, 0,
2421         "hnbap.InitiatingMessage_value", HFILL }},
2422     { &hf_hnbap_successfulOutcome_value,
2423       { "value", "hnbap.value",
2424         FT_NONE, BASE_NONE, NULL, 0,
2425         "hnbap.SuccessfulOutcome_value", HFILL }},
2426     { &hf_hnbap_unsuccessfulOutcome_value,
2427       { "value", "hnbap.value",
2428         FT_NONE, BASE_NONE, NULL, 0,
2429         "hnbap.UnsuccessfulOutcome_value", HFILL }},
2430
2431 /*--- End of included file: packet-hnbap-hfarr.c ---*/
2432 #line 155 "packet-hnbap-template.c"
2433   };
2434
2435   /* List of subtrees */
2436   static gint *ett[] = {
2437           &ett_hnbap,
2438
2439 /*--- Included file: packet-hnbap-ettarr.c ---*/
2440 #line 1 "packet-hnbap-ettarr.c"
2441     &ett_hnbap_PrivateIE_ID,
2442     &ett_hnbap_ProtocolIE_Container,
2443     &ett_hnbap_ProtocolIE_Field,
2444     &ett_hnbap_ProtocolExtensionContainer,
2445     &ett_hnbap_ProtocolExtensionField,
2446     &ett_hnbap_PrivateIE_Container,
2447     &ett_hnbap_PrivateIE_Field,
2448     &ett_hnbap_AltitudeAndDirection,
2449     &ett_hnbap_Cause,
2450     &ett_hnbap_CriticalityDiagnostics,
2451     &ett_hnbap_CriticalityDiagnostics_IE_List,
2452     &ett_hnbap_CriticalityDiagnostics_IE_List_item,
2453     &ett_hnbap_CGI,
2454     &ett_hnbap_GeographicalLocation,
2455     &ett_hnbap_GeographicalCoordinates,
2456     &ett_hnbap_HNB_Location_Information,
2457     &ett_hnbap_HNB_Identity,
2458     &ett_hnbap_IMSIESN,
2459     &ett_hnbap_IP_Address,
2460     &ett_hnbap_T_ipaddress,
2461     &ett_hnbap_LAI,
2462     &ett_hnbap_MacroCoverageInformation,
2463     &ett_hnbap_MacroCellID,
2464     &ett_hnbap_PTMSIRAI,
2465     &ett_hnbap_RAI,
2466     &ett_hnbap_TMSILAI,
2467     &ett_hnbap_UE_Capabilities,
2468     &ett_hnbap_UTRANCellID,
2469     &ett_hnbap_UE_Identity,
2470     &ett_hnbap_HNBRegisterRequest,
2471     &ett_hnbap_HNBRegisterAccept,
2472     &ett_hnbap_HNBRegisterReject,
2473     &ett_hnbap_HNBDe_Register,
2474     &ett_hnbap_UERegisterRequest,
2475     &ett_hnbap_UERegisterAccept,
2476     &ett_hnbap_UERegisterReject,
2477     &ett_hnbap_UEDe_Register,
2478     &ett_hnbap_ErrorIndication,
2479     &ett_hnbap_PrivateMessage,
2480     &ett_hnbap_HNBAP_PDU,
2481     &ett_hnbap_InitiatingMessage,
2482     &ett_hnbap_SuccessfulOutcome,
2483     &ett_hnbap_UnsuccessfulOutcome,
2484
2485 /*--- End of included file: packet-hnbap-ettarr.c ---*/
2486 #line 161 "packet-hnbap-template.c"
2487   };
2488
2489
2490   /* Register protocol */
2491   proto_hnbap = proto_register_protocol(PNAME, PSNAME, PFNAME);
2492   /* Register fields and subtrees */
2493   proto_register_field_array(proto_hnbap, hf, array_length(hf));
2494   proto_register_subtree_array(ett, array_length(ett));
2495
2496   /* Register dissector */
2497   register_dissector("hnbap", dissect_hnbap, proto_hnbap);
2498
2499   /* Register dissector tables */
2500   hnbap_ies_dissector_table = register_dissector_table("hnbap.ies", "HNBAP-PROTOCOL-IES", FT_UINT32, BASE_DEC);
2501   hnbap_extension_dissector_table = register_dissector_table("hnbap.extension", "HNBAP-PROTOCOL-EXTENSION", FT_UINT32, BASE_DEC);
2502   hnbap_proc_imsg_dissector_table = register_dissector_table("hnbap.proc.imsg", "HNBAP-ELEMENTARY-PROCEDURE InitiatingMessage", FT_UINT32, BASE_DEC);
2503   hnbap_proc_sout_dissector_table = register_dissector_table("hnbap.proc.sout", "HNBAP-ELEMENTARY-PROCEDURE SuccessfulOutcome", FT_UINT32, BASE_DEC);
2504   hnbap_proc_uout_dissector_table = register_dissector_table("hnbap.proc.uout", "HNBAP-ELEMENTARY-PROCEDURE UnsuccessfulOutcome", FT_UINT32, BASE_DEC);
2505
2506   hnbap_module = prefs_register_protocol(proto_hnbap, proto_reg_handoff_hnbap);
2507   prefs_register_uint_preference(hnbap_module, "port", "HNBAP SCTP Port", "Set the port for HNBAP messages (Default of 29169)", 10, &global_sctp_port);
2508 }
2509
2510
2511 /*--- proto_reg_handoff_hnbap ---------------------------------------*/
2512 void
2513 proto_reg_handoff_hnbap(void)
2514 {
2515         static gboolean initialized = FALSE;
2516         static dissector_handle_t hnbap_handle;
2517         static guint sctp_port;
2518
2519         if (!initialized) {
2520                 hnbap_handle = find_dissector("hnbap");
2521                 dissector_add("sctp.ppi", HNBAP_PAYLOAD_PROTOCOL_ID, hnbap_handle);
2522                 initialized = TRUE;
2523
2524 /*--- Included file: packet-hnbap-dis-tab.c ---*/
2525 #line 1 "packet-hnbap-dis-tab.c"
2526   dissector_add("hnbap.ies", id_Cause, new_create_dissector_handle(dissect_Cause_PDU, proto_hnbap));
2527   dissector_add("hnbap.ies", id_CriticalityDiagnostics, new_create_dissector_handle(dissect_CriticalityDiagnostics_PDU, proto_hnbap));
2528   dissector_add("hnbap.ies", id_HNB_Identity, new_create_dissector_handle(dissect_HNB_Identity_PDU, proto_hnbap));
2529   dissector_add("hnbap.ies", id_Context_ID, new_create_dissector_handle(dissect_Context_ID_PDU, proto_hnbap));
2530   dissector_add("hnbap.ies", id_UE_Identity, new_create_dissector_handle(dissect_UE_Identity_PDU, proto_hnbap));
2531   dissector_add("hnbap.ies", id_LAC, new_create_dissector_handle(dissect_LAC_PDU, proto_hnbap));
2532   dissector_add("hnbap.ies", id_RAC, new_create_dissector_handle(dissect_RAC_PDU, proto_hnbap));
2533   dissector_add("hnbap.ies", id_HNB_Location_Information, new_create_dissector_handle(dissect_HNB_Location_Information_PDU, proto_hnbap));
2534   dissector_add("hnbap.ies", id_PLMNidentity, new_create_dissector_handle(dissect_PLMNidentity_PDU, proto_hnbap));
2535   dissector_add("hnbap.ies", id_SAC, new_create_dissector_handle(dissect_SAC_PDU, proto_hnbap));
2536   dissector_add("hnbap.ies", id_CellIdentity, new_create_dissector_handle(dissect_CellIdentity_PDU, proto_hnbap));
2537   dissector_add("hnbap.ies", id_Registration_Cause, new_create_dissector_handle(dissect_Registration_Cause_PDU, proto_hnbap));
2538   dissector_add("hnbap.ies", id_UE_Capabilities, new_create_dissector_handle(dissect_UE_Capabilities_PDU, proto_hnbap));
2539   dissector_add("hnbap.ies", id_RNC_ID, new_create_dissector_handle(dissect_RNC_ID_PDU, proto_hnbap));
2540   dissector_add("hnbap.ies", id_CSG_ID, new_create_dissector_handle(dissect_CSG_ID_PDU, proto_hnbap));
2541   dissector_add("hnbap.ies", id_BackoffTimer, new_create_dissector_handle(dissect_BackoffTimer_PDU, proto_hnbap));
2542   dissector_add("hnbap.extension", id_HNB_Internet_Information, new_create_dissector_handle(dissect_IP_Address_PDU, proto_hnbap));
2543   dissector_add("hnbap.extension", id_HNB_Cell_Access_Mode, new_create_dissector_handle(dissect_HNB_Cell_Access_Mode_PDU, proto_hnbap));
2544   dissector_add("hnbap.extension", id_MuxPortNumber, new_create_dissector_handle(dissect_MuxPortNumber_PDU, proto_hnbap));
2545   dissector_add("hnbap.extension", id_CSGMembershipStatus, new_create_dissector_handle(dissect_CSGMembershipStatus_PDU, proto_hnbap));
2546   dissector_add("hnbap.proc.imsg", id_HNBRegister, new_create_dissector_handle(dissect_HNBRegisterRequest_PDU, proto_hnbap));
2547   dissector_add("hnbap.proc.sout", id_HNBRegister, new_create_dissector_handle(dissect_HNBRegisterAccept_PDU, proto_hnbap));
2548   dissector_add("hnbap.proc.uout", id_HNBRegister, new_create_dissector_handle(dissect_HNBRegisterReject_PDU, proto_hnbap));
2549   dissector_add("hnbap.proc.imsg", id_UERegister, new_create_dissector_handle(dissect_UERegisterRequest_PDU, proto_hnbap));
2550   dissector_add("hnbap.proc.sout", id_UERegister, new_create_dissector_handle(dissect_UERegisterAccept_PDU, proto_hnbap));
2551   dissector_add("hnbap.proc.uout", id_UERegister, new_create_dissector_handle(dissect_UERegisterReject_PDU, proto_hnbap));
2552   dissector_add("hnbap.proc.imsg", id_UEDe_Register, new_create_dissector_handle(dissect_UEDe_Register_PDU, proto_hnbap));
2553   dissector_add("hnbap.proc.imsg", id_HNBDe_Register, new_create_dissector_handle(dissect_HNBDe_Register_PDU, proto_hnbap));
2554   dissector_add("hnbap.proc.imsg", id_ErrorIndication, new_create_dissector_handle(dissect_ErrorIndication_PDU, proto_hnbap));
2555   dissector_add("hnbap.proc.imsg", id_privateMessage, new_create_dissector_handle(dissect_PrivateMessage_PDU, proto_hnbap));
2556
2557
2558 /*--- End of included file: packet-hnbap-dis-tab.c ---*/
2559 #line 198 "packet-hnbap-template.c"
2560
2561         } else {
2562                 dissector_delete("sctp.port", sctp_port, hnbap_handle);
2563         }
2564         /* Set our port number for future use */
2565         sctp_port = global_sctp_port;
2566         dissector_add("sctp.port", sctp_port, hnbap_handle);
2567 }