summaryrefslogtreecommitdiffstats
path: root/epan/dissectors/asn1/hnbap
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:34:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:34:10 +0000
commite4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc (patch)
tree68cb5ef9081156392f1dd62a00c6ccc1451b93df /epan/dissectors/asn1/hnbap
parentInitial commit. (diff)
downloadwireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.tar.xz
wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.zip
Adding upstream version 4.2.2.upstream/4.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'epan/dissectors/asn1/hnbap')
-rw-r--r--epan/dissectors/asn1/hnbap/CMakeLists.txt39
-rw-r--r--epan/dissectors/asn1/hnbap/HNBAP-CommonDataTypes.asn55
-rw-r--r--epan/dissectors/asn1/hnbap/HNBAP-Constants.asn92
-rw-r--r--epan/dissectors/asn1/hnbap/HNBAP-Containers.asn157
-rw-r--r--epan/dissectors/asn1/hnbap/HNBAP-IEs.asn518
-rw-r--r--epan/dissectors/asn1/hnbap/HNBAP-PDU-Contents.asn490
-rw-r--r--epan/dissectors/asn1/hnbap/HNBAP-PDU-Descriptions.asn231
-rw-r--r--epan/dissectors/asn1/hnbap/hnbap.cnf331
-rw-r--r--epan/dissectors/asn1/hnbap/packet-hnbap-template.c193
9 files changed, 2106 insertions, 0 deletions
diff --git a/epan/dissectors/asn1/hnbap/CMakeLists.txt b/epan/dissectors/asn1/hnbap/CMakeLists.txt
new file mode 100644
index 00000000..54572bbb
--- /dev/null
+++ b/epan/dissectors/asn1/hnbap/CMakeLists.txt
@@ -0,0 +1,39 @@
+# CMakeLists.txt
+#
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+# Copyright 1998 Gerald Combs
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+
+set( PROTOCOL_NAME hnbap )
+
+set( PROTO_OPT )
+
+set( EXT_ASN_FILE_LIST
+)
+
+set( ASN_FILE_LIST
+ HNBAP-CommonDataTypes.asn
+ HNBAP-Constants.asn
+ HNBAP-Containers.asn
+ HNBAP-IEs.asn
+ HNBAP-PDU-Contents.asn
+ HNBAP-PDU-Descriptions.asn
+)
+
+set( EXTRA_DIST
+ ${ASN_FILE_LIST}
+ packet-${PROTOCOL_NAME}-template.c
+ ${PROTOCOL_NAME}.cnf
+)
+
+set( SRC_FILES
+ ${EXTRA_DIST}
+ ${EXT_ASN_FILE_LIST}
+)
+
+set( A2W_FLAGS )
+
+ASN2WRS()
diff --git a/epan/dissectors/asn1/hnbap/HNBAP-CommonDataTypes.asn b/epan/dissectors/asn1/hnbap/HNBAP-CommonDataTypes.asn
new file mode 100644
index 00000000..8097a3e1
--- /dev/null
+++ b/epan/dissectors/asn1/hnbap/HNBAP-CommonDataTypes.asn
@@ -0,0 +1,55 @@
+-- HNBAP-CommonDataTypes.asn
+--
+-- 3GPP TS 25.469 V10.1.0 (2011-06)
+-- http://www.3gpp.org/ftp/Specs/html-info/25469.htm
+--
+-- 9.3.5 Common Definitions
+--
+
+-- **************************************************************
+--
+-- Common definitions
+--
+-- **************************************************************
+
+HNBAP-CommonDataTypes {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+umts-Access (20) modules (3) hnbap(6) version1 (1) hnbap-CommonDataTypes (3) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+-- **************************************************************
+--
+-- Extension constants
+--
+-- **************************************************************
+
+maxPrivateIEs INTEGER ::= 65535
+maxProtocolExtensions INTEGER ::= 65535
+maxProtocolIEs INTEGER ::= 65535
+
+-- **************************************************************
+--
+-- Common Data Types
+--
+-- **************************************************************
+Criticality ::= ENUMERATED { reject, ignore, notify }
+
+Presence ::= ENUMERATED { optional, conditional, mandatory }
+
+PrivateIE-ID ::= CHOICE {
+ local INTEGER (0..65535),
+ global OBJECT IDENTIFIER
+}
+
+
+ProcedureCode ::= INTEGER (0..255)
+
+
+ProtocolIE-ID ::= INTEGER (0..maxProtocolIEs)
+
+TriggeringMessage ::= ENUMERATED { initiating-message, successful-outcome, unsuccessful-outcome }
+
+END
diff --git a/epan/dissectors/asn1/hnbap/HNBAP-Constants.asn b/epan/dissectors/asn1/hnbap/HNBAP-Constants.asn
new file mode 100644
index 00000000..befb935c
--- /dev/null
+++ b/epan/dissectors/asn1/hnbap/HNBAP-Constants.asn
@@ -0,0 +1,92 @@
+-- HNBAP-Constants.asn
+--
+-- 3GPP TS 25.469 V10.1.0 (2011-06)
+-- http://www.3gpp.org/ftp/Specs/html-info/25469.htm
+--
+-- 9.3.6 Constant Definitions
+--
+-- **************************************************************
+--
+-- Constant definitions
+--
+-- **************************************************************
+
+HNBAP-Constants {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+umts-Access (20) modules (3) hnbap(6) version1 (1) hnbap-Constants (4) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+IMPORTS
+ ProcedureCode,
+ ProtocolIE-ID
+FROM HNBAP-CommonDataTypes;
+
+
+-- **************************************************************
+--
+-- Elementary Procedures
+--
+id-HNBRegister ProcedureCode ::= 1
+id-HNBDe-Register ProcedureCode ::= 2
+id-UERegister ProcedureCode ::= 3
+id-UEDe-Register ProcedureCode ::= 4
+id-ErrorIndication ProcedureCode ::= 5
+id-privateMessage ProcedureCode ::= 6
+id-CSGMembershipUpdate ProcedureCode ::= 7
+id-TNLUpdate ProcedureCode ::= 9
+id-HNBConfigTransfer ProcedureCode ::= 10
+id-RelocationComplete ProcedureCode ::= 11
+
+
+-- **************************************************************
+--
+-- Lists
+--
+-- **************************************************************
+maxNrOfErrors INTEGER ::= 256
+maxnoofRABs INTEGER ::= 256
+maxnoofNeighbours INTEGER ::= 32
+maxnoofIurhAddresses INTEGER ::= 3
+
+-- **************************************************************
+--
+-- IEs
+--
+-- **************************************************************
+
+id-Cause ProtocolIE-ID ::= 1
+id-CriticalityDiagnostics ProtocolIE-ID ::= 2
+id-HNB-Identity ProtocolIE-ID ::= 3
+id-Context-ID ProtocolIE-ID ::= 4
+id-UE-Identity ProtocolIE-ID ::= 5
+id-LAC ProtocolIE-ID ::= 6
+id-RAC ProtocolIE-ID ::= 7
+id-HNB-Location-Information ProtocolIE-ID ::= 8
+id-PLMNidentity ProtocolIE-ID ::= 9
+id-SAC ProtocolIE-ID ::= 10
+id-CellIdentity ProtocolIE-ID ::= 11
+id-Registration-Cause ProtocolIE-ID ::= 12
+id-UE-Capabilities ProtocolIE-ID ::= 13
+id-RNC-ID ProtocolIE-ID ::= 14
+id-CSG-ID ProtocolIE-ID ::= 15
+id-BackoffTimer ProtocolIE-ID ::= 16
+id-HNB-Internet-Information ProtocolIE-ID ::= 17
+id-HNB-Cell-Access-Mode ProtocolIE-ID ::= 18
+id-MuxPortNumber ProtocolIE-ID ::= 19
+id-Service-Area-For-Broadcast ProtocolIE-ID ::= 20
+id-CSGMembershipStatus ProtocolIE-ID ::= 21
+id-RABList ProtocolIE-ID ::= 22
+id-HNBConfigInfo ProtocolIE-ID ::= 23
+id-AccessResult ProtocolIE-ID ::= 25
+id-Update-cause ProtocolIE-ID ::= 26
+id-NeighbourInfoList ProtocolIE-ID ::= 27
+id-NeighbourInfoRequestList ProtocolIE-ID ::= 28
+id-Iurh-Signalling-TNL-Address ProtocolIE-ID ::= 29
+id-PSC ProtocolIE-ID ::= 30
+id-HNB-Cell-Identifier ProtocolIE-ID ::= 31
+
+
+END
diff --git a/epan/dissectors/asn1/hnbap/HNBAP-Containers.asn b/epan/dissectors/asn1/hnbap/HNBAP-Containers.asn
new file mode 100644
index 00000000..f00c4d0e
--- /dev/null
+++ b/epan/dissectors/asn1/hnbap/HNBAP-Containers.asn
@@ -0,0 +1,157 @@
+-- HNBAP-Containers.asn
+--
+-- 3GPP TS 25.469 V10.1.0 (2011-06)
+-- http://www.3gpp.org/ftp/Specs/html-info/25469.htm
+--
+-- 9.3.7 Container Definitions
+--
+
+-- **************************************************************
+--
+-- Container definitions
+--
+-- **************************************************************
+
+HNBAP-Containers {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+umts-Access (20) modules (3) hnbap(6) version1 (1) hnbap-Containers (5) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+-- **************************************************************
+--
+-- IE parameter types from other modules.
+--
+-- **************************************************************
+
+IMPORTS
+ Criticality,
+ Presence,
+ PrivateIE-ID,
+ ProtocolIE-ID,
+ maxPrivateIEs,
+ maxProtocolExtensions,
+ maxProtocolIEs
+FROM HNBAP-CommonDataTypes;
+
+-- **************************************************************
+--
+-- Class Definition for Protocol IEs
+--
+-- **************************************************************
+
+HNBAP-PROTOCOL-IES ::= CLASS {
+ &id ProtocolIE-ID UNIQUE,
+ &criticality Criticality,
+ &Value,
+ &presence Presence
+}
+WITH SYNTAX {
+ ID &id
+ CRITICALITY &criticality
+ TYPE &Value
+ PRESENCE &presence
+}
+
+-- **************************************************************
+--
+-- Class Definition for Protocol Extensions
+--
+-- **************************************************************
+
+HNBAP-PROTOCOL-EXTENSION ::= CLASS {
+ &id ProtocolIE-ID UNIQUE,
+ &criticality Criticality,
+ &Extension,
+ &presence Presence
+}
+WITH SYNTAX {
+ ID &id
+ CRITICALITY &criticality
+ EXTENSION &Extension
+ PRESENCE &presence
+}
+
+-- **************************************************************
+--
+-- Class Definition for Private IEs
+--
+-- **************************************************************
+
+HNBAP-PRIVATE-IES ::= CLASS {
+ &id PrivateIE-ID,
+ &criticality Criticality,
+ &Value,
+ &presence Presence
+}
+WITH SYNTAX {
+ ID &id
+ CRITICALITY &criticality
+ TYPE &Value
+ PRESENCE &presence
+}
+
+-- **************************************************************
+--
+-- Container for Protocol IEs
+--
+-- **************************************************************
+
+ProtocolIE-Container {HNBAP-PROTOCOL-IES : IEsSetParam} ::=
+ SEQUENCE (SIZE (0..maxProtocolIEs)) OF
+ ProtocolIE-Field {{IEsSetParam}}
+
+ProtocolIE-Single-Container {HNBAP-PROTOCOL-IES : IEsSetParam} ::=
+ ProtocolIE-Field {{IEsSetParam}}
+
+ProtocolIE-Field {HNBAP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE {
+ id HNBAP-PROTOCOL-IES.&id ({IEsSetParam}),
+ criticality HNBAP-PROTOCOL-IES.&criticality ({IEsSetParam}{@id}),
+ value HNBAP-PROTOCOL-IES.&Value ({IEsSetParam}{@id})
+}
+
+-- **************************************************************
+--
+-- Container Lists for Protocol IE Containers
+--
+-- **************************************************************
+
+ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, HNBAP-PROTOCOL-IES : IEsSetParam} ::=
+ SEQUENCE (SIZE (lowerBound..upperBound)) OF
+ ProtocolIE-Container {{IEsSetParam}}
+
+-- **************************************************************
+--
+-- Container for Protocol Extensions
+--
+-- **************************************************************
+
+ProtocolExtensionContainer {HNBAP-PROTOCOL-EXTENSION : ExtensionSetParam} ::=
+ SEQUENCE (SIZE (1..maxProtocolExtensions)) OF
+ ProtocolExtensionField {{ExtensionSetParam}}
+
+ProtocolExtensionField {HNBAP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE {
+ id HNBAP-PROTOCOL-EXTENSION.&id ({ExtensionSetParam}),
+ criticality HNBAP-PROTOCOL-EXTENSION.&criticality ({ExtensionSetParam}{@id}),
+ extensionValue HNBAP-PROTOCOL-EXTENSION.&Extension ({ExtensionSetParam}{@id})
+}
+
+-- **************************************************************
+--
+-- Container for Private IEs
+--
+-- **************************************************************
+
+PrivateIE-Container {HNBAP-PRIVATE-IES : IEsSetParam } ::=
+ SEQUENCE (SIZE (1.. maxPrivateIEs)) OF
+ PrivateIE-Field {{IEsSetParam}}
+
+PrivateIE-Field {HNBAP-PRIVATE-IES : IEsSetParam} ::= SEQUENCE {
+ id HNBAP-PRIVATE-IES.&id ({IEsSetParam}),
+ criticality HNBAP-PRIVATE-IES.&criticality ({IEsSetParam}{@id}),
+ value HNBAP-PRIVATE-IES.&Value ({IEsSetParam}{@id})
+}
+
+END
diff --git a/epan/dissectors/asn1/hnbap/HNBAP-IEs.asn b/epan/dissectors/asn1/hnbap/HNBAP-IEs.asn
new file mode 100644
index 00000000..3a4fa1c6
--- /dev/null
+++ b/epan/dissectors/asn1/hnbap/HNBAP-IEs.asn
@@ -0,0 +1,518 @@
+-- HNBAP-IEs.asn
+--
+-- 3GPP TS 25.469 V10.1.0 (2011-06)
+-- http://www.3gpp.org/ftp/Specs/html-info/25469.htm
+--
+-- 9.3.4 Information Element Definitions
+--
+
+-- **************************************************************
+--
+-- Information Element Definitions
+--
+-- **************************************************************
+
+HNBAP-IEs {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+umts-Access (20) modules (3) hnbap(6) version1 (1) hnbap-IEs (2) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+IMPORTS
+ maxNrOfErrors,
+ maxnoofRABs,
+ maxnoofNeighbours,
+ maxnoofIurhAddresses,
+ id-HNB-Internet-Information,
+ id-HNB-Cell-Identifier
+
+FROM HNBAP-Constants
+
+ Criticality,
+ ProcedureCode,
+ ProtocolIE-ID,
+ TriggeringMessage
+FROM HNBAP-CommonDataTypes
+
+ ProtocolExtensionContainer{},
+ HNBAP-PROTOCOL-EXTENSION
+FROM HNBAP-Containers;
+
+
+--A
+Access-stratum-release-indicator ::= ENUMERATED {r99,
+ rel-4, rel-5, rel-6, rel-7, rel-8-and-beyond,
+ ...}
+
+AccessResult ::= ENUMERATED {allowed, notAllowed, ...}
+
+AltitudeAndDirection ::= SEQUENCE {
+ directionOfAltitude ENUMERATED {height, depth},
+ altitude INTEGER (0..32767),
+ ...
+}
+
+--B
+BackoffTimer ::= INTEGER(0..3600)
+
+BindingID ::= OCTET STRING(SIZE(1..4,...))
+
+--C
+Cause ::= CHOICE {
+ radioNetwork CauseRadioNetwork,
+ transport CauseTransport,
+ protocol CauseProtocol,
+ misc CauseMisc,
+ ...
+}
+CauseRadioNetwork ::= ENUMERATED {
+ overload,
+ unauthorised-Location,
+ unauthorised-HNB,
+ hNB-parameter-mismatch,
+ invalid-UE-identity,
+ uE-not-allowed-on-this-HNB,
+ uE-unauthorised,
+ connection-with-UE-lost,
+ ue-RRC-telease,
+ hNB-not-registered,
+ unspecified,
+ normal,
+ uE-relocated,
+ ue-registered-in-another-HNB,
+ ...
+}
+
+CauseTransport ::= ENUMERATED {
+ transport-resource-unavailable,
+ unspecified,
+ ...
+}
+
+CauseProtocol ::= ENUMERATED {
+ transfer-syntax-error,
+ abstract-syntax-error-reject,
+ abstract-syntax-error-ignore-and-notify,
+ message-not-compatible-with-receiver-state,
+ semantic-error,
+ unspecified,
+ abstract-syntax-error-falsely-constructed-message,
+ ...
+}
+
+CauseMisc ::= ENUMERATED {
+ processing-overload,
+ hardware-failure,
+ o-and-m-intervention,
+ unspecified,
+ ...
+}
+
+CellIdentity ::= BIT STRING (SIZE (28))
+
+Context-ID ::= BIT STRING (SIZE(24))
+
+CriticalityDiagnostics ::= SEQUENCE {
+ procedureCode ProcedureCode OPTIONAL,
+ triggeringMessage TriggeringMessage OPTIONAL,
+ procedureCriticality Criticality OPTIONAL,
+ iEsCriticalityDiagnostics CriticalityDiagnostics-IE-List OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer { {CriticalityDiagnostics-ExtIEs} } OPTIONAL,
+ ...
+}
+
+CriticalityDiagnostics-IE-List ::= SEQUENCE (SIZE (1..maxNrOfErrors)) OF
+ SEQUENCE {
+ iECriticality Criticality,
+ iE-ID ProtocolIE-ID,
+ typeOfError TypeOfError,
+ iE-Extensions ProtocolExtensionContainer { {CriticalityDiagnostics-IE-List-ExtIEs} } OPTIONAL,
+ ...
+ }
+
+CriticalityDiagnostics-IE-List-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+CriticalityDiagnostics-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+CSG-ID ::= BIT STRING (SIZE (27))
+
+CSG-Capability ::= ENUMERATED {
+ csg-capable,
+ not-csg-capable,
+ ...
+ }
+
+CSGMembershipStatus ::= ENUMERATED {
+ member,
+ non-member,
+ ...
+}
+
+CGI ::= SEQUENCE {
+ pLMNidentity PLMNidentity,
+ lAC LAC,
+ cI CI,
+ iE-Extensions ProtocolExtensionContainer { {CGI-ExtIEs} } OPTIONAL
+}
+
+CGI-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+CI ::= OCTET STRING (SIZE (2))
+
+
+CN-DomainIndicator ::= ENUMERATED {
+ cs-domain,
+ ps-domain
+}
+--D
+--E
+ESN ::= BIT STRING (SIZE(32))
+--F
+--G
+GeographicalLocation ::= SEQUENCE {
+ geographicalCoordinates GeographicalCoordinates,
+ altitudeAndDirection AltitudeAndDirection,
+ iE-Extensions ProtocolExtensionContainer { { GeographicLocation-ExtIEs} } OPTIONAL,
+ ...
+}
+
+GeographicLocation-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+GeographicalCoordinates ::= SEQUENCE {
+ latitudeSign ENUMERATED {north, south},
+ latitude INTEGER (0..8388607),
+ longitude INTEGER (-8388608..8388607),
+ iE-Extensions ProtocolExtensionContainer { {GeographicalCoordinates-ExtIEs} } OPTIONAL,
+ ...
+}
+
+GeographicalCoordinates-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+GTP-TEI ::= OCTET STRING (SIZE (4))
+
+--H
+
+HNB-Cell-Access-Mode::= ENUMERATED {
+ closed,
+ hybrid,
+ open,
+ ...
+}
+
+HNB-Cell-Identifier ::= SEQUENCE {
+ pLMNidentity PLMNidentity,
+ cellIdentity CellIdentity,
+ iE-Extensions ProtocolExtensionContainer { { HNB-Cell-Identifier-ExtIEs } } OPTIONAL,
+ ...
+}
+
+HNB-Cell-Identifier-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+HNB-RNL-Identity ::= CHOICE {
+ hNB-Identity-as-Cell-Identifier HNB-Cell-Identifier,
+ ...
+}
+
+HNBConfigInfo ::= SEQUENCE {
+ hnb-RNL-Identity HNB-RNL-Identity,
+ configurationInformation ConfigurationInformation,
+ iE-Extensions ProtocolExtensionContainer { { HNBConfigInfo-ExtIEs } } OPTIONAL,
+ ...
+}
+
+HNBConfigInfo-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+ConfigurationInformation ::= CHOICE {
+ provided HNBConfigurationInformationProvided,
+ missing HNBConfigurationInformationMissing,
+ ...
+}
+
+HNBConfigurationInformationProvided ::= SEQUENCE {
+
+ psc PSC OPTIONAL,
+ cSG-ID CSG-ID OPTIONAL,
+ hNB-Cell-Access-Mode HNB-Cell-Access-Mode,
+ iurh-Signalling-TNL-AddressList Iurh-Signalling-TNL-AddressList,
+ iE-Extensions ProtocolExtensionContainer { { HNBConfigurationInformationProvided-ExtIEs } } OPTIONAL,
+ ...
+}
+
+HNBConfigurationInformationProvided-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+HNBConfigurationInformationMissing ::= SEQUENCE {
+ cause Cause,
+ iE-Extensions ProtocolExtensionContainer { { HNBConfigurationInformationMissing-ExtIEs } } OPTIONAL,
+ ...
+}
+
+HNBConfigurationInformationMissing-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+HNB-Location-Information ::= SEQUENCE {
+ macroCoverageInfo MacroCoverageInformation OPTIONAL,
+ geographicalCoordinates GeographicalLocation OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer { { HNB-Location-Information-ExtIEs } } OPTIONAL,
+ ...
+}
+
+HNB-Location-Information-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
+-- Extension for release-8 to support IP address for location verification --
+{ID id-HNB-Internet-Information CRITICALITY reject EXTENSION IP-Address PRESENCE optional },
+ ...
+}
+
+
+
+HNB-Identity ::= SEQUENCE {
+ hNB-Identity-Info HNB-Identity-Info,
+ iE-Extensions ProtocolExtensionContainer { { HNB-Identity-ExtIEs } } OPTIONAL,
+ ...
+}
+
+HNB-Identity-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+
+HNB-Identity-Info ::= OCTET STRING (SIZE (1..255))
+
+--I
+
+IMEI ::= BIT STRING (SIZE(60))
+
+IMSI ::= OCTET STRING (SIZE (3..8))
+-- Reference: 23.003
+IMSIDS41 ::= OCTET STRING (SIZE (5..7))
+
+IMSIESN ::= SEQUENCE {
+ iMSIDS41 IMSIDS41,
+ eSN ESN
+}
+
+
+IP-Address ::=SEQUENCE {
+ ipaddress CHOICE {
+ ipv4info Ipv4Address,
+ ipv6info Ipv6Address,
+ ...
+ },
+ iE-Extensions ProtocolExtensionContainer { { IP-Address-ExtIEs } } OPTIONAL,
+ ...
+}
+
+IP-Address-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+Ipv4Address ::= OCTET STRING (SIZE (4))
+
+Ipv6Address ::= OCTET STRING (SIZE (16))
+
+Iurh-Signalling-TNL-AddressList ::= SEQUENCE (SIZE(1..maxnoofIurhAddresses)) OF IP-Address
+
+
+--J
+--K
+--L
+LAC ::= OCTET STRING(SIZE(2))
+
+LAI ::= SEQUENCE {
+ pLMNID PLMNidentity,
+ lAC LAC,
+ ...
+ }
+
+-- M
+
+MacroCoverageInformation ::= SEQUENCE {
+ cellIdentity MacroCellID,
+ iE-Extensions ProtocolExtensionContainer { { MacroCoverageInformation-ExtIEs } } OPTIONAL,
+ ...
+}
+
+MacroCoverageInformation-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+MacroCellID ::= CHOICE {
+ uTRANCellID UTRANCellID,
+ gERANCellID CGI,
+ ...
+}
+
+MuxPortNumber ::= INTEGER (1024..65535)
+
+--N
+
+NeighbourInfoList ::= SEQUENCE (SIZE(1..maxnoofNeighbours)) OF HNBConfigInfo
+
+NeighbourInfoRequestList ::= SEQUENCE (SIZE(1..maxnoofNeighbours)) OF NeighbourInfoRequestItem
+
+NeighbourInfoRequestItem ::= SEQUENCE {
+ hnb-RNL-Identity HNB-RNL-Identity,
+ iE-Extensions ProtocolExtensionContainer { { NeighbourInfoRequestItem-ExtIEs } } OPTIONAL,
+ ...
+}
+
+NeighbourInfoRequestItem-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+--O
+--P
+PLMNidentity ::= OCTET STRING (SIZE (3))
+
+PSC ::= BIT STRING (SIZE(9))
+
+PTMSI ::= BIT STRING (SIZE(32))
+
+PTMSIRAI ::= SEQUENCE {
+ pTMSI PTMSI,
+ rAI RAI,
+ ...
+ }
+
+
+--Q
+--R
+
+RAB-ID ::= BIT STRING (SIZE (8))
+
+RABList ::= SEQUENCE (SIZE(1..maxnoofRABs)) OF RABListItem
+
+RABListItem ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ old-transport-Info TransportInfo,
+ new-transport-Info TransportInfo,
+ cn-domain-indicator CN-DomainIndicator,
+ iE-Extensions ProtocolExtensionContainer { { RABListItem-ExtIEs } } OPTIONAL,
+...
+}
+
+RABListItem-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+RAC ::= OCTET STRING(SIZE(1))
+
+RAI ::= SEQUENCE {
+ lAI LAI,
+ rAC RAC,
+ ...
+}
+
+
+Registration-Cause ::= ENUMERATED {
+ emergency-call,
+ normal,
+ ...,
+ ue-relocation
+ }
+
+RNC-ID ::= INTEGER(0..65535)
+
+--S
+
+SAC ::= OCTET STRING(SIZE(2))
+
+--T
+TMSILAI ::= SEQUENCE {
+ tMSI BIT STRING(SIZE (32)),
+ lAI LAI
+}
+
+TMSIDS41 ::= OCTET STRING (SIZE (2..17))
+
+TransportInfo ::= SEQUENCE {
+ transportLayerAddress TransportLayerAddress,
+ transportAssociation CHOICE {
+ gtp-TEI GTP-TEI,
+ bindingID BindingID,
+ ...
+ },
+ iE-Extensions ProtocolExtensionContainer { { TransportInfo-ExtIEs } } OPTIONAL,
+...
+}
+
+TransportInfo-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+TransportLayerAddress ::= BIT STRING(SIZE(1..160,...))
+
+TypeOfError ::= ENUMERATED {
+ not-understood,
+ missing,
+ ...
+}
+--U
+UE-Capabilities ::= SEQUENCE {
+ access-stratum-release-indicator Access-stratum-release-indicator,
+ csg-capability CSG-Capability,
+ iE-Extensions ProtocolExtensionContainer { { UE-Capabilities-ExtIEs } } OPTIONAL,
+...
+}
+
+UE-Capabilities-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+UTRANCellID ::= SEQUENCE {
+ lAC LAC,
+ rAC RAC,
+ pLMNidentity PLMNidentity,
+ uTRANcellID CellIdentity,
+ iE-Extensions ProtocolExtensionContainer { {UTRANCellID-ExtIEs} } OPTIONAL
+}
+
+UTRANCellID-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+
+
+UE-Identity ::= CHOICE {
+ iMSI IMSI,
+ tMSILAI TMSILAI,
+ pTMSIRAI PTMSIRAI,
+ iMEI IMEI,
+ eSN ESN,
+ iMSIDS41 IMSIDS41,
+ iMSIESN IMSIESN,
+ tMSIDS41 TMSIDS41,
+ ...
+}
+
+Update-cause ::= ENUMERATED {
+ relocation-preparation,
+ ...
+}
+
+--V
+--W
+--X
+--Y
+--Z
+
+
+END
diff --git a/epan/dissectors/asn1/hnbap/HNBAP-PDU-Contents.asn b/epan/dissectors/asn1/hnbap/HNBAP-PDU-Contents.asn
new file mode 100644
index 00000000..97c97432
--- /dev/null
+++ b/epan/dissectors/asn1/hnbap/HNBAP-PDU-Contents.asn
@@ -0,0 +1,490 @@
+-- HNBAP-PDU-Contents.asn
+--
+-- 3GPP TS 25.469 V10.1.0 (2011-06)
+-- http://www.3gpp.org/ftp/Specs/html-info/25469.htm
+--
+-- 9.3.3 PDU Definitions
+--
+
+HNBAP-PDU-Contents {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+umts-Access (20) modules (3) hnbap(6) version1 (1) hnbap-PDU-Contents (1) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+-- **************************************************************
+--
+-- IE parameter types from other modules.
+--
+-- **************************************************************
+
+IMPORTS
+ Cause,
+ CriticalityDiagnostics,
+ CSGMembershipStatus,
+ HNB-Location-Information,
+ HNB-Identity,
+ Context-ID,
+ UE-Identity,
+ LAC,
+ RAC,
+ SAC,
+ CN-DomainIndicator,
+ IP-Address,
+ Registration-Cause,
+ UE-Capabilities,
+ PLMNidentity,
+ CellIdentity,
+ RNC-ID,
+ CSG-ID,
+ HNB-Cell-Access-Mode,
+ BackoffTimer,
+ MuxPortNumber,
+ RABList,
+ HNBConfigInfo,
+ AccessResult,
+ Update-cause,
+ NeighbourInfoList,
+ NeighbourInfoRequestList,
+ PSC
+
+
+
+FROM HNBAP-IEs
+
+
+ ProtocolExtensionContainer{},
+ ProtocolIE-ContainerList{},
+ ProtocolIE-Container{},
+ ProtocolIE-Single-Container{},
+ PrivateIE-Container{},
+ HNBAP-PRIVATE-IES,
+ HNBAP-PROTOCOL-EXTENSION,
+ HNBAP-PROTOCOL-IES
+
+FROM HNBAP-Containers
+
+ id-Cause,
+ id-CriticalityDiagnostics,
+ id-CSGMembershipStatus,
+ id-HNB-Location-Information,
+ id-HNB-Identity,
+ id-Context-ID,
+ id-PLMNidentity,
+ id-UE-Identity,
+ id-LAC,
+ id-RAC,
+ id-SAC,
+ id-UE-Capabilities,
+ id-Registration-Cause,
+ id-CellIdentity,
+ id-RNC-ID,
+ id-CSG-ID,
+ id-HNB-Cell-Access-Mode,
+ id-BackoffTimer,
+ id-Service-Area-For-Broadcast,
+ id-MuxPortNumber,
+ id-RABList,
+ id-HNBConfigInfo,
+ id-AccessResult,
+ id-Update-cause,
+ id-NeighbourInfoList,
+ id-NeighbourInfoRequestList,
+ id-Iurh-Signalling-TNL-Address,
+ id-PSC
+
+
+FROM HNBAP-Constants;
+
+-- **************************************************************
+--
+-- HNB Register REQUEST
+--
+-- **************************************************************
+
+HNBRegisterRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {HNBRegisterRequestIEs} },
+ protocolExtensions ProtocolExtensionContainer { {HNBRegisterRequestExtensions} } OPTIONAL,
+ ...
+}
+
+HNBRegisterRequestIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-HNB-Identity CRITICALITY reject TYPE HNB-Identity PRESENCE mandatory } |
+ { ID id-HNB-Location-Information CRITICALITY reject TYPE HNB-Location-Information PRESENCE mandatory } |
+ { ID id-PLMNidentity CRITICALITY reject TYPE PLMNidentity PRESENCE mandatory } |
+ { ID id-CellIdentity CRITICALITY reject TYPE CellIdentity PRESENCE mandatory } |
+ { ID id-LAC CRITICALITY reject TYPE LAC PRESENCE mandatory } |
+ { ID id-RAC CRITICALITY reject TYPE RAC PRESENCE mandatory } |
+ { ID id-SAC CRITICALITY reject TYPE SAC PRESENCE mandatory } |
+ { ID id-CSG-ID CRITICALITY reject TYPE CSG-ID PRESENCE optional } ,
+ ...
+}
+
+HNBRegisterRequestExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+ { ID id-Service-Area-For-Broadcast CRITICALITY ignore EXTENSION SAC PRESENCE optional }|
+ { ID id-HNB-Cell-Access-Mode CRITICALITY reject EXTENSION HNB-Cell-Access-Mode PRESENCE optional }|
+ { ID id-PSC CRITICALITY ignore EXTENSION PSC PRESENCE optional }|
+ { ID id-Iurh-Signalling-TNL-Address CRITICALITY ignore EXTENSION IP-Address PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- HNB Register Accept
+--
+-- **************************************************************
+
+HNBRegisterAccept ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {HNBRegisterResponseIEs} },
+ protocolExtensions ProtocolExtensionContainer { {HNBRegisterResponseExtensions} } OPTIONAL,
+ ...
+}
+
+HNBRegisterResponseIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-RNC-ID CRITICALITY reject TYPE RNC-ID PRESENCE mandatory },
+ ...
+}
+
+HNBRegisterResponseExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 9 to support CS Multiplexing --
+ { ID id-MuxPortNumber CRITICALITY ignore EXTENSION MuxPortNumber PRESENCE optional}|
+ { ID id-Iurh-Signalling-TNL-Address CRITICALITY ignore EXTENSION IP-Address PRESENCE optional},
+ ...
+}
+
+-- **************************************************************
+--
+-- HNB Register REJECT
+--
+-- **************************************************************
+
+HNBRegisterReject ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {HNBRegisterRejectIEs} },
+ protocolExtensions ProtocolExtensionContainer { {HNBRegisterRejectExtensions} } OPTIONAL,
+ ...
+}
+
+HNBRegisterRejectIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory} |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional } |
+ { ID id-BackoffTimer CRITICALITY reject TYPE BackoffTimer PRESENCE conditional },
+ -- This IE shall be present if the Cause IE is set to "Overload".
+ ...
+}
+
+HNBRegisterRejectExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+
+
+-- **************************************************************
+--
+-- HNB De- Register
+--
+-- **************************************************************
+
+HNBDe-Register ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {HNBDe-RegisterIEs} },
+ protocolExtensions ProtocolExtensionContainer { {HNBDe-RegisterExtensions} } OPTIONAL,
+ ...
+}
+
+HNBDe-RegisterIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory } |
+ { ID id-BackoffTimer CRITICALITY reject TYPE BackoffTimer PRESENCE conditional },
+ -- This IE shall be present if the Cause IE is set to "Overload".
+ ...
+}
+
+HNBDe-RegisterExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+
+-- **************************************************************
+--
+-- UE Register REQUEST
+--
+-- **************************************************************
+
+UERegisterRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {UERegisterRequestIEs} },
+ protocolExtensions ProtocolExtensionContainer { {UERegisterRequestExtensions} } OPTIONAL,
+ ...
+}
+
+UERegisterRequestIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-UE-Identity CRITICALITY reject TYPE UE-Identity PRESENCE mandatory } |
+ { ID id-Registration-Cause CRITICALITY ignore TYPE Registration-Cause PRESENCE mandatory } |
+ { ID id-UE-Capabilities CRITICALITY reject TYPE UE-Capabilities PRESENCE mandatory },
+ ...
+}
+
+UERegisterRequestExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- UE Register ACCEPT
+--
+-- **************************************************************
+
+UERegisterAccept ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {UERegisterAcceptIEs} },
+ protocolExtensions ProtocolExtensionContainer { {UERegisterAcceptExtensions} } OPTIONAL,
+ ...
+}
+
+UERegisterAcceptIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-UE-Identity CRITICALITY reject TYPE UE-Identity PRESENCE mandatory } |
+ { ID id-Context-ID CRITICALITY reject TYPE Context-ID PRESENCE mandatory },
+ ...
+}
+
+
+UERegisterAcceptExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+ { ID id-CSGMembershipStatus CRITICALITY reject EXTENSION CSGMembershipStatus PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- UE Register REJECT
+--
+-- **************************************************************
+
+UERegisterReject ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {UERegisterRejectIEs} },
+ protocolExtensions ProtocolExtensionContainer { {UERegisterRejectExtensions} } OPTIONAL,
+ ...
+}
+
+UERegisterRejectIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-UE-Identity CRITICALITY reject TYPE UE-Identity PRESENCE mandatory } |
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory} |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+UERegisterRejectExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+
+-- **************************************************************
+--
+-- UE De-Register
+--
+-- **************************************************************
+
+UEDe-Register ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {UEDe-RegisterIEs} },
+ protocolExtensions ProtocolExtensionContainer { {UEDe-RegisterExtensions} } OPTIONAL,
+ ...
+}
+
+UEDe-RegisterIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-Context-ID CRITICALITY reject TYPE Context-ID PRESENCE mandatory } |
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory } ,
+ ...
+}
+
+UEDe-RegisterExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- CSG Membership Update
+--
+-- **************************************************************
+
+CSGMembershipUpdate ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {CSGMembershipUpdateIEs} },
+ protocolExtensions ProtocolExtensionContainer { {CSGMembershipUpdateExtensions} } OPTIONAL,
+ ...
+}
+
+CSGMembershipUpdateIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-Context-ID CRITICALITY reject TYPE Context-ID PRESENCE mandatory } |
+ { ID id-CSGMembershipStatus CRITICALITY reject TYPE CSGMembershipStatus PRESENCE mandatory },
+ ...
+}
+
+CSGMembershipUpdateExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- TNL Update Request
+--
+-- **************************************************************
+
+TNLUpdateRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {TNLUpdateRequestIEs} },
+ protocolExtensions ProtocolExtensionContainer { {TNLUpdateExtensions} } OPTIONAL,
+ ...
+}
+
+TNLUpdateRequestIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-Context-ID CRITICALITY reject TYPE Context-ID PRESENCE mandatory } |
+ { ID id-RABList CRITICALITY reject TYPE RABList PRESENCE mandatory } |
+ { ID id-Update-cause CRITICALITY reject TYPE Update-cause PRESENCE mandatory } ,
+ ...
+}
+
+TNLUpdateExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- TNL UPDATE RESPONSE
+--
+-- **************************************************************
+
+TNLUpdateResponse ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { TNLUpdateResponseIEs} },
+ protocolExtensions ProtocolExtensionContainer { { TNLUpdateResponseExtensions} } OPTIONAL,
+ ...
+}
+
+TNLUpdateResponseIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-Context-ID CRITICALITY reject TYPE Context-ID PRESENCE mandatory } ,
+ ...
+}
+
+TNLUpdateResponseExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- TNL UPDATE FAILURE
+--
+-- **************************************************************
+
+TNLUpdateFailure ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {TNLUpdateFailureIEs} },
+ protocolExtensions ProtocolExtensionContainer { {TNLUpdateFailureExtensions} } OPTIONAL,
+ ...
+}
+
+TNLUpdateFailureIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-Context-ID CRITICALITY reject TYPE Context-ID PRESENCE mandatory } |
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory } |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional } ,
+ ...
+}
+
+TNLUpdateFailureExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- HNB Configuration Transfer Request
+--
+-- **************************************************************
+
+HNBConfigTransferRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {HNBConfigTransferRequestIEs} },
+ protocolExtensions ProtocolExtensionContainer { {HNBConfigTransferRequestExtensions} } OPTIONAL,
+ ...
+}
+
+HNBConfigTransferRequestIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-NeighbourInfoRequestList CRITICALITY reject TYPE NeighbourInfoRequestList PRESENCE mandatory } ,
+ ...
+}
+
+HNBConfigTransferRequestExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- HNB Configuration Transfer Response
+--
+-- **************************************************************
+
+HNBConfigTransferResponse ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { HNBConfigTransferResponseIEs} },
+ protocolExtensions ProtocolExtensionContainer { { HNBConfigTransferResponseExtensions} } OPTIONAL,
+ ...
+}
+
+HNBConfigTransferResponseIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-NeighbourInfoList CRITICALITY reject TYPE NeighbourInfoList PRESENCE mandatory } ,
+ ...
+}
+
+HNBConfigTransferResponseExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- RELOCATION COMPLETE
+--
+-- **************************************************************
+
+RelocationComplete ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { RelocationCompleteIEs} },
+ protocolExtensions ProtocolExtensionContainer { { RelocationCompleteExtensions} } OPTIONAL,
+ ...
+}
+
+RelocationCompleteIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-Context-ID CRITICALITY ignore TYPE Context-ID PRESENCE mandatory } ,
+ ...
+}
+
+
+RelocationCompleteExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- ERROR INDICATION
+--
+-- **************************************************************
+
+ErrorIndication ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {ErrorIndicationIEs} },
+ protocolExtensions ProtocolExtensionContainer { {ErrorIndicationExtensions} } OPTIONAL,
+ ...
+}
+
+ErrorIndicationIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory } |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+ErrorIndicationExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- PRIVATE MESSAGE
+--
+-- **************************************************************
+
+PrivateMessage ::= SEQUENCE {
+ privateIEs PrivateIE-Container {{PrivateMessage-IEs}},
+ ...
+}
+
+PrivateMessage-IEs HNBAP-PRIVATE-IES ::= {
+ ...
+}
+
+END
diff --git a/epan/dissectors/asn1/hnbap/HNBAP-PDU-Descriptions.asn b/epan/dissectors/asn1/hnbap/HNBAP-PDU-Descriptions.asn
new file mode 100644
index 00000000..514d4510
--- /dev/null
+++ b/epan/dissectors/asn1/hnbap/HNBAP-PDU-Descriptions.asn
@@ -0,0 +1,231 @@
+-- HNBAP-PDU-Descriptions.asn
+--
+-- 3GPP TS 25.469 V10.1.0 (2011-06)
+-- http://www.3gpp.org/ftp/Specs/html-info/25469.htm
+--
+-- 9.3.2 Elementary Procedure definitions
+--
+
+-- **************************************************************
+--
+-- Elementary Procedure definitions
+--
+-- **************************************************************
+-- **************************************************************
+-- **************************************************************
+--
+-- Elementary Procedure definitions
+--
+-- **************************************************************
+HNBAP-PDU-Descriptions {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+umts-Access (20) modules (3) hnbap(6) version1 (1) hnbap-PDU-Descriptions (0)}
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+-- **************************************************************
+--
+-- IE parameter types from other modules.
+--
+-- **************************************************************
+
+IMPORTS
+ Criticality,
+ ProcedureCode
+FROM HNBAP-CommonDataTypes
+
+ HNBRegisterRequest,
+ HNBRegisterAccept,
+ HNBRegisterReject,
+ HNBDe-Register,
+ UERegisterRequest,
+ UERegisterAccept,
+ UERegisterReject,
+ UEDe-Register,
+ ErrorIndication,
+ PrivateMessage,
+ CSGMembershipUpdate,
+ TNLUpdateRequest,
+ TNLUpdateResponse,
+ TNLUpdateFailure,
+ HNBConfigTransferRequest,
+ HNBConfigTransferResponse,
+ RelocationComplete
+
+
+FROM HNBAP-PDU-Contents
+ id-HNBRegister,
+ id-UERegister,
+ id-UEDe-Register,
+ id-HNBDe-Register,
+ id-ErrorIndication,
+ id-privateMessage,
+ id-CSGMembershipUpdate,
+ id-TNLUpdate,
+ id-HNBConfigTransfer,
+ id-RelocationComplete
+
+FROM HNBAP-Constants;
+
+-- **************************************************************
+--
+-- Interface Elementary Procedure Class
+--
+-- **************************************************************
+
+HNBAP-ELEMENTARY-PROCEDURE ::= CLASS {
+ &InitiatingMessage ,
+ &SuccessfulOutcome OPTIONAL,
+ &UnsuccessfulOutcome OPTIONAL,
+ &procedureCode ProcedureCode UNIQUE,
+ &criticality Criticality DEFAULT ignore
+}
+
+WITH SYNTAX {
+ INITIATING MESSAGE &InitiatingMessage
+ [SUCCESSFUL OUTCOME &SuccessfulOutcome]
+ [UNSUCCESSFUL OUTCOME &UnsuccessfulOutcome]
+ PROCEDURE CODE &procedureCode
+ [CRITICALITY &criticality]
+}
+
+-- **************************************************************
+--
+-- Interface PDU definitions
+--
+-- **************************************************************
+
+HNBAP-PDU ::= CHOICE {
+ initiatingMessage InitiatingMessage,
+ successfulOutcome SuccessfulOutcome,
+ unsuccessfulOutcome UnsuccessfulOutcome,
+ ...
+}
+
+
+InitiatingMessage ::= SEQUENCE {
+ procedureCode HNBAP-ELEMENTARY-PROCEDURE.&procedureCode ({HNBAP-ELEMENTARY-PROCEDURES}),
+ criticality HNBAP-ELEMENTARY-PROCEDURE.&criticality ({HNBAP-ELEMENTARY-PROCEDURES}{@procedureCode}),
+ value HNBAP-ELEMENTARY-PROCEDURE.&InitiatingMessage ({HNBAP-ELEMENTARY-PROCEDURES}{@procedureCode})
+}
+
+SuccessfulOutcome ::= SEQUENCE {
+ procedureCode HNBAP-ELEMENTARY-PROCEDURE.&procedureCode ({HNBAP-ELEMENTARY-PROCEDURES}),
+ criticality HNBAP-ELEMENTARY-PROCEDURE.&criticality ({HNBAP-ELEMENTARY-PROCEDURES}{@procedureCode}),
+ value HNBAP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({HNBAP-ELEMENTARY-PROCEDURES}{@procedureCode})
+}
+
+UnsuccessfulOutcome ::= SEQUENCE {
+ procedureCode HNBAP-ELEMENTARY-PROCEDURE.&procedureCode ({HNBAP-ELEMENTARY-PROCEDURES}),
+ criticality HNBAP-ELEMENTARY-PROCEDURE.&criticality ({HNBAP-ELEMENTARY-PROCEDURES}{@procedureCode}),
+ value HNBAP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({HNBAP-ELEMENTARY-PROCEDURES}{@procedureCode})
+}
+
+-- **************************************************************
+--
+-- Interface Elementary Procedure List
+--
+-- **************************************************************
+
+HNBAP-ELEMENTARY-PROCEDURES HNBAP-ELEMENTARY-PROCEDURE ::= {
+ HNBAP-ELEMENTARY-PROCEDURES-CLASS-1 |
+ HNBAP-ELEMENTARY-PROCEDURES-CLASS-2 ,
+ ...
+}
+
+HNBAP-ELEMENTARY-PROCEDURES-CLASS-1 HNBAP-ELEMENTARY-PROCEDURE ::= {
+ hNBRegister|
+ uERegister,
+ ...,
+ tnlUpdate |
+ hNBConfigTransfer
+}
+
+
+HNBAP-ELEMENTARY-PROCEDURES-CLASS-2 HNBAP-ELEMENTARY-PROCEDURE ::= {
+ uEDe-Register |
+ hNBDe-Register |
+ errorIndication |
+ privateMessage,
+ ...,
+ csg-membership-update|
+ relocationComplete
+}
+
+-- **************************************************************
+--
+-- Interface Elementary Procedures
+--
+-- **************************************************************
+
+
+hNBRegister HNBAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE HNBRegisterRequest
+ SUCCESSFUL OUTCOME HNBRegisterAccept
+ UNSUCCESSFUL OUTCOME HNBRegisterReject
+ PROCEDURE CODE id-HNBRegister
+ CRITICALITY reject
+}
+
+uERegister HNBAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE UERegisterRequest
+ SUCCESSFUL OUTCOME UERegisterAccept
+ UNSUCCESSFUL OUTCOME UERegisterReject
+ PROCEDURE CODE id-UERegister
+ CRITICALITY reject
+}
+
+uEDe-Register HNBAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE UEDe-Register
+ PROCEDURE CODE id-UEDe-Register
+ CRITICALITY ignore
+}
+
+hNBDe-Register HNBAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE HNBDe-Register
+ PROCEDURE CODE id-HNBDe-Register
+ CRITICALITY ignore
+}
+
+errorIndication HNBAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE ErrorIndication
+ PROCEDURE CODE id-ErrorIndication
+ CRITICALITY ignore
+}
+
+csg-membership-update HNBAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE CSGMembershipUpdate
+ PROCEDURE CODE id-CSGMembershipUpdate
+ CRITICALITY ignore
+}
+
+tnlUpdate HNBAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE TNLUpdateRequest
+ SUCCESSFUL OUTCOME TNLUpdateResponse
+ UNSUCCESSFUL OUTCOME TNLUpdateFailure
+ PROCEDURE CODE id-TNLUpdate
+ CRITICALITY reject
+}
+
+hNBConfigTransfer HNBAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE HNBConfigTransferRequest
+ SUCCESSFUL OUTCOME HNBConfigTransferResponse
+ PROCEDURE CODE id-HNBConfigTransfer
+ CRITICALITY reject
+}
+
+relocationComplete HNBAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE RelocationComplete
+ PROCEDURE CODE id-RelocationComplete
+ CRITICALITY ignore
+}
+
+privateMessage HNBAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE PrivateMessage
+ PROCEDURE CODE id-privateMessage
+ CRITICALITY ignore
+}
+
+END
diff --git a/epan/dissectors/asn1/hnbap/hnbap.cnf b/epan/dissectors/asn1/hnbap/hnbap.cnf
new file mode 100644
index 00000000..7c5429a0
--- /dev/null
+++ b/epan/dissectors/asn1/hnbap/hnbap.cnf
@@ -0,0 +1,331 @@
+# hnbap.cnf
+# hnbap conformation file
+# Copyright 2010 Neil Piercy, ip.access Limited <Neil.Piercy@ipaccess.com>
+
+#.OPT
+PER
+ALIGNED
+#.END
+
+#.PDU
+HNBAP-PDU
+
+#.MAKE_ENUM
+ProtocolIE-ID
+ProcedureCode
+
+#.TYPE_RENAME
+ProtocolIE-Field/value ProtocolIE_Field_value
+PrivateIE-Field/value PrivateIE_Field_value
+InitiatingMessage/value InitiatingMessage_value
+SuccessfulOutcome/value SuccessfulOutcome_value
+UnsuccessfulOutcome/value UnsuccessfulOutcome_value
+
+#.FIELD_RENAME
+InitiatingMessage/value initiatingMessagevalue
+UnsuccessfulOutcome/value unsuccessfulOutcome_value
+SuccessfulOutcome/value successfulOutcome_value
+PrivateIE-Field/value private_value
+ProtocolIE-Field/value ie_field_value
+ProtocolIE-Field/id protocol_ie_field_id
+PrivateIE-Field/id private_ie_field_id
+GeographicalLocation/geographicalCoordinates geographical_location_geographical_coordinates
+HNB-Location-Information/geographicalCoordinates hnb_location_information_geographical_coordinates
+MacroCoverageInformation/cellIdentity macroCellID
+
+#.FIELD_ATTR
+acroCoverageInformation/cellIdentity ABBREV=cellIdentity.macroCellID
+
+#.OMIT_ASSIGNMENT
+Presence
+ProtocolIE-ContainerList
+ProtocolIE-Single-Container
+#.END
+
+#.NO_EMIT
+AccessResult
+#.END
+
+#.FN_PARS ProtocolIE-ID VAL_PTR = &ProtocolIE_ID
+#.FN_FTR ProtocolIE-ID
+ if (tree) {
+ proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", val_to_str(ProtocolIE_ID, VALS(hnbap_ProtocolIE_ID_vals), "unknown (%d)"));
+ }
+#.END
+
+#.FN_PARS ProtocolIE-Field/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolIEFieldValue
+
+#.FN_PARS ProtocolExtensionField/extensionValue FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolExtensionFieldExtensionValue
+
+#.FN_PARS ProcedureCode VAL_PTR = &ProcedureCode
+#.FN_FTR ProcedureCode
+ if (strcmp(val_to_str(ProcedureCode, hnbap_ProcedureCode_vals, "Unknown"), "Unknown") == 0) {
+ col_set_str(actx->pinfo->cinfo, COL_INFO,
+ "Unknown Message");
+ } /* Known Procedures should be included below and broken out as ELEMENTARY names to avoid confusion */
+
+#.FN_PARS InitiatingMessage/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_InitiatingMessageValue
+
+#.FN_PARS SuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_SuccessfulOutcomeValue
+
+#.FN_PARS UnsuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_UnsuccessfulOutcomeValue
+
+# There is no protocol inside HNBAP so fill col info with HNBAP elementary procedure name
+#.FN_BODY HNBRegisterRequest
+ col_set_str(actx->pinfo->cinfo, COL_INFO,
+ "HNB_REGISTER_REQUEST ");
+%(DEFAULT_BODY)s
+
+#.FN_BODY HNBRegisterAccept
+ col_set_str(actx->pinfo->cinfo, COL_INFO,
+ "HNB_REGISTER_ACCEPT ");
+%(DEFAULT_BODY)s
+
+#.FN_BODY HNBRegisterReject
+ col_set_str(actx->pinfo->cinfo, COL_INFO,
+ "HNB_REGISTER_REJECT ");
+%(DEFAULT_BODY)s
+
+#.FN_BODY UERegisterRequest
+ col_set_str(actx->pinfo->cinfo, COL_INFO,
+ "UE_REGISTER_REQUEST ");
+%(DEFAULT_BODY)s
+
+#.FN_BODY UERegisterAccept
+ col_set_str(actx->pinfo->cinfo, COL_INFO,
+ "UE_REGISTER_ACCEPT ");
+%(DEFAULT_BODY)s
+
+#.FN_BODY UERegisterReject
+ col_set_str(actx->pinfo->cinfo, COL_INFO,
+ "UE_REGISTER_REJECT ");
+%(DEFAULT_BODY)s
+
+#.FN_BODY UEDe-Register
+ col_set_str(actx->pinfo->cinfo, COL_INFO,
+ "UE_DE-REGISTER ");
+%(DEFAULT_BODY)s
+
+#.FN_BODY HNBDe-Register
+ col_set_str(actx->pinfo->cinfo, COL_INFO,
+ "HNB_DE-REGISTER ");
+%(DEFAULT_BODY)s
+
+#.FN_BODY ErrorIndication
+ col_set_str(actx->pinfo->cinfo, COL_INFO,
+ "ERROR_INDICATION ");
+ col_set_fence(actx->pinfo->cinfo, COL_INFO); /* Protect info from CriticalityDiagnostics decodes */
+%(DEFAULT_BODY)s
+
+#.FN_BODY CSGMembershipUpdate
+ col_set_str(actx->pinfo->cinfo, COL_INFO,
+ "CSG_MEMBERSHIP_UPDATE_MESSAGE ");
+%(DEFAULT_BODY)s
+
+#.FN_BODY PrivateMessage
+ col_set_str(actx->pinfo->cinfo, COL_INFO,
+ "PRIVATE_MESSAGE ");
+%(DEFAULT_BODY)s
+
+#.FN_BODY TNLUpdateRequest
+ col_set_str(actx->pinfo->cinfo, COL_INFO,
+ "TNL_UPDATE_REQUEST_MESSAGE ");
+%(DEFAULT_BODY)s
+#.FN_BODY TNLUpdateResponse
+ col_set_str(actx->pinfo->cinfo, COL_INFO,
+ "TNL_UPDATE_RESPONSE_MESSAGE ");
+%(DEFAULT_BODY)s
+#.FN_BODY TNLUpdateFailure
+ col_set_str(actx->pinfo->cinfo, COL_INFO,
+ "TNL_UPDATE_FAILURE_MESSAGE ");
+%(DEFAULT_BODY)s
+#.FN_BODY HNBConfigTransferRequest
+ col_set_str(actx->pinfo->cinfo, COL_INFO,
+ "HNB_CONFIG_TRANSFER_REQUEST_MESSAGE ");
+%(DEFAULT_BODY)s
+#.FN_BODY HNBConfigTransferResponse
+ col_set_str(actx->pinfo->cinfo, COL_INFO,
+ "HNB_CONFIG_TRANSFER_RESPONSE_MESSAGE ");
+%(DEFAULT_BODY)s
+#.FN_BODY RelocationComplete
+ col_set_str(actx->pinfo->cinfo, COL_INFO,
+ "RELOCATION_COMPLETE_MESSAGE ");
+%(DEFAULT_BODY)s
+
+#.END
+
+#.FN_BODY IMSI VAL_PTR = &parameter_tvb
+ tvbuff_t *parameter_tvb;
+%(DEFAULT_BODY)s
+ if (parameter_tvb) {
+ proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_hnbap_imsi);
+ dissect_e212_imsi(parameter_tvb, actx->pinfo, subtree, 0, tvb_reported_length(parameter_tvb), FALSE);
+ }
+
+#.FN_BODY PLMNidentity VAL_PTR = &parameter_tvb
+ tvbuff_t *parameter_tvb;
+ struct hnbap_private_data *hnbap_data = hnbap_get_private_data(actx->pinfo);
+ e212_number_type_t number_type = hnbap_data->number_type;
+ hnbap_data->number_type = E212_NONE;
+%(DEFAULT_BODY)s
+ if (parameter_tvb) {
+ dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, tree, 0, number_type, FALSE);
+ }
+#.END
+
+#.FN_BODY CGI
+ struct hnbap_private_data *hnbap_data = hnbap_get_private_data(actx->pinfo);
+ hnbap_data->number_type = E212_CGI;
+%(DEFAULT_BODY)s
+
+#.FN_BODY LAI
+ struct hnbap_private_data *hnbap_data = hnbap_get_private_data(actx->pinfo);
+ /* The RAI is defined in the ASN.1 as the LAI plus the RAC; don't override
+ * the MNC/MCC field types in that case.
+ */
+ if (hnbap_data->number_type != E212_RAI) {
+ hnbap_data->number_type = E212_LAI;
+ }
+%(DEFAULT_BODY)s
+
+#.TYPE_ATTR
+LAC TYPE = FT_UINT16 DISPLAY = BASE_DEC_HEX
+#.FN_BODY LAC VAL_PTR = &parameter_tvb HF_INDEX = -1
+ tvbuff_t *parameter_tvb = NULL;
+%(DEFAULT_BODY)s
+ if (parameter_tvb) {
+ actx->created_item = proto_tree_add_item(tree, hf_index, parameter_tvb, 0, 2, ENC_BIG_ENDIAN);
+ }
+
+#.FN_BODY RAI
+ struct hnbap_private_data *hnbap_data = hnbap_get_private_data(actx->pinfo);
+ hnbap_data->number_type = E212_RAI;
+%(DEFAULT_BODY)s
+
+#.TYPE_ATTR
+RAC TYPE = FT_UINT8 DISPLAY = BASE_DEC_HEX
+#.FN_BODY RAC VAL_PTR = &parameter_tvb HF_INDEX = -1
+ tvbuff_t *parameter_tvb = NULL;
+%(DEFAULT_BODY)s
+ if (parameter_tvb) {
+ actx->created_item = proto_tree_add_item(tree, hf_index, parameter_tvb, 0, 1, ENC_BIG_ENDIAN);
+ }
+
+#.TYPE_ATTR
+SAC TYPE = FT_UINT16 DISPLAY = BASE_DEC_HEX
+#.FN_BODY SAC VAL_PTR = &parameter_tvb HF_INDEX = -1
+ tvbuff_t *parameter_tvb = NULL;
+%(DEFAULT_BODY)s
+ if (parameter_tvb) {
+ actx->created_item = proto_tree_add_item(tree, hf_index, parameter_tvb, 0, 2, ENC_BIG_ENDIAN);
+ }
+
+#.ASSIGN_VALUE_TO_TYPE # HNBAP ASN.1 does not have constants assigned to types
+# ProcedureCode
+id-HNBRegister ProcedureCode
+id-HNBDe-Register ProcedureCode
+id-UERegister ProcedureCode
+id-UEDe-Register ProcedureCode
+id-ErrorIndication ProcedureCode
+id-privateMessage ProcedureCode
+id-CSGMembershipUpdate ProcedureCode
+id-TNLUpdate ProcedureCode
+id-HNBConfigTransfer ProcedureCode
+id-RelocationComplete ProcedureCode
+
+# ProtocolIE-ID
+id-Cause ProtocolIE-ID
+id-CriticalityDiagnostics ProtocolIE-ID
+id-HNB-Identity ProtocolIE-ID
+id-Context-ID ProtocolIE-ID
+id-UE-Identity ProtocolIE-ID
+id-LAC ProtocolIE-ID
+id-RAC ProtocolIE-ID
+id-HNB-Location-Information ProtocolIE-ID
+id-PLMNidentity ProtocolIE-ID
+id-SAC ProtocolIE-ID
+id-CellIdentity ProtocolIE-ID
+id-Registration-Cause ProtocolIE-ID
+id-UE-Capabilities ProtocolIE-ID
+id-RNC-ID ProtocolIE-ID
+id-CSG-ID ProtocolIE-ID
+id-BackoffTimer ProtocolIE-ID
+id-HNB-Internet-Information ProtocolIE-ID
+id-HNB-Cell-Access-Mode ProtocolIE-ID
+id-MuxPortNumber ProtocolIE-ID
+id-Service-Area-For-Broadcast ProtocolIE-ID
+id-CSGMembershipStatus ProtocolIE-ID
+id-RABList ProtocolIE-ID
+id-HNBConfigInfo ProtocolIE-ID
+id-AccessResult ProtocolIE-ID
+id-Update-cause ProtocolIE-ID
+id-NeighbourInfoList ProtocolIE-ID
+id-NeighbourInfoRequestList ProtocolIE-ID
+id-Iurh-Signalling-TNL-Address ProtocolIE-ID
+id-PSC ProtocolIE-ID
+id-HNB-Cell-Identifier ProtocolIE-ID
+#.END
+
+
+#.REGISTER
+
+#HNBAP-PROTOCOL-IES
+Cause N hnbap.ies id-Cause
+CriticalityDiagnostics N hnbap.ies id-CriticalityDiagnostics
+HNB-Identity N hnbap.ies id-HNB-Identity
+Context-ID N hnbap.ies id-Context-ID
+UE-Identity N hnbap.ies id-UE-Identity
+LAC N hnbap.ies id-LAC
+RAC N hnbap.ies id-RAC
+HNB-Location-Information N hnbap.ies id-HNB-Location-Information
+PLMNidentity N hnbap.ies id-PLMNidentity
+SAC N hnbap.ies id-SAC
+CellIdentity N hnbap.ies id-CellIdentity
+Registration-Cause N hnbap.ies id-Registration-Cause
+UE-Capabilities N hnbap.ies id-UE-Capabilities
+RNC-ID N hnbap.ies id-RNC-ID
+CSG-ID N hnbap.ies id-CSG-ID
+BackoffTimer N hnbap.ies id-BackoffTimer
+CSGMembershipStatus N hnbap.ies id-CSGMembershipStatus
+
+RABList N hnbap.ies id-RABList
+# id-HNBConfigInfo
+# id-AccessResult
+Update-cause N hnbap.ies id-Update-cause
+NeighbourInfoList N hnbap.ies id-NeighbourInfoList
+NeighbourInfoRequestList N hnbap.ies id-NeighbourInfoRequestList
+# id-HNB-Cell-Identifier
+
+#HNBAP-PROTOCOL-EXTENSION
+IP-Address N hnbap.extension id-HNB-Internet-Information
+HNB-Cell-Access-Mode N hnbap.extension id-HNB-Cell-Access-Mode
+MuxPortNumber N hnbap.extension id-MuxPortNumber
+CSGMembershipStatus N hnbap.extension id-CSGMembershipStatus
+IP-Address N hnbap.extension id-Iurh-Signalling-TNL-Address
+PSC N hnbap.extension id-PSC
+
+#HNBAP-ELEMENTARY-PROCEDURE
+#CLASS 1
+HNBRegisterRequest N hnbap.proc.imsg id-HNBRegister
+HNBRegisterAccept N hnbap.proc.sout id-HNBRegister
+HNBRegisterReject N hnbap.proc.uout id-HNBRegister
+UERegisterRequest N hnbap.proc.imsg id-UERegister
+UERegisterAccept N hnbap.proc.sout id-UERegister
+UERegisterReject N hnbap.proc.uout id-UERegister
+
+TNLUpdateRequest N hnbap.proc.imsg id-TNLUpdate
+TNLUpdateResponse N hnbap.proc.sout id-TNLUpdate
+TNLUpdateFailure N hnbap.proc.uout id-TNLUpdate
+
+HNBConfigTransferRequest N hnbap.proc.imsg id-HNBConfigTransfer
+HNBConfigTransferResponse N hnbap.proc.sout id-HNBConfigTransfer
+
+RelocationComplete N hnbap.proc.imsg id-RelocationComplete
+
+#CLASS 2
+UEDe-Register N hnbap.proc.imsg id-UEDe-Register
+HNBDe-Register N hnbap.proc.imsg id-HNBDe-Register
+ErrorIndication N hnbap.proc.imsg id-ErrorIndication
+CSGMembershipUpdate N hnbap.proc.imsg id-CSGMembershipUpdate
+PrivateMessage N hnbap.proc.imsg id-privateMessage
+#.END
diff --git a/epan/dissectors/asn1/hnbap/packet-hnbap-template.c b/epan/dissectors/asn1/hnbap/packet-hnbap-template.c
new file mode 100644
index 00000000..1568cca2
--- /dev/null
+++ b/epan/dissectors/asn1/hnbap/packet-hnbap-template.c
@@ -0,0 +1,193 @@
+/* packet-hnbap-template.c
+ * Routines for UMTS Node B Application Part(HNBAP) packet dissection
+ * Copyright 2010 Neil Piercy, ip.access Limited <Neil.Piercy@ipaccess.com>
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ *
+ * Ref: 3GPP TS 25.469 version 8.4.0 Release 8
+ */
+
+#include "config.h"
+
+#include <epan/packet.h>
+#include <epan/sctpppids.h>
+#include <epan/asn1.h>
+#include <epan/prefs.h>
+#include <epan/proto_data.h>
+
+#include "packet-per.h"
+#include "packet-e212.h"
+
+#ifdef _MSC_VER
+/* disable: "warning C4146: unary minus operator applied to unsigned type, result still unsigned" */
+#pragma warning(disable:4146)
+#endif
+
+#define PNAME "UTRAN Iuh interface HNBAP signalling"
+#define PSNAME "HNBAP"
+#define PFNAME "hnbap"
+/* Dissector will use SCTP PPID 20 or SCTP port. IANA assigned port = 29169*/
+#define SCTP_PORT_HNBAP 29169
+
+void proto_register_hnbap(void);
+
+#include "packet-hnbap-val.h"
+
+/* Initialize the protocol and registered fields */
+static int proto_hnbap = -1;
+
+#include "packet-hnbap-hf.c"
+
+/* Initialize the subtree pointers */
+static int ett_hnbap = -1;
+static int ett_hnbap_imsi = -1;
+#include "packet-hnbap-ett.c"
+
+struct hnbap_private_data {
+ e212_number_type_t number_type;
+};
+
+/* Global variables */
+static guint32 ProcedureCode;
+static guint32 ProtocolIE_ID;
+
+/* Dissector tables */
+static dissector_table_t hnbap_ies_dissector_table;
+static dissector_table_t hnbap_extension_dissector_table;
+static dissector_table_t hnbap_proc_imsg_dissector_table;
+static dissector_table_t hnbap_proc_sout_dissector_table;
+static dissector_table_t hnbap_proc_uout_dissector_table;
+
+static dissector_handle_t hnbap_handle;
+
+static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
+static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
+static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
+static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
+static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
+void proto_reg_handoff_hnbap(void);
+
+static struct hnbap_private_data*
+hnbap_get_private_data(packet_info *pinfo)
+{
+ struct hnbap_private_data *hnbap_data = (struct hnbap_private_data*)p_get_proto_data(pinfo->pool, pinfo, proto_hnbap, 0);
+ if (!hnbap_data) {
+ hnbap_data = wmem_new0(pinfo->pool, struct hnbap_private_data);
+ p_add_proto_data(pinfo->pool, pinfo, proto_hnbap, 0, hnbap_data);
+ }
+ return hnbap_data;
+}
+
+#include "packet-hnbap-fn.c"
+
+static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
+{
+ return (dissector_try_uint_new(hnbap_ies_dissector_table, ProtocolIE_ID, tvb, pinfo, tree, FALSE, NULL)) ? tvb_captured_length(tvb) : 0;
+}
+
+static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
+{
+ return (dissector_try_uint_new(hnbap_extension_dissector_table, ProtocolIE_ID, tvb, pinfo, tree, FALSE, NULL)) ? tvb_captured_length(tvb) : 0;
+}
+#if 0
+static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
+{
+ if (!ProcedureCode) return 0;
+ return (dissector_try_string(hnbap_proc_imsg_dissector_table, ProcedureCode, tvb, pinfo, tree, NULL)) ? tvb_captured_length(tvb) : 0;
+}
+
+static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
+{
+ if (!ProcedureCode) return 0;
+ return (dissector_try_string(hnbap_proc_sout_dissector_table, ProcedureCode, tvb, pinfo, tree, NULL)) ? tvb_captured_length(tvb) : 0;
+}
+
+static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
+{
+ if (!ProcedureCode) return 0;
+ return (dissector_try_string(hnbap_proc_uout_dissector_table, ProcedureCode, tvb, pinfo, tree, NULL)) ? tvb_captured_length(tvb) : 0;
+}
+#endif
+
+static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
+{
+ return (dissector_try_uint_new(hnbap_proc_imsg_dissector_table, ProcedureCode, tvb, pinfo, tree, FALSE, NULL)) ? tvb_captured_length(tvb) : 0;
+}
+
+static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
+{
+ return (dissector_try_uint_new(hnbap_proc_sout_dissector_table, ProcedureCode, tvb, pinfo, tree, FALSE, NULL)) ? tvb_captured_length(tvb) : 0;
+}
+
+static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
+{
+ return (dissector_try_uint_new(hnbap_proc_uout_dissector_table, ProcedureCode, tvb, pinfo, tree, FALSE, NULL)) ? tvb_captured_length(tvb) : 0;
+}
+
+static int
+dissect_hnbap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
+{
+ proto_item *hnbap_item = NULL;
+ proto_tree *hnbap_tree = NULL;
+
+ /* make entry in the Protocol column on summary display */
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "HNBAP");
+
+ /* create the hnbap protocol tree */
+ hnbap_item = proto_tree_add_item(tree, proto_hnbap, tvb, 0, -1, ENC_NA);
+ hnbap_tree = proto_item_add_subtree(hnbap_item, ett_hnbap);
+
+ return dissect_HNBAP_PDU_PDU(tvb, pinfo, hnbap_tree, data);
+}
+
+/*--- proto_register_hnbap -------------------------------------------*/
+void proto_register_hnbap(void) {
+
+ /* List of fields */
+
+ static hf_register_info hf[] = {
+
+#include "packet-hnbap-hfarr.c"
+ };
+
+ /* List of subtrees */
+ static gint *ett[] = {
+ &ett_hnbap,
+ &ett_hnbap_imsi,
+#include "packet-hnbap-ettarr.c"
+ };
+
+
+ /* Register protocol */
+ proto_hnbap = proto_register_protocol(PNAME, PSNAME, PFNAME);
+ /* Register fields and subtrees */
+ proto_register_field_array(proto_hnbap, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ /* Register dissector */
+ hnbap_handle = register_dissector("hnbap", dissect_hnbap, proto_hnbap);
+
+ /* Register dissector tables */
+ hnbap_ies_dissector_table = register_dissector_table("hnbap.ies", "HNBAP-PROTOCOL-IES", proto_hnbap, FT_UINT32, BASE_DEC);
+ hnbap_extension_dissector_table = register_dissector_table("hnbap.extension", "HNBAP-PROTOCOL-EXTENSION", proto_hnbap, FT_UINT32, BASE_DEC);
+ hnbap_proc_imsg_dissector_table = register_dissector_table("hnbap.proc.imsg", "HNBAP-ELEMENTARY-PROCEDURE InitiatingMessage", proto_hnbap, FT_UINT32, BASE_DEC);
+ hnbap_proc_sout_dissector_table = register_dissector_table("hnbap.proc.sout", "HNBAP-ELEMENTARY-PROCEDURE SuccessfulOutcome", proto_hnbap, FT_UINT32, BASE_DEC);
+ hnbap_proc_uout_dissector_table = register_dissector_table("hnbap.proc.uout", "HNBAP-ELEMENTARY-PROCEDURE UnsuccessfulOutcome", proto_hnbap, FT_UINT32, BASE_DEC);
+
+ /* hnbap_module = prefs_register_protocol(proto_hnbap, NULL); */
+}
+
+
+/*--- proto_reg_handoff_hnbap ---------------------------------------*/
+void
+proto_reg_handoff_hnbap(void)
+{
+ dissector_add_uint("sctp.ppi", HNBAP_PAYLOAD_PROTOCOL_ID, hnbap_handle);
+ dissector_add_uint_with_preference("sctp.port", SCTP_PORT_HNBAP, hnbap_handle);
+#include "packet-hnbap-dis-tab.c"
+
+}