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