1 /* Do not modify this file. Changes will be overwritten. */
2 /* Generated automatically by the ASN.1 to Wireshark dissector compiler */
4 /* asn2wrs.py -q -L -p hnbap -c ./hnbap.cnf -s ./packet-hnbap-template -D . -O ../.. HNBAP-CommonDataTypes.asn HNBAP-Constants.asn HNBAP-Containers.asn HNBAP-IEs.asn HNBAP-PDU-Contents.asn HNBAP-PDU-Descriptions.asn */
6 /* packet-hnbap-template.c
7 * Routines for UMTS Node B Application Part(HNBAP) packet dissection
8 * Copyright 2010 Neil Piercy, ip.access Limited <Neil.Piercy@ipaccess.com>
10 * Wireshark - Network traffic analyzer
11 * By Gerald Combs <gerald@wireshark.org>
12 * Copyright 1998 Gerald Combs
14 * SPDX-License-Identifier: GPL-2.0-or-later
16 * Ref: 3GPP TS 25.469 version 8.4.0 Release 8
21 #include <epan/packet.h>
22 #include <epan/sctpppids.h>
23 #include <epan/asn1.h>
24 #include <epan/prefs.h>
25 #include <epan/proto_data.h>
26 #include <wsutil/array.h>
28 #include "packet-per.h"
29 #include "packet-e212.h"
32 /* disable: "warning C4146: unary minus operator applied to unsigned type, result still unsigned" */
33 #pragma warning(disable:4146)
36 #define PNAME "UTRAN Iuh interface HNBAP signalling"
37 #define PSNAME "HNBAP"
38 #define PFNAME "hnbap"
39 /* Dissector will use SCTP PPID 20 or SCTP port. IANA assigned port = 29169*/
40 #define SCTP_PORT_HNBAP 29169
42 void proto_register_hnbap(void);
44 #define maxPrivateIEs 65535
45 #define maxProtocolExtensions 65535
46 #define maxProtocolIEs 65535
47 #define maxNrOfErrors 256
48 #define maxnoofRABs 256
49 #define maxnoofNeighbours 32
50 #define maxnoofIurhAddresses 3
52 typedef enum _ProcedureCode_enum
{
54 id_HNBDe_Register
= 2,
57 id_ErrorIndication
= 5,
58 id_privateMessage
= 6,
59 id_CSGMembershipUpdate
= 7,
61 id_HNBConfigTransfer
= 10,
62 id_RelocationComplete
= 11
65 typedef enum _ProtocolIE_ID_enum
{
67 id_CriticalityDiagnostics
= 2,
73 id_HNB_Location_Information
= 8,
77 id_Registration_Cause
= 12,
78 id_UE_Capabilities
= 13,
82 id_HNB_Internet_Information
= 17,
83 id_HNB_Cell_Access_Mode
= 18,
84 id_MuxPortNumber
= 19,
85 id_Service_Area_For_Broadcast
= 20,
86 id_CSGMembershipStatus
= 21,
88 id_HNBConfigInfo
= 23,
91 id_NeighbourInfoList
= 27,
92 id_NeighbourInfoRequestList
= 28,
93 id_Iurh_Signalling_TNL_Address
= 29,
95 id_HNB_Cell_Identifier
= 31
98 /* Initialize the protocol and registered fields */
99 static int proto_hnbap
;
101 static int hf_hnbap_BackoffTimer_PDU
; /* BackoffTimer */
102 static int hf_hnbap_Cause_PDU
; /* Cause */
103 static int hf_hnbap_CellIdentity_PDU
; /* CellIdentity */
104 static int hf_hnbap_Context_ID_PDU
; /* Context_ID */
105 static int hf_hnbap_CriticalityDiagnostics_PDU
; /* CriticalityDiagnostics */
106 static int hf_hnbap_CSG_ID_PDU
; /* CSG_ID */
107 static int hf_hnbap_CSGMembershipStatus_PDU
; /* CSGMembershipStatus */
108 static int hf_hnbap_HNB_Cell_Access_Mode_PDU
; /* HNB_Cell_Access_Mode */
109 static int hf_hnbap_HNB_Location_Information_PDU
; /* HNB_Location_Information */
110 static int hf_hnbap_HNB_Identity_PDU
; /* HNB_Identity */
111 static int hf_hnbap_IP_Address_PDU
; /* IP_Address */
112 static int hf_hnbap_LAC_PDU
; /* LAC */
113 static int hf_hnbap_MuxPortNumber_PDU
; /* MuxPortNumber */
114 static int hf_hnbap_NeighbourInfoList_PDU
; /* NeighbourInfoList */
115 static int hf_hnbap_NeighbourInfoRequestList_PDU
; /* NeighbourInfoRequestList */
116 static int hf_hnbap_PLMNidentity_PDU
; /* PLMNidentity */
117 static int hf_hnbap_PSC_PDU
; /* PSC */
118 static int hf_hnbap_RABList_PDU
; /* RABList */
119 static int hf_hnbap_RAC_PDU
; /* RAC */
120 static int hf_hnbap_Registration_Cause_PDU
; /* Registration_Cause */
121 static int hf_hnbap_RNC_ID_PDU
; /* RNC_ID */
122 static int hf_hnbap_SAC_PDU
; /* SAC */
123 static int hf_hnbap_UE_Capabilities_PDU
; /* UE_Capabilities */
124 static int hf_hnbap_UE_Identity_PDU
; /* UE_Identity */
125 static int hf_hnbap_Update_cause_PDU
; /* Update_cause */
126 static int hf_hnbap_HNBRegisterRequest_PDU
; /* HNBRegisterRequest */
127 static int hf_hnbap_HNBRegisterAccept_PDU
; /* HNBRegisterAccept */
128 static int hf_hnbap_HNBRegisterReject_PDU
; /* HNBRegisterReject */
129 static int hf_hnbap_HNBDe_Register_PDU
; /* HNBDe_Register */
130 static int hf_hnbap_UERegisterRequest_PDU
; /* UERegisterRequest */
131 static int hf_hnbap_UERegisterAccept_PDU
; /* UERegisterAccept */
132 static int hf_hnbap_UERegisterReject_PDU
; /* UERegisterReject */
133 static int hf_hnbap_UEDe_Register_PDU
; /* UEDe_Register */
134 static int hf_hnbap_CSGMembershipUpdate_PDU
; /* CSGMembershipUpdate */
135 static int hf_hnbap_TNLUpdateRequest_PDU
; /* TNLUpdateRequest */
136 static int hf_hnbap_TNLUpdateResponse_PDU
; /* TNLUpdateResponse */
137 static int hf_hnbap_TNLUpdateFailure_PDU
; /* TNLUpdateFailure */
138 static int hf_hnbap_HNBConfigTransferRequest_PDU
; /* HNBConfigTransferRequest */
139 static int hf_hnbap_HNBConfigTransferResponse_PDU
; /* HNBConfigTransferResponse */
140 static int hf_hnbap_RelocationComplete_PDU
; /* RelocationComplete */
141 static int hf_hnbap_ErrorIndication_PDU
; /* ErrorIndication */
142 static int hf_hnbap_PrivateMessage_PDU
; /* PrivateMessage */
143 static int hf_hnbap_HNBAP_PDU_PDU
; /* HNBAP_PDU */
144 static int hf_hnbap_local
; /* INTEGER_0_65535 */
145 static int hf_hnbap_global
; /* OBJECT_IDENTIFIER */
146 static int hf_hnbap_ProtocolIE_Container_item
; /* ProtocolIE_Field */
147 static int hf_hnbap_protocol_ie_field_id
; /* ProtocolIE_ID */
148 static int hf_hnbap_criticality
; /* Criticality */
149 static int hf_hnbap_ie_field_value
; /* ProtocolIE_Field_value */
150 static int hf_hnbap_ProtocolExtensionContainer_item
; /* ProtocolExtensionField */
151 static int hf_hnbap_id
; /* ProtocolIE_ID */
152 static int hf_hnbap_extensionValue
; /* T_extensionValue */
153 static int hf_hnbap_PrivateIE_Container_item
; /* PrivateIE_Field */
154 static int hf_hnbap_private_ie_field_id
; /* PrivateIE_ID */
155 static int hf_hnbap_private_value
; /* PrivateIE_Field_value */
156 static int hf_hnbap_directionOfAltitude
; /* T_directionOfAltitude */
157 static int hf_hnbap_altitude
; /* INTEGER_0_32767 */
158 static int hf_hnbap_radioNetwork
; /* CauseRadioNetwork */
159 static int hf_hnbap_transport
; /* CauseTransport */
160 static int hf_hnbap_protocol
; /* CauseProtocol */
161 static int hf_hnbap_misc
; /* CauseMisc */
162 static int hf_hnbap_procedureCode
; /* ProcedureCode */
163 static int hf_hnbap_triggeringMessage
; /* TriggeringMessage */
164 static int hf_hnbap_procedureCriticality
; /* Criticality */
165 static int hf_hnbap_iEsCriticalityDiagnostics
; /* CriticalityDiagnostics_IE_List */
166 static int hf_hnbap_iE_Extensions
; /* ProtocolExtensionContainer */
167 static int hf_hnbap_CriticalityDiagnostics_IE_List_item
; /* CriticalityDiagnostics_IE_List_item */
168 static int hf_hnbap_iECriticality
; /* Criticality */
169 static int hf_hnbap_iE_ID
; /* ProtocolIE_ID */
170 static int hf_hnbap_typeOfError
; /* TypeOfError */
171 static int hf_hnbap_pLMNidentity
; /* PLMNidentity */
172 static int hf_hnbap_lAC
; /* LAC */
173 static int hf_hnbap_cI
; /* CI */
174 static int hf_hnbap_geographical_location_geographical_coordinates
; /* GeographicalCoordinates */
175 static int hf_hnbap_altitudeAndDirection
; /* AltitudeAndDirection */
176 static int hf_hnbap_latitudeSign
; /* T_latitudeSign */
177 static int hf_hnbap_latitude
; /* INTEGER_0_8388607 */
178 static int hf_hnbap_longitude
; /* INTEGER_M8388608_8388607 */
179 static int hf_hnbap_cellIdentity
; /* CellIdentity */
180 static int hf_hnbap_hNB_Identity_as_Cell_Identifier
; /* HNB_Cell_Identifier */
181 static int hf_hnbap_hnb_RNL_Identity
; /* HNB_RNL_Identity */
182 static int hf_hnbap_configurationInformation
; /* ConfigurationInformation */
183 static int hf_hnbap_provided
; /* HNBConfigurationInformationProvided */
184 static int hf_hnbap_missing
; /* HNBConfigurationInformationMissing */
185 static int hf_hnbap_psc
; /* PSC */
186 static int hf_hnbap_cSG_ID
; /* CSG_ID */
187 static int hf_hnbap_hNB_Cell_Access_Mode
; /* HNB_Cell_Access_Mode */
188 static int hf_hnbap_iurh_Signalling_TNL_AddressList
; /* Iurh_Signalling_TNL_AddressList */
189 static int hf_hnbap_cause
; /* Cause */
190 static int hf_hnbap_macroCoverageInfo
; /* MacroCoverageInformation */
191 static int hf_hnbap_hnb_location_information_geographical_coordinates
; /* GeographicalLocation */
192 static int hf_hnbap_hNB_Identity_Info
; /* HNB_Identity_Info */
193 static int hf_hnbap_iMSIDS41
; /* IMSIDS41 */
194 static int hf_hnbap_eSN
; /* ESN */
195 static int hf_hnbap_ipaddress
; /* T_ipaddress */
196 static int hf_hnbap_ipv4info
; /* Ipv4Address */
197 static int hf_hnbap_ipv6info
; /* Ipv6Address */
198 static int hf_hnbap_Iurh_Signalling_TNL_AddressList_item
; /* IP_Address */
199 static int hf_hnbap_pLMNID
; /* PLMNidentity */
200 static int hf_hnbap_macroCellID
; /* MacroCellID */
201 static int hf_hnbap_uTRANCellID
; /* UTRANCellID */
202 static int hf_hnbap_gERANCellID
; /* CGI */
203 static int hf_hnbap_NeighbourInfoList_item
; /* HNBConfigInfo */
204 static int hf_hnbap_NeighbourInfoRequestList_item
; /* NeighbourInfoRequestItem */
205 static int hf_hnbap_pTMSI
; /* PTMSI */
206 static int hf_hnbap_rAI
; /* RAI */
207 static int hf_hnbap_RABList_item
; /* RABListItem */
208 static int hf_hnbap_rAB_ID
; /* RAB_ID */
209 static int hf_hnbap_old_transport_Info
; /* TransportInfo */
210 static int hf_hnbap_new_transport_Info
; /* TransportInfo */
211 static int hf_hnbap_cn_domain_indicator
; /* CN_DomainIndicator */
212 static int hf_hnbap_lAI
; /* LAI */
213 static int hf_hnbap_rAC
; /* RAC */
214 static int hf_hnbap_tMSI
; /* BIT_STRING_SIZE_32 */
215 static int hf_hnbap_transportLayerAddress
; /* TransportLayerAddress */
216 static int hf_hnbap_transportAssociation
; /* T_transportAssociation */
217 static int hf_hnbap_gtp_TEI
; /* GTP_TEI */
218 static int hf_hnbap_bindingID
; /* BindingID */
219 static int hf_hnbap_access_stratum_release_indicator
; /* Access_stratum_release_indicator */
220 static int hf_hnbap_csg_capability
; /* CSG_Capability */
221 static int hf_hnbap_uTRANcellID
; /* CellIdentity */
222 static int hf_hnbap_iMSI
; /* IMSI */
223 static int hf_hnbap_tMSILAI
; /* TMSILAI */
224 static int hf_hnbap_pTMSIRAI
; /* PTMSIRAI */
225 static int hf_hnbap_iMEI
; /* IMEI */
226 static int hf_hnbap_iMSIESN
; /* IMSIESN */
227 static int hf_hnbap_tMSIDS41
; /* TMSIDS41 */
228 static int hf_hnbap_protocolIEs
; /* ProtocolIE_Container */
229 static int hf_hnbap_protocolExtensions
; /* ProtocolExtensionContainer */
230 static int hf_hnbap_privateIEs
; /* PrivateIE_Container */
231 static int hf_hnbap_initiatingMessage
; /* InitiatingMessage */
232 static int hf_hnbap_successfulOutcome
; /* SuccessfulOutcome */
233 static int hf_hnbap_unsuccessfulOutcome
; /* UnsuccessfulOutcome */
234 static int hf_hnbap_initiatingMessagevalue
; /* InitiatingMessage_value */
235 static int hf_hnbap_successfulOutcome_value
; /* SuccessfulOutcome_value */
236 static int hf_hnbap_unsuccessfulOutcome_value
; /* UnsuccessfulOutcome_value */
238 /* Initialize the subtree pointers */
239 static int ett_hnbap
;
240 static int ett_hnbap_imsi
;
241 static int ett_hnbap_PrivateIE_ID
;
242 static int ett_hnbap_ProtocolIE_Container
;
243 static int ett_hnbap_ProtocolIE_Field
;
244 static int ett_hnbap_ProtocolExtensionContainer
;
245 static int ett_hnbap_ProtocolExtensionField
;
246 static int ett_hnbap_PrivateIE_Container
;
247 static int ett_hnbap_PrivateIE_Field
;
248 static int ett_hnbap_AltitudeAndDirection
;
249 static int ett_hnbap_Cause
;
250 static int ett_hnbap_CriticalityDiagnostics
;
251 static int ett_hnbap_CriticalityDiagnostics_IE_List
;
252 static int ett_hnbap_CriticalityDiagnostics_IE_List_item
;
253 static int ett_hnbap_CGI
;
254 static int ett_hnbap_GeographicalLocation
;
255 static int ett_hnbap_GeographicalCoordinates
;
256 static int ett_hnbap_HNB_Cell_Identifier
;
257 static int ett_hnbap_HNB_RNL_Identity
;
258 static int ett_hnbap_HNBConfigInfo
;
259 static int ett_hnbap_ConfigurationInformation
;
260 static int ett_hnbap_HNBConfigurationInformationProvided
;
261 static int ett_hnbap_HNBConfigurationInformationMissing
;
262 static int ett_hnbap_HNB_Location_Information
;
263 static int ett_hnbap_HNB_Identity
;
264 static int ett_hnbap_IMSIESN
;
265 static int ett_hnbap_IP_Address
;
266 static int ett_hnbap_T_ipaddress
;
267 static int ett_hnbap_Iurh_Signalling_TNL_AddressList
;
268 static int ett_hnbap_LAI
;
269 static int ett_hnbap_MacroCoverageInformation
;
270 static int ett_hnbap_MacroCellID
;
271 static int ett_hnbap_NeighbourInfoList
;
272 static int ett_hnbap_NeighbourInfoRequestList
;
273 static int ett_hnbap_NeighbourInfoRequestItem
;
274 static int ett_hnbap_PTMSIRAI
;
275 static int ett_hnbap_RABList
;
276 static int ett_hnbap_RABListItem
;
277 static int ett_hnbap_RAI
;
278 static int ett_hnbap_TMSILAI
;
279 static int ett_hnbap_TransportInfo
;
280 static int ett_hnbap_T_transportAssociation
;
281 static int ett_hnbap_UE_Capabilities
;
282 static int ett_hnbap_UTRANCellID
;
283 static int ett_hnbap_UE_Identity
;
284 static int ett_hnbap_HNBRegisterRequest
;
285 static int ett_hnbap_HNBRegisterAccept
;
286 static int ett_hnbap_HNBRegisterReject
;
287 static int ett_hnbap_HNBDe_Register
;
288 static int ett_hnbap_UERegisterRequest
;
289 static int ett_hnbap_UERegisterAccept
;
290 static int ett_hnbap_UERegisterReject
;
291 static int ett_hnbap_UEDe_Register
;
292 static int ett_hnbap_CSGMembershipUpdate
;
293 static int ett_hnbap_TNLUpdateRequest
;
294 static int ett_hnbap_TNLUpdateResponse
;
295 static int ett_hnbap_TNLUpdateFailure
;
296 static int ett_hnbap_HNBConfigTransferRequest
;
297 static int ett_hnbap_HNBConfigTransferResponse
;
298 static int ett_hnbap_RelocationComplete
;
299 static int ett_hnbap_ErrorIndication
;
300 static int ett_hnbap_PrivateMessage
;
301 static int ett_hnbap_HNBAP_PDU
;
302 static int ett_hnbap_InitiatingMessage
;
303 static int ett_hnbap_SuccessfulOutcome
;
304 static int ett_hnbap_UnsuccessfulOutcome
;
306 struct hnbap_private_data
{
307 e212_number_type_t number_type
;
310 /* Global variables */
311 static uint32_t ProcedureCode
;
312 static uint32_t ProtocolIE_ID
;
314 /* Dissector tables */
315 static dissector_table_t hnbap_ies_dissector_table
;
316 static dissector_table_t hnbap_extension_dissector_table
;
317 static dissector_table_t hnbap_proc_imsg_dissector_table
;
318 static dissector_table_t hnbap_proc_sout_dissector_table
;
319 static dissector_table_t hnbap_proc_uout_dissector_table
;
321 static dissector_handle_t hnbap_handle
;
323 static int dissect_ProtocolIEFieldValue(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *);
324 static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *);
325 static int dissect_InitiatingMessageValue(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *);
326 static int dissect_SuccessfulOutcomeValue(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *);
327 static int dissect_UnsuccessfulOutcomeValue(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *);
328 void proto_reg_handoff_hnbap(void);
330 static struct hnbap_private_data
*
331 hnbap_get_private_data(packet_info
*pinfo
)
333 struct hnbap_private_data
*hnbap_data
= (struct hnbap_private_data
*)p_get_proto_data(pinfo
->pool
, pinfo
, proto_hnbap
, 0);
335 hnbap_data
= wmem_new0(pinfo
->pool
, struct hnbap_private_data
);
336 p_add_proto_data(pinfo
->pool
, pinfo
, proto_hnbap
, 0, hnbap_data
);
342 static const value_string hnbap_Criticality_vals
[] = {
351 dissect_hnbap_Criticality(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
352 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
353 3, NULL
, false, 0, NULL
);
361 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_
) {
362 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
363 0U, 65535U, NULL
, false);
371 dissect_hnbap_OBJECT_IDENTIFIER(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
372 offset
= dissect_per_object_identifier(tvb
, offset
, actx
, tree
, hf_index
, NULL
);
378 static const value_string hnbap_PrivateIE_ID_vals
[] = {
384 static const per_choice_t PrivateIE_ID_choice
[] = {
385 { 0, &hf_hnbap_local
, ASN1_NO_EXTENSIONS
, dissect_hnbap_INTEGER_0_65535
},
386 { 1, &hf_hnbap_global
, ASN1_NO_EXTENSIONS
, dissect_hnbap_OBJECT_IDENTIFIER
},
391 dissect_hnbap_PrivateIE_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
392 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
393 ett_hnbap_PrivateIE_ID
, PrivateIE_ID_choice
,
400 static const value_string hnbap_ProcedureCode_vals
[] = {
401 { id_HNBRegister
, "id-HNBRegister" },
402 { id_HNBDe_Register
, "id-HNBDe-Register" },
403 { id_UERegister
, "id-UERegister" },
404 { id_UEDe_Register
, "id-UEDe-Register" },
405 { id_ErrorIndication
, "id-ErrorIndication" },
406 { id_privateMessage
, "id-privateMessage" },
407 { id_CSGMembershipUpdate
, "id-CSGMembershipUpdate" },
408 { id_TNLUpdate
, "id-TNLUpdate" },
409 { id_HNBConfigTransfer
, "id-HNBConfigTransfer" },
410 { id_RelocationComplete
, "id-RelocationComplete" },
416 dissect_hnbap_ProcedureCode(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
417 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
418 0U, 255U, &ProcedureCode
, false);
420 if (strcmp(val_to_str_const(ProcedureCode
, hnbap_ProcedureCode_vals
, "Unknown"), "Unknown") == 0) {
421 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
,
423 } /* Known Procedures should be included below and broken out as ELEMENTARY names to avoid confusion */
429 static const value_string hnbap_ProtocolIE_ID_vals
[] = {
430 { id_Cause
, "id-Cause" },
431 { id_CriticalityDiagnostics
, "id-CriticalityDiagnostics" },
432 { id_HNB_Identity
, "id-HNB-Identity" },
433 { id_Context_ID
, "id-Context-ID" },
434 { id_UE_Identity
, "id-UE-Identity" },
435 { id_LAC
, "id-LAC" },
436 { id_RAC
, "id-RAC" },
437 { id_HNB_Location_Information
, "id-HNB-Location-Information" },
438 { id_PLMNidentity
, "id-PLMNidentity" },
439 { id_SAC
, "id-SAC" },
440 { id_CellIdentity
, "id-CellIdentity" },
441 { id_Registration_Cause
, "id-Registration-Cause" },
442 { id_UE_Capabilities
, "id-UE-Capabilities" },
443 { id_RNC_ID
, "id-RNC-ID" },
444 { id_CSG_ID
, "id-CSG-ID" },
445 { id_BackoffTimer
, "id-BackoffTimer" },
446 { id_HNB_Internet_Information
, "id-HNB-Internet-Information" },
447 { id_HNB_Cell_Access_Mode
, "id-HNB-Cell-Access-Mode" },
448 { id_MuxPortNumber
, "id-MuxPortNumber" },
449 { id_Service_Area_For_Broadcast
, "id-Service-Area-For-Broadcast" },
450 { id_CSGMembershipStatus
, "id-CSGMembershipStatus" },
451 { id_RABList
, "id-RABList" },
452 { id_HNBConfigInfo
, "id-HNBConfigInfo" },
453 { id_AccessResult
, "id-AccessResult" },
454 { id_Update_cause
, "id-Update-cause" },
455 { id_NeighbourInfoList
, "id-NeighbourInfoList" },
456 { id_NeighbourInfoRequestList
, "id-NeighbourInfoRequestList" },
457 { id_Iurh_Signalling_TNL_Address
, "id-Iurh-Signalling-TNL-Address" },
458 { id_PSC
, "id-PSC" },
459 { id_HNB_Cell_Identifier
, "id-HNB-Cell-Identifier" },
465 dissect_hnbap_ProtocolIE_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
466 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
467 0U, maxProtocolIEs
, &ProtocolIE_ID
, false);
470 proto_item_append_text(proto_item_get_parent_nth(actx
->created_item
, 2), ": %s",
471 val_to_str(ProtocolIE_ID
, VALS(hnbap_ProtocolIE_ID_vals
), "unknown (%d)"));
477 static const value_string hnbap_TriggeringMessage_vals
[] = {
478 { 0, "initiating-message" },
479 { 1, "successful-outcome" },
480 { 2, "unsuccessful-outcome" },
486 dissect_hnbap_TriggeringMessage(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
487 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
488 3, NULL
, false, 0, NULL
);
496 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_
) {
497 offset
= dissect_per_open_type_pdu_new(tvb
, offset
, actx
, tree
, hf_index
, dissect_ProtocolIEFieldValue
);
503 static const per_sequence_t ProtocolIE_Field_sequence
[] = {
504 { &hf_hnbap_protocol_ie_field_id
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_ProtocolIE_ID
},
505 { &hf_hnbap_criticality
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_Criticality
},
506 { &hf_hnbap_ie_field_value
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_ProtocolIE_Field_value
},
511 dissect_hnbap_ProtocolIE_Field(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
512 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
513 ett_hnbap_ProtocolIE_Field
, ProtocolIE_Field_sequence
);
519 static const per_sequence_t ProtocolIE_Container_sequence_of
[1] = {
520 { &hf_hnbap_ProtocolIE_Container_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_ProtocolIE_Field
},
524 dissect_hnbap_ProtocolIE_Container(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
525 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
526 ett_hnbap_ProtocolIE_Container
, ProtocolIE_Container_sequence_of
,
527 0, maxProtocolIEs
, false);
535 dissect_hnbap_T_extensionValue(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
536 offset
= dissect_per_open_type_pdu_new(tvb
, offset
, actx
, tree
, hf_index
, dissect_ProtocolExtensionFieldExtensionValue
);
542 static const per_sequence_t ProtocolExtensionField_sequence
[] = {
543 { &hf_hnbap_id
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_ProtocolIE_ID
},
544 { &hf_hnbap_criticality
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_Criticality
},
545 { &hf_hnbap_extensionValue
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_T_extensionValue
},
550 dissect_hnbap_ProtocolExtensionField(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
551 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
552 ett_hnbap_ProtocolExtensionField
, ProtocolExtensionField_sequence
);
558 static const per_sequence_t ProtocolExtensionContainer_sequence_of
[1] = {
559 { &hf_hnbap_ProtocolExtensionContainer_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_ProtocolExtensionField
},
563 dissect_hnbap_ProtocolExtensionContainer(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
564 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
565 ett_hnbap_ProtocolExtensionContainer
, ProtocolExtensionContainer_sequence_of
,
566 1, maxProtocolExtensions
, false);
574 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_
) {
575 offset
= dissect_per_open_type(tvb
, offset
, actx
, tree
, hf_index
, NULL
);
581 static const per_sequence_t PrivateIE_Field_sequence
[] = {
582 { &hf_hnbap_private_ie_field_id
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_PrivateIE_ID
},
583 { &hf_hnbap_criticality
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_Criticality
},
584 { &hf_hnbap_private_value
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_PrivateIE_Field_value
},
589 dissect_hnbap_PrivateIE_Field(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
590 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
591 ett_hnbap_PrivateIE_Field
, PrivateIE_Field_sequence
);
597 static const per_sequence_t PrivateIE_Container_sequence_of
[1] = {
598 { &hf_hnbap_PrivateIE_Container_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_PrivateIE_Field
},
602 dissect_hnbap_PrivateIE_Container(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
603 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
604 ett_hnbap_PrivateIE_Container
, PrivateIE_Container_sequence_of
,
605 1, maxPrivateIEs
, false);
611 static const value_string hnbap_Access_stratum_release_indicator_vals
[] = {
617 { 5, "rel-8-and-beyond" },
623 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_
) {
624 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
625 6, NULL
, true, 0, NULL
);
632 static const value_string hnbap_T_directionOfAltitude_vals
[] = {
640 dissect_hnbap_T_directionOfAltitude(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
641 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
642 2, NULL
, false, 0, NULL
);
650 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_
) {
651 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
652 0U, 32767U, NULL
, false);
658 static const per_sequence_t AltitudeAndDirection_sequence
[] = {
659 { &hf_hnbap_directionOfAltitude
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_T_directionOfAltitude
},
660 { &hf_hnbap_altitude
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_INTEGER_0_32767
},
665 dissect_hnbap_AltitudeAndDirection(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
666 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
667 ett_hnbap_AltitudeAndDirection
, AltitudeAndDirection_sequence
);
675 dissect_hnbap_BackoffTimer(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
676 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
677 0U, 3600U, NULL
, false);
685 dissect_hnbap_BindingID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
686 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
693 static const value_string hnbap_CauseRadioNetwork_vals
[] = {
695 { 1, "unauthorised-Location" },
696 { 2, "unauthorised-HNB" },
697 { 3, "hNB-parameter-mismatch" },
698 { 4, "invalid-UE-identity" },
699 { 5, "uE-not-allowed-on-this-HNB" },
700 { 6, "uE-unauthorised" },
701 { 7, "connection-with-UE-lost" },
702 { 8, "ue-RRC-telease" },
703 { 9, "hNB-not-registered" },
704 { 10, "unspecified" },
706 { 12, "uE-relocated" },
707 { 13, "ue-registered-in-another-HNB" },
713 dissect_hnbap_CauseRadioNetwork(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
714 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
715 14, NULL
, true, 0, NULL
);
721 static const value_string hnbap_CauseTransport_vals
[] = {
722 { 0, "transport-resource-unavailable" },
723 { 1, "unspecified" },
729 dissect_hnbap_CauseTransport(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
730 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
731 2, NULL
, true, 0, NULL
);
737 static const value_string hnbap_CauseProtocol_vals
[] = {
738 { 0, "transfer-syntax-error" },
739 { 1, "abstract-syntax-error-reject" },
740 { 2, "abstract-syntax-error-ignore-and-notify" },
741 { 3, "message-not-compatible-with-receiver-state" },
742 { 4, "semantic-error" },
743 { 5, "unspecified" },
744 { 6, "abstract-syntax-error-falsely-constructed-message" },
750 dissect_hnbap_CauseProtocol(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
751 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
752 7, NULL
, true, 0, NULL
);
758 static const value_string hnbap_CauseMisc_vals
[] = {
759 { 0, "processing-overload" },
760 { 1, "hardware-failure" },
761 { 2, "o-and-m-intervention" },
762 { 3, "unspecified" },
768 dissect_hnbap_CauseMisc(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
769 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
770 4, NULL
, true, 0, NULL
);
776 static const value_string hnbap_Cause_vals
[] = {
777 { 0, "radioNetwork" },
784 static const per_choice_t Cause_choice
[] = {
785 { 0, &hf_hnbap_radioNetwork
, ASN1_EXTENSION_ROOT
, dissect_hnbap_CauseRadioNetwork
},
786 { 1, &hf_hnbap_transport
, ASN1_EXTENSION_ROOT
, dissect_hnbap_CauseTransport
},
787 { 2, &hf_hnbap_protocol
, ASN1_EXTENSION_ROOT
, dissect_hnbap_CauseProtocol
},
788 { 3, &hf_hnbap_misc
, ASN1_EXTENSION_ROOT
, dissect_hnbap_CauseMisc
},
793 dissect_hnbap_Cause(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
794 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
795 ett_hnbap_Cause
, Cause_choice
,
804 dissect_hnbap_CellIdentity(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
805 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
806 28, 28, false, NULL
, 0, NULL
, NULL
);
814 dissect_hnbap_Context_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
815 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
816 24, 24, false, NULL
, 0, NULL
, NULL
);
822 static const value_string hnbap_TypeOfError_vals
[] = {
823 { 0, "not-understood" },
830 dissect_hnbap_TypeOfError(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
831 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
832 2, NULL
, true, 0, NULL
);
838 static const per_sequence_t CriticalityDiagnostics_IE_List_item_sequence
[] = {
839 { &hf_hnbap_iECriticality
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_Criticality
},
840 { &hf_hnbap_iE_ID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_ProtocolIE_ID
},
841 { &hf_hnbap_typeOfError
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_TypeOfError
},
842 { &hf_hnbap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
847 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_
) {
848 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
849 ett_hnbap_CriticalityDiagnostics_IE_List_item
, CriticalityDiagnostics_IE_List_item_sequence
);
855 static const per_sequence_t CriticalityDiagnostics_IE_List_sequence_of
[1] = {
856 { &hf_hnbap_CriticalityDiagnostics_IE_List_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_CriticalityDiagnostics_IE_List_item
},
860 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_
) {
861 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
862 ett_hnbap_CriticalityDiagnostics_IE_List
, CriticalityDiagnostics_IE_List_sequence_of
,
863 1, maxNrOfErrors
, false);
869 static const per_sequence_t CriticalityDiagnostics_sequence
[] = {
870 { &hf_hnbap_procedureCode
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_ProcedureCode
},
871 { &hf_hnbap_triggeringMessage
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_TriggeringMessage
},
872 { &hf_hnbap_procedureCriticality
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_Criticality
},
873 { &hf_hnbap_iEsCriticalityDiagnostics
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_CriticalityDiagnostics_IE_List
},
874 { &hf_hnbap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
879 dissect_hnbap_CriticalityDiagnostics(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
880 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
881 ett_hnbap_CriticalityDiagnostics
, CriticalityDiagnostics_sequence
);
889 dissect_hnbap_CSG_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
890 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
891 27, 27, false, NULL
, 0, NULL
, NULL
);
897 static const value_string hnbap_CSG_Capability_vals
[] = {
898 { 0, "csg-capable" },
899 { 1, "not-csg-capable" },
905 dissect_hnbap_CSG_Capability(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
906 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
907 2, NULL
, true, 0, NULL
);
913 static const value_string hnbap_CSGMembershipStatus_vals
[] = {
921 dissect_hnbap_CSGMembershipStatus(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
922 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
923 2, NULL
, true, 0, NULL
);
931 dissect_hnbap_PLMNidentity(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
932 tvbuff_t
*parameter_tvb
;
933 struct hnbap_private_data
*hnbap_data
= hnbap_get_private_data(actx
->pinfo
);
934 e212_number_type_t number_type
= hnbap_data
->number_type
;
935 hnbap_data
->number_type
= E212_NONE
;
936 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
937 3, 3, false, ¶meter_tvb
);
940 dissect_e212_mcc_mnc(parameter_tvb
, actx
->pinfo
, tree
, 0, number_type
, false);
949 dissect_hnbap_LAC(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
950 tvbuff_t
*parameter_tvb
= NULL
;
951 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, -1,
952 2, 2, false, ¶meter_tvb
);
955 actx
->created_item
= proto_tree_add_item(tree
, hf_index
, parameter_tvb
, 0, 2, ENC_BIG_ENDIAN
);
965 dissect_hnbap_CI(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
966 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
973 static const per_sequence_t CGI_sequence
[] = {
974 { &hf_hnbap_pLMNidentity
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_PLMNidentity
},
975 { &hf_hnbap_lAC
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_LAC
},
976 { &hf_hnbap_cI
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_CI
},
977 { &hf_hnbap_iE_Extensions
, ASN1_NO_EXTENSIONS
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
982 dissect_hnbap_CGI(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
983 struct hnbap_private_data
*hnbap_data
= hnbap_get_private_data(actx
->pinfo
);
984 hnbap_data
->number_type
= E212_CGI
;
985 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
986 ett_hnbap_CGI
, CGI_sequence
);
994 static const value_string hnbap_CN_DomainIndicator_vals
[] = {
1002 dissect_hnbap_CN_DomainIndicator(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1003 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1004 2, NULL
, false, 0, NULL
);
1012 dissect_hnbap_ESN(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1013 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
1014 32, 32, false, NULL
, 0, NULL
, NULL
);
1020 static const value_string hnbap_T_latitudeSign_vals
[] = {
1028 dissect_hnbap_T_latitudeSign(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1029 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1030 2, NULL
, false, 0, NULL
);
1038 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_
) {
1039 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1040 0U, 8388607U, NULL
, false);
1048 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_
) {
1049 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1050 -8388608, 8388607U, NULL
, false);
1056 static const per_sequence_t GeographicalCoordinates_sequence
[] = {
1057 { &hf_hnbap_latitudeSign
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_T_latitudeSign
},
1058 { &hf_hnbap_latitude
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_INTEGER_0_8388607
},
1059 { &hf_hnbap_longitude
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_INTEGER_M8388608_8388607
},
1060 { &hf_hnbap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
1061 { NULL
, 0, 0, NULL
}
1065 dissect_hnbap_GeographicalCoordinates(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1066 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1067 ett_hnbap_GeographicalCoordinates
, GeographicalCoordinates_sequence
);
1073 static const per_sequence_t GeographicalLocation_sequence
[] = {
1074 { &hf_hnbap_geographical_location_geographical_coordinates
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_GeographicalCoordinates
},
1075 { &hf_hnbap_altitudeAndDirection
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_AltitudeAndDirection
},
1076 { &hf_hnbap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
1077 { NULL
, 0, 0, NULL
}
1081 dissect_hnbap_GeographicalLocation(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1082 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1083 ett_hnbap_GeographicalLocation
, GeographicalLocation_sequence
);
1091 dissect_hnbap_GTP_TEI(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1092 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1099 static const value_string hnbap_HNB_Cell_Access_Mode_vals
[] = {
1108 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_
) {
1109 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1110 3, NULL
, true, 0, NULL
);
1116 static const per_sequence_t HNB_Cell_Identifier_sequence
[] = {
1117 { &hf_hnbap_pLMNidentity
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_PLMNidentity
},
1118 { &hf_hnbap_cellIdentity
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_CellIdentity
},
1119 { &hf_hnbap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
1120 { NULL
, 0, 0, NULL
}
1124 dissect_hnbap_HNB_Cell_Identifier(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1125 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1126 ett_hnbap_HNB_Cell_Identifier
, HNB_Cell_Identifier_sequence
);
1132 static const value_string hnbap_HNB_RNL_Identity_vals
[] = {
1133 { 0, "hNB-Identity-as-Cell-Identifier" },
1137 static const per_choice_t HNB_RNL_Identity_choice
[] = {
1138 { 0, &hf_hnbap_hNB_Identity_as_Cell_Identifier
, ASN1_EXTENSION_ROOT
, dissect_hnbap_HNB_Cell_Identifier
},
1139 { 0, NULL
, 0, NULL
}
1143 dissect_hnbap_HNB_RNL_Identity(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1144 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
1145 ett_hnbap_HNB_RNL_Identity
, HNB_RNL_Identity_choice
,
1154 dissect_hnbap_PSC(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1155 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
1156 9, 9, false, NULL
, 0, NULL
, NULL
);
1164 dissect_hnbap_Ipv4Address(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1165 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1174 dissect_hnbap_Ipv6Address(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1175 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1176 16, 16, false, NULL
);
1182 static const value_string hnbap_T_ipaddress_vals
[] = {
1188 static const per_choice_t T_ipaddress_choice
[] = {
1189 { 0, &hf_hnbap_ipv4info
, ASN1_EXTENSION_ROOT
, dissect_hnbap_Ipv4Address
},
1190 { 1, &hf_hnbap_ipv6info
, ASN1_EXTENSION_ROOT
, dissect_hnbap_Ipv6Address
},
1191 { 0, NULL
, 0, NULL
}
1195 dissect_hnbap_T_ipaddress(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1196 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
1197 ett_hnbap_T_ipaddress
, T_ipaddress_choice
,
1204 static const per_sequence_t IP_Address_sequence
[] = {
1205 { &hf_hnbap_ipaddress
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_T_ipaddress
},
1206 { &hf_hnbap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
1207 { NULL
, 0, 0, NULL
}
1211 dissect_hnbap_IP_Address(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1212 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1213 ett_hnbap_IP_Address
, IP_Address_sequence
);
1219 static const per_sequence_t Iurh_Signalling_TNL_AddressList_sequence_of
[1] = {
1220 { &hf_hnbap_Iurh_Signalling_TNL_AddressList_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_IP_Address
},
1224 dissect_hnbap_Iurh_Signalling_TNL_AddressList(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1225 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1226 ett_hnbap_Iurh_Signalling_TNL_AddressList
, Iurh_Signalling_TNL_AddressList_sequence_of
,
1227 1, maxnoofIurhAddresses
, false);
1233 static const per_sequence_t HNBConfigurationInformationProvided_sequence
[] = {
1234 { &hf_hnbap_psc
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_PSC
},
1235 { &hf_hnbap_cSG_ID
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_CSG_ID
},
1236 { &hf_hnbap_hNB_Cell_Access_Mode
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_HNB_Cell_Access_Mode
},
1237 { &hf_hnbap_iurh_Signalling_TNL_AddressList
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_Iurh_Signalling_TNL_AddressList
},
1238 { &hf_hnbap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
1239 { NULL
, 0, 0, NULL
}
1243 dissect_hnbap_HNBConfigurationInformationProvided(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1244 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1245 ett_hnbap_HNBConfigurationInformationProvided
, HNBConfigurationInformationProvided_sequence
);
1251 static const per_sequence_t HNBConfigurationInformationMissing_sequence
[] = {
1252 { &hf_hnbap_cause
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_Cause
},
1253 { &hf_hnbap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
1254 { NULL
, 0, 0, NULL
}
1258 dissect_hnbap_HNBConfigurationInformationMissing(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1259 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1260 ett_hnbap_HNBConfigurationInformationMissing
, HNBConfigurationInformationMissing_sequence
);
1266 static const value_string hnbap_ConfigurationInformation_vals
[] = {
1272 static const per_choice_t ConfigurationInformation_choice
[] = {
1273 { 0, &hf_hnbap_provided
, ASN1_EXTENSION_ROOT
, dissect_hnbap_HNBConfigurationInformationProvided
},
1274 { 1, &hf_hnbap_missing
, ASN1_EXTENSION_ROOT
, dissect_hnbap_HNBConfigurationInformationMissing
},
1275 { 0, NULL
, 0, NULL
}
1279 dissect_hnbap_ConfigurationInformation(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1280 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
1281 ett_hnbap_ConfigurationInformation
, ConfigurationInformation_choice
,
1288 static const per_sequence_t HNBConfigInfo_sequence
[] = {
1289 { &hf_hnbap_hnb_RNL_Identity
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_HNB_RNL_Identity
},
1290 { &hf_hnbap_configurationInformation
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_ConfigurationInformation
},
1291 { &hf_hnbap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
1292 { NULL
, 0, 0, NULL
}
1296 dissect_hnbap_HNBConfigInfo(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1297 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1298 ett_hnbap_HNBConfigInfo
, HNBConfigInfo_sequence
);
1306 dissect_hnbap_RAC(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1307 tvbuff_t
*parameter_tvb
= NULL
;
1308 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, -1,
1309 1, 1, false, ¶meter_tvb
);
1311 if (parameter_tvb
) {
1312 actx
->created_item
= proto_tree_add_item(tree
, hf_index
, parameter_tvb
, 0, 1, ENC_BIG_ENDIAN
);
1320 static const per_sequence_t UTRANCellID_sequence
[] = {
1321 { &hf_hnbap_lAC
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_LAC
},
1322 { &hf_hnbap_rAC
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_RAC
},
1323 { &hf_hnbap_pLMNidentity
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_PLMNidentity
},
1324 { &hf_hnbap_uTRANcellID
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_CellIdentity
},
1325 { &hf_hnbap_iE_Extensions
, ASN1_NO_EXTENSIONS
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
1326 { NULL
, 0, 0, NULL
}
1330 dissect_hnbap_UTRANCellID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1331 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1332 ett_hnbap_UTRANCellID
, UTRANCellID_sequence
);
1338 static const value_string hnbap_MacroCellID_vals
[] = {
1339 { 0, "uTRANCellID" },
1340 { 1, "gERANCellID" },
1344 static const per_choice_t MacroCellID_choice
[] = {
1345 { 0, &hf_hnbap_uTRANCellID
, ASN1_EXTENSION_ROOT
, dissect_hnbap_UTRANCellID
},
1346 { 1, &hf_hnbap_gERANCellID
, ASN1_EXTENSION_ROOT
, dissect_hnbap_CGI
},
1347 { 0, NULL
, 0, NULL
}
1351 dissect_hnbap_MacroCellID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1352 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
1353 ett_hnbap_MacroCellID
, MacroCellID_choice
,
1360 static const per_sequence_t MacroCoverageInformation_sequence
[] = {
1361 { &hf_hnbap_macroCellID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_MacroCellID
},
1362 { &hf_hnbap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
1363 { NULL
, 0, 0, NULL
}
1367 dissect_hnbap_MacroCoverageInformation(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1368 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1369 ett_hnbap_MacroCoverageInformation
, MacroCoverageInformation_sequence
);
1375 static const per_sequence_t HNB_Location_Information_sequence
[] = {
1376 { &hf_hnbap_macroCoverageInfo
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_MacroCoverageInformation
},
1377 { &hf_hnbap_hnb_location_information_geographical_coordinates
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_GeographicalLocation
},
1378 { &hf_hnbap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
1379 { NULL
, 0, 0, NULL
}
1383 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_
) {
1384 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1385 ett_hnbap_HNB_Location_Information
, HNB_Location_Information_sequence
);
1393 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_
) {
1394 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1395 1, 255, false, NULL
);
1401 static const per_sequence_t HNB_Identity_sequence
[] = {
1402 { &hf_hnbap_hNB_Identity_Info
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_HNB_Identity_Info
},
1403 { &hf_hnbap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
1404 { NULL
, 0, 0, NULL
}
1408 dissect_hnbap_HNB_Identity(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1409 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1410 ett_hnbap_HNB_Identity
, HNB_Identity_sequence
);
1418 dissect_hnbap_IMEI(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1419 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
1420 60, 60, false, NULL
, 0, NULL
, NULL
);
1428 dissect_hnbap_IMSI(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1429 tvbuff_t
*parameter_tvb
;
1430 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1431 3, 8, false, ¶meter_tvb
);
1433 if (parameter_tvb
) {
1434 proto_tree
*subtree
= proto_item_add_subtree(actx
->created_item
, ett_hnbap_imsi
);
1435 dissect_e212_imsi(parameter_tvb
, actx
->pinfo
, subtree
, 0, tvb_reported_length(parameter_tvb
), false);
1445 dissect_hnbap_IMSIDS41(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1446 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1453 static const per_sequence_t IMSIESN_sequence
[] = {
1454 { &hf_hnbap_iMSIDS41
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_IMSIDS41
},
1455 { &hf_hnbap_eSN
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_ESN
},
1456 { NULL
, 0, 0, NULL
}
1460 dissect_hnbap_IMSIESN(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1461 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1462 ett_hnbap_IMSIESN
, IMSIESN_sequence
);
1468 static const per_sequence_t LAI_sequence
[] = {
1469 { &hf_hnbap_pLMNID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_PLMNidentity
},
1470 { &hf_hnbap_lAC
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_LAC
},
1471 { NULL
, 0, 0, NULL
}
1475 dissect_hnbap_LAI(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1476 struct hnbap_private_data
*hnbap_data
= hnbap_get_private_data(actx
->pinfo
);
1477 /* The RAI is defined in the ASN.1 as the LAI plus the RAC; don't override
1478 * the MNC/MCC field types in that case.
1480 if (hnbap_data
->number_type
!= E212_RAI
) {
1481 hnbap_data
->number_type
= E212_LAI
;
1483 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1484 ett_hnbap_LAI
, LAI_sequence
);
1494 dissect_hnbap_MuxPortNumber(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1495 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1496 1024U, 65535U, NULL
, false);
1502 static const per_sequence_t NeighbourInfoList_sequence_of
[1] = {
1503 { &hf_hnbap_NeighbourInfoList_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_HNBConfigInfo
},
1507 dissect_hnbap_NeighbourInfoList(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1508 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1509 ett_hnbap_NeighbourInfoList
, NeighbourInfoList_sequence_of
,
1510 1, maxnoofNeighbours
, false);
1516 static const per_sequence_t NeighbourInfoRequestItem_sequence
[] = {
1517 { &hf_hnbap_hnb_RNL_Identity
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_HNB_RNL_Identity
},
1518 { &hf_hnbap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
1519 { NULL
, 0, 0, NULL
}
1523 dissect_hnbap_NeighbourInfoRequestItem(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1524 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1525 ett_hnbap_NeighbourInfoRequestItem
, NeighbourInfoRequestItem_sequence
);
1531 static const per_sequence_t NeighbourInfoRequestList_sequence_of
[1] = {
1532 { &hf_hnbap_NeighbourInfoRequestList_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_NeighbourInfoRequestItem
},
1536 dissect_hnbap_NeighbourInfoRequestList(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1537 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1538 ett_hnbap_NeighbourInfoRequestList
, NeighbourInfoRequestList_sequence_of
,
1539 1, maxnoofNeighbours
, false);
1547 dissect_hnbap_PTMSI(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1548 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
1549 32, 32, false, NULL
, 0, NULL
, NULL
);
1555 static const per_sequence_t RAI_sequence
[] = {
1556 { &hf_hnbap_lAI
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_LAI
},
1557 { &hf_hnbap_rAC
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_RAC
},
1558 { NULL
, 0, 0, NULL
}
1562 dissect_hnbap_RAI(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1563 struct hnbap_private_data
*hnbap_data
= hnbap_get_private_data(actx
->pinfo
);
1564 hnbap_data
->number_type
= E212_RAI
;
1565 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1566 ett_hnbap_RAI
, RAI_sequence
);
1574 static const per_sequence_t PTMSIRAI_sequence
[] = {
1575 { &hf_hnbap_pTMSI
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_PTMSI
},
1576 { &hf_hnbap_rAI
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_RAI
},
1577 { NULL
, 0, 0, NULL
}
1581 dissect_hnbap_PTMSIRAI(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1582 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1583 ett_hnbap_PTMSIRAI
, PTMSIRAI_sequence
);
1591 dissect_hnbap_RAB_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1592 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
1593 8, 8, false, NULL
, 0, NULL
, NULL
);
1601 dissect_hnbap_TransportLayerAddress(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1602 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
1603 1, 160, true, NULL
, 0, NULL
, NULL
);
1609 static const value_string hnbap_T_transportAssociation_vals
[] = {
1615 static const per_choice_t T_transportAssociation_choice
[] = {
1616 { 0, &hf_hnbap_gtp_TEI
, ASN1_EXTENSION_ROOT
, dissect_hnbap_GTP_TEI
},
1617 { 1, &hf_hnbap_bindingID
, ASN1_EXTENSION_ROOT
, dissect_hnbap_BindingID
},
1618 { 0, NULL
, 0, NULL
}
1622 dissect_hnbap_T_transportAssociation(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1623 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
1624 ett_hnbap_T_transportAssociation
, T_transportAssociation_choice
,
1631 static const per_sequence_t TransportInfo_sequence
[] = {
1632 { &hf_hnbap_transportLayerAddress
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_TransportLayerAddress
},
1633 { &hf_hnbap_transportAssociation
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_T_transportAssociation
},
1634 { &hf_hnbap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
1635 { NULL
, 0, 0, NULL
}
1639 dissect_hnbap_TransportInfo(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1640 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1641 ett_hnbap_TransportInfo
, TransportInfo_sequence
);
1647 static const per_sequence_t RABListItem_sequence
[] = {
1648 { &hf_hnbap_rAB_ID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_RAB_ID
},
1649 { &hf_hnbap_old_transport_Info
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_TransportInfo
},
1650 { &hf_hnbap_new_transport_Info
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_TransportInfo
},
1651 { &hf_hnbap_cn_domain_indicator
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_CN_DomainIndicator
},
1652 { &hf_hnbap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
1653 { NULL
, 0, 0, NULL
}
1657 dissect_hnbap_RABListItem(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1658 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1659 ett_hnbap_RABListItem
, RABListItem_sequence
);
1665 static const per_sequence_t RABList_sequence_of
[1] = {
1666 { &hf_hnbap_RABList_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_RABListItem
},
1670 dissect_hnbap_RABList(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1671 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1672 ett_hnbap_RABList
, RABList_sequence_of
,
1673 1, maxnoofRABs
, false);
1679 static const value_string hnbap_Registration_Cause_vals
[] = {
1680 { 0, "emergency-call" },
1682 { 2, "ue-relocation" },
1688 dissect_hnbap_Registration_Cause(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1689 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1690 2, NULL
, true, 1, NULL
);
1698 dissect_hnbap_RNC_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1699 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1700 0U, 65535U, NULL
, false);
1708 dissect_hnbap_SAC(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1709 tvbuff_t
*parameter_tvb
= NULL
;
1710 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, -1,
1711 2, 2, false, ¶meter_tvb
);
1713 if (parameter_tvb
) {
1714 actx
->created_item
= proto_tree_add_item(tree
, hf_index
, parameter_tvb
, 0, 2, ENC_BIG_ENDIAN
);
1724 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_
) {
1725 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
1726 32, 32, false, NULL
, 0, NULL
, NULL
);
1732 static const per_sequence_t TMSILAI_sequence
[] = {
1733 { &hf_hnbap_tMSI
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_BIT_STRING_SIZE_32
},
1734 { &hf_hnbap_lAI
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_LAI
},
1735 { NULL
, 0, 0, NULL
}
1739 dissect_hnbap_TMSILAI(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1740 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1741 ett_hnbap_TMSILAI
, TMSILAI_sequence
);
1749 dissect_hnbap_TMSIDS41(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1750 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1751 2, 17, false, NULL
);
1757 static const per_sequence_t UE_Capabilities_sequence
[] = {
1758 { &hf_hnbap_access_stratum_release_indicator
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_Access_stratum_release_indicator
},
1759 { &hf_hnbap_csg_capability
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_CSG_Capability
},
1760 { &hf_hnbap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
1761 { NULL
, 0, 0, NULL
}
1765 dissect_hnbap_UE_Capabilities(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1766 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1767 ett_hnbap_UE_Capabilities
, UE_Capabilities_sequence
);
1773 static const value_string hnbap_UE_Identity_vals
[] = {
1785 static const per_choice_t UE_Identity_choice
[] = {
1786 { 0, &hf_hnbap_iMSI
, ASN1_EXTENSION_ROOT
, dissect_hnbap_IMSI
},
1787 { 1, &hf_hnbap_tMSILAI
, ASN1_EXTENSION_ROOT
, dissect_hnbap_TMSILAI
},
1788 { 2, &hf_hnbap_pTMSIRAI
, ASN1_EXTENSION_ROOT
, dissect_hnbap_PTMSIRAI
},
1789 { 3, &hf_hnbap_iMEI
, ASN1_EXTENSION_ROOT
, dissect_hnbap_IMEI
},
1790 { 4, &hf_hnbap_eSN
, ASN1_EXTENSION_ROOT
, dissect_hnbap_ESN
},
1791 { 5, &hf_hnbap_iMSIDS41
, ASN1_EXTENSION_ROOT
, dissect_hnbap_IMSIDS41
},
1792 { 6, &hf_hnbap_iMSIESN
, ASN1_EXTENSION_ROOT
, dissect_hnbap_IMSIESN
},
1793 { 7, &hf_hnbap_tMSIDS41
, ASN1_EXTENSION_ROOT
, dissect_hnbap_TMSIDS41
},
1794 { 0, NULL
, 0, NULL
}
1798 dissect_hnbap_UE_Identity(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1799 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
1800 ett_hnbap_UE_Identity
, UE_Identity_choice
,
1807 static const value_string hnbap_Update_cause_vals
[] = {
1808 { 0, "relocation-preparation" },
1814 dissect_hnbap_Update_cause(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1815 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1816 1, NULL
, true, 0, NULL
);
1822 static const per_sequence_t HNBRegisterRequest_sequence
[] = {
1823 { &hf_hnbap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_ProtocolIE_Container
},
1824 { &hf_hnbap_protocolExtensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
1825 { NULL
, 0, 0, NULL
}
1829 dissect_hnbap_HNBRegisterRequest(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1830 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
,
1831 "HNB_REGISTER_REQUEST ");
1832 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1833 ett_hnbap_HNBRegisterRequest
, HNBRegisterRequest_sequence
);
1841 static const per_sequence_t HNBRegisterAccept_sequence
[] = {
1842 { &hf_hnbap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_ProtocolIE_Container
},
1843 { &hf_hnbap_protocolExtensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
1844 { NULL
, 0, 0, NULL
}
1848 dissect_hnbap_HNBRegisterAccept(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1849 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
,
1850 "HNB_REGISTER_ACCEPT ");
1851 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1852 ett_hnbap_HNBRegisterAccept
, HNBRegisterAccept_sequence
);
1860 static const per_sequence_t HNBRegisterReject_sequence
[] = {
1861 { &hf_hnbap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_ProtocolIE_Container
},
1862 { &hf_hnbap_protocolExtensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
1863 { NULL
, 0, 0, NULL
}
1867 dissect_hnbap_HNBRegisterReject(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1868 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
,
1869 "HNB_REGISTER_REJECT ");
1870 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1871 ett_hnbap_HNBRegisterReject
, HNBRegisterReject_sequence
);
1879 static const per_sequence_t HNBDe_Register_sequence
[] = {
1880 { &hf_hnbap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_ProtocolIE_Container
},
1881 { &hf_hnbap_protocolExtensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
1882 { NULL
, 0, 0, NULL
}
1886 dissect_hnbap_HNBDe_Register(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1887 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
,
1888 "HNB_DE-REGISTER ");
1889 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1890 ett_hnbap_HNBDe_Register
, HNBDe_Register_sequence
);
1898 static const per_sequence_t UERegisterRequest_sequence
[] = {
1899 { &hf_hnbap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_ProtocolIE_Container
},
1900 { &hf_hnbap_protocolExtensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
1901 { NULL
, 0, 0, NULL
}
1905 dissect_hnbap_UERegisterRequest(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1906 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
,
1907 "UE_REGISTER_REQUEST ");
1908 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1909 ett_hnbap_UERegisterRequest
, UERegisterRequest_sequence
);
1917 static const per_sequence_t UERegisterAccept_sequence
[] = {
1918 { &hf_hnbap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_ProtocolIE_Container
},
1919 { &hf_hnbap_protocolExtensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
1920 { NULL
, 0, 0, NULL
}
1924 dissect_hnbap_UERegisterAccept(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1925 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
,
1926 "UE_REGISTER_ACCEPT ");
1927 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1928 ett_hnbap_UERegisterAccept
, UERegisterAccept_sequence
);
1936 static const per_sequence_t UERegisterReject_sequence
[] = {
1937 { &hf_hnbap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_ProtocolIE_Container
},
1938 { &hf_hnbap_protocolExtensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
1939 { NULL
, 0, 0, NULL
}
1943 dissect_hnbap_UERegisterReject(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1944 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
,
1945 "UE_REGISTER_REJECT ");
1946 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1947 ett_hnbap_UERegisterReject
, UERegisterReject_sequence
);
1955 static const per_sequence_t UEDe_Register_sequence
[] = {
1956 { &hf_hnbap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_ProtocolIE_Container
},
1957 { &hf_hnbap_protocolExtensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
1958 { NULL
, 0, 0, NULL
}
1962 dissect_hnbap_UEDe_Register(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1963 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
,
1965 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1966 ett_hnbap_UEDe_Register
, UEDe_Register_sequence
);
1974 static const per_sequence_t CSGMembershipUpdate_sequence
[] = {
1975 { &hf_hnbap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_ProtocolIE_Container
},
1976 { &hf_hnbap_protocolExtensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
1977 { NULL
, 0, 0, NULL
}
1981 dissect_hnbap_CSGMembershipUpdate(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1982 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
,
1983 "CSG_MEMBERSHIP_UPDATE_MESSAGE ");
1984 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1985 ett_hnbap_CSGMembershipUpdate
, CSGMembershipUpdate_sequence
);
1993 static const per_sequence_t TNLUpdateRequest_sequence
[] = {
1994 { &hf_hnbap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_ProtocolIE_Container
},
1995 { &hf_hnbap_protocolExtensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
1996 { NULL
, 0, 0, NULL
}
2000 dissect_hnbap_TNLUpdateRequest(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2001 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
,
2002 "TNL_UPDATE_REQUEST_MESSAGE ");
2003 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2004 ett_hnbap_TNLUpdateRequest
, TNLUpdateRequest_sequence
);
2011 static const per_sequence_t TNLUpdateResponse_sequence
[] = {
2012 { &hf_hnbap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_ProtocolIE_Container
},
2013 { &hf_hnbap_protocolExtensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
2014 { NULL
, 0, 0, NULL
}
2018 dissect_hnbap_TNLUpdateResponse(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2019 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
,
2020 "TNL_UPDATE_RESPONSE_MESSAGE ");
2021 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2022 ett_hnbap_TNLUpdateResponse
, TNLUpdateResponse_sequence
);
2029 static const per_sequence_t TNLUpdateFailure_sequence
[] = {
2030 { &hf_hnbap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_ProtocolIE_Container
},
2031 { &hf_hnbap_protocolExtensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
2032 { NULL
, 0, 0, NULL
}
2036 dissect_hnbap_TNLUpdateFailure(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2037 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
,
2038 "TNL_UPDATE_FAILURE_MESSAGE ");
2039 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2040 ett_hnbap_TNLUpdateFailure
, TNLUpdateFailure_sequence
);
2047 static const per_sequence_t HNBConfigTransferRequest_sequence
[] = {
2048 { &hf_hnbap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_ProtocolIE_Container
},
2049 { &hf_hnbap_protocolExtensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
2050 { NULL
, 0, 0, NULL
}
2054 dissect_hnbap_HNBConfigTransferRequest(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2055 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
,
2056 "HNB_CONFIG_TRANSFER_REQUEST_MESSAGE ");
2057 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2058 ett_hnbap_HNBConfigTransferRequest
, HNBConfigTransferRequest_sequence
);
2065 static const per_sequence_t HNBConfigTransferResponse_sequence
[] = {
2066 { &hf_hnbap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_ProtocolIE_Container
},
2067 { &hf_hnbap_protocolExtensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
2068 { NULL
, 0, 0, NULL
}
2072 dissect_hnbap_HNBConfigTransferResponse(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2073 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
,
2074 "HNB_CONFIG_TRANSFER_RESPONSE_MESSAGE ");
2075 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2076 ett_hnbap_HNBConfigTransferResponse
, HNBConfigTransferResponse_sequence
);
2083 static const per_sequence_t RelocationComplete_sequence
[] = {
2084 { &hf_hnbap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_ProtocolIE_Container
},
2085 { &hf_hnbap_protocolExtensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
2086 { NULL
, 0, 0, NULL
}
2090 dissect_hnbap_RelocationComplete(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2091 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
,
2092 "RELOCATION_COMPLETE_MESSAGE ");
2093 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2094 ett_hnbap_RelocationComplete
, RelocationComplete_sequence
);
2102 static const per_sequence_t ErrorIndication_sequence
[] = {
2103 { &hf_hnbap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_ProtocolIE_Container
},
2104 { &hf_hnbap_protocolExtensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_hnbap_ProtocolExtensionContainer
},
2105 { NULL
, 0, 0, NULL
}
2109 dissect_hnbap_ErrorIndication(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2110 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
,
2111 "ERROR_INDICATION ");
2112 col_set_fence(actx
->pinfo
->cinfo
, COL_INFO
); /* Protect info from CriticalityDiagnostics decodes */
2113 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2114 ett_hnbap_ErrorIndication
, ErrorIndication_sequence
);
2122 static const per_sequence_t PrivateMessage_sequence
[] = {
2123 { &hf_hnbap_privateIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_hnbap_PrivateIE_Container
},
2124 { NULL
, 0, 0, NULL
}
2128 dissect_hnbap_PrivateMessage(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2129 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
,
2130 "PRIVATE_MESSAGE ");
2131 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2132 ett_hnbap_PrivateMessage
, PrivateMessage_sequence
);
2142 dissect_hnbap_InitiatingMessage_value(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2143 offset
= dissect_per_open_type_pdu_new(tvb
, offset
, actx
, tree
, hf_index
, dissect_InitiatingMessageValue
);
2149 static const per_sequence_t InitiatingMessage_sequence
[] = {
2150 { &hf_hnbap_procedureCode
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_ProcedureCode
},
2151 { &hf_hnbap_criticality
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_Criticality
},
2152 { &hf_hnbap_initiatingMessagevalue
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_InitiatingMessage_value
},
2153 { NULL
, 0, 0, NULL
}
2157 dissect_hnbap_InitiatingMessage(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2158 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2159 ett_hnbap_InitiatingMessage
, InitiatingMessage_sequence
);
2167 dissect_hnbap_SuccessfulOutcome_value(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2168 offset
= dissect_per_open_type_pdu_new(tvb
, offset
, actx
, tree
, hf_index
, dissect_SuccessfulOutcomeValue
);
2174 static const per_sequence_t SuccessfulOutcome_sequence
[] = {
2175 { &hf_hnbap_procedureCode
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_ProcedureCode
},
2176 { &hf_hnbap_criticality
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_Criticality
},
2177 { &hf_hnbap_successfulOutcome_value
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_SuccessfulOutcome_value
},
2178 { NULL
, 0, 0, NULL
}
2182 dissect_hnbap_SuccessfulOutcome(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2183 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2184 ett_hnbap_SuccessfulOutcome
, SuccessfulOutcome_sequence
);
2192 dissect_hnbap_UnsuccessfulOutcome_value(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2193 offset
= dissect_per_open_type_pdu_new(tvb
, offset
, actx
, tree
, hf_index
, dissect_UnsuccessfulOutcomeValue
);
2199 static const per_sequence_t UnsuccessfulOutcome_sequence
[] = {
2200 { &hf_hnbap_procedureCode
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_ProcedureCode
},
2201 { &hf_hnbap_criticality
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_Criticality
},
2202 { &hf_hnbap_unsuccessfulOutcome_value
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_hnbap_UnsuccessfulOutcome_value
},
2203 { NULL
, 0, 0, NULL
}
2207 dissect_hnbap_UnsuccessfulOutcome(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2208 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2209 ett_hnbap_UnsuccessfulOutcome
, UnsuccessfulOutcome_sequence
);
2215 static const value_string hnbap_HNBAP_PDU_vals
[] = {
2216 { 0, "initiatingMessage" },
2217 { 1, "successfulOutcome" },
2218 { 2, "unsuccessfulOutcome" },
2222 static const per_choice_t HNBAP_PDU_choice
[] = {
2223 { 0, &hf_hnbap_initiatingMessage
, ASN1_EXTENSION_ROOT
, dissect_hnbap_InitiatingMessage
},
2224 { 1, &hf_hnbap_successfulOutcome
, ASN1_EXTENSION_ROOT
, dissect_hnbap_SuccessfulOutcome
},
2225 { 2, &hf_hnbap_unsuccessfulOutcome
, ASN1_EXTENSION_ROOT
, dissect_hnbap_UnsuccessfulOutcome
},
2226 { 0, NULL
, 0, NULL
}
2230 dissect_hnbap_HNBAP_PDU(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2231 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
2232 ett_hnbap_HNBAP_PDU
, HNBAP_PDU_choice
,
2240 static int dissect_BackoffTimer_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2242 asn1_ctx_t asn1_ctx
;
2243 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2244 offset
= dissect_hnbap_BackoffTimer(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_BackoffTimer_PDU
);
2245 offset
+= 7; offset
>>= 3;
2248 static int dissect_Cause_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2250 asn1_ctx_t asn1_ctx
;
2251 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2252 offset
= dissect_hnbap_Cause(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_Cause_PDU
);
2253 offset
+= 7; offset
>>= 3;
2256 static int dissect_CellIdentity_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2258 asn1_ctx_t asn1_ctx
;
2259 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2260 offset
= dissect_hnbap_CellIdentity(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_CellIdentity_PDU
);
2261 offset
+= 7; offset
>>= 3;
2264 static int dissect_Context_ID_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2266 asn1_ctx_t asn1_ctx
;
2267 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2268 offset
= dissect_hnbap_Context_ID(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_Context_ID_PDU
);
2269 offset
+= 7; offset
>>= 3;
2272 static int dissect_CriticalityDiagnostics_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2274 asn1_ctx_t asn1_ctx
;
2275 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2276 offset
= dissect_hnbap_CriticalityDiagnostics(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_CriticalityDiagnostics_PDU
);
2277 offset
+= 7; offset
>>= 3;
2280 static int dissect_CSG_ID_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2282 asn1_ctx_t asn1_ctx
;
2283 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2284 offset
= dissect_hnbap_CSG_ID(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_CSG_ID_PDU
);
2285 offset
+= 7; offset
>>= 3;
2288 static int dissect_CSGMembershipStatus_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2290 asn1_ctx_t asn1_ctx
;
2291 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2292 offset
= dissect_hnbap_CSGMembershipStatus(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_CSGMembershipStatus_PDU
);
2293 offset
+= 7; offset
>>= 3;
2296 static int dissect_HNB_Cell_Access_Mode_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2298 asn1_ctx_t asn1_ctx
;
2299 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2300 offset
= dissect_hnbap_HNB_Cell_Access_Mode(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_HNB_Cell_Access_Mode_PDU
);
2301 offset
+= 7; offset
>>= 3;
2304 static int dissect_HNB_Location_Information_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2306 asn1_ctx_t asn1_ctx
;
2307 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2308 offset
= dissect_hnbap_HNB_Location_Information(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_HNB_Location_Information_PDU
);
2309 offset
+= 7; offset
>>= 3;
2312 static int dissect_HNB_Identity_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2314 asn1_ctx_t asn1_ctx
;
2315 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2316 offset
= dissect_hnbap_HNB_Identity(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_HNB_Identity_PDU
);
2317 offset
+= 7; offset
>>= 3;
2320 static int dissect_IP_Address_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2322 asn1_ctx_t asn1_ctx
;
2323 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2324 offset
= dissect_hnbap_IP_Address(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_IP_Address_PDU
);
2325 offset
+= 7; offset
>>= 3;
2328 static int dissect_LAC_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2330 asn1_ctx_t asn1_ctx
;
2331 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2332 offset
= dissect_hnbap_LAC(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_LAC_PDU
);
2333 offset
+= 7; offset
>>= 3;
2336 static int dissect_MuxPortNumber_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2338 asn1_ctx_t asn1_ctx
;
2339 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2340 offset
= dissect_hnbap_MuxPortNumber(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_MuxPortNumber_PDU
);
2341 offset
+= 7; offset
>>= 3;
2344 static int dissect_NeighbourInfoList_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2346 asn1_ctx_t asn1_ctx
;
2347 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2348 offset
= dissect_hnbap_NeighbourInfoList(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_NeighbourInfoList_PDU
);
2349 offset
+= 7; offset
>>= 3;
2352 static int dissect_NeighbourInfoRequestList_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2354 asn1_ctx_t asn1_ctx
;
2355 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2356 offset
= dissect_hnbap_NeighbourInfoRequestList(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_NeighbourInfoRequestList_PDU
);
2357 offset
+= 7; offset
>>= 3;
2360 static int dissect_PLMNidentity_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2362 asn1_ctx_t asn1_ctx
;
2363 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2364 offset
= dissect_hnbap_PLMNidentity(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_PLMNidentity_PDU
);
2365 offset
+= 7; offset
>>= 3;
2368 static int dissect_PSC_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2370 asn1_ctx_t asn1_ctx
;
2371 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2372 offset
= dissect_hnbap_PSC(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_PSC_PDU
);
2373 offset
+= 7; offset
>>= 3;
2376 static int dissect_RABList_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2378 asn1_ctx_t asn1_ctx
;
2379 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2380 offset
= dissect_hnbap_RABList(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_RABList_PDU
);
2381 offset
+= 7; offset
>>= 3;
2384 static int dissect_RAC_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2386 asn1_ctx_t asn1_ctx
;
2387 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2388 offset
= dissect_hnbap_RAC(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_RAC_PDU
);
2389 offset
+= 7; offset
>>= 3;
2392 static int dissect_Registration_Cause_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2394 asn1_ctx_t asn1_ctx
;
2395 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2396 offset
= dissect_hnbap_Registration_Cause(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_Registration_Cause_PDU
);
2397 offset
+= 7; offset
>>= 3;
2400 static int dissect_RNC_ID_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2402 asn1_ctx_t asn1_ctx
;
2403 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2404 offset
= dissect_hnbap_RNC_ID(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_RNC_ID_PDU
);
2405 offset
+= 7; offset
>>= 3;
2408 static int dissect_SAC_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2410 asn1_ctx_t asn1_ctx
;
2411 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2412 offset
= dissect_hnbap_SAC(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_SAC_PDU
);
2413 offset
+= 7; offset
>>= 3;
2416 static int dissect_UE_Capabilities_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2418 asn1_ctx_t asn1_ctx
;
2419 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2420 offset
= dissect_hnbap_UE_Capabilities(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_UE_Capabilities_PDU
);
2421 offset
+= 7; offset
>>= 3;
2424 static int dissect_UE_Identity_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2426 asn1_ctx_t asn1_ctx
;
2427 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2428 offset
= dissect_hnbap_UE_Identity(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_UE_Identity_PDU
);
2429 offset
+= 7; offset
>>= 3;
2432 static int dissect_Update_cause_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2434 asn1_ctx_t asn1_ctx
;
2435 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2436 offset
= dissect_hnbap_Update_cause(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_Update_cause_PDU
);
2437 offset
+= 7; offset
>>= 3;
2440 static int dissect_HNBRegisterRequest_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2442 asn1_ctx_t asn1_ctx
;
2443 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2444 offset
= dissect_hnbap_HNBRegisterRequest(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_HNBRegisterRequest_PDU
);
2445 offset
+= 7; offset
>>= 3;
2448 static int dissect_HNBRegisterAccept_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2450 asn1_ctx_t asn1_ctx
;
2451 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2452 offset
= dissect_hnbap_HNBRegisterAccept(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_HNBRegisterAccept_PDU
);
2453 offset
+= 7; offset
>>= 3;
2456 static int dissect_HNBRegisterReject_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2458 asn1_ctx_t asn1_ctx
;
2459 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2460 offset
= dissect_hnbap_HNBRegisterReject(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_HNBRegisterReject_PDU
);
2461 offset
+= 7; offset
>>= 3;
2464 static int dissect_HNBDe_Register_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2466 asn1_ctx_t asn1_ctx
;
2467 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2468 offset
= dissect_hnbap_HNBDe_Register(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_HNBDe_Register_PDU
);
2469 offset
+= 7; offset
>>= 3;
2472 static int dissect_UERegisterRequest_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2474 asn1_ctx_t asn1_ctx
;
2475 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2476 offset
= dissect_hnbap_UERegisterRequest(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_UERegisterRequest_PDU
);
2477 offset
+= 7; offset
>>= 3;
2480 static int dissect_UERegisterAccept_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2482 asn1_ctx_t asn1_ctx
;
2483 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2484 offset
= dissect_hnbap_UERegisterAccept(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_UERegisterAccept_PDU
);
2485 offset
+= 7; offset
>>= 3;
2488 static int dissect_UERegisterReject_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2490 asn1_ctx_t asn1_ctx
;
2491 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2492 offset
= dissect_hnbap_UERegisterReject(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_UERegisterReject_PDU
);
2493 offset
+= 7; offset
>>= 3;
2496 static int dissect_UEDe_Register_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2498 asn1_ctx_t asn1_ctx
;
2499 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2500 offset
= dissect_hnbap_UEDe_Register(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_UEDe_Register_PDU
);
2501 offset
+= 7; offset
>>= 3;
2504 static int dissect_CSGMembershipUpdate_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2506 asn1_ctx_t asn1_ctx
;
2507 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2508 offset
= dissect_hnbap_CSGMembershipUpdate(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_CSGMembershipUpdate_PDU
);
2509 offset
+= 7; offset
>>= 3;
2512 static int dissect_TNLUpdateRequest_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2514 asn1_ctx_t asn1_ctx
;
2515 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2516 offset
= dissect_hnbap_TNLUpdateRequest(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_TNLUpdateRequest_PDU
);
2517 offset
+= 7; offset
>>= 3;
2520 static int dissect_TNLUpdateResponse_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2522 asn1_ctx_t asn1_ctx
;
2523 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2524 offset
= dissect_hnbap_TNLUpdateResponse(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_TNLUpdateResponse_PDU
);
2525 offset
+= 7; offset
>>= 3;
2528 static int dissect_TNLUpdateFailure_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2530 asn1_ctx_t asn1_ctx
;
2531 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2532 offset
= dissect_hnbap_TNLUpdateFailure(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_TNLUpdateFailure_PDU
);
2533 offset
+= 7; offset
>>= 3;
2536 static int dissect_HNBConfigTransferRequest_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2538 asn1_ctx_t asn1_ctx
;
2539 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2540 offset
= dissect_hnbap_HNBConfigTransferRequest(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_HNBConfigTransferRequest_PDU
);
2541 offset
+= 7; offset
>>= 3;
2544 static int dissect_HNBConfigTransferResponse_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2546 asn1_ctx_t asn1_ctx
;
2547 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2548 offset
= dissect_hnbap_HNBConfigTransferResponse(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_HNBConfigTransferResponse_PDU
);
2549 offset
+= 7; offset
>>= 3;
2552 static int dissect_RelocationComplete_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2554 asn1_ctx_t asn1_ctx
;
2555 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2556 offset
= dissect_hnbap_RelocationComplete(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_RelocationComplete_PDU
);
2557 offset
+= 7; offset
>>= 3;
2560 static int dissect_ErrorIndication_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2562 asn1_ctx_t asn1_ctx
;
2563 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2564 offset
= dissect_hnbap_ErrorIndication(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_ErrorIndication_PDU
);
2565 offset
+= 7; offset
>>= 3;
2568 static int dissect_PrivateMessage_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2570 asn1_ctx_t asn1_ctx
;
2571 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2572 offset
= dissect_hnbap_PrivateMessage(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_PrivateMessage_PDU
);
2573 offset
+= 7; offset
>>= 3;
2576 static int dissect_HNBAP_PDU_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2578 asn1_ctx_t asn1_ctx
;
2579 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2580 offset
= dissect_hnbap_HNBAP_PDU(tvb
, offset
, &asn1_ctx
, tree
, hf_hnbap_HNBAP_PDU_PDU
);
2581 offset
+= 7; offset
>>= 3;
2586 static int dissect_ProtocolIEFieldValue(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
2588 return (dissector_try_uint_with_data(hnbap_ies_dissector_table
, ProtocolIE_ID
, tvb
, pinfo
, tree
, false, NULL
)) ? tvb_captured_length(tvb
) : 0;
2591 static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
2593 return (dissector_try_uint_with_data(hnbap_extension_dissector_table
, ProtocolIE_ID
, tvb
, pinfo
, tree
, false, NULL
)) ? tvb_captured_length(tvb
) : 0;
2596 static int dissect_InitiatingMessageValue(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
2598 if (!ProcedureCode
) return 0;
2599 return (dissector_try_string_with_data(hnbap_proc_imsg_dissector_table
, ProcedureCode
, tvb
, pinfo
, tree
, true, NULL
)) ? tvb_captured_length(tvb
) : 0;
2602 static int dissect_SuccessfulOutcomeValue(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
2604 if (!ProcedureCode
) return 0;
2605 return (dissector_try_string_with_data(hnbap_proc_sout_dissector_table
, ProcedureCode
, tvb
, pinfo
, tree
, true, NULL
)) ? tvb_captured_length(tvb
) : 0;
2608 static int dissect_UnsuccessfulOutcomeValue(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
2610 if (!ProcedureCode
) return 0;
2611 return (dissector_try_string_with_data(hnbap_proc_uout_dissector_table
, ProcedureCode
, tvb
, pinfo
, tree
, true, NULL
)) ? tvb_captured_length(tvb
) : 0;
2615 static int dissect_InitiatingMessageValue(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
2617 return (dissector_try_uint_with_data(hnbap_proc_imsg_dissector_table
, ProcedureCode
, tvb
, pinfo
, tree
, false, NULL
)) ? tvb_captured_length(tvb
) : 0;
2620 static int dissect_SuccessfulOutcomeValue(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
2622 return (dissector_try_uint_with_data(hnbap_proc_sout_dissector_table
, ProcedureCode
, tvb
, pinfo
, tree
, false, NULL
)) ? tvb_captured_length(tvb
) : 0;
2625 static int dissect_UnsuccessfulOutcomeValue(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
2627 return (dissector_try_uint_with_data(hnbap_proc_uout_dissector_table
, ProcedureCode
, tvb
, pinfo
, tree
, false, NULL
)) ? tvb_captured_length(tvb
) : 0;
2631 dissect_hnbap(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data
)
2633 proto_item
*hnbap_item
= NULL
;
2634 proto_tree
*hnbap_tree
= NULL
;
2636 /* make entry in the Protocol column on summary display */
2637 col_set_str(pinfo
->cinfo
, COL_PROTOCOL
, "HNBAP");
2639 /* create the hnbap protocol tree */
2640 hnbap_item
= proto_tree_add_item(tree
, proto_hnbap
, tvb
, 0, -1, ENC_NA
);
2641 hnbap_tree
= proto_item_add_subtree(hnbap_item
, ett_hnbap
);
2643 return dissect_HNBAP_PDU_PDU(tvb
, pinfo
, hnbap_tree
, data
);
2646 /*--- proto_register_hnbap -------------------------------------------*/
2647 void proto_register_hnbap(void) {
2649 /* List of fields */
2651 static hf_register_info hf
[] = {
2653 { &hf_hnbap_BackoffTimer_PDU
,
2654 { "BackoffTimer", "hnbap.BackoffTimer",
2655 FT_UINT32
, BASE_DEC
, NULL
, 0,
2657 { &hf_hnbap_Cause_PDU
,
2658 { "Cause", "hnbap.Cause",
2659 FT_UINT32
, BASE_DEC
, VALS(hnbap_Cause_vals
), 0,
2661 { &hf_hnbap_CellIdentity_PDU
,
2662 { "CellIdentity", "hnbap.CellIdentity",
2663 FT_BYTES
, BASE_NONE
, NULL
, 0,
2665 { &hf_hnbap_Context_ID_PDU
,
2666 { "Context-ID", "hnbap.Context_ID",
2667 FT_BYTES
, BASE_NONE
, NULL
, 0,
2669 { &hf_hnbap_CriticalityDiagnostics_PDU
,
2670 { "CriticalityDiagnostics", "hnbap.CriticalityDiagnostics_element",
2671 FT_NONE
, BASE_NONE
, NULL
, 0,
2673 { &hf_hnbap_CSG_ID_PDU
,
2674 { "CSG-ID", "hnbap.CSG_ID",
2675 FT_BYTES
, BASE_NONE
, NULL
, 0,
2677 { &hf_hnbap_CSGMembershipStatus_PDU
,
2678 { "CSGMembershipStatus", "hnbap.CSGMembershipStatus",
2679 FT_UINT32
, BASE_DEC
, VALS(hnbap_CSGMembershipStatus_vals
), 0,
2681 { &hf_hnbap_HNB_Cell_Access_Mode_PDU
,
2682 { "HNB-Cell-Access-Mode", "hnbap.HNB_Cell_Access_Mode",
2683 FT_UINT32
, BASE_DEC
, VALS(hnbap_HNB_Cell_Access_Mode_vals
), 0,
2685 { &hf_hnbap_HNB_Location_Information_PDU
,
2686 { "HNB-Location-Information", "hnbap.HNB_Location_Information_element",
2687 FT_NONE
, BASE_NONE
, NULL
, 0,
2689 { &hf_hnbap_HNB_Identity_PDU
,
2690 { "HNB-Identity", "hnbap.HNB_Identity_element",
2691 FT_NONE
, BASE_NONE
, NULL
, 0,
2693 { &hf_hnbap_IP_Address_PDU
,
2694 { "IP-Address", "hnbap.IP_Address_element",
2695 FT_NONE
, BASE_NONE
, NULL
, 0,
2697 { &hf_hnbap_LAC_PDU
,
2698 { "LAC", "hnbap.LAC",
2699 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0,
2701 { &hf_hnbap_MuxPortNumber_PDU
,
2702 { "MuxPortNumber", "hnbap.MuxPortNumber",
2703 FT_UINT32
, BASE_DEC
, NULL
, 0,
2705 { &hf_hnbap_NeighbourInfoList_PDU
,
2706 { "NeighbourInfoList", "hnbap.NeighbourInfoList",
2707 FT_UINT32
, BASE_DEC
, NULL
, 0,
2709 { &hf_hnbap_NeighbourInfoRequestList_PDU
,
2710 { "NeighbourInfoRequestList", "hnbap.NeighbourInfoRequestList",
2711 FT_UINT32
, BASE_DEC
, NULL
, 0,
2713 { &hf_hnbap_PLMNidentity_PDU
,
2714 { "PLMNidentity", "hnbap.PLMNidentity",
2715 FT_BYTES
, BASE_NONE
, NULL
, 0,
2717 { &hf_hnbap_PSC_PDU
,
2718 { "PSC", "hnbap.PSC",
2719 FT_BYTES
, BASE_NONE
, NULL
, 0,
2721 { &hf_hnbap_RABList_PDU
,
2722 { "RABList", "hnbap.RABList",
2723 FT_UINT32
, BASE_DEC
, NULL
, 0,
2725 { &hf_hnbap_RAC_PDU
,
2726 { "RAC", "hnbap.RAC",
2727 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0,
2729 { &hf_hnbap_Registration_Cause_PDU
,
2730 { "Registration-Cause", "hnbap.Registration_Cause",
2731 FT_UINT32
, BASE_DEC
, VALS(hnbap_Registration_Cause_vals
), 0,
2733 { &hf_hnbap_RNC_ID_PDU
,
2734 { "RNC-ID", "hnbap.RNC_ID",
2735 FT_UINT32
, BASE_DEC
, NULL
, 0,
2737 { &hf_hnbap_SAC_PDU
,
2738 { "SAC", "hnbap.SAC",
2739 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0,
2741 { &hf_hnbap_UE_Capabilities_PDU
,
2742 { "UE-Capabilities", "hnbap.UE_Capabilities_element",
2743 FT_NONE
, BASE_NONE
, NULL
, 0,
2745 { &hf_hnbap_UE_Identity_PDU
,
2746 { "UE-Identity", "hnbap.UE_Identity",
2747 FT_UINT32
, BASE_DEC
, VALS(hnbap_UE_Identity_vals
), 0,
2749 { &hf_hnbap_Update_cause_PDU
,
2750 { "Update-cause", "hnbap.Update_cause",
2751 FT_UINT32
, BASE_DEC
, VALS(hnbap_Update_cause_vals
), 0,
2753 { &hf_hnbap_HNBRegisterRequest_PDU
,
2754 { "HNBRegisterRequest", "hnbap.HNBRegisterRequest_element",
2755 FT_NONE
, BASE_NONE
, NULL
, 0,
2757 { &hf_hnbap_HNBRegisterAccept_PDU
,
2758 { "HNBRegisterAccept", "hnbap.HNBRegisterAccept_element",
2759 FT_NONE
, BASE_NONE
, NULL
, 0,
2761 { &hf_hnbap_HNBRegisterReject_PDU
,
2762 { "HNBRegisterReject", "hnbap.HNBRegisterReject_element",
2763 FT_NONE
, BASE_NONE
, NULL
, 0,
2765 { &hf_hnbap_HNBDe_Register_PDU
,
2766 { "HNBDe-Register", "hnbap.HNBDe_Register_element",
2767 FT_NONE
, BASE_NONE
, NULL
, 0,
2769 { &hf_hnbap_UERegisterRequest_PDU
,
2770 { "UERegisterRequest", "hnbap.UERegisterRequest_element",
2771 FT_NONE
, BASE_NONE
, NULL
, 0,
2773 { &hf_hnbap_UERegisterAccept_PDU
,
2774 { "UERegisterAccept", "hnbap.UERegisterAccept_element",
2775 FT_NONE
, BASE_NONE
, NULL
, 0,
2777 { &hf_hnbap_UERegisterReject_PDU
,
2778 { "UERegisterReject", "hnbap.UERegisterReject_element",
2779 FT_NONE
, BASE_NONE
, NULL
, 0,
2781 { &hf_hnbap_UEDe_Register_PDU
,
2782 { "UEDe-Register", "hnbap.UEDe_Register_element",
2783 FT_NONE
, BASE_NONE
, NULL
, 0,
2785 { &hf_hnbap_CSGMembershipUpdate_PDU
,
2786 { "CSGMembershipUpdate", "hnbap.CSGMembershipUpdate_element",
2787 FT_NONE
, BASE_NONE
, NULL
, 0,
2789 { &hf_hnbap_TNLUpdateRequest_PDU
,
2790 { "TNLUpdateRequest", "hnbap.TNLUpdateRequest_element",
2791 FT_NONE
, BASE_NONE
, NULL
, 0,
2793 { &hf_hnbap_TNLUpdateResponse_PDU
,
2794 { "TNLUpdateResponse", "hnbap.TNLUpdateResponse_element",
2795 FT_NONE
, BASE_NONE
, NULL
, 0,
2797 { &hf_hnbap_TNLUpdateFailure_PDU
,
2798 { "TNLUpdateFailure", "hnbap.TNLUpdateFailure_element",
2799 FT_NONE
, BASE_NONE
, NULL
, 0,
2801 { &hf_hnbap_HNBConfigTransferRequest_PDU
,
2802 { "HNBConfigTransferRequest", "hnbap.HNBConfigTransferRequest_element",
2803 FT_NONE
, BASE_NONE
, NULL
, 0,
2805 { &hf_hnbap_HNBConfigTransferResponse_PDU
,
2806 { "HNBConfigTransferResponse", "hnbap.HNBConfigTransferResponse_element",
2807 FT_NONE
, BASE_NONE
, NULL
, 0,
2809 { &hf_hnbap_RelocationComplete_PDU
,
2810 { "RelocationComplete", "hnbap.RelocationComplete_element",
2811 FT_NONE
, BASE_NONE
, NULL
, 0,
2813 { &hf_hnbap_ErrorIndication_PDU
,
2814 { "ErrorIndication", "hnbap.ErrorIndication_element",
2815 FT_NONE
, BASE_NONE
, NULL
, 0,
2817 { &hf_hnbap_PrivateMessage_PDU
,
2818 { "PrivateMessage", "hnbap.PrivateMessage_element",
2819 FT_NONE
, BASE_NONE
, NULL
, 0,
2821 { &hf_hnbap_HNBAP_PDU_PDU
,
2822 { "HNBAP-PDU", "hnbap.HNBAP_PDU",
2823 FT_UINT32
, BASE_DEC
, VALS(hnbap_HNBAP_PDU_vals
), 0,
2826 { "local", "hnbap.local",
2827 FT_UINT32
, BASE_DEC
, NULL
, 0,
2828 "INTEGER_0_65535", HFILL
}},
2830 { "global", "hnbap.global",
2831 FT_OID
, BASE_NONE
, NULL
, 0,
2832 "OBJECT_IDENTIFIER", HFILL
}},
2833 { &hf_hnbap_ProtocolIE_Container_item
,
2834 { "ProtocolIE-Field", "hnbap.ProtocolIE_Field_element",
2835 FT_NONE
, BASE_NONE
, NULL
, 0,
2837 { &hf_hnbap_protocol_ie_field_id
,
2839 FT_UINT32
, BASE_DEC
, VALS(hnbap_ProtocolIE_ID_vals
), 0,
2840 "ProtocolIE_ID", HFILL
}},
2841 { &hf_hnbap_criticality
,
2842 { "criticality", "hnbap.criticality",
2843 FT_UINT32
, BASE_DEC
, VALS(hnbap_Criticality_vals
), 0,
2845 { &hf_hnbap_ie_field_value
,
2846 { "value", "hnbap.value_element",
2847 FT_NONE
, BASE_NONE
, NULL
, 0,
2848 "ProtocolIE_Field_value", HFILL
}},
2849 { &hf_hnbap_ProtocolExtensionContainer_item
,
2850 { "ProtocolExtensionField", "hnbap.ProtocolExtensionField_element",
2851 FT_NONE
, BASE_NONE
, NULL
, 0,
2855 FT_UINT32
, BASE_DEC
, VALS(hnbap_ProtocolIE_ID_vals
), 0,
2856 "ProtocolIE_ID", HFILL
}},
2857 { &hf_hnbap_extensionValue
,
2858 { "extensionValue", "hnbap.extensionValue_element",
2859 FT_NONE
, BASE_NONE
, NULL
, 0,
2861 { &hf_hnbap_PrivateIE_Container_item
,
2862 { "PrivateIE-Field", "hnbap.PrivateIE_Field_element",
2863 FT_NONE
, BASE_NONE
, NULL
, 0,
2865 { &hf_hnbap_private_ie_field_id
,
2867 FT_UINT32
, BASE_DEC
, VALS(hnbap_PrivateIE_ID_vals
), 0,
2868 "PrivateIE_ID", HFILL
}},
2869 { &hf_hnbap_private_value
,
2870 { "value", "hnbap.value_element",
2871 FT_NONE
, BASE_NONE
, NULL
, 0,
2872 "PrivateIE_Field_value", HFILL
}},
2873 { &hf_hnbap_directionOfAltitude
,
2874 { "directionOfAltitude", "hnbap.directionOfAltitude",
2875 FT_UINT32
, BASE_DEC
, VALS(hnbap_T_directionOfAltitude_vals
), 0,
2877 { &hf_hnbap_altitude
,
2878 { "altitude", "hnbap.altitude",
2879 FT_UINT32
, BASE_DEC
, NULL
, 0,
2880 "INTEGER_0_32767", HFILL
}},
2881 { &hf_hnbap_radioNetwork
,
2882 { "radioNetwork", "hnbap.radioNetwork",
2883 FT_UINT32
, BASE_DEC
, VALS(hnbap_CauseRadioNetwork_vals
), 0,
2884 "CauseRadioNetwork", HFILL
}},
2885 { &hf_hnbap_transport
,
2886 { "transport", "hnbap.transport",
2887 FT_UINT32
, BASE_DEC
, VALS(hnbap_CauseTransport_vals
), 0,
2888 "CauseTransport", HFILL
}},
2889 { &hf_hnbap_protocol
,
2890 { "protocol", "hnbap.protocol",
2891 FT_UINT32
, BASE_DEC
, VALS(hnbap_CauseProtocol_vals
), 0,
2892 "CauseProtocol", HFILL
}},
2894 { "misc", "hnbap.misc",
2895 FT_UINT32
, BASE_DEC
, VALS(hnbap_CauseMisc_vals
), 0,
2896 "CauseMisc", HFILL
}},
2897 { &hf_hnbap_procedureCode
,
2898 { "procedureCode", "hnbap.procedureCode",
2899 FT_UINT32
, BASE_DEC
, VALS(hnbap_ProcedureCode_vals
), 0,
2901 { &hf_hnbap_triggeringMessage
,
2902 { "triggeringMessage", "hnbap.triggeringMessage",
2903 FT_UINT32
, BASE_DEC
, VALS(hnbap_TriggeringMessage_vals
), 0,
2905 { &hf_hnbap_procedureCriticality
,
2906 { "procedureCriticality", "hnbap.procedureCriticality",
2907 FT_UINT32
, BASE_DEC
, VALS(hnbap_Criticality_vals
), 0,
2908 "Criticality", HFILL
}},
2909 { &hf_hnbap_iEsCriticalityDiagnostics
,
2910 { "iEsCriticalityDiagnostics", "hnbap.iEsCriticalityDiagnostics",
2911 FT_UINT32
, BASE_DEC
, NULL
, 0,
2912 "CriticalityDiagnostics_IE_List", HFILL
}},
2913 { &hf_hnbap_iE_Extensions
,
2914 { "iE-Extensions", "hnbap.iE_Extensions",
2915 FT_UINT32
, BASE_DEC
, NULL
, 0,
2916 "ProtocolExtensionContainer", HFILL
}},
2917 { &hf_hnbap_CriticalityDiagnostics_IE_List_item
,
2918 { "CriticalityDiagnostics-IE-List item", "hnbap.CriticalityDiagnostics_IE_List_item_element",
2919 FT_NONE
, BASE_NONE
, NULL
, 0,
2921 { &hf_hnbap_iECriticality
,
2922 { "iECriticality", "hnbap.iECriticality",
2923 FT_UINT32
, BASE_DEC
, VALS(hnbap_Criticality_vals
), 0,
2924 "Criticality", HFILL
}},
2926 { "iE-ID", "hnbap.iE_ID",
2927 FT_UINT32
, BASE_DEC
, VALS(hnbap_ProtocolIE_ID_vals
), 0,
2928 "ProtocolIE_ID", HFILL
}},
2929 { &hf_hnbap_typeOfError
,
2930 { "typeOfError", "hnbap.typeOfError",
2931 FT_UINT32
, BASE_DEC
, VALS(hnbap_TypeOfError_vals
), 0,
2933 { &hf_hnbap_pLMNidentity
,
2934 { "pLMNidentity", "hnbap.pLMNidentity",
2935 FT_BYTES
, BASE_NONE
, NULL
, 0,
2938 { "lAC", "hnbap.lAC",
2939 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0,
2943 FT_BYTES
, BASE_NONE
, NULL
, 0,
2945 { &hf_hnbap_geographical_location_geographical_coordinates
,
2946 { "geographicalCoordinates", "hnbap.geographicalCoordinates_element",
2947 FT_NONE
, BASE_NONE
, NULL
, 0,
2949 { &hf_hnbap_altitudeAndDirection
,
2950 { "altitudeAndDirection", "hnbap.altitudeAndDirection_element",
2951 FT_NONE
, BASE_NONE
, NULL
, 0,
2953 { &hf_hnbap_latitudeSign
,
2954 { "latitudeSign", "hnbap.latitudeSign",
2955 FT_UINT32
, BASE_DEC
, VALS(hnbap_T_latitudeSign_vals
), 0,
2957 { &hf_hnbap_latitude
,
2958 { "latitude", "hnbap.latitude",
2959 FT_UINT32
, BASE_DEC
, NULL
, 0,
2960 "INTEGER_0_8388607", HFILL
}},
2961 { &hf_hnbap_longitude
,
2962 { "longitude", "hnbap.longitude",
2963 FT_INT32
, BASE_DEC
, NULL
, 0,
2964 "INTEGER_M8388608_8388607", HFILL
}},
2965 { &hf_hnbap_cellIdentity
,
2966 { "cellIdentity", "hnbap.cellIdentity",
2967 FT_BYTES
, BASE_NONE
, NULL
, 0,
2969 { &hf_hnbap_hNB_Identity_as_Cell_Identifier
,
2970 { "hNB-Identity-as-Cell-Identifier", "hnbap.hNB_Identity_as_Cell_Identifier_element",
2971 FT_NONE
, BASE_NONE
, NULL
, 0,
2972 "HNB_Cell_Identifier", HFILL
}},
2973 { &hf_hnbap_hnb_RNL_Identity
,
2974 { "hnb-RNL-Identity", "hnbap.hnb_RNL_Identity",
2975 FT_UINT32
, BASE_DEC
, VALS(hnbap_HNB_RNL_Identity_vals
), 0,
2977 { &hf_hnbap_configurationInformation
,
2978 { "configurationInformation", "hnbap.configurationInformation",
2979 FT_UINT32
, BASE_DEC
, VALS(hnbap_ConfigurationInformation_vals
), 0,
2981 { &hf_hnbap_provided
,
2982 { "provided", "hnbap.provided_element",
2983 FT_NONE
, BASE_NONE
, NULL
, 0,
2984 "HNBConfigurationInformationProvided", HFILL
}},
2985 { &hf_hnbap_missing
,
2986 { "missing", "hnbap.missing_element",
2987 FT_NONE
, BASE_NONE
, NULL
, 0,
2988 "HNBConfigurationInformationMissing", HFILL
}},
2990 { "psc", "hnbap.psc",
2991 FT_BYTES
, BASE_NONE
, NULL
, 0,
2994 { "cSG-ID", "hnbap.cSG_ID",
2995 FT_BYTES
, BASE_NONE
, NULL
, 0,
2997 { &hf_hnbap_hNB_Cell_Access_Mode
,
2998 { "hNB-Cell-Access-Mode", "hnbap.hNB_Cell_Access_Mode",
2999 FT_UINT32
, BASE_DEC
, VALS(hnbap_HNB_Cell_Access_Mode_vals
), 0,
3001 { &hf_hnbap_iurh_Signalling_TNL_AddressList
,
3002 { "iurh-Signalling-TNL-AddressList", "hnbap.iurh_Signalling_TNL_AddressList",
3003 FT_UINT32
, BASE_DEC
, NULL
, 0,
3006 { "cause", "hnbap.cause",
3007 FT_UINT32
, BASE_DEC
, VALS(hnbap_Cause_vals
), 0,
3009 { &hf_hnbap_macroCoverageInfo
,
3010 { "macroCoverageInfo", "hnbap.macroCoverageInfo_element",
3011 FT_NONE
, BASE_NONE
, NULL
, 0,
3012 "MacroCoverageInformation", HFILL
}},
3013 { &hf_hnbap_hnb_location_information_geographical_coordinates
,
3014 { "geographicalCoordinates", "hnbap.geographicalCoordinates_element",
3015 FT_NONE
, BASE_NONE
, NULL
, 0,
3016 "GeographicalLocation", HFILL
}},
3017 { &hf_hnbap_hNB_Identity_Info
,
3018 { "hNB-Identity-Info", "hnbap.hNB_Identity_Info",
3019 FT_BYTES
, BASE_NONE
, NULL
, 0,
3021 { &hf_hnbap_iMSIDS41
,
3022 { "iMSIDS41", "hnbap.iMSIDS41",
3023 FT_BYTES
, BASE_NONE
, NULL
, 0,
3026 { "eSN", "hnbap.eSN",
3027 FT_BYTES
, BASE_NONE
, NULL
, 0,
3029 { &hf_hnbap_ipaddress
,
3030 { "ipaddress", "hnbap.ipaddress",
3031 FT_UINT32
, BASE_DEC
, VALS(hnbap_T_ipaddress_vals
), 0,
3033 { &hf_hnbap_ipv4info
,
3034 { "ipv4info", "hnbap.ipv4info",
3035 FT_BYTES
, BASE_NONE
, NULL
, 0,
3036 "Ipv4Address", HFILL
}},
3037 { &hf_hnbap_ipv6info
,
3038 { "ipv6info", "hnbap.ipv6info",
3039 FT_BYTES
, BASE_NONE
, NULL
, 0,
3040 "Ipv6Address", HFILL
}},
3041 { &hf_hnbap_Iurh_Signalling_TNL_AddressList_item
,
3042 { "IP-Address", "hnbap.IP_Address_element",
3043 FT_NONE
, BASE_NONE
, NULL
, 0,
3046 { "pLMNID", "hnbap.pLMNID",
3047 FT_BYTES
, BASE_NONE
, NULL
, 0,
3048 "PLMNidentity", HFILL
}},
3049 { &hf_hnbap_macroCellID
,
3050 { "cellIdentity", "hnbap.cellIdentity",
3051 FT_UINT32
, BASE_DEC
, VALS(hnbap_MacroCellID_vals
), 0,
3052 "MacroCellID", HFILL
}},
3053 { &hf_hnbap_uTRANCellID
,
3054 { "uTRANCellID", "hnbap.uTRANCellID_element",
3055 FT_NONE
, BASE_NONE
, NULL
, 0,
3057 { &hf_hnbap_gERANCellID
,
3058 { "gERANCellID", "hnbap.gERANCellID_element",
3059 FT_NONE
, BASE_NONE
, NULL
, 0,
3061 { &hf_hnbap_NeighbourInfoList_item
,
3062 { "HNBConfigInfo", "hnbap.HNBConfigInfo_element",
3063 FT_NONE
, BASE_NONE
, NULL
, 0,
3065 { &hf_hnbap_NeighbourInfoRequestList_item
,
3066 { "NeighbourInfoRequestItem", "hnbap.NeighbourInfoRequestItem_element",
3067 FT_NONE
, BASE_NONE
, NULL
, 0,
3070 { "pTMSI", "hnbap.pTMSI",
3071 FT_BYTES
, BASE_NONE
, NULL
, 0,
3074 { "rAI", "hnbap.rAI_element",
3075 FT_NONE
, BASE_NONE
, NULL
, 0,
3077 { &hf_hnbap_RABList_item
,
3078 { "RABListItem", "hnbap.RABListItem_element",
3079 FT_NONE
, BASE_NONE
, NULL
, 0,
3082 { "rAB-ID", "hnbap.rAB_ID",
3083 FT_BYTES
, BASE_NONE
, NULL
, 0,
3085 { &hf_hnbap_old_transport_Info
,
3086 { "old-transport-Info", "hnbap.old_transport_Info_element",
3087 FT_NONE
, BASE_NONE
, NULL
, 0,
3088 "TransportInfo", HFILL
}},
3089 { &hf_hnbap_new_transport_Info
,
3090 { "new-transport-Info", "hnbap.new_transport_Info_element",
3091 FT_NONE
, BASE_NONE
, NULL
, 0,
3092 "TransportInfo", HFILL
}},
3093 { &hf_hnbap_cn_domain_indicator
,
3094 { "cn-domain-indicator", "hnbap.cn_domain_indicator",
3095 FT_UINT32
, BASE_DEC
, VALS(hnbap_CN_DomainIndicator_vals
), 0,
3096 "CN_DomainIndicator", HFILL
}},
3098 { "lAI", "hnbap.lAI_element",
3099 FT_NONE
, BASE_NONE
, NULL
, 0,
3102 { "rAC", "hnbap.rAC",
3103 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0,
3106 { "tMSI", "hnbap.tMSI",
3107 FT_BYTES
, BASE_NONE
, NULL
, 0,
3108 "BIT_STRING_SIZE_32", HFILL
}},
3109 { &hf_hnbap_transportLayerAddress
,
3110 { "transportLayerAddress", "hnbap.transportLayerAddress",
3111 FT_BYTES
, BASE_NONE
, NULL
, 0,
3113 { &hf_hnbap_transportAssociation
,
3114 { "transportAssociation", "hnbap.transportAssociation",
3115 FT_UINT32
, BASE_DEC
, VALS(hnbap_T_transportAssociation_vals
), 0,
3117 { &hf_hnbap_gtp_TEI
,
3118 { "gtp-TEI", "hnbap.gtp_TEI",
3119 FT_BYTES
, BASE_NONE
, NULL
, 0,
3121 { &hf_hnbap_bindingID
,
3122 { "bindingID", "hnbap.bindingID",
3123 FT_BYTES
, BASE_NONE
, NULL
, 0,
3125 { &hf_hnbap_access_stratum_release_indicator
,
3126 { "access-stratum-release-indicator", "hnbap.access_stratum_release_indicator",
3127 FT_UINT32
, BASE_DEC
, VALS(hnbap_Access_stratum_release_indicator_vals
), 0,
3129 { &hf_hnbap_csg_capability
,
3130 { "csg-capability", "hnbap.csg_capability",
3131 FT_UINT32
, BASE_DEC
, VALS(hnbap_CSG_Capability_vals
), 0,
3133 { &hf_hnbap_uTRANcellID
,
3134 { "uTRANcellID", "hnbap.uTRANcellID",
3135 FT_BYTES
, BASE_NONE
, NULL
, 0,
3136 "CellIdentity", HFILL
}},
3138 { "iMSI", "hnbap.iMSI",
3139 FT_BYTES
, BASE_NONE
, NULL
, 0,
3141 { &hf_hnbap_tMSILAI
,
3142 { "tMSILAI", "hnbap.tMSILAI_element",
3143 FT_NONE
, BASE_NONE
, NULL
, 0,
3145 { &hf_hnbap_pTMSIRAI
,
3146 { "pTMSIRAI", "hnbap.pTMSIRAI_element",
3147 FT_NONE
, BASE_NONE
, NULL
, 0,
3150 { "iMEI", "hnbap.iMEI",
3151 FT_BYTES
, BASE_NONE
, NULL
, 0,
3153 { &hf_hnbap_iMSIESN
,
3154 { "iMSIESN", "hnbap.iMSIESN_element",
3155 FT_NONE
, BASE_NONE
, NULL
, 0,
3157 { &hf_hnbap_tMSIDS41
,
3158 { "tMSIDS41", "hnbap.tMSIDS41",
3159 FT_BYTES
, BASE_NONE
, NULL
, 0,
3161 { &hf_hnbap_protocolIEs
,
3162 { "protocolIEs", "hnbap.protocolIEs",
3163 FT_UINT32
, BASE_DEC
, NULL
, 0,
3164 "ProtocolIE_Container", HFILL
}},
3165 { &hf_hnbap_protocolExtensions
,
3166 { "protocolExtensions", "hnbap.protocolExtensions",
3167 FT_UINT32
, BASE_DEC
, NULL
, 0,
3168 "ProtocolExtensionContainer", HFILL
}},
3169 { &hf_hnbap_privateIEs
,
3170 { "privateIEs", "hnbap.privateIEs",
3171 FT_UINT32
, BASE_DEC
, NULL
, 0,
3172 "PrivateIE_Container", HFILL
}},
3173 { &hf_hnbap_initiatingMessage
,
3174 { "initiatingMessage", "hnbap.initiatingMessage_element",
3175 FT_NONE
, BASE_NONE
, NULL
, 0,
3177 { &hf_hnbap_successfulOutcome
,
3178 { "successfulOutcome", "hnbap.successfulOutcome_element",
3179 FT_NONE
, BASE_NONE
, NULL
, 0,
3181 { &hf_hnbap_unsuccessfulOutcome
,
3182 { "unsuccessfulOutcome", "hnbap.unsuccessfulOutcome_element",
3183 FT_NONE
, BASE_NONE
, NULL
, 0,
3185 { &hf_hnbap_initiatingMessagevalue
,
3186 { "value", "hnbap.value_element",
3187 FT_NONE
, BASE_NONE
, NULL
, 0,
3188 "InitiatingMessage_value", HFILL
}},
3189 { &hf_hnbap_successfulOutcome_value
,
3190 { "value", "hnbap.value_element",
3191 FT_NONE
, BASE_NONE
, NULL
, 0,
3192 "SuccessfulOutcome_value", HFILL
}},
3193 { &hf_hnbap_unsuccessfulOutcome_value
,
3194 { "value", "hnbap.value_element",
3195 FT_NONE
, BASE_NONE
, NULL
, 0,
3196 "UnsuccessfulOutcome_value", HFILL
}},
3199 /* List of subtrees */
3200 static int *ett
[] = {
3203 &ett_hnbap_PrivateIE_ID
,
3204 &ett_hnbap_ProtocolIE_Container
,
3205 &ett_hnbap_ProtocolIE_Field
,
3206 &ett_hnbap_ProtocolExtensionContainer
,
3207 &ett_hnbap_ProtocolExtensionField
,
3208 &ett_hnbap_PrivateIE_Container
,
3209 &ett_hnbap_PrivateIE_Field
,
3210 &ett_hnbap_AltitudeAndDirection
,
3212 &ett_hnbap_CriticalityDiagnostics
,
3213 &ett_hnbap_CriticalityDiagnostics_IE_List
,
3214 &ett_hnbap_CriticalityDiagnostics_IE_List_item
,
3216 &ett_hnbap_GeographicalLocation
,
3217 &ett_hnbap_GeographicalCoordinates
,
3218 &ett_hnbap_HNB_Cell_Identifier
,
3219 &ett_hnbap_HNB_RNL_Identity
,
3220 &ett_hnbap_HNBConfigInfo
,
3221 &ett_hnbap_ConfigurationInformation
,
3222 &ett_hnbap_HNBConfigurationInformationProvided
,
3223 &ett_hnbap_HNBConfigurationInformationMissing
,
3224 &ett_hnbap_HNB_Location_Information
,
3225 &ett_hnbap_HNB_Identity
,
3227 &ett_hnbap_IP_Address
,
3228 &ett_hnbap_T_ipaddress
,
3229 &ett_hnbap_Iurh_Signalling_TNL_AddressList
,
3231 &ett_hnbap_MacroCoverageInformation
,
3232 &ett_hnbap_MacroCellID
,
3233 &ett_hnbap_NeighbourInfoList
,
3234 &ett_hnbap_NeighbourInfoRequestList
,
3235 &ett_hnbap_NeighbourInfoRequestItem
,
3236 &ett_hnbap_PTMSIRAI
,
3238 &ett_hnbap_RABListItem
,
3241 &ett_hnbap_TransportInfo
,
3242 &ett_hnbap_T_transportAssociation
,
3243 &ett_hnbap_UE_Capabilities
,
3244 &ett_hnbap_UTRANCellID
,
3245 &ett_hnbap_UE_Identity
,
3246 &ett_hnbap_HNBRegisterRequest
,
3247 &ett_hnbap_HNBRegisterAccept
,
3248 &ett_hnbap_HNBRegisterReject
,
3249 &ett_hnbap_HNBDe_Register
,
3250 &ett_hnbap_UERegisterRequest
,
3251 &ett_hnbap_UERegisterAccept
,
3252 &ett_hnbap_UERegisterReject
,
3253 &ett_hnbap_UEDe_Register
,
3254 &ett_hnbap_CSGMembershipUpdate
,
3255 &ett_hnbap_TNLUpdateRequest
,
3256 &ett_hnbap_TNLUpdateResponse
,
3257 &ett_hnbap_TNLUpdateFailure
,
3258 &ett_hnbap_HNBConfigTransferRequest
,
3259 &ett_hnbap_HNBConfigTransferResponse
,
3260 &ett_hnbap_RelocationComplete
,
3261 &ett_hnbap_ErrorIndication
,
3262 &ett_hnbap_PrivateMessage
,
3263 &ett_hnbap_HNBAP_PDU
,
3264 &ett_hnbap_InitiatingMessage
,
3265 &ett_hnbap_SuccessfulOutcome
,
3266 &ett_hnbap_UnsuccessfulOutcome
,
3270 /* Register protocol */
3271 proto_hnbap
= proto_register_protocol(PNAME
, PSNAME
, PFNAME
);
3272 /* Register fields and subtrees */
3273 proto_register_field_array(proto_hnbap
, hf
, array_length(hf
));
3274 proto_register_subtree_array(ett
, array_length(ett
));
3276 /* Register dissector */
3277 hnbap_handle
= register_dissector("hnbap", dissect_hnbap
, proto_hnbap
);
3279 /* Register dissector tables */
3280 hnbap_ies_dissector_table
= register_dissector_table("hnbap.ies", "HNBAP-PROTOCOL-IES", proto_hnbap
, FT_UINT32
, BASE_DEC
);
3281 hnbap_extension_dissector_table
= register_dissector_table("hnbap.extension", "HNBAP-PROTOCOL-EXTENSION", proto_hnbap
, FT_UINT32
, BASE_DEC
);
3282 hnbap_proc_imsg_dissector_table
= register_dissector_table("hnbap.proc.imsg", "HNBAP-ELEMENTARY-PROCEDURE InitiatingMessage", proto_hnbap
, FT_UINT32
, BASE_DEC
);
3283 hnbap_proc_sout_dissector_table
= register_dissector_table("hnbap.proc.sout", "HNBAP-ELEMENTARY-PROCEDURE SuccessfulOutcome", proto_hnbap
, FT_UINT32
, BASE_DEC
);
3284 hnbap_proc_uout_dissector_table
= register_dissector_table("hnbap.proc.uout", "HNBAP-ELEMENTARY-PROCEDURE UnsuccessfulOutcome", proto_hnbap
, FT_UINT32
, BASE_DEC
);
3286 /* hnbap_module = prefs_register_protocol(proto_hnbap, NULL); */
3290 /*--- proto_reg_handoff_hnbap ---------------------------------------*/
3292 proto_reg_handoff_hnbap(void)
3294 dissector_add_uint("sctp.ppi", HNBAP_PAYLOAD_PROTOCOL_ID
, hnbap_handle
);
3295 dissector_add_uint_with_preference("sctp.port", SCTP_PORT_HNBAP
, hnbap_handle
);
3296 dissector_add_uint("hnbap.ies", id_Cause
, create_dissector_handle(dissect_Cause_PDU
, proto_hnbap
));
3297 dissector_add_uint("hnbap.ies", id_CriticalityDiagnostics
, create_dissector_handle(dissect_CriticalityDiagnostics_PDU
, proto_hnbap
));
3298 dissector_add_uint("hnbap.ies", id_HNB_Identity
, create_dissector_handle(dissect_HNB_Identity_PDU
, proto_hnbap
));
3299 dissector_add_uint("hnbap.ies", id_Context_ID
, create_dissector_handle(dissect_Context_ID_PDU
, proto_hnbap
));
3300 dissector_add_uint("hnbap.ies", id_UE_Identity
, create_dissector_handle(dissect_UE_Identity_PDU
, proto_hnbap
));
3301 dissector_add_uint("hnbap.ies", id_LAC
, create_dissector_handle(dissect_LAC_PDU
, proto_hnbap
));
3302 dissector_add_uint("hnbap.ies", id_RAC
, create_dissector_handle(dissect_RAC_PDU
, proto_hnbap
));
3303 dissector_add_uint("hnbap.ies", id_HNB_Location_Information
, create_dissector_handle(dissect_HNB_Location_Information_PDU
, proto_hnbap
));
3304 dissector_add_uint("hnbap.ies", id_PLMNidentity
, create_dissector_handle(dissect_PLMNidentity_PDU
, proto_hnbap
));
3305 dissector_add_uint("hnbap.ies", id_SAC
, create_dissector_handle(dissect_SAC_PDU
, proto_hnbap
));
3306 dissector_add_uint("hnbap.ies", id_CellIdentity
, create_dissector_handle(dissect_CellIdentity_PDU
, proto_hnbap
));
3307 dissector_add_uint("hnbap.ies", id_Registration_Cause
, create_dissector_handle(dissect_Registration_Cause_PDU
, proto_hnbap
));
3308 dissector_add_uint("hnbap.ies", id_UE_Capabilities
, create_dissector_handle(dissect_UE_Capabilities_PDU
, proto_hnbap
));
3309 dissector_add_uint("hnbap.ies", id_RNC_ID
, create_dissector_handle(dissect_RNC_ID_PDU
, proto_hnbap
));
3310 dissector_add_uint("hnbap.ies", id_CSG_ID
, create_dissector_handle(dissect_CSG_ID_PDU
, proto_hnbap
));
3311 dissector_add_uint("hnbap.ies", id_BackoffTimer
, create_dissector_handle(dissect_BackoffTimer_PDU
, proto_hnbap
));
3312 dissector_add_uint("hnbap.ies", id_CSGMembershipStatus
, create_dissector_handle(dissect_CSGMembershipStatus_PDU
, proto_hnbap
));
3313 dissector_add_uint("hnbap.ies", id_RABList
, create_dissector_handle(dissect_RABList_PDU
, proto_hnbap
));
3314 dissector_add_uint("hnbap.ies", id_Update_cause
, create_dissector_handle(dissect_Update_cause_PDU
, proto_hnbap
));
3315 dissector_add_uint("hnbap.ies", id_NeighbourInfoList
, create_dissector_handle(dissect_NeighbourInfoList_PDU
, proto_hnbap
));
3316 dissector_add_uint("hnbap.ies", id_NeighbourInfoRequestList
, create_dissector_handle(dissect_NeighbourInfoRequestList_PDU
, proto_hnbap
));
3317 dissector_add_uint("hnbap.extension", id_HNB_Internet_Information
, create_dissector_handle(dissect_IP_Address_PDU
, proto_hnbap
));
3318 dissector_add_uint("hnbap.extension", id_HNB_Cell_Access_Mode
, create_dissector_handle(dissect_HNB_Cell_Access_Mode_PDU
, proto_hnbap
));
3319 dissector_add_uint("hnbap.extension", id_MuxPortNumber
, create_dissector_handle(dissect_MuxPortNumber_PDU
, proto_hnbap
));
3320 dissector_add_uint("hnbap.extension", id_CSGMembershipStatus
, create_dissector_handle(dissect_CSGMembershipStatus_PDU
, proto_hnbap
));
3321 dissector_add_uint("hnbap.extension", id_Iurh_Signalling_TNL_Address
, create_dissector_handle(dissect_IP_Address_PDU
, proto_hnbap
));
3322 dissector_add_uint("hnbap.extension", id_PSC
, create_dissector_handle(dissect_PSC_PDU
, proto_hnbap
));
3323 dissector_add_uint("hnbap.proc.imsg", id_HNBRegister
, create_dissector_handle(dissect_HNBRegisterRequest_PDU
, proto_hnbap
));
3324 dissector_add_uint("hnbap.proc.sout", id_HNBRegister
, create_dissector_handle(dissect_HNBRegisterAccept_PDU
, proto_hnbap
));
3325 dissector_add_uint("hnbap.proc.uout", id_HNBRegister
, create_dissector_handle(dissect_HNBRegisterReject_PDU
, proto_hnbap
));
3326 dissector_add_uint("hnbap.proc.imsg", id_UERegister
, create_dissector_handle(dissect_UERegisterRequest_PDU
, proto_hnbap
));
3327 dissector_add_uint("hnbap.proc.sout", id_UERegister
, create_dissector_handle(dissect_UERegisterAccept_PDU
, proto_hnbap
));
3328 dissector_add_uint("hnbap.proc.uout", id_UERegister
, create_dissector_handle(dissect_UERegisterReject_PDU
, proto_hnbap
));
3329 dissector_add_uint("hnbap.proc.imsg", id_TNLUpdate
, create_dissector_handle(dissect_TNLUpdateRequest_PDU
, proto_hnbap
));
3330 dissector_add_uint("hnbap.proc.sout", id_TNLUpdate
, create_dissector_handle(dissect_TNLUpdateResponse_PDU
, proto_hnbap
));
3331 dissector_add_uint("hnbap.proc.uout", id_TNLUpdate
, create_dissector_handle(dissect_TNLUpdateFailure_PDU
, proto_hnbap
));
3332 dissector_add_uint("hnbap.proc.imsg", id_HNBConfigTransfer
, create_dissector_handle(dissect_HNBConfigTransferRequest_PDU
, proto_hnbap
));
3333 dissector_add_uint("hnbap.proc.sout", id_HNBConfigTransfer
, create_dissector_handle(dissect_HNBConfigTransferResponse_PDU
, proto_hnbap
));
3334 dissector_add_uint("hnbap.proc.imsg", id_RelocationComplete
, create_dissector_handle(dissect_RelocationComplete_PDU
, proto_hnbap
));
3335 dissector_add_uint("hnbap.proc.imsg", id_UEDe_Register
, create_dissector_handle(dissect_UEDe_Register_PDU
, proto_hnbap
));
3336 dissector_add_uint("hnbap.proc.imsg", id_HNBDe_Register
, create_dissector_handle(dissect_HNBDe_Register_PDU
, proto_hnbap
));
3337 dissector_add_uint("hnbap.proc.imsg", id_ErrorIndication
, create_dissector_handle(dissect_ErrorIndication_PDU
, proto_hnbap
));
3338 dissector_add_uint("hnbap.proc.imsg", id_CSGMembershipUpdate
, create_dissector_handle(dissect_CSGMembershipUpdate_PDU
, proto_hnbap
));
3339 dissector_add_uint("hnbap.proc.imsg", id_privateMessage
, create_dissector_handle(dissect_PrivateMessage_PDU
, proto_hnbap
));