diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:34:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:34:10 +0000 |
commit | e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc (patch) | |
tree | 68cb5ef9081156392f1dd62a00c6ccc1451b93df /epan/dissectors/asn1/hnbap | |
parent | Initial commit. (diff) | |
download | wireshark-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.txt | 39 | ||||
-rw-r--r-- | epan/dissectors/asn1/hnbap/HNBAP-CommonDataTypes.asn | 55 | ||||
-rw-r--r-- | epan/dissectors/asn1/hnbap/HNBAP-Constants.asn | 92 | ||||
-rw-r--r-- | epan/dissectors/asn1/hnbap/HNBAP-Containers.asn | 157 | ||||
-rw-r--r-- | epan/dissectors/asn1/hnbap/HNBAP-IEs.asn | 518 | ||||
-rw-r--r-- | epan/dissectors/asn1/hnbap/HNBAP-PDU-Contents.asn | 490 | ||||
-rw-r--r-- | epan/dissectors/asn1/hnbap/HNBAP-PDU-Descriptions.asn | 231 | ||||
-rw-r--r-- | epan/dissectors/asn1/hnbap/hnbap.cnf | 331 | ||||
-rw-r--r-- | epan/dissectors/asn1/hnbap/packet-hnbap-template.c | 193 |
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 = ¶meter_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 = ¶meter_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 = ¶meter_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 = ¶meter_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 = ¶meter_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" + +} |