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/sbc-ap | |
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/sbc-ap')
-rw-r--r-- | epan/dissectors/asn1/sbc-ap/CMakeLists.txt | 43 | ||||
-rw-r--r-- | epan/dissectors/asn1/sbc-ap/SBC-AP-CommonDataTypes.asn | 35 | ||||
-rw-r--r-- | epan/dissectors/asn1/sbc-ap/SBC-AP-Constants.asn | 127 | ||||
-rw-r--r-- | epan/dissectors/asn1/sbc-ap/SBC-AP-Containers.asn | 121 | ||||
-rw-r--r-- | epan/dissectors/asn1/sbc-ap/SBC-AP-IEs.asn | 650 | ||||
-rw-r--r-- | epan/dissectors/asn1/sbc-ap/SBC-AP-PDU-Contents.asn | 374 | ||||
-rw-r--r-- | epan/dissectors/asn1/sbc-ap/SBC-AP-PDU-Descriptions.asn | 179 | ||||
-rw-r--r-- | epan/dissectors/asn1/sbc-ap/packet-sbc-ap-template.c | 272 | ||||
-rw-r--r-- | epan/dissectors/asn1/sbc-ap/sbc-ap.cnf | 377 |
9 files changed, 2178 insertions, 0 deletions
diff --git a/epan/dissectors/asn1/sbc-ap/CMakeLists.txt b/epan/dissectors/asn1/sbc-ap/CMakeLists.txt new file mode 100644 index 00000000..d7f39c08 --- /dev/null +++ b/epan/dissectors/asn1/sbc-ap/CMakeLists.txt @@ -0,0 +1,43 @@ +# 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 sbc-ap ) + +set( PROTO_OPT ) + +set( EXPORT_FILES + ${PROTOCOL_NAME}-exp.cnf +) + +set( EXT_ASN_FILE_LIST +) + +set( ASN_FILE_LIST + SBC-AP-CommonDataTypes.asn + SBC-AP-Constants.asn + SBC-AP-Containers.asn + SBC-AP-IEs.asn + SBC-AP-PDU-Contents.asn + SBC-AP-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/sbc-ap/SBC-AP-CommonDataTypes.asn b/epan/dissectors/asn1/sbc-ap/SBC-AP-CommonDataTypes.asn new file mode 100644 index 00000000..e11f3175 --- /dev/null +++ b/epan/dissectors/asn1/sbc-ap/SBC-AP-CommonDataTypes.asn @@ -0,0 +1,35 @@ +-- SBC-AP-CommonDataTypes.asn +-- +-- Taken from 3GPP TS 29.168 V15.1.0 (2018-09) +-- http://www.3gpp.org/ftp/Specs/archive/29_series/29.168/29168-930.zip +-- +-- 4.4.6 Common Definitions +-- + +-- ************************************************************** +-- +-- Common definitions +-- +-- ************************************************************** + +SBC-AP-CommonDataTypes { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +eps-Access (21) modules (3) sbc-AP (3) version1 (1) sbc-AP-CommonDataTypes (3)} + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +Criticality ::= ENUMERATED { reject, ignore, notify } + +Presence ::= ENUMERATED { optional, conditional, mandatory } + +ProcedureCode ::= INTEGER (0..255) + +ProtocolExtensionID ::= INTEGER (0..65535) + +ProtocolIE-ID ::= INTEGER (0..65535) + +TriggeringMessage ::= ENUMERATED {initiating-message, successful-outcome, unsuccessful-outcome, outcome} + +END diff --git a/epan/dissectors/asn1/sbc-ap/SBC-AP-Constants.asn b/epan/dissectors/asn1/sbc-ap/SBC-AP-Constants.asn new file mode 100644 index 00000000..447e1c42 --- /dev/null +++ b/epan/dissectors/asn1/sbc-ap/SBC-AP-Constants.asn @@ -0,0 +1,127 @@ +-- SBC-AP-Constants.asn +-- +-- Taken from 3GPP TS 29.168 V15.1.0 (2018-09) +-- http://www.3gpp.org/ftp/Specs/archive/29_series/29.168/29168-930.zip +-- +-- 4.4.7 Constant Definitions +-- +-- ************************************************************** +-- +-- Constant definitions +-- +-- ************************************************************** + +SBC-AP-Constants { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +eps-Access (21) modules (3) sbc-AP (3) version1 (1) sbc-AP-Constants (4)} + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- Elementary Procedures +-- +-- ************************************************************** + +id-Write-Replace-Warning INTEGER ::= 0 +id-Stop-Warning INTEGER ::= 1 +id-Error-Indication INTEGER ::= 2 +id-Write-Replace-Warning-Indication INTEGER ::= 3 +id-Stop-Warning-Indication INTEGER ::= 4 +id-PWS-Restart-Indication INTEGER ::= 5 +id-PWS-Failure-Indication INTEGER ::= 6 + +-- ************************************************************** +-- +-- IEs +-- +-- ************************************************************** + +id-Broadcast-Message-Content INTEGER ::= 0 +id-Cause INTEGER ::= 1 +id-Criticality-Diagnostics INTEGER ::=2 +id-Data-Coding-Scheme INTEGER ::= 3 +id-Failure-List INTEGER ::= 4 +id-Message-Identifier INTEGER ::= 5 +id-Number-of-Broadcasts-Completed-List INTEGER ::= 6 +id-Number-of-Broadcasts-Requested INTEGER ::= 7 +id-Radio-Resource-Loading-List INTEGER ::= 8 +id-Recovery-Indication INTEGER ::= 9 +id-Repetition-Period INTEGER ::= 10 +id-Serial-Number INTEGER ::= 11 +id-Service-Areas-List INTEGER ::= 12 +id-TypeOfError INTEGER ::= 13 +id-List-of-TAIs INTEGER ::= 14 +id-Warning-Area-List INTEGER ::= 15 +id-Warning-Message-Content INTEGER ::= 16 +id-Warning-Security-Information INTEGER ::= 17 +id-Warning-Type INTEGER ::= 18 +id-Omc-Id INTEGER ::= 19 +id-Concurrent-Warning-Message-Indicator INTEGER ::= 20 +id-Extended-Repetition-Period INTEGER ::= 21 +id-Unknown-Tracking-Area-List INTEGER ::= 22 +id-Broadcast-Scheduled-Area-List INTEGER ::= 23 +id-Send-Write-Replace-Warning-Indication INTEGER ::= 24 +id-Broadcast-Cancelled-Area-List INTEGER ::= 25 +id-Send-Stop-Warning-Indication INTEGER ::= 26 +id-Stop-All-Indicator INTEGER ::= 27 +id-Global-ENB-ID INTEGER ::= 28 +id-Broadcast-Empty-Area-List INTEGER ::= 29 +id-Restarted-Cell-List INTEGER ::= 30 +id-List-of-TAIs-Restart INTEGER ::= 31 +id-List-of-EAIs-Restart INTEGER ::= 32 +id-Failed-Cell-List INTEGER ::= 33 +id-List-of-5GS-TAIs INTEGER ::= 34 +id-Warning-Area-List-5GS INTEGER ::= 35 +id-Global-RAN-Node-ID INTEGER ::= 36 +id-Global-GNB-ID INTEGER ::= 37 +id-RAT-Selector-5GS INTEGER ::= 38 +id-Unknown-5GS-Tracking-Area-List INTEGER ::= 39 +id-Broadcast-Scheduled-Area-List-5GS INTEGER ::= 40 +id-Broadcast-Cancelled-Area-List-5GS INTEGER ::= 41 +id-Broadcast-Empty-Area-List-5GS INTEGER ::= 42 +id-Restarted-Cell-List-NR INTEGER ::= 43 +id-Failed-Cell-List-NR INTEGER ::= 44 +id-List-of-5GS-TAI-for-Restart INTEGER ::= 45 +id-Warning-Area-Coordinates INTEGER ::= 46 + + + +-- ************************************************************** +-- +-- Extension constants +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Lists +-- +-- ************************************************************** + +maxNrOfErrors INTEGER ::= 256 +maxnoofCellID INTEGER ::= 65535 +maxnoofCellinEAI INTEGER ::= 65535 +maxnoofCellinTAI INTEGER ::= 65535 +maxNrOfTAIs INTEGER ::= 65535 +maxnoofEmergencyAreaID INTEGER ::= 65535 +maxnoofTAIforWarning INTEGER ::= 65535 + +maxProtocolExtensions INTEGER ::= 65535 +maxProtocolIEs INTEGER ::= 65535 +maxnoofeNBIds INTEGER ::= 256 +maxnoofRestartedCells INTEGER ::= 256 +maxnoofRestartTAIs INTEGER ::= 2048 +maxnoofRestartEAIs INTEGER ::= 256 +maxnoofFailedCells INTEGER ::= 256 +maxnoof5GSTAIs INTEGER ::= 2048 +maxnoofCellsingNB INTEGER ::= 16384 +maxnoofCellsin5GS INTEGER ::= 16776960 +maxnoofCellsin5GSTAI INTEGER ::= 65535 +maxnoofRANNodes INTEGER ::= 65535 +maxnoofRestart5GSTAIs INTEGER ::= 2048maxnoofCellsforRestartNR INTEGER ::= 16384 + + +END diff --git a/epan/dissectors/asn1/sbc-ap/SBC-AP-Containers.asn b/epan/dissectors/asn1/sbc-ap/SBC-AP-Containers.asn new file mode 100644 index 00000000..8b71821c --- /dev/null +++ b/epan/dissectors/asn1/sbc-ap/SBC-AP-Containers.asn @@ -0,0 +1,121 @@ +-- SBC-AP-Containers.asn +-- +-- Taken from 3GPP TS 29.168 V15.1.0 (2018-09) +-- http://www.3gpp.org/ftp/Specs/archive/29_series/29.168/29168-930.zip +-- +-- 4.4.8 Container Definitions +-- + +-- ************************************************************** +-- +-- Container definitions +-- +-- ************************************************************** + +SBC-AP-Containers { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +eps-Access (21) modules (3) sbc-AP (3) version1 (1) sbc-AP-Containers (5)} + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** + +IMPORTS + Criticality, + Presence, + ProtocolExtensionID, + ProtocolIE-ID +FROM SBC-AP-CommonDataTypes + + maxProtocolExtensions, + maxProtocolIEs +FROM SBC-AP-Constants; + +-- ************************************************************** +-- +-- Class Definition for Protocol IEs +-- +-- ************************************************************** + +SBC-AP-PROTOCOL-IES ::= CLASS { + &id ProtocolIE-ID UNIQUE, + &criticality Criticality DEFAULT ignore, + &Value, + &presence Presence +} +WITH SYNTAX { + ID &id + CRITICALITY &criticality + TYPE &Value + PRESENCE &presence +} + +-- ************************************************************** +-- +-- Class Definition for Protocol Extensions +-- +-- ************************************************************** + +SBC-AP-PROTOCOL-EXTENSION ::= CLASS { + &id ProtocolExtensionID UNIQUE, + &criticality Criticality DEFAULT ignore, + &Extension, + &presence Presence +} +WITH SYNTAX { + ID &id + CRITICALITY &criticality + EXTENSION &Extension + PRESENCE &presence +} + +-- ************************************************************** +-- +-- Container for Protocol IEs +-- +-- ************************************************************** + +ProtocolIE-Container {SBC-AP-PROTOCOL-IES : IEsSetParam} ::= + SEQUENCE (SIZE (0..maxProtocolIEs)) OF + ProtocolIE-Field {{IEsSetParam}} + +ProtocolIE-Field {SBC-AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE { + id SBC-AP-PROTOCOL-IES.&id ({IEsSetParam}), + criticality SBC-AP-PROTOCOL-IES.&criticality ({IEsSetParam}{@id}), + value SBC-AP-PROTOCOL-IES.&Value ({IEsSetParam}{@id}) +} + +-- ************************************************************** +-- +-- Container Lists for Protocol IE Containers +-- +-- ************************************************************** + +ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, SBC-AP-PROTOCOL-IES : IEsSetParam} ::= + SEQUENCE (SIZE (lowerBound..upperBound)) OF + ProtocolIE-Container {{IEsSetParam}} + +-- ************************************************************** +-- +-- Container for Protocol Extensions +-- +-- ************************************************************** + +ProtocolExtensionContainer {SBC-AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= + SEQUENCE (SIZE (1..maxProtocolExtensions)) OF + ProtocolExtensionField {{ExtensionSetParam}} + +ProtocolExtensionField {SBC-AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE { + id SBC-AP-PROTOCOL-EXTENSION.&id ({ExtensionSetParam}), + criticality SBC-AP-PROTOCOL-EXTENSION.&criticality ({ExtensionSetParam}{@id}), + extensionValue SBC-AP-PROTOCOL-EXTENSION.&Extension ({ExtensionSetParam}{@id}) +} + + +END diff --git a/epan/dissectors/asn1/sbc-ap/SBC-AP-IEs.asn b/epan/dissectors/asn1/sbc-ap/SBC-AP-IEs.asn new file mode 100644 index 00000000..3cfa8472 --- /dev/null +++ b/epan/dissectors/asn1/sbc-ap/SBC-AP-IEs.asn @@ -0,0 +1,650 @@ +-- SBC-AP-IEs.asn +-- +-- Taken from 3GPP TS 29.168 V15.1.0 (2018-09) +-- http://www.3gpp.org/ftp/Specs/archive/29_series/29.168/29168-930.zip +-- +-- 4.4.5 Information Element Definitions +-- + +-- ************************************************************** +-- +-- Information Element Definitions +-- +-- ************************************************************** + +SBC-AP-IEs { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +eps-Access (21) modules (3) sbc-AP (3) version1 (1) sbc-AP-IEs (2)} + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +IMPORTS + maxNrOfErrors, + maxNrOfTAIs, + maxnoofTAIforWarning, + maxnoofCellID, + maxnoofEmergencyAreaID, + + id-TypeOfError, + maxnoofCellinEAI, + maxnoofCellinTAI, + maxnoofeNBIds, + maxnoofRestartTAIs, + maxnoofRestartEAIs, + maxnoofRestartedCells, + maxnoofFailedCells, + maxnoof5GSTAIs, + maxnoofCellsingNB, + maxnoofCellsin5GS, + maxnoofCellsforRestartNR, + maxnoofRANNodes, + maxnoofRestart5GSTAIs, + maxnoofCellsin5GSTAI + +FROM SBC-AP-Constants + + Criticality, + ProcedureCode, + TriggeringMessage, + ProtocolIE-ID +FROM SBC-AP-CommonDataTypes + + ProtocolExtensionContainer{}, + + SBC-AP-PROTOCOL-EXTENSION +FROM SBC-AP-Containers; + + +-- A + +-- B + +Broadcast-Scheduled-Area-List ::= SEQUENCE { + cellId-Broadcast-List CellId-Broadcast-List OPTIONAL, + tAI-Broadcast-List TAI-Broadcast-List OPTIONAL, + emergencyAreaID-Broadcast-List EmergencyAreaID-Broadcast-List OPTIONAL, + iE-Extensions ProtocolExtensionContainer {{Broadcast-Scheduled-Area-List-ExtIEs}} OPTIONAL, + ... +} + +Broadcast-Scheduled-Area-List-ExtIEs SBC-AP-PROTOCOL-EXTENSION ::= { + ... +} + +Broadcast-Scheduled-Area-List-5GS ::= SEQUENCE { + cellId-Broadcast-List-5GS CellId-Broadcast-List-5GS OPTIONAL, + tAI-Broadcast-List-5GS TAI-Broadcast-List-5GS OPTIONAL, + emergencyAreaID-Broadcast-List EmergencyAreaID-Broadcast-List OPTIONAL, + iE-Extensions ProtocolExtensionContainer {{Broadcast-Scheduled-Area-List-5GS-ExtIEs}} OPTIONAL, + ... +} + +Broadcast-Scheduled-Area-List-5GS-ExtIEs SBC-AP-PROTOCOL-EXTENSION ::= { + ... +} + +Broadcast-Cancelled-Area-List ::= SEQUENCE { + cellID-Cancelled-List CellID-Cancelled-List OPTIONAL, + tAI-Cancelled-List TAI-Cancelled-List OPTIONAL, + emergencyAreaID-Cancelled-List EmergencyAreaID-Cancelled-List OPTIONAL, + iE-Extensions ProtocolExtensionContainer {{Broadcast-Cancelled-Area-List-ExtIEs}} OPTIONAL, + ... +} + +Broadcast-Cancelled-Area-List-ExtIEs SBC-AP-PROTOCOL-EXTENSION ::= { + ... +} + +Broadcast-Cancelled-Area-List-5GS ::= SEQUENCE { + cellID-Cancelled-List-5GS CellID-Cancelled-List-5GS OPTIONAL, + tAI-Cancelled-List-5GS TAI-Cancelled-List-5GS OPTIONAL, + emergencyAreaID-Cancelled-List EmergencyAreaID-Cancelled-List OPTIONAL, + iE-Extensions ProtocolExtensionContainer {{Broadcast-Cancelled-Area-List-5GS-ExtIEs}} OPTIONAL, + ... +} + +Broadcast-Cancelled-Area-List-5GS-ExtIEs SBC-AP-PROTOCOL-EXTENSION ::= { + ... +} + + +Broadcast-Empty-Area-List ::= SEQUENCE (SIZE (1.. maxnoofeNBIds)) OF Global-ENB-ID + +Broadcast-Empty-Area-List-5GS ::= SEQUENCE (SIZE (1.. maxnoofRANNodes)) OF Global-RAN-Node-ID + + +-- C + +CancelledCellinEAI ::= SEQUENCE (SIZE(1..maxnoofCellinEAI)) OF CancelledCellinEAI-Item + +CancelledCellinEAI-Item ::= SEQUENCE { + eCGI EUTRAN-CGI, + numberOfBroadcasts NumberOfBroadcasts, + iE-Extensions ProtocolExtensionContainer { {CancelledCellinEAI-Item-ExtIEs} } OPTIONAL, + ... +} + +CancelledCellinEAI-Item-ExtIEs SBC-AP-PROTOCOL-EXTENSION ::= { + ... +} +CancelledCellinTAI ::= SEQUENCE (SIZE(1..maxnoofCellinTAI)) OF CancelledCellinTAI-Item + +CancelledCellinTAI-Item ::= SEQUENCE{ + eCGI EUTRAN-CGI, + numberOfBroadcasts NumberOfBroadcasts, + iE-Extensions ProtocolExtensionContainer { {CancelledCellinTAI-Item-ExtIEs} } OPTIONAL, + ... +} + +CancelledCellinTAI-Item-ExtIEs SBC-AP-PROTOCOL-EXTENSION ::= { + ... +} + +CancelledCellinTAI-5GS ::= SEQUENCE (SIZE(1..maxnoofCellsin5GSTAI)) OF + SEQUENCE{ + nR-CGI NR-CGI, + numberOfBroadcasts NumberOfBroadcasts, + iE-Extensions ProtocolExtensionContainer { {CancelledCellinTAI-5GS-ExtIEs} } OPTIONAL, + ... +} + +CancelledCellinTAI-5GS-ExtIEs SBC-AP-PROTOCOL-EXTENSION ::= { + ... +} + +Cause ::= INTEGER { + message-accepted (0), + parameter-not-recognised (1), + parameter-value-invalid (2), + valid-message-not-identified (3), + tracking-area-not-valid (4), + unrecognised-message (5), + missing-mandatory-element (6), + mME-capacity-exceeded (7), + mME-memory-exceeded (8), + warning-broadcast-not-supported (9), + warning-broadcast-not-operational (10), + message-reference-already-used (11), + unspecifed-error (12), + transfer-syntax-error (13), + semantic-error (14), + message-not-compatible-with-receiver-state (15), + abstract-syntax-error-reject (16), + abstract-syntax-error-ignore-and-notify (17), + abstract-syntax-error-falsely-constructed-message (18) +} (0..255) + +CellId-Broadcast-List ::= SEQUENCE (SIZE(1..maxnoofCellID)) OF CellId-Broadcast-List-Item + +CellId-Broadcast-List-Item ::= SEQUENCE { + eCGI EUTRAN-CGI, + iE-Extensions ProtocolExtensionContainer { {CellId-Broadcast-List-Item-ExtIEs} } OPTIONAL, + ... +} + +CellId-Broadcast-List-Item-ExtIEs SBC-AP-PROTOCOL-EXTENSION ::= { + ... +} + +CellId-Broadcast-List-5GS ::= SEQUENCE (SIZE(1..maxnoofCellsin5GS)) OF + SEQUENCE { + nR-CGI NR-CGI, + iE-Extensions ProtocolExtensionContainer { {CellId-Broadcast-List-5GS-ExtIEs} } OPTIONAL, + ... +} + +CellId-Broadcast-List-5GS-ExtIEs SBC-AP-PROTOCOL-EXTENSION ::= { + ... +} + +CellID-Cancelled-List ::= SEQUENCE (SIZE(1..maxnoofCellID)) OF CellID-Cancelled-Item + +CellID-Cancelled-Item ::= SEQUENCE { + eCGI EUTRAN-CGI, + numberOfBroadcasts NumberOfBroadcasts, + iE-Extensions ProtocolExtensionContainer { {CellID-Cancelled-Item-ExtIEs} } OPTIONAL, + ... +} + +CellID-Cancelled-Item-ExtIEs SBC-AP-PROTOCOL-EXTENSION ::= { + ... +} + +CellID-Cancelled-List-5GS ::= SEQUENCE (SIZE(1..maxnoofCellsin5GS)) OF + SEQUENCE { + nR-CGI NR-CGI, + numberOfBroadcasts NumberOfBroadcasts, + iE-Extensions ProtocolExtensionContainer { {CellID-Cancelled-5GS-ExtIEs} } OPTIONAL, + ... +} + +CellID-Cancelled-5GS-ExtIEs SBC-AP-PROTOCOL-EXTENSION ::= { + ... +} + + + +CellIdentity ::= BIT STRING (SIZE (28)) + +Concurrent-Warning-Message-Indicator ::= ENUMERATED {true} + +Criticality-Diagnostics ::= SEQUENCE { + procedureCode ProcedureCode OPTIONAL, + triggeringMessage TriggeringMessage OPTIONAL, + procedureCriticality Criticality OPTIONAL, + iE-CriticalityDiagnostics CriticalityDiagnostics-IE-List OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {CriticalityDiagnostics-ExtIEs} } OPTIONAL, + ... +} + +CriticalityDiagnostics-ExtIEs SBC-AP-PROTOCOL-EXTENSION ::= { + ... +} + +CriticalityDiagnostics-IE-List ::= SEQUENCE (SIZE (1..maxNrOfErrors)) OF + SEQUENCE { + iECriticality Criticality, + iE-ID ProtocolIE-ID, + typeOfError TypeOfError, + iE-Extensions ProtocolExtensionContainer {{CriticalityDiagnostics-IE-Item-ExtIEs}} OPTIONAL, + ... +} + +CriticalityDiagnostics-IE-Item-ExtIEs SBC-AP-PROTOCOL-EXTENSION ::= { + ... +} + + + +-- D + +Data-Coding-Scheme ::= BIT STRING (SIZE (8)) + +-- E + +ECGIList ::= SEQUENCE (SIZE(1..maxnoofCellID)) OF EUTRAN-CGI + +Emergency-Area-ID-List ::= SEQUENCE (SIZE(1..maxnoofEmergencyAreaID)) OF Emergency-Area-ID + +Emergency-Area-ID ::= OCTET STRING (SIZE (3)) + +EmergencyAreaID-Broadcast-List ::= SEQUENCE (SIZE(1..maxnoofEmergencyAreaID)) OF EmergencyAreaID-Broadcast-List-Item + +EmergencyAreaID-Broadcast-List-Item ::= SEQUENCE { + emergencyAreaID Emergency-Area-ID, + scheduledCellinEAI ScheduledCellinEAI, + iE-Extensions ProtocolExtensionContainer { {EmergencyAreaID-Broadcast-List-Item-ExtIEs} } OPTIONAL, + ... +} + +EmergencyAreaID-Broadcast-List-Item-ExtIEs SBC-AP-PROTOCOL-EXTENSION ::= { + ... +} + +EmergencyAreaID-Cancelled-List ::= SEQUENCE (SIZE(1..maxnoofEmergencyAreaID)) OF EmergencyAreaID-Cancelled-Item + +EmergencyAreaID-Cancelled-Item ::= SEQUENCE { + emergencyAreaID Emergency-Area-ID, + cancelledCellinEAI CancelledCellinEAI, + iE-Extensions ProtocolExtensionContainer { {EmergencyAreaID-Cancelled-Item-ExtIEs} } OPTIONAL, + ... +} + +EmergencyAreaID-Cancelled-Item-ExtIEs SBC-AP-PROTOCOL-EXTENSION ::= { + ... +} + +EUTRAN-CGI ::= SEQUENCE { + pLMNidentity PLMNidentity, + cell-ID CellIdentity, + iE-Extensions ProtocolExtensionContainer { {EUTRAN-CGI-ExtIEs} } OPTIONAL, + ... +} + +EUTRAN-CGI-ExtIEs SBC-AP-PROTOCOL-EXTENSION ::= { + ... +} + +Extended-Repetition-Period ::= INTEGER (4096..131071) + +ENB-ID ::= CHOICE { + macroENB-ID BIT STRING (SIZE(20)), + homeENB-ID BIT STRING (SIZE(28)), + ..., + short-macroENB-ID BIT STRING (SIZE(18)), + long-macroENB-ID BIT STRING (SIZE(21)) +} + + +-- F + +Failed-Cell-List ::= SEQUENCE (SIZE(1..maxnoofFailedCells)) OF EUTRAN-CGI + +Failed-Cell-List-NR ::= SEQUENCE (SIZE(1..maxnoofCellsingNB)) OF NR-CGI + +-- G + +Global-ENB-ID ::= SEQUENCE { + pLMNidentity PLMNidentity, + eNB-ID ENB-ID, + iE-Extensions ProtocolExtensionContainer { {GlobalENB-ID-ExtIEs} } OPTIONAL, + ... +} + +GlobalENB-ID-ExtIEs SBC-AP-PROTOCOL-EXTENSION ::= { + ... +} + +Global-RAN-Node-ID ::= CHOICE { + global-GNB-ID Global-GNB-ID, + global-NgENB-ID Global-NgENB-ID, + ... +} + +Global-GNB-ID ::= SEQUENCE { + pLMNidentity PLMNidentity, + gNB-ID GNB-ID, + iE-Extensions ProtocolExtensionContainer { {Global-GNB-ID-ExtIEs} } OPTIONAL, + ... +} + +Global-GNB-ID-ExtIEs SBC-AP-PROTOCOL-EXTENSION ::= { + ... +} + +GNB-ID ::= CHOICE { + gNB-ID BIT STRING (SIZE(22..32)), + ... +} +Global-NgENB-ID ::= SEQUENCE { + pLMNidentity PLMNidentity, + ngENB-ID ENB-ID, + iE-Extensions ProtocolExtensionContainer { {Global-NgENB-ID-ExtIEs} } OPTIONAL, + ... +} + +Global-NgENB-ID-ExtIEs SBC-AP-PROTOCOL-EXTENSION ::= { + ... +} + + + +-- H + +-- I + +-- J + +-- K + +-- L + +List-of-TAIs ::= SEQUENCE (SIZE (1..maxNrOfTAIs)) OF + SEQUENCE { + tai TAI +} + +List-of-TAIs-Restart ::= SEQUENCE (SIZE (1..maxnoofRestartTAIs)) OF + SEQUENCE { + tai TAI +} + + +List-of-EAIs-Restart ::= SEQUENCE (SIZE(1..maxnoofRestartEAIs)) OF Emergency-Area-ID + +List-of-5GS-TAIs ::= SEQUENCE (SIZE (1..maxnoof5GSTAIs)) OF TAI-5GS + +List-of-5GS-Cells-for-Failure ::= SEQUENCE ( SIZE(1..maxnoofCellsingNB)) OF NR-CGI + +List-of-5GS-TAI-for-Restart ::= SEQUENCE (SIZE (1..maxnoofRestart5GSTAIs)) OF TAI-5GS + + +-- M + +Message-Identifier ::= BIT STRING (SIZE (16)) + +-- N + +Number-of-Broadcasts-Requested ::= INTEGER (0..65535) + +-- For Number-of-Broadcasts-Requested = 0 and Repetition-Period = 0, then eNB action is no broadcast +-- for ETWS Secondary and CMAS. +-- +-- For Number-of-Broadcasts-Requested = 1 and Repetition-Period = 0, then eNB action is broadcast +-- only once for ETWS and CMAS. +-- +-- For Number-of-Broadcasts-Requested = 0 and Repetition-Period > 0, then eNB action is no broadcast +-- for the ETWS Secondary, and broadcast until further notice for the CMAS. +-- +-- For Number-of-Broadcasts-Requested > 0 and Repetition-Period > 0, then eNB action is normal +-- broadcast. +-- All other combinations of Number-of-Broadcasts-Requested and Repetition-Period are considered +-- invalid. + +NumberOfBroadcasts ::= INTEGER (0..65535) + +NR-CGIList ::= SEQUENCE (SIZE(1..maxnoofCellsingNB)) OF NR-CGI + +NR-CGI ::= SEQUENCE { + pLMNidentity PLMNidentity, + nRCellIdentity NRCellIdentity, + iE-Extensions ProtocolExtensionContainer { {NR-CGI-ExtIEs} } OPTIONAL, + ... +} + +NR-CGI-ExtIEs SBC-AP-PROTOCOL-EXTENSION ::= { + ... +} + +NRCellIdentity ::= BIT STRING (SIZE(36)) + +NgENB-ID ::= CHOICE { + macroNgENB-ID BIT STRING (SIZE(20)), + shortMacroNgENB-ID BIT STRING (SIZE(18)), + longMacroNgENB-ID BIT STRING (SIZE(21)), + ... +} + +-- O +Omc-Id ::= OCTET STRING (SIZE (1..20)) + + +-- P +PLMNidentity ::= TBCD-STRING + +-- Q + +-- R + +Repetition-Period ::= INTEGER (0..4096) +-- 1 to 4096: Each unit represents a repetition of one second to a maximum of +-- once per 4096 seconds (~1 hour). +-- 0: no repetition +-- A CBC compliant to this version or later of this specification shall not send a repetition period +-- greater than 4095. +-- For backwards compatibility with a CBC compliant to an earlier version of this specification the +-- maximum value of the repetition period defined in ASN.1 remains at 4096. +-- If the value of the Repetition Period IE received in the WRITE-REPLACE WARNING REQUEST message is +-- set to 4096, the MME shall set the Repetition Period IE to the maximum value 4095 supported on +-- the S1-MME interface as defined in [7] before forwarding to the selected eNBs. + +Restarted-Cell-List ::= SEQUENCE (SIZE(1.. maxnoofRestartedCells)) OF EUTRAN-CGI + +RAT-Selector-5GS ::= ENUMERATED {true} + +Restarted-Cell-List-NR ::= SEQUENCE (SIZE(1.. maxnoofCellsforRestartNR)) OF NR-CGI + + + +-- S + +ScheduledCellinEAI ::= SEQUENCE (SIZE(1..maxnoofCellinEAI)) OF ScheduledCellinEAI-Item + +ScheduledCellinEAI-Item ::= SEQUENCE { + eCGI EUTRAN-CGI, + iE-Extensions ProtocolExtensionContainer { {ScheduledCellinEAI-Item-ExtIEs} } OPTIONAL, + ... +} + +ScheduledCellinEAI-Item-ExtIEs SBC-AP-PROTOCOL-EXTENSION ::= { + ... +} + +ScheduledCellinTAI ::= SEQUENCE (SIZE(1..maxnoofCellinTAI)) OF ScheduledCellinTAI-Item + +ScheduledCellinTAI-Item ::= SEQUENCE{ + eCGI EUTRAN-CGI, + iE-Extensions ProtocolExtensionContainer { {ScheduledCellinTAI-Item-ExtIEs} } OPTIONAL, + ... +} + +ScheduledCellinTAI-Item-ExtIEs SBC-AP-PROTOCOL-EXTENSION ::= { + ... +} + +ScheduledCellinTAI-5GS ::= SEQUENCE (SIZE(1..maxnoofCellsin5GSTAI)) OF + SEQUENCE{ + nR-CGI NR-CGI, + iE-Extensions ProtocolExtensionContainer { {ScheduledCellinTAI-5GS-ExtIEs} } OPTIONAL, + ... +} + +ScheduledCellinTAI-5GS-ExtIEs SBC-AP-PROTOCOL-EXTENSION ::= { + ... +} + +Send-Write-Replace-Warning-Indication ::= ENUMERATED {true} + +Send-Stop-Warning-Indication ::= ENUMERATED {true} + +Serial-Number ::= BIT STRING (SIZE (16)) + +Stop-All-Indicator ::= ENUMERATED {true} + +-- T + +TAC ::= OCTET STRING (SIZE (2)) + +TAC-5GS ::= OCTET STRING (SIZE (3)) + +TAI-Broadcast-List ::= SEQUENCE (SIZE(1..maxnoofTAIforWarning)) OF TAI-Broadcast-List-Item + +TAI-Broadcast-List-Item ::= SEQUENCE { + tAI TAI, + scheduledCellinTAI ScheduledCellinTAI, + iE-Extensions ProtocolExtensionContainer { {TAI-Broadcast-List-Item-ExtIEs} } OPTIONAL, + ... +} + +TAI-Broadcast-List-Item-ExtIEs SBC-AP-PROTOCOL-EXTENSION ::= { + ... +} + +TAI-Broadcast-List-5GS ::= SEQUENCE (SIZE(1..maxnoof5GSTAIs)) OF + SEQUENCE { + tAI-5GS TAI-5GS, + scheduledCellinTAI-5GS ScheduledCellinTAI-5GS, + iE-Extensions ProtocolExtensionContainer { {TAI-Broadcast-List-5GS-ExtIEs} } OPTIONAL, + ... +} + +TAI-Broadcast-List-5GS-ExtIEs SBC-AP-PROTOCOL-EXTENSION ::= { + ... +} + + +TAI-Cancelled-List ::= SEQUENCE (SIZE(1..maxnoofTAIforWarning)) OF TAI-Cancelled-List-Item + +TAI-Cancelled-List-Item ::= SEQUENCE { + tAI TAI, + cancelledCellinTAI CancelledCellinTAI, + iE-Extensions ProtocolExtensionContainer { {TAI-Cancelled-List-Item-ExtIEs} } OPTIONAL, + ... +} + +TAI-Cancelled-List-Item-ExtIEs SBC-AP-PROTOCOL-EXTENSION ::= { + ... +} + +TAI-Cancelled-List-5GS ::= SEQUENCE (SIZE(1..maxnoof5GSTAIs)) OF + SEQUENCE { + tAI-5GS TAI-5GS, + cancelledCellinTAI-5GS CancelledCellinTAI-5GS, + iE-Extensions ProtocolExtensionContainer { {TAI-Cancelled-List-5GS-ExtIEs} } OPTIONAL, + ... +} + +TAI-Cancelled-List-5GS-ExtIEs SBC-AP-PROTOCOL-EXTENSION ::= { + ... +} + +TAI-List-for-Warning ::= SEQUENCE (SIZE(1.. maxnoofTAIforWarning)) OF TAI + +TAI ::= SEQUENCE { + pLMNidentity PLMNidentity, + tAC TAC, + iE-Extensions ProtocolExtensionContainer { {TAI-ExtIEs} } OPTIONAL +} + +TAI-ExtIEs SBC-AP-PROTOCOL-EXTENSION ::= { + ... +} + +TBCD-STRING ::= OCTET STRING (SIZE (3)) + +TypeOfError ::= ENUMERATED { + not-understood, + missing, + ... +} +TAI-5GS ::= SEQUENCE { + pLMNidentity PLMNidentity, + tAC-5GS TAC-5GS, + iE-Extensions ProtocolExtensionContainer { {TAI-5GS-ExtIEs} } OPTIONAL +} + +TAI-5GS-ExtIEs SBC-AP-PROTOCOL-EXTENSION ::= { + ... +} + + +-- U + +Unknown-Tracking-Area-List ::= SEQUENCE (SIZE(1.. maxNrOfTAIs)) OF TAI + +Unknown-5GS-Tracking-Area-List ::= SEQUENCE (SIZE(1.. maxnoof5GSTAIs)) OF TAI-5GS + + +-- V + +-- W + +Warning-Area-List ::= CHOICE { + cell-ID-List ECGIList, + tracking-Area-List-for-Warning TAI-List-for-Warning, + emergency-Area-ID-List Emergency-Area-ID-List, + ... +} + +Warning-Message-Content ::= OCTET STRING (SIZE (1..9600)) +Warning-Area-Coordinates ::= OCTET STRING (SIZE (1..1024)) +Warning-Security-Information ::= OCTET STRING (SIZE (50)) +Warning-Type ::= OCTET STRING (SIZE (2)) + +Warning-Area-List-5GS ::= CHOICE { + cell-ID-List ECGIList, + nR-CGIList NR-CGIList, + tAIList-5GS TAI-5GS, + emergencyAreaIDList Emergency-Area-ID-List, + ... +} + + + +-- X + +-- Y + +END diff --git a/epan/dissectors/asn1/sbc-ap/SBC-AP-PDU-Contents.asn b/epan/dissectors/asn1/sbc-ap/SBC-AP-PDU-Contents.asn new file mode 100644 index 00000000..11174328 --- /dev/null +++ b/epan/dissectors/asn1/sbc-ap/SBC-AP-PDU-Contents.asn @@ -0,0 +1,374 @@ +-- SBC-AP-PDU-Contents.asn +-- +-- Taken from 3GPP TS 29.168 V15.1.0 (2018-09) +-- http://www.3gpp.org/ftp/Specs/archive/29_series/29.168/29168-930.zip +-- +-- 4.4.4 PDU Definitions +-- + +-- ************************************************************** +-- +-- PDU definitions for SBC-AP. +-- +-- ************************************************************** + +SBC-AP-PDU-Contents { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +eps-Access (21) modules (3) sbc-AP (3) version1 (1) sbc-AP-PDU-Contents (1)} + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** + +IMPORTS + + Cause, + Concurrent-Warning-Message-Indicator, + Criticality-Diagnostics, + Data-Coding-Scheme, + Message-Identifier, + Serial-Number, + List-of-TAIs, + Warning-Area-List, + Omc-Id, + Repetition-Period, + Extended-Repetition-Period, + Number-of-Broadcasts-Requested, + Warning-Type, + Warning-Security-Information, + Warning-Message-Content, + Warning-Area-Coordinates, + Send-Write-Replace-Warning-Indication, + Broadcast-Scheduled-Area-List, + Unknown-Tracking-Area-List, + Send-Stop-Warning-Indication, + Broadcast-Cancelled-Area-List, + Stop-All-Indicator, + Broadcast-Empty-Area-List, + Restarted-Cell-List, + Global-ENB-ID, + List-of-TAIs-Restart, + List-of-EAIs-Restart, + Failed-Cell-List, + List-of-5GS-TAIs, + Warning-Area-List-5GS, + Global-RAN-Node-ID, + Global-GNB-ID, + RAT-Selector-5GS, + Unknown-5GS-Tracking-Area-List, + Broadcast-Scheduled-Area-List-5GS, + Broadcast-Cancelled-Area-List-5GS, + Broadcast-Empty-Area-List-5GS, + Restarted-Cell-List-NR, + Failed-Cell-List-NR, + List-of-5GS-TAI-for-Restart + +FROM SBC-AP-IEs + + ProtocolExtensionContainer{}, + ProtocolIE-Container{}, + SBC-AP-PROTOCOL-EXTENSION, + SBC-AP-PROTOCOL-IES +FROM SBC-AP-Containers + + id-Concurrent-Warning-Message-Indicator, + id-Criticality-Diagnostics, + id-Cause, + id-Data-Coding-Scheme, + id-List-of-TAIs, + id-Message-Identifier, + id-Serial-Number, + id-Number-of-Broadcasts-Requested, + id-Omc-Id, + id-Radio-Resource-Loading-List, + id-Recovery-Indication, + id-Repetition-Period, + id-Extended-Repetition-Period, + id-Warning-Area-List, + id-Warning-Message-Content, + id-Warning-Area-Coordinates, + id-Warning-Security-Information, + id-Warning-Type, + id-Send-Write-Replace-Warning-Indication, + id-Broadcast-Scheduled-Area-List, + id-Unknown-Tracking-Area-List, + id-Send-Stop-Warning-Indication, + id-Broadcast-Cancelled-Area-List, + id-Stop-All-Indicator, + id-Broadcast-Empty-Area-List, + id-Global-ENB-ID, + id-Restarted-Cell-List, + id-List-of-TAIs-Restart, + id-List-of-EAIs-Restart, + id-Failed-Cell-List, + id-List-of-5GS-TAIs, + id-Warning-Area-List-5GS, + id-Global-RAN-Node-ID, + id-Global-GNB-ID, + id-RAT-Selector-5GS, + id-Unknown-5GS-Tracking-Area-List, + id-Broadcast-Scheduled-Area-List-5GS, + id-Broadcast-Cancelled-Area-List-5GS, + id-Broadcast-Empty-Area-List-5GS, + id-Restarted-Cell-List-NR, + id-Failed-Cell-List-NR, + id-List-of-5GS-TAI-for-Restart + +FROM SBC-AP-Constants; + +-- ************************************************************** +-- +-- Write-Replace-Warning-Request +-- +-- ************************************************************** + +Write-Replace-Warning-Request ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {Write-Replace-Warning-Request-IEs} }, + protocolExtensions ProtocolExtensionContainer { {Write-Replace-Warning-Request-Extensions} } OPTIONAL, + ... +} + +Write-Replace-Warning-Request-IEs SBC-AP-PROTOCOL-IES ::= { + { ID id-Message-Identifier CRITICALITY reject TYPE Message-Identifier PRESENCE mandatory } | + { ID id-Serial-Number CRITICALITY reject TYPE Serial-Number PRESENCE mandatory } | + { ID id-List-of-TAIs CRITICALITY reject TYPE List-of-TAIs PRESENCE optional } | + { ID id-Warning-Area-List CRITICALITY ignore TYPE Warning-Area-List PRESENCE optional } | + { ID id-Repetition-Period CRITICALITY reject TYPE Repetition-Period PRESENCE mandatory } | + { ID id-Extended-Repetition-Period CRITICALITY reject TYPE Extended-Repetition-Period PRESENCE optional } | + + { ID id-Number-of-Broadcasts-Requested + CRITICALITY reject TYPE Number-of-Broadcasts-Requested PRESENCE mandatory } | + { ID id-Warning-Type CRITICALITY ignore TYPE Warning-Type PRESENCE optional } | + { ID id-Warning-Security-Information CRITICALITY ignore TYPE Warning-Security-Information PRESENCE optional } | + { ID id-Data-Coding-Scheme CRITICALITY ignore TYPE Data-Coding-Scheme PRESENCE optional } | + { ID id-Warning-Message-Content + CRITICALITY ignore TYPE Warning-Message-Content PRESENCE optional } | + { ID id-Omc-Id CRITICALITY ignore TYPE Omc-Id PRESENCE optional } | + { ID id-Concurrent-Warning-Message-Indicator CRITICALITY reject TYPE Concurrent-Warning-Message-Indicator PRESENCE optional } | + { ID id-Send-Write-Replace-Warning-Indication CRITICALITY ignore TYPE Send-Write-Replace-Warning-Indication PRESENCE optional } | + { ID id-Global-ENB-ID CRITICALITY ignore TYPE Global-ENB-ID PRESENCE optional }, + ... , + {ID id-Warning-Area-Coordinates CRITICALITY ignore TYPE Warning-Area-Coordinates PRESENCE optional} +} + +Write-Replace-Warning-Request-Extensions SBC-AP-PROTOCOL-EXTENSION ::= { + { ID id-List-of-5GS-TAIs CRITICALITY ignore EXTENSION List-of-5GS-TAIs PRESENCE optional }| + { ID id-Warning-Area-List-5GS CRITICALITY ignore EXTENSION Warning-Area-List-5GS PRESENCE optional }| + { ID id-Global-RAN-Node-ID CRITICALITY ignore EXTENSION Global-RAN-Node-ID PRESENCE optional }| + { ID id-RAT-Selector-5GS CRITICALITY ignore EXTENSION RAT-Selector-5GS PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- Write-Replace-Warning-Response +-- +-- ************************************************************** + +Write-Replace-Warning-Response ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {Write-Replace-Warning-Response-IEs} }, + protocolExtensions ProtocolExtensionContainer { {Write-Replace-Warning-Response-Extensions} } OPTIONAL, + ... +} + +Write-Replace-Warning-Response-IEs SBC-AP-PROTOCOL-IES ::= { + { ID id-Message-Identifier CRITICALITY reject TYPE Message-Identifier PRESENCE mandatory } | + { ID id-Serial-Number CRITICALITY reject TYPE Serial-Number PRESENCE mandatory } | + { ID id-Cause CRITICALITY reject TYPE Cause PRESENCE mandatory } | + { ID id-Criticality-Diagnostics CRITICALITY ignore TYPE Criticality-Diagnostics PRESENCE optional } | + { ID id-Unknown-Tracking-Area-List CRITICALITY ignore TYPE List-of-TAIs PRESENCE optional }, + ... +} + +Write-Replace-Warning-Response-Extensions SBC-AP-PROTOCOL-EXTENSION ::= { + { ID id-Unknown-5GS-Tracking-Area-List CRITICALITY ignore EXTENSION Unknown-5GS-Tracking-Area-List PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- Stop-Warning-Request +-- +-- ************************************************************** + +Stop-Warning-Request ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {Stop-Warning-Request-IEs} }, + protocolExtensions ProtocolExtensionContainer { {Stop-Warning-Request-Extensions} } OPTIONAL, + ... +} + +Stop-Warning-Request-IEs SBC-AP-PROTOCOL-IES ::= { + { ID id-Message-Identifier CRITICALITY reject TYPE Message-Identifier PRESENCE mandatory } | + { ID id-Serial-Number CRITICALITY reject TYPE Serial-Number PRESENCE mandatory } | + { ID id-List-of-TAIs CRITICALITY reject TYPE List-of-TAIs PRESENCE optional } | + { ID id-Warning-Area-List CRITICALITY ignore TYPE Warning-Area-List PRESENCE optional }| + { ID id-Omc-Id CRITICALITY ignore TYPE Omc-Id PRESENCE optional } | + { ID id-Send-Stop-Warning-Indication CRITICALITY ignore TYPE Send-Stop-Warning-Indication PRESENCE optional } | + { ID id-Stop-All-Indicator CRITICALITY reject TYPE Stop-All-Indicator PRESENCE optional}, + ... +} + +Stop-Warning-Request-Extensions SBC-AP-PROTOCOL-EXTENSION ::= { + { ID id-List-of-5GS-TAIs CRITICALITY ignore EXTENSION List-of-5GS-TAIs PRESENCE optional }| + { ID id-Warning-Area-List-5GS CRITICALITY ignore EXTENSION Warning-Area-List-5GS PRESENCE optional } | { ID id-RAT-Selector-5GS CRITICALITY ignore EXTENSION RAT-Selector-5GS PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- Stop-Warning-Response +-- +-- ************************************************************** + +Stop-Warning-Response ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {Stop-Warning-Response-IEs} }, + protocolExtensions ProtocolExtensionContainer { {Stop-Warning-Response-Extensions} } OPTIONAL, + ... +} + +Stop-Warning-Response-IEs SBC-AP-PROTOCOL-IES ::= { + { ID id-Message-Identifier CRITICALITY reject TYPE Message-Identifier PRESENCE mandatory } | + { ID id-Serial-Number CRITICALITY reject TYPE Serial-Number PRESENCE mandatory } | + { ID id-Cause CRITICALITY reject TYPE Cause PRESENCE mandatory } | + { ID id-Criticality-Diagnostics CRITICALITY ignore TYPE Criticality-Diagnostics PRESENCE optional } | + { ID id-Unknown-Tracking-Area-List CRITICALITY ignore TYPE List-of-TAIs PRESENCE optional }, + ... +} + +Stop-Warning-Response-Extensions SBC-AP-PROTOCOL-EXTENSION ::= { + { ID id-Unknown-5GS-Tracking-Area-List CRITICALITY ignore EXTENSION Unknown-5GS-Tracking-Area-List PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- Write-Replace-Warning-Indication +-- +-- ************************************************************** + +Write-Replace-Warning-Indication ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {Write-Replace-Warning-Indication-IEs} }, + protocolExtensions ProtocolExtensionContainer { {Write-Replace-Warning-Indication-Extensions} } OPTIONAL, + ... +} + +Write-Replace-Warning-Indication-IEs SBC-AP-PROTOCOL-IES ::= { + { ID id-Message-Identifier CRITICALITY reject TYPE Message-Identifier PRESENCE mandatory } | + { ID id-Serial-Number CRITICALITY reject TYPE Serial-Number PRESENCE mandatory } | + { ID id-Broadcast-Scheduled-Area-List CRITICALITY reject TYPE Broadcast-Scheduled-Area-List PRESENCE optional }, + ... +} + +Write-Replace-Warning-Indication-Extensions SBC-AP-PROTOCOL-EXTENSION ::= { + { ID id-Broadcast-Scheduled-Area-List-5GS CRITICALITY ignore EXTENSION Broadcast-Scheduled-Area-List-5GS PRESENCE optional }, + + ... +} + +-- ************************************************************** +-- +-- Stop-Warning-Indication +-- +-- ************************************************************** + +Stop-Warning-Indication ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {Stop-Warning-Indication-IEs} }, + protocolExtensions ProtocolExtensionContainer { {Stop-Warning-Indication-Extensions} } OPTIONAL, + ... +} + +Stop-Warning-Indication-IEs SBC-AP-PROTOCOL-IES ::= { + { ID id-Message-Identifier CRITICALITY reject TYPE Message-Identifier PRESENCE mandatory } | + { ID id-Serial-Number CRITICALITY reject TYPE Serial-Number PRESENCE mandatory } | + { ID id-Broadcast-Cancelled-Area-List CRITICALITY reject TYPE Broadcast-Cancelled-Area-List PRESENCE optional }| + { ID id-Broadcast-Empty-Area-List CRITICALITY ignore TYPE Broadcast-Empty-Area-List PRESENCE optional }, + ... +} + +Stop-Warning-Indication-Extensions SBC-AP-PROTOCOL-EXTENSION ::= { + { ID id-Broadcast-Cancelled-Area-List-5GS CRITICALITY ignore EXTENSION Broadcast-Cancelled-Area-List-5GS PRESENCE optional }| + { ID id-Broadcast-Empty-Area-List-5GS CRITICALITY ignore EXTENSION Broadcast-Empty-Area-List-5GS PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- PWS-Restart-Indication +-- +-- ************************************************************** + +PWS-Restart-Indication ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {PWS-Restart-Indication-IEs} }, + protocolExtensions ProtocolExtensionContainer { {PWS-Restart-Indication-Extensions} } OPTIONAL, + ... +} + +PWS-Restart-Indication-IEs SBC-AP-PROTOCOL-IES ::= { + { ID id-Restarted-Cell-List CRITICALITY reject TYPE Restarted-Cell-List PRESENCE mandatory }| + { ID id-Global-ENB-ID CRITICALITY reject TYPE Global-ENB-ID PRESENCE mandatory } | + { ID id-List-of-TAIs-Restart CRITICALITY reject TYPE List-of-TAIs-Restart PRESENCE mandatory } | + { ID id-List-of-EAIs-Restart CRITICALITY reject TYPE List-of-EAIs-Restart PRESENCE optional }, + ... +} + +PWS-Restart-Indication-Extensions SBC-AP-PROTOCOL-EXTENSION ::= { + { ID id-Restarted-Cell-List-NR CRITICALITY ignore EXTENSION Restarted-Cell-List-NR PRESENCE optional }| + { ID id-List-of-5GS-TAI-for-Restart CRITICALITY ignore EXTENSION List-of-5GS-TAI-for-Restart PRESENCE optional }| +{ ID id-Global-GNB-ID CRITICALITY ignore EXTENSION Global-GNB-ID PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- PWS-Failure-Indication +-- +-- ************************************************************** + +PWS-Failure-Indication ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {PWS-Failure-Indication-IEs} }, + protocolExtensions ProtocolExtensionContainer { {PWS-Failure-Indication-Extensions} } OPTIONAL, + ... +} + +PWS-Failure-Indication-IEs SBC-AP-PROTOCOL-IES ::= { + { ID id-Failed-Cell-List CRITICALITY reject TYPE Failed-Cell-List PRESENCE mandatory }| + { ID id-Global-ENB-ID CRITICALITY reject TYPE Global-ENB-ID PRESENCE mandatory }, + ... +} + +PWS-Failure-Indication-Extensions SBC-AP-PROTOCOL-EXTENSION ::= { + { ID id-Failed-Cell-List-NR CRITICALITY ignore EXTENSION Failed-Cell-List-NR PRESENCE optional }| + { ID id-Global-GNB-ID CRITICALITY ignore EXTENSION Global-GNB-ID PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- ERROR INDICATION ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Error Indication +-- +-- ************************************************************** + +Error-Indication ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{ErrorIndicationIEs}}, + ... +} + +ErrorIndicationIEs SBC-AP-PROTOCOL-IES ::= { + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE optional } | + { ID id-Criticality-Diagnostics CRITICALITY ignore TYPE Criticality-Diagnostics PRESENCE optional } , + ... +} + +END diff --git a/epan/dissectors/asn1/sbc-ap/SBC-AP-PDU-Descriptions.asn b/epan/dissectors/asn1/sbc-ap/SBC-AP-PDU-Descriptions.asn new file mode 100644 index 00000000..fbb80d53 --- /dev/null +++ b/epan/dissectors/asn1/sbc-ap/SBC-AP-PDU-Descriptions.asn @@ -0,0 +1,179 @@ +-- SBC-AP-PDU-Descriptions.asn +-- +-- Taken from 3GPP TS 29.168 V15.1.0 (2018-09) +-- http://www.3gpp.org/ftp/Specs/archive/29_series/29.168/29168-930.zip +-- +-- 4.4.3 Elementary Procedure Definitions +-- + +-- ************************************************************** +-- +-- Elementary Procedure definitions +-- +-- ************************************************************** + +SBC-AP-PDU-Descriptions { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +eps-Access (21) modules (3) sbc-AP (3) version1 (1) sbc-AP-PDU-Descriptions (0)} + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** + +IMPORTS + Criticality, + ProcedureCode +FROM SBC-AP-CommonDataTypes + + Write-Replace-Warning-Request, + Write-Replace-Warning-Response, + Stop-Warning-Request, + Stop-Warning-Response, + Error-Indication, + Write-Replace-Warning-Indication, + Stop-Warning-Indication, + PWS-Restart-Indication, + PWS-Failure-Indication +FROM SBC-AP-PDU-Contents + + id-Write-Replace-Warning, + id-Stop-Warning, + id-Error-Indication, + id-Write-Replace-Warning-Indication, + id-Stop-Warning-Indication, + id-PWS-Restart-Indication, + id-PWS-Failure-Indication +FROM SBC-AP-Constants; + +-- ************************************************************** +-- +-- Interface Elementary Procedure Class +-- +-- ************************************************************** + +SBC-AP-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 Definition +-- +-- ************************************************************** + +SBC-AP-PDU ::= CHOICE { + initiatingMessage InitiatingMessage, + successfulOutcome SuccessfulOutcome, + unsuccessfulOutcome UnsuccessfulOutcome, + ... +} + +InitiatingMessage ::= SEQUENCE { + procedureCode SBC-AP-ELEMENTARY-PROCEDURE.&procedureCode ({SBC-AP-ELEMENTARY-PROCEDURES}), + criticality SBC-AP-ELEMENTARY-PROCEDURE.&criticality ({SBC-AP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value SBC-AP-ELEMENTARY-PROCEDURE.&InitiatingMessage ({SBC-AP-ELEMENTARY-PROCEDURES}{@procedureCode}) +} + +SuccessfulOutcome ::= SEQUENCE { + procedureCode SBC-AP-ELEMENTARY-PROCEDURE.&procedureCode ({SBC-AP-ELEMENTARY-PROCEDURES}), + criticality SBC-AP-ELEMENTARY-PROCEDURE.&criticality ({SBC-AP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value SBC-AP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({SBC-AP-ELEMENTARY-PROCEDURES}{@procedureCode}) +} + +UnsuccessfulOutcome ::= SEQUENCE { + procedureCode SBC-AP-ELEMENTARY-PROCEDURE.&procedureCode ({SBC-AP-ELEMENTARY-PROCEDURES}), + criticality SBC-AP-ELEMENTARY-PROCEDURE.&criticality ({SBC-AP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value SBC-AP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({SBC-AP-ELEMENTARY-PROCEDURES}{@procedureCode}) +} + +-- ************************************************************** +-- +-- Interface Elementary Procedure List +-- +-- ************************************************************** + +SBC-AP-ELEMENTARY-PROCEDURES SBC-AP-ELEMENTARY-PROCEDURE ::= { + SBC-AP-ELEMENTARY-PROCEDURES-CLASS-1 | + SBC-AP-ELEMENTARY-PROCEDURES-CLASS-2 , + ... +} + +SBC-AP-ELEMENTARY-PROCEDURES-CLASS-1 SBC-AP-ELEMENTARY-PROCEDURE ::= { + write-Replace-Warning | + stop-Warning , + ... +} + +SBC-AP-ELEMENTARY-PROCEDURES-CLASS-2 SBC-AP-ELEMENTARY-PROCEDURE ::= { + error-Indication | + write-Replace-Warning-Indication | + stop-Warning-Indication | + pws-Restart-Indication | + pws-Failure-Indication, + ... + } + +write-Replace-Warning SBC-AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE Write-Replace-Warning-Request + SUCCESSFUL OUTCOME Write-Replace-Warning-Response + + PROCEDURE CODE id-Write-Replace-Warning + CRITICALITY reject +} + +stop-Warning SBC-AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE Stop-Warning-Request + SUCCESSFUL OUTCOME Stop-Warning-Response + + PROCEDURE CODE id-Stop-Warning + CRITICALITY reject +} + +error-Indication SBC-AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE Error-Indication + PROCEDURE CODE id-Error-Indication + CRITICALITY ignore +} + +write-Replace-Warning-Indication SBC-AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE Write-Replace-Warning-Indication + PROCEDURE CODE id-Write-Replace-Warning-Indication + CRITICALITY ignore +} + +stop-Warning-Indication SBC-AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE Stop-Warning-Indication + PROCEDURE CODE id-Stop-Warning-Indication + CRITICALITY ignore +} + +pws-Restart-Indication SBC-AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE PWS-Restart-Indication + PROCEDURE CODE id-PWS-Restart-Indication + CRITICALITY ignore +} + +pws-Failure-Indication SBC-AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE PWS-Failure-Indication + PROCEDURE CODE id-PWS-Failure-Indication + CRITICALITY ignore +} + +END diff --git a/epan/dissectors/asn1/sbc-ap/packet-sbc-ap-template.c b/epan/dissectors/asn1/sbc-ap/packet-sbc-ap-template.c new file mode 100644 index 00000000..3b714f3d --- /dev/null +++ b/epan/dissectors/asn1/sbc-ap/packet-sbc-ap-template.c @@ -0,0 +1,272 @@ +/* packet-sbc-ap.c + * Routines for SBc Application Part (SBc-AP) packet dissection + * + * 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 29.168 + */ + +#include "config.h" + +#include <epan/packet.h> +#include <epan/strutil.h> +#include <epan/asn1.h> +#include <epan/sctpppids.h> +#include <epan/proto_data.h> + +#include "packet-ber.h" +#include "packet-per.h" +#include "packet-e212.h" +#include "packet-gsm_map.h" +#include "packet-s1ap.h" +#include "packet-lte-rrc.h" + +#define PNAME "SBc Application Part" +#define PSNAME "SBcAP" +#define PFNAME "sbcap" + +void proto_register_sbc_ap(void); +void proto_reg_handoff_sbc_ap(void); + +/* The registered port number for SBc-AP is 29168. + * The registered payload protocol identifier for SBc-AP is 24. + */ +#define SBC_AP_PORT 29168 +static dissector_handle_t sbc_ap_handle=NULL; + + +#include "packet-sbc-ap-val.h" + +/* Initialize the protocol and registered fields */ +static int proto_sbc_ap = -1; + +static int hf_sbc_ap_Serial_Number_gs = -1; +static int hf_sbc_ap_Serial_Number_msg_code = -1; +static int hf_sbc_ap_Serial_Number_upd_nb = -1; +static int hf_sbc_ap_Warning_Type_value = -1; +static int hf_sbc_ap_Warning_Type_emergency_user_alert = -1; +static int hf_sbc_ap_Warning_Type_popup = -1; +static int hf_sbc_ap_Warning_Message_Contents_nb_pages = -1; +static int hf_sbc_ap_Warning_Message_Contents_decoded_page = -1; +#include "packet-sbc-ap-hf.c" + +/* Initialize the subtree pointers */ +static int ett_sbc_ap = -1; +static int ett_sbc_ap_Serial_Number = -1; +static int ett_sbc_ap_Warning_Type = -1; +static int ett_sbc_ap_Data_Coding_Scheme = -1; +static int ett_sbc_ap_Warning_Message_Contents = -1; + +#include "packet-sbc-ap-ett.c" + +enum{ + INITIATING_MESSAGE, + SUCCESSFUL_OUTCOME, + UNSUCCESSFUL_OUTCOME +}; + +struct sbc_ap_private_data { + guint8 data_coding_scheme; + e212_number_type_t number_type; +}; + +/* Global variables */ +static guint32 ProcedureCode; +static guint32 ProtocolIE_ID; +static guint32 ProtocolExtensionID; +static int global_sbc_ap_port = SBC_AP_PORT; + +/* Dissector tables */ +static dissector_table_t sbc_ap_ies_dissector_table; +static dissector_table_t sbc_ap_extension_dissector_table; +static dissector_table_t sbc_ap_proc_imsg_dissector_table; +static dissector_table_t sbc_ap_proc_sout_dissector_table; +static dissector_table_t sbc_ap_proc_uout_dissector_table; + +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 *); + + +static struct sbc_ap_private_data* +sbc_ap_get_private_data(packet_info *pinfo) +{ + struct sbc_ap_private_data *sbc_ap_data = (struct sbc_ap_private_data*)p_get_proto_data(pinfo->pool, pinfo, proto_sbc_ap, 0); + if (!sbc_ap_data) { + sbc_ap_data = wmem_new0(pinfo->pool, struct sbc_ap_private_data); + p_add_proto_data(pinfo->pool, pinfo, proto_sbc_ap, 0, sbc_ap_data); + } + return sbc_ap_data; +} + +#include "packet-sbc-ap-fn.c" + +static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) +{ + return (dissector_try_uint(sbc_ap_ies_dissector_table, ProtocolIE_ID, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0; +} +/* Currently not used +static int dissect_ProtocolIEFieldPairFirstValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) +{ + return (dissector_try_uint(sbc_ap_ies_p1_dissector_table, ProtocolIE_ID, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0; +} + +static int dissect_ProtocolIEFieldPairSecondValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) +{ + return (dissector_try_uint(sbc_ap_ies_p2_dissector_table, ProtocolIE_ID, tvb, pinfo, tree)) ? 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(sbc_ap_extension_dissector_table, ProtocolExtensionID, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0; +} + +static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) +{ + return (dissector_try_uint(sbc_ap_proc_imsg_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? 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(sbc_ap_proc_sout_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? 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(sbc_ap_proc_uout_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0; +} + + +static int +dissect_sbc_ap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_) +{ + proto_item *sbc_ap_item = NULL; + proto_tree *sbc_ap_tree = NULL; + + /* make entry in the Protocol column on summary display */ + col_set_str(pinfo->cinfo, COL_PROTOCOL, PSNAME); + col_clear(pinfo->cinfo, COL_INFO); + + /* create the sbc_ap protocol tree */ + sbc_ap_item = proto_tree_add_item(tree, proto_sbc_ap, tvb, 0, -1, ENC_NA); + sbc_ap_tree = proto_item_add_subtree(sbc_ap_item, ett_sbc_ap); + + dissect_SBC_AP_PDU_PDU(tvb, pinfo, sbc_ap_tree, NULL); + + return tvb_captured_length(tvb); +} +/*--- proto_register_sbc_ap -------------------------------------------*/ +void proto_register_sbc_ap(void) { + + /* List of fields */ + static hf_register_info hf[] = { + { &hf_sbc_ap_Serial_Number_gs, + { "Geographical Scope", "sbc_ap.SerialNumber.gs", + FT_UINT16, BASE_DEC, VALS(s1ap_serialNumber_gs_vals), 0xc000, + NULL, HFILL }}, + { &hf_sbc_ap_Serial_Number_msg_code, + { "Message Code", "sbc_ap.SerialNumber.msg_code", + FT_UINT16, BASE_DEC, NULL, 0x3ff0, + NULL, HFILL }}, + { &hf_sbc_ap_Serial_Number_upd_nb, + { "Update Number", "sbc_ap.SerialNumber.upd_nb", + FT_UINT16, BASE_DEC, NULL, 0x000f, + NULL, HFILL }}, + { &hf_sbc_ap_Warning_Type_value, + { "Warning Type Value", "sbc-ap.WarningType.value", + FT_UINT16, BASE_DEC, VALS(s1ap_warningType_vals), 0xfe00, + NULL, HFILL }}, + { &hf_sbc_ap_Warning_Type_emergency_user_alert, + { "Emergency User Alert", "sbc-ap.WarningType.emergency_user_alert", + FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0100, + NULL, HFILL }}, + { &hf_sbc_ap_Warning_Type_popup, + { "Popup", "sbc-ap.WarningType.popup", + FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0080, + NULL, HFILL }}, + { &hf_sbc_ap_Warning_Message_Contents_nb_pages, + { "Number of Pages", "sbc-ap.WarningMessageContents.nb_pages", + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_sbc_ap_Warning_Message_Contents_decoded_page, + { "Decoded Page", "sbc-ap.WarningMessageContents.decoded_page", + FT_STRING, BASE_NONE, NULL, 0, + NULL, HFILL }}, +#include "packet-sbc-ap-hfarr.c" + }; + + /* List of subtrees */ + static gint *ett[] = { + &ett_sbc_ap, + &ett_sbc_ap_Serial_Number, + &ett_sbc_ap_Warning_Type, + &ett_sbc_ap_Data_Coding_Scheme, + &ett_sbc_ap_Warning_Message_Contents, +#include "packet-sbc-ap-ettarr.c" + }; + + + /* Register protocol */ + proto_sbc_ap = proto_register_protocol(PNAME, PSNAME, PFNAME); + /* Register fields and subtrees */ + proto_register_field_array(proto_sbc_ap, hf, array_length(hf)); + proto_register_subtree_array(ett, array_length(ett)); + + /* Register dissector */ + sbc_ap_handle = register_dissector(PFNAME, dissect_sbc_ap, proto_sbc_ap); + + /* Register dissector tables */ + sbc_ap_ies_dissector_table = register_dissector_table("sbc_ap.ies", "SBC-AP-PROTOCOL-IES", proto_sbc_ap, FT_UINT32, BASE_DEC); + sbc_ap_extension_dissector_table = register_dissector_table("sbc_ap.extension", "SBC-AP-PROTOCOL-EXTENSION", proto_sbc_ap, FT_UINT32, BASE_DEC); + sbc_ap_proc_imsg_dissector_table = register_dissector_table("sbc_ap.proc.imsg", "SBC-AP-ELEMENTARY-PROCEDURE InitiatingMessage", proto_sbc_ap, FT_UINT32, BASE_DEC); + sbc_ap_proc_sout_dissector_table = register_dissector_table("sbc_ap.proc.sout", "SBC-AP-ELEMENTARY-PROCEDURE SuccessfulOutcome", proto_sbc_ap, FT_UINT32, BASE_DEC); + sbc_ap_proc_uout_dissector_table = register_dissector_table("sbc_ap.proc.uout", "SBC-AP-ELEMENTARY-PROCEDURE UnsuccessfulOutcome", proto_sbc_ap, FT_UINT32, BASE_DEC); + + +} + + +/*--- proto_reg_handoff_sbc_ap ---------------------------------------*/ +void +proto_reg_handoff_sbc_ap(void) +{ + static gboolean inited = FALSE; + static guint SctpPort; + + if( !inited ) { + dissector_add_uint("sctp.ppi", SBC_AP_PAYLOAD_PROTOCOL_ID, sbc_ap_handle); + inited = TRUE; +#include "packet-sbc-ap-dis-tab.c" + } else { + if (SctpPort != 0) { + dissector_delete_uint("sctp.port", SctpPort, sbc_ap_handle); + } + } + + SctpPort = global_sbc_ap_port; + if (SctpPort != 0) { + dissector_add_uint("sctp.port", SctpPort, sbc_ap_handle); + } + +} + + +/* + * Editor modelines + * + * Local Variables: + * c-basic-offset: 2 + * tab-width: 8 + * indent-tabs-mode: nil + * End: + * + * ex: set shiftwidth=2 tabstop=8 expandtab: + * :indentSize=2:tabSize=8:noTabs=true: + */ diff --git a/epan/dissectors/asn1/sbc-ap/sbc-ap.cnf b/epan/dissectors/asn1/sbc-ap/sbc-ap.cnf new file mode 100644 index 00000000..08a2b1f1 --- /dev/null +++ b/epan/dissectors/asn1/sbc-ap/sbc-ap.cnf @@ -0,0 +1,377 @@ +# sbc-ap.cnf +# sbc-ap conformation file + +#.OPT +PER +ALIGNED +#.END + +#.EXPORTS + +#.PDU +SBC-AP-PDU + +#.MAKE_ENUM +ProcedureCode +ProtocolIE-ID + +#.NO_EMIT +TBCD-STRING +#.END + +#.OMIT_ASSIGNMENT +# Get rid of unused code warnings +ProtocolIE-ContainerList +Presence +Unknown-Tracking-Area-List +NgENB-ID +List-of-5GS-Cells-for-Failure + +#.TYPE_RENAME + +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 + +ProtocolExtensionField/id ext_id + +ProtocolIE-Field/value ie_field_value + +#.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(sbc_ap_ProtocolIE_ID_vals), "unknown (%d)")); + } +#.END + + + +#.FN_PARS ProtocolIE-Field/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolIEFieldValue +# Currently not used +# FN_PARS ProtocolIE-FieldPair/firstValue FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolIEFieldPairFirstValue +# FN_PARS ProtocolIE-FieldPair/secondValue FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolIEFieldPairSecondValue + +#.FN_PARS ProtocolExtensionID VAL_PTR=&ProtocolExtensionID +#.FN_PARS ProtocolExtensionField/extensionValue FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolExtensionFieldExtensionValue + +#.FN_PARS ProcedureCode VAL_PTR = &ProcedureCode +#.END + +#.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 + +#--- Parameterization is not supported in asn2wrs --- + +#ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, SBC-AP-PROTOCOL-IES : IEsSetParam} ::= +# SEQUENCE (SIZE (lowerBound..upperBound)) OF +# ProtocolIE-Container {{IEsSetParam}} + +# FN_PARS ProtocolIE-ContainerList +#MIN_VAL = asn1_param_get_integer(%(ACTX)s,"lowerBound") +#MAX_VAL = asn1_param_get_integer(%(ACTX)s,"upperBound") +# FN_HDR ProtocolIE-ContainerList +# static const asn1_par_def_t ProtocolIE_ContainerList_pars[] = { +# { "lowerBound", ASN1_PAR_INTEGER }, +# { "upperBound", ASN1_PAR_INTEGER }, +# { NULL, 0 } +# }; +# asn1_stack_frame_check(actx, "ProtocolIE-ContainerList", ProtocolIE_ContainerList_pars); +#.END +#ProtocolIE-ContainerPairList {INTEGER : lowerBound, INTEGER : upperBound, SBC-AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= +# SEQUENCE (SIZE (lowerBound..upperBound)) OF +# ProtocolIE-ContainerPair {{IEsSetParam}} + +# following construction is not supported by asn2wrs +# PLMNidentity ::= TBCD-STRING (SIZE (3)) +# TBCD-STRING ::= OCTET STRING + +#.FN_BODY PLMNidentity VAL_PTR = parameter_tvb + tvbuff_t *parameter_tvb=NULL; + struct sbc_ap_private_data *sbc_ap_data = sbc_ap_get_private_data(actx->pinfo); + e212_number_type_t number_type = sbc_ap_data->number_type; + sbc_ap_data->number_type = E212_NONE; + + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + 3, 3, FALSE, ¶meter_tvb); + if(tvb_reported_length(tvb)==0) + return offset; + + if (!parameter_tvb) + return offset; + dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, tree, 0, number_type, FALSE); +#.END + +#.TYPE_ATTR +ProtocolExtensionID TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(sbc_ap_ProtocolIE_ID_vals) + +#.FN_BODY EUTRAN-CGI + struct sbc_ap_private_data *sbc_ap_data = sbc_ap_get_private_data(actx->pinfo); + sbc_ap_data->number_type = E212_ECGI; +%(DEFAULT_BODY)s + +#.FN_BODY NR-CGI + struct sbc_ap_private_data *sbc_ap_data = sbc_ap_get_private_data(actx->pinfo); + sbc_ap_data->number_type = E212_NRCGI; +%(DEFAULT_BODY)s + +#.FN_BODY TAI + struct sbc_ap_private_data *sbc_ap_data = sbc_ap_get_private_data(actx->pinfo); + sbc_ap_data->number_type = E212_TAI; +%(DEFAULT_BODY)s + +#.TYPE_ATTR +TAC TYPE = FT_UINT16 DISPLAY = BASE_DEC_HEX +#.FN_BODY TAC 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 TAI-5GS + struct sbc_ap_private_data *sbc_ap_data = sbc_ap_get_private_data(actx->pinfo); + sbc_ap_data->number_type = E212_5GSTAI; +%(DEFAULT_BODY)s + +#.TYPE_ATTR +TAC-5GS TYPE = FT_UINT24 DISPLAY = BASE_DEC_HEX +#.FN_BODY TAC-5GS 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, 3, ENC_BIG_ENDIAN); + } + + +#.ASSIGN_VALUE_TO_TYPE # SBC-AP does not have constants assigned to types, they are pure INTEGER +# ProcedureCode +id-Write-Replace-Warning ProcedureCode +id-Stop-Warning ProcedureCode +id-Error-Indication ProcedureCode +id-Write-Replace-Warning-Indication ProcedureCode +id-Stop-Warning-Indication ProcedureCode +id-PWS-Restart-Indication ProcedureCode +id-PWS-Failure-Indication ProcedureCode + +# ProtocolIE-ID + +id-Broadcast-Message-Content ProtocolIE-ID +id-Cause ProtocolIE-ID +id-Criticality-Diagnostics ProtocolIE-ID +id-Data-Coding-Scheme ProtocolIE-ID +id-Failure-List ProtocolIE-ID +id-Message-Identifier ProtocolIE-ID +id-Number-of-Broadcasts-Completed-List ProtocolIE-ID +id-Number-of-Broadcasts-Requested ProtocolIE-ID +id-Radio-Resource-Loading-List ProtocolIE-ID +id-Recovery-Indication ProtocolIE-ID +id-Repetition-Period ProtocolIE-ID +id-Serial-Number ProtocolIE-ID +id-Service-Areas-List ProtocolIE-ID +id-TypeOfError ProtocolIE-ID +id-List-of-TAIs ProtocolIE-ID +id-Warning-Area-List ProtocolIE-ID +id-Warning-Message-Content ProtocolIE-ID +id-Warning-Security-Information ProtocolIE-ID +id-Warning-Type ProtocolIE-ID +id-Omc-Id ProtocolIE-ID +id-Concurrent-Warning-Message-Indicator ProtocolIE-ID +id-Extended-Repetition-Period ProtocolIE-ID +id-Unknown-Tracking-Area-List ProtocolIE-ID +id-Broadcast-Scheduled-Area-List ProtocolIE-ID +id-Send-Write-Replace-Warning-Indication ProtocolIE-ID +id-Broadcast-Cancelled-Area-List ProtocolIE-ID +id-Send-Stop-Warning-Indication ProtocolIE-ID +id-Stop-All-Indicator ProtocolIE-ID +id-Global-ENB-ID ProtocolIE-ID +id-Broadcast-Empty-Area-List ProtocolIE-ID +id-Restarted-Cell-List ProtocolIE-ID +id-List-of-TAIs-Restart ProtocolIE-ID +id-List-of-EAIs-Restart ProtocolIE-ID +id-Failed-Cell-List ProtocolIE-ID + +id-List-of-5GS-TAIs ProtocolIE-ID +id-Warning-Area-List-5GS ProtocolIE-ID +id-Global-RAN-Node-ID ProtocolIE-ID +id-Global-GNB-ID ProtocolIE-ID +id-RAT-Selector-5GS ProtocolIE-ID +id-Unknown-5GS-Tracking-Area-List ProtocolIE-ID +id-Broadcast-Scheduled-Area-List-5GS ProtocolIE-ID +id-Broadcast-Cancelled-Area-List-5GS ProtocolIE-ID +id-Broadcast-Empty-Area-List-5GS ProtocolIE-ID +id-Restarted-Cell-List-NR ProtocolIE-ID +id-Failed-Cell-List-NR ProtocolIE-ID +id-List-of-5GS-TAI-for-Restart ProtocolIE-ID +id-Warning-Area-Coordinates ProtocolIE-ID + +#.REGISTER + +#SBC-AP-PROTOCOL-IES + +# N sbc_ap.ies id-Broadcast-Message-Content +Cause N sbc_ap.ies id-Cause +Criticality-Diagnostics N sbc_ap.ies id-Criticality-Diagnostics +Data-Coding-Scheme N sbc_ap.ies id-Data-Coding-Scheme +# N sbc_ap.ies id-Failure-List +Message-Identifier N sbc_ap.ies id-Message-Identifier +# id-Number-of-Broadcasts-Completed-List +Number-of-Broadcasts-Requested N sbc_ap.ies id-Number-of-Broadcasts-Requested +# not used ? N sbc_ap.ies id-Radio-Resource-Loading-List +# not used N sbc_ap.ies id-Recovery-Indication +Repetition-Period N sbc_ap.ies id-Repetition-Period +Serial-Number N sbc_ap.ies id-Serial-Number +# id-Service-Areas-List +# id-TypeOfError +List-of-TAIs N sbc_ap.ies id-List-of-TAIs +Warning-Area-List N sbc_ap.ies id-Warning-Area-List +Warning-Message-Content N sbc_ap.ies id-Warning-Message-Content +Warning-Security-Information N sbc_ap.ies id-Warning-Security-Information +Warning-Type N sbc_ap.ies id-Warning-Type +Omc-Id N sbc_ap.ies id-Omc-Id +Concurrent-Warning-Message-Indicator N sbc_ap.ies id-Concurrent-Warning-Message-Indicator +Extended-Repetition-Period N sbc_ap.ies id-Extended-Repetition-Period +List-of-TAIs N sbc_ap.ies id-Unknown-Tracking-Area-List +Broadcast-Scheduled-Area-List N sbc_ap.ies id-Broadcast-Scheduled-Area-List +Send-Write-Replace-Warning-Indication N sbc_ap.ies id-Send-Write-Replace-Warning-Indication +Broadcast-Cancelled-Area-List N sbc_ap.ies id-Broadcast-Cancelled-Area-List +Send-Stop-Warning-Indication N sbc_ap.ies id-Send-Stop-Warning-Indication +Stop-All-Indicator N sbc_ap.ies id-Stop-All-Indicator +Global-ENB-ID N sbc_ap.ies id-Global-ENB-ID +Broadcast-Empty-Area-List N sbc_ap.ies id-Broadcast-Empty-Area-List +Restarted-Cell-List N sbc_ap.ies id-Restarted-Cell-List +List-of-TAIs-Restart N sbc_ap.ies id-List-of-TAIs-Restart +List-of-EAIs-Restart N sbc_ap.ies id-List-of-EAIs-Restart +Failed-Cell-List N sbc_ap.ies id-Failed-Cell-List + +List-of-5GS-TAIs N sbc_ap.extension id-List-of-5GS-TAIs +Warning-Area-List-5GS N sbc_ap.extension id-Warning-Area-List-5GS +Global-RAN-Node-ID N sbc_ap.extension id-Global-RAN-Node-ID +Global-GNB-ID N sbc_ap.extension id-Global-GNB-ID +RAT-Selector-5GS N sbc_ap.extension id-RAT-Selector-5GS +Unknown-5GS-Tracking-Area-List N sbc_ap.extension id-Unknown-5GS-Tracking-Area-List +Broadcast-Scheduled-Area-List-5GS N sbc_ap.extension id-Broadcast-Scheduled-Area-List-5GS +Broadcast-Cancelled-Area-List-5GS N sbc_ap.extension id-Broadcast-Cancelled-Area-List-5GS +Broadcast-Empty-Area-List-5GS N sbc_ap.extension id-Broadcast-Empty-Area-List-5GS +Restarted-Cell-List-NR N sbc_ap.extension id-Restarted-Cell-List-NR +Failed-Cell-List-NR N sbc_ap.extension id-Failed-Cell-List-NR +List-of-5GS-TAI-for-Restart N sbc_ap.extension id-List-of-5GS-TAI-for-Restart +Warning-Area-Coordinates N sbc_ap.ies id-Warning-Area-Coordinates + + +#SBC-AP-ELEMENTARY-PROCEDURE +Write-Replace-Warning-Request N sbc_ap.proc.imsg id-Write-Replace-Warning +Write-Replace-Warning-Response N sbc_ap.proc.sout id-Write-Replace-Warning + +Stop-Warning-Request N sbc_ap.proc.imsg id-Stop-Warning +Stop-Warning-Response N sbc_ap.proc.sout id-Stop-Warning + +Error-Indication N sbc_ap.proc.imsg id-Error-Indication + +Write-Replace-Warning-Indication N sbc_ap.proc.imsg id-Write-Replace-Warning-Indication + +Stop-Warning-Indication N sbc_ap.proc.imsg id-Stop-Warning-Indication + +PWS-Restart-Indication N sbc_ap.proc.imsg id-PWS-Restart-Indication + +PWS-Failure-Indication N sbc_ap.proc.imsg id-PWS-Failure-Indication + +#.END + +#.TYPE_ATTR +Message-Identifier TYPE = FT_UINT16 DISPLAY = BASE_DEC|BASE_EXT_STRING STRINGS = <e_rrc_messageIdentifier_vals_ext + +#.FN_HDR Write-Replace-Warning-Request + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Write-Replace-Warning-Request"); +#.FN_HDR Write-Replace-Warning-Response + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Write-Replace-Warning-Response"); +#.FN_HDR Stop-Warning-Request + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Stop-Warning-Request"); +#.FN_HDR Stop-Warning-Response + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Stop-Warning-Response"); +#.FN_HDR Error-Indication + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Error-Indication"); +#.FN_HDR Write-Replace-Warning-Indication + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Write-Replace-Warning-Indication"); +#.FN_HDR Stop-Warning-Indication + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Stop-Warning-Indication"); +#.FN_HDR PWS-Restart-Indication + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "PWS-Restart-Indication"); +#.FN_HDR PWS-Failure-Indication + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "PWS-Failure-Indication"); + +#.FN_BODY Message-Identifier 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 Serial-Number VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb = NULL; +%(DEFAULT_BODY)s + if (parameter_tvb) { + proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_sbc_ap_Serial_Number); + proto_tree_add_item(subtree, hf_sbc_ap_Serial_Number_gs, parameter_tvb, 0, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_sbc_ap_Serial_Number_msg_code, parameter_tvb, 0, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_sbc_ap_Serial_Number_upd_nb, parameter_tvb, 0, 2, ENC_BIG_ENDIAN); + } + +#.TYPE_ATTR +Repetition-Period DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds + +#.TYPE_ATTR +Extended-Repetition-Period DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds + +#.FN_BODY Warning-Type VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb = NULL; +%(DEFAULT_BODY)s + if (parameter_tvb) { + proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_sbc_ap_Warning_Type); + proto_tree_add_item(subtree, hf_sbc_ap_Warning_Type_value, parameter_tvb, 0, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_sbc_ap_Warning_Type_emergency_user_alert, parameter_tvb, 0, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_sbc_ap_Warning_Type_popup, parameter_tvb, 0, 2, ENC_BIG_ENDIAN); + } + + +#.FN_BODY Data-Coding-Scheme VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb = NULL; +%(DEFAULT_BODY)s + if (parameter_tvb) { + struct sbc_ap_private_data *sbc_ap_data = sbc_ap_get_private_data(actx->pinfo); + proto_tree *subtree; + + subtree = proto_item_add_subtree(actx->created_item, ett_sbc_ap_Data_Coding_Scheme); + sbc_ap_data->data_coding_scheme = dissect_cbs_data_coding_scheme(parameter_tvb, actx->pinfo, subtree, 0); + } + +#.FN_BODY Warning-Message-Content VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb = NULL; +%(DEFAULT_BODY)s + if (parameter_tvb) { + struct sbc_ap_private_data *sbc_ap_data = sbc_ap_get_private_data(actx->pinfo); + proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_sbc_ap_Warning_Message_Contents); + dissect_s1ap_warningMessageContents(parameter_tvb, subtree, actx->pinfo, sbc_ap_data->data_coding_scheme, hf_sbc_ap_Warning_Message_Contents_nb_pages, hf_sbc_ap_Warning_Message_Contents_decoded_page); + } + + +# +# Editor modelines - https://www.wireshark.org/tools/modelines.html +# +# Local variables: +# c-basic-offset: 2 +# tab-width: 8 +# indent-tabs-mode: nil +# End: +# +# vi: set shiftwidth=2 tabstop=8 expandtab: +# :indentSize=2:tabSize=8:noTabs=true: +# |