diff options
author | Pascal Quantin <pascal.quantin@gmail.com> | 2018-03-16 16:18:46 +0100 |
---|---|---|
committer | Pascal Quantin <pascal.quantin@gmail.com> | 2018-03-16 19:10:25 +0000 |
commit | 6280c153bb8c33d661ffc40291cb41f9068786d8 (patch) | |
tree | e0e58f81d0095fba6cef1c48afb5f868d4bfac50 /epan/dissectors/asn1 | |
parent | b96f889e44afe4ec0adabd697364c05d27c9c9a0 (diff) |
F1AP: initial dissector submission based on v15.0.0
Change-Id: Icf5c128119afa86efddb87e744f7aecb8bf71e09
Reviewed-on: https://code.wireshark.org/review/26506
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Diffstat (limited to 'epan/dissectors/asn1')
-rw-r--r-- | epan/dissectors/asn1/CMakeLists.txt | 1 | ||||
-rw-r--r-- | epan/dissectors/asn1/Makefile.am | 1 | ||||
-rw-r--r-- | epan/dissectors/asn1/f1ap/CMakeLists.txt | 43 | ||||
-rw-r--r-- | epan/dissectors/asn1/f1ap/F1AP-CommonDataTypes.asn | 34 | ||||
-rw-r--r-- | epan/dissectors/asn1/f1ap/F1AP-Constants.asn | 148 | ||||
-rw-r--r-- | epan/dissectors/asn1/f1ap/F1AP-Containers.asn | 200 | ||||
-rw-r--r-- | epan/dissectors/asn1/f1ap/F1AP-IEs.asn | 385 | ||||
-rw-r--r-- | epan/dissectors/asn1/f1ap/F1AP-PDU-Contents.asn | 938 | ||||
-rw-r--r-- | epan/dissectors/asn1/f1ap/F1AP-PDU-Descriptions.asn | 260 | ||||
-rw-r--r-- | epan/dissectors/asn1/f1ap/Makefile.am | 35 | ||||
-rw-r--r-- | epan/dissectors/asn1/f1ap/f1ap.cnf | 497 | ||||
-rw-r--r-- | epan/dissectors/asn1/f1ap/packet-f1ap-template.c | 235 | ||||
-rw-r--r-- | epan/dissectors/asn1/nr-rrc/nr-rrc.cnf | 4 | ||||
-rw-r--r-- | epan/dissectors/asn1/x2ap/CMakeLists.txt | 1 | ||||
-rw-r--r-- | epan/dissectors/asn1/x2ap/Makefile.am | 1 | ||||
-rw-r--r-- | epan/dissectors/asn1/x2ap/packet-x2ap-template.h | 29 | ||||
-rw-r--r-- | epan/dissectors/asn1/x2ap/x2ap.cnf | 8 |
17 files changed, 2820 insertions, 0 deletions
diff --git a/epan/dissectors/asn1/CMakeLists.txt b/epan/dissectors/asn1/CMakeLists.txt index 72006ffcdb..6891bffe94 100644 --- a/epan/dissectors/asn1/CMakeLists.txt +++ b/epan/dissectors/asn1/CMakeLists.txt @@ -32,6 +32,7 @@ set(ASN1_SRC_DIRS dop dsp ess + f1ap ftam goose gprscdr diff --git a/epan/dissectors/asn1/Makefile.am b/epan/dissectors/asn1/Makefile.am index 185990928e..75bc121466 100644 --- a/epan/dissectors/asn1/Makefile.am +++ b/epan/dissectors/asn1/Makefile.am @@ -32,6 +32,7 @@ SUBDIRS = \ dop \ dsp \ ess \ + f1ap \ ftam \ goose \ gprscdr \ diff --git a/epan/dissectors/asn1/f1ap/CMakeLists.txt b/epan/dissectors/asn1/f1ap/CMakeLists.txt new file mode 100644 index 0000000000..7f7500e4eb --- /dev/null +++ b/epan/dissectors/asn1/f1ap/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 f1ap ) + +set( PROTO_OPT ) + +set( EXPORT_FILES + ${PROTOCOL_NAME}-exp.cnf +) + +set( EXT_ASN_FILE_LIST +) + +set( ASN_FILE_LIST + F1AP-CommonDataTypes.asn + F1AP-Constants.asn + F1AP-Containers.asn + F1AP-IEs.asn + F1AP-PDU-Contents.asn + F1AP-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/f1ap/F1AP-CommonDataTypes.asn b/epan/dissectors/asn1/f1ap/F1AP-CommonDataTypes.asn new file mode 100644 index 0000000000..003117eae0 --- /dev/null +++ b/epan/dissectors/asn1/f1ap/F1AP-CommonDataTypes.asn @@ -0,0 +1,34 @@ +-- 3GPP TS 38.473 V15.0.0 (2017-12) +-- 9.4.6 Common Definitions +-- ************************************************************** +-- +-- Common definitions +-- +-- ************************************************************** + +F1AP-CommonDataTypes { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +ngran-access (22) modules (3) f1ap (3) version1 (1) f1ap-CommonDataTypes (3) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +Criticality ::= ENUMERATED { reject, ignore, notify } + +Presence ::= ENUMERATED { optional, conditional, mandatory } + +PrivateIE-ID ::= CHOICE { + local INTEGER (0..65535), + global OBJECT IDENTIFIER +} + +ProcedureCode ::= INTEGER (0..255) + +ProtocolExtensionID ::= INTEGER (0..65535) + +ProtocolIE-ID ::= INTEGER (0..65535) + +TriggeringMessage ::= ENUMERATED { initiating-message, successful-outcome, unsuccessfull-outcome } + +END diff --git a/epan/dissectors/asn1/f1ap/F1AP-Constants.asn b/epan/dissectors/asn1/f1ap/F1AP-Constants.asn new file mode 100644 index 0000000000..68f1fa08ec --- /dev/null +++ b/epan/dissectors/asn1/f1ap/F1AP-Constants.asn @@ -0,0 +1,148 @@ +-- 3GPP TS 38.473 V15.0.0 (2017-12) +-- 9.4.7 Constant Definitions +-- ************************************************************** +-- +-- Constant definitions +-- +-- ************************************************************** + +F1AP-Constants { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +ngran-access (22) modules (3) f1ap (3) version1 (1) f1ap-Constants (4) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** + +IMPORTS + ProcedureCode, + ProtocolIE-ID + +FROM F1AP-CommonDataTypes; + + +-- ************************************************************** +-- +-- Elementary Procedures +-- +-- ************************************************************** + +id-Reset ProcedureCode ::= 0 +id-F1Setup ProcedureCode ::= 1 +id-ErrorIndication ProcedureCode ::= 2 +id-gNBDUConfigurationUpdate ProcedureCode ::= 3 +id-gNBCUConfigurationUpdate ProcedureCode ::= 4 +id-UEContextSetup ProcedureCode ::= 5 +id-UEContextRelease ProcedureCode ::= 6 +id-UEContextModification ProcedureCode ::= 7 +id-UEContextModificationRequired ProcedureCode ::= 8 +id-UEMobilityCommand ProcedureCode ::= 9 + +id-UEContextReleaseRequest ProcedureCode ::= 10 +id-InitialULRRCMessageTransfer ProcedureCode ::= 11 +id-DLRRCMessageTransfer ProcedureCode ::= 12 +id-ULRRCMessageTransfer ProcedureCode ::= 13 +id-SystemInformationDelivery ProcedureCode ::= 14 +id-Paging ProcedureCode ::= 15 + +-- ************************************************************** +-- +-- Extension constants +-- +-- ************************************************************** + +maxPrivateIEs INTEGER ::= 65535 +maxProtocolExtensions INTEGER ::= 65535 +maxProtocolIEs INTEGER ::= 65535 +-- ************************************************************** +-- +-- Lists +-- +-- ************************************************************** + +maxnoofErrors INTEGER ::= 256 +maxnoofIndividualF1ConnectionsToReset INTEGER ::= 256 +maxCellingNBDU INTEGER ::= 512 +maxnoofSCells INTEGER ::= 64 +maxnoofSRBs INTEGER ::= 8 +maxnoofDRBs INTEGER ::= 64 +maxnoofULTunnels INTEGER ::= 2 +maxnoofDLTunnels INTEGER ::= 2 +maxnoofBPLMNs INTEGER ::= 6 +-- ************************************************************** +-- +-- IEs +-- +-- ************************************************************** + +id-Cause ProtocolIE-ID ::= 0 +id-CriticalityDiagnostics ProtocolIE-ID ::= 1 +id-gNB-DU-F1AP-ID ProtocolIE-ID ::= 2 +id-gNB-CU-F1AP-ID ProtocolIE-ID ::= 3 +id-ResetType ProtocolIE-ID ::= 4 +id-TimeToWait ProtocolIE-ID ::= 5 +id-UE-associatedLogicalF1-ConnectionItem ProtocolIE-ID ::= 6 +id-UE-associatedLogicalF1-ConnectionListResAck ProtocolIE-ID ::= 7 +id-RRCContainer ProtocolIE-ID ::= 8 +id-SRBID ProtocolIE-ID ::= 9 +id-gNB-DU-ID ProtocolIE-ID ::= 10 +id-gNB-Name ProtocolIE-ID ::= 11 +id-NRCellID ProtocolIE-ID ::= 12 +id-PCI ProtocolIE-ID ::= 13 +id-gNB-DU-Served-Cells-List ProtocolIE-ID ::= 14 +id-Cells-to-be-Activated-List ProtocolIE-ID ::= 15 +id-Served-Cells-To-Add-List ProtocolIE-ID ::= 16 +id-Served-Cells-To-Modify-List ProtocolIE-ID ::= 17 +id-Served-Cells-To-Delete-List ProtocolIE-ID ::= 18 +id-Cells-to-be-Deactivated-List ProtocolIE-ID ::= 19 +id-Cells-Failed-to-be-Activated-List ProtocolIE-ID ::= 20 +id-TransactionID ProtocolIE-ID ::= 21 +id-Served-Cell-Information ProtocolIE-ID ::= 22 +id-gNB-DU-System-Information ProtocolIE-ID ::= 23 +id-NCGI ProtocolIE-ID ::= 24 +id-gNB-CU-System-Information ProtocolIE-ID ::= 25 +id-OldNCGI ProtocolIE-ID ::= 26 +id-DRBID ProtocolIE-ID ::= 27 +id-PSCell-ID ProtocolIE-ID ::= 28 +id-EUTRANQoS ProtocolIE-ID ::= 29 +id-SRBs-ToBeSetup-List ProtocolIE-ID ::= 30 +id-DRBs-ToBeSetup-List ProtocolIE-ID ::= 31 +id-DLTunnels-ToBeSetup-List ProtocolIE-ID ::= 32 +id-ULTunnels-ToBeSetup-List ProtocolIE-ID ::= 33 +id-UL-GTP-Tunnel-EndPoint ProtocolIE-ID ::= 34 +id-DL-GTP-Tunnel-EndPoint ProtocolIE-ID ::= 35 +id-CUtoDURRCInformation ProtocolIE-ID ::= 36 +id-DUtoCURRCInformation ProtocolIE-ID ::= 37 +id-UERadioCapability ProtocolIE-ID ::= 38 +id-UEAggregateMaximumBitRate ProtocolIE-ID ::= 39 +id-SCell-ToBeSetup-List ProtocolIE-ID ::= 40 +id-ResourceCoordinationTransferContainer ProtocolIE-ID ::= 41 +id-DRBs-ToBeModified-List ProtocolIE-ID ::= 42 +id-DRBs-ToBeReleased-List ProtocolIE-ID ::= 43 +id-DRBs-Modified-List ProtocolIE-ID ::= 44 +id-DRBs-FailedToSetup-List ProtocolIE-ID ::= 45 +id-DRBs-FailedToBeModified-List ProtocolIE-ID ::= 46 +id-SCell-ID ProtocolIE-ID ::= 47 +id-DRXCycle ProtocolIE-ID ::= 48 +id-DRBs-Setup-List ProtocolIE-ID ::= 49 +id-SRBs-Setup-List ProtocolIE-ID ::= 50 +id-DRBs-FailedToBeSetup-List ProtocolIE-ID ::= 51 +id-SRBs-FailedToBeSetup-List ProtocolIE-ID ::= 52 +id-DLTunnels-ToBeSetup-list ProtocolIE-ID ::= 53 +id-ULTunnels-ToBeSetup-list ProtocolIE-ID ::= 54 +id-TransmissionStopIndicator ProtocolIE-ID ::= 55 +id-DRBs-Required-ToBeModified-List ProtocolIE-ID ::= 56 +id-DRBs-Required-ToBeReleased-List ProtocolIE-ID ::= 57 +id-SRBs-Required-ToBeReleased-List ProtocolIE-ID ::= 58 +id-oldgNB-DU-F1AP-ID ProtocolIE-ID ::= 59 +id-SRBs-ToBeReleased-List ProtocolIE-ID ::= 60 +id-DRBs-ModifiedConf-List ProtocolIE-ID ::= 61 +id-privateMessage ProtocolIE-ID ::= 62 + +END diff --git a/epan/dissectors/asn1/f1ap/F1AP-Containers.asn b/epan/dissectors/asn1/f1ap/F1AP-Containers.asn new file mode 100644 index 0000000000..dff0bd4715 --- /dev/null +++ b/epan/dissectors/asn1/f1ap/F1AP-Containers.asn @@ -0,0 +1,200 @@ +-- 3GPP TS 38.473 V15.0.0 (2017-12) +-- 9.4.8 Container Definitions +-- ************************************************************** +-- +-- Container definitions +-- +-- ************************************************************** + +F1AP-Containers { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +ngran-access (22) modules (3) f1ap (3) version1 (1) f1ap-Containers (5) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** + +IMPORTS + Criticality, + Presence, + PrivateIE-ID, + ProtocolExtensionID, + ProtocolIE-ID + +FROM F1AP-CommonDataTypes + maxPrivateIEs, + maxProtocolExtensions, + maxProtocolIEs + +FROM F1AP-Constants; + +-- ************************************************************** +-- +-- Class Definition for Protocol IEs +-- +-- ************************************************************** + +F1AP-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 IEs +-- +-- ************************************************************** + +F1AP-PROTOCOL-IES-PAIR ::= CLASS { + &id ProtocolIE-ID UNIQUE, + &firstCriticality Criticality, + &FirstValue, + &secondCriticality Criticality, + &SecondValue, + &presence Presence +} +WITH SYNTAX { + ID &id + FIRST CRITICALITY &firstCriticality + FIRST TYPE &FirstValue + SECOND CRITICALITY &secondCriticality + SECOND TYPE &SecondValue + PRESENCE &presence +} + +-- ************************************************************** +-- +-- Class Definition for Protocol Extensions +-- +-- ************************************************************** + +F1AP-PROTOCOL-EXTENSION ::= CLASS { + &id ProtocolExtensionID UNIQUE, + &criticality Criticality, + &Extension, + &presence Presence +} +WITH SYNTAX { + ID &id + CRITICALITY &criticality + EXTENSION &Extension + PRESENCE &presence +} + +-- ************************************************************** +-- +-- Class Definition for Private IEs +-- +-- ************************************************************** + +F1AP-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 {F1AP-PROTOCOL-IES : IEsSetParam} ::= + SEQUENCE (SIZE (0..maxProtocolIEs)) OF + ProtocolIE-Field {{IEsSetParam}} + +ProtocolIE-SingleContainer {F1AP-PROTOCOL-IES : IEsSetParam} ::= + ProtocolIE-Field {{IEsSetParam}} + +ProtocolIE-Field {F1AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE { + id F1AP-PROTOCOL-IES.&id ({IEsSetParam}), + criticality F1AP-PROTOCOL-IES.&criticality ({IEsSetParam}{@id}), + value F1AP-PROTOCOL-IES.&Value ({IEsSetParam}{@id}) +} + +-- ************************************************************** +-- +-- Container for Protocol IE Pairs +-- +-- ************************************************************** + +ProtocolIE-ContainerPair {F1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= + SEQUENCE (SIZE (0..maxProtocolIEs)) OF + ProtocolIE-FieldPair {{IEsSetParam}} + +ProtocolIE-FieldPair {F1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= SEQUENCE { + id F1AP-PROTOCOL-IES-PAIR.&id ({IEsSetParam}), + firstCriticality F1AP-PROTOCOL-IES-PAIR.&firstCriticality ({IEsSetParam}{@id}), + firstValue F1AP-PROTOCOL-IES-PAIR.&FirstValue ({IEsSetParam}{@id}), + secondCriticality F1AP-PROTOCOL-IES-PAIR.&secondCriticality ({IEsSetParam}{@id}), + secondValue F1AP-PROTOCOL-IES-PAIR.&SecondValue ({IEsSetParam}{@id}) +} + +-- ************************************************************** +-- +-- Container Lists for Protocol IE Containers +-- +-- ************************************************************** + +ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, F1AP-PROTOCOL-IES : IEsSetParam} ::= + SEQUENCE (SIZE (lowerBound..upperBound)) OF + ProtocolIE-SingleContainer {{IEsSetParam}} + +ProtocolIE-ContainerPairList {INTEGER : lowerBound, INTEGER : upperBound,F1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= + SEQUENCE (SIZE (lowerBound..upperBound)) OF + ProtocolIE-ContainerPair {{IEsSetParam}} + +-- ************************************************************** +-- +-- Container for Protocol Extensions +-- +-- ************************************************************** + +ProtocolExtensionContainer {F1AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= + SEQUENCE (SIZE (1..maxProtocolExtensions)) OF + ProtocolExtensionField {{ExtensionSetParam}} + +ProtocolExtensionField {F1AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE { + id F1AP-PROTOCOL-EXTENSION.&id ({ExtensionSetParam}), + criticality F1AP-PROTOCOL-EXTENSION.&criticality ({ExtensionSetParam}{@id}), + extensionValue F1AP-PROTOCOL-EXTENSION.&Extension ({ExtensionSetParam}{@id}) +} + +-- ************************************************************** +-- +-- Container for Private IEs +-- +-- ************************************************************** + +PrivateIE-Container {F1AP-PRIVATE-IES : IEsSetParam } ::= + SEQUENCE (SIZE (1.. maxPrivateIEs)) OF + PrivateIE-Field {{IEsSetParam}} + +PrivateIE-Field {F1AP-PRIVATE-IES : IEsSetParam} ::= SEQUENCE { + id F1AP-PRIVATE-IES.&id ({IEsSetParam}), + criticality F1AP-PRIVATE-IES.&criticality ({IEsSetParam}{@id}), + value F1AP-PRIVATE-IES.&Value ({IEsSetParam}{@id}) +} + +END diff --git a/epan/dissectors/asn1/f1ap/F1AP-IEs.asn b/epan/dissectors/asn1/f1ap/F1AP-IEs.asn new file mode 100644 index 0000000000..35dfd6ae25 --- /dev/null +++ b/epan/dissectors/asn1/f1ap/F1AP-IEs.asn @@ -0,0 +1,385 @@ +-- 3GPP TS 38.473 V15.0.0 (2017-12) +-- 9.4.5 Information Element Definitions +-- ************************************************************** +-- +-- Information Element Definitions +-- +-- ************************************************************** + +F1AP-IEs { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +ngran-access (22) modules (3) f1ap (3) version1 (1) f1ap-IEs (2) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +IMPORTS + maxnoofErrors, + maxnoofIndividualF1ConnectionsToReset, + maxnoofBPLMNs + +FROM F1AP-Constants + + Criticality, + ProcedureCode, + ProtocolIE-ID, + TriggeringMessage + +FROM F1AP-CommonDataTypes + + ProtocolExtensionContainer{}, + F1AP-PROTOCOL-EXTENSION, + ProtocolIE-SingleContainer{}, + F1AP-PROTOCOL-IES + +FROM F1AP-Containers; + +-- A + +AllocationAndRetentionPriority ::= SEQUENCE { + priorityLevel PriorityLevel, + pre-emptionCapability Pre-emptionCapability, + pre-emptionVulnerability Pre-emptionVulnerability, + iE-Extensions ProtocolExtensionContainer { {AllocationAndRetentionPriority-ExtIEs} } OPTIONAL, + ... +} + +AllocationAndRetentionPriority-ExtIEs F1AP-PROTOCOL-EXTENSION ::= { + ... +} +-- B + +BitRate ::= INTEGER (0..4000000000000,...) + +BroadcastPLMNs-Item ::= SEQUENCE (SIZE(1..maxnoofBPLMNs)) OF PLMN-Identity + +-- C + +Cause ::= CHOICE { + radioNetwork CauseRadioNetwork, + transport CauseTransport, + protocol CauseProtocol, + misc CauseMisc, + ... +} + +CauseMisc ::= ENUMERATED { + control-processing-overload, + not-enough-user-plane-processing-resources, + hardware-failure, + om-intervention, + unspecified, +... +} + +CauseProtocol ::= ENUMERATED { + transfer-syntax-error, + abstract-syntax-error-reject, + abstract-syntax-error-ignore-and-notify, + message-not-compatible-with-receiver-state, + semantic-error, + abstract-syntax-error-falsely-constructed-message, + unspecified, + ... +} + +CauseRadioNetwork ::= ENUMERATED { + unspecified, + ... +} + +CauseTransport ::= ENUMERATED { + unspecified, + ... +} + +CellGroupConfig ::= OCTET STRING + +CriticalityDiagnostics ::= SEQUENCE { + procedureCode ProcedureCode OPTIONAL, + triggeringMessage TriggeringMessage OPTIONAL, + procedureCriticality Criticality OPTIONAL, + iEsCriticalityDiagnostics CriticalityDiagnostics-IE-List OPTIONAL, + iE-Extensions ProtocolExtensionContainer {{CriticalityDiagnostics-ExtIEs}} OPTIONAL, + ... +} + +CriticalityDiagnostics-ExtIEs F1AP-PROTOCOL-EXTENSION ::= { + ... +} + +CriticalityDiagnostics-IE-List ::= SEQUENCE (SIZE (1.. maxnoofErrors)) OF CriticalityDiagnostics-IE-Item + +CriticalityDiagnostics-IE-Item ::= SEQUENCE { + iECriticality Criticality, + iE-ID ProtocolIE-ID, + typeOfError TypeOfError, + iE-Extensions ProtocolExtensionContainer {{CriticalityDiagnostics-IE-Item-ExtIEs}} OPTIONAL, + ... +} + +CriticalityDiagnostics-IE-Item-ExtIEs F1AP-PROTOCOL-EXTENSION ::= { + ... +} + +CUtoDURRCInformation ::= SEQUENCE { + sCG-Config-Info SCG-Config-Info OPTIONAL, + uERadiocapabilities UERadiocapabilities, + iE-Extensions ProtocolExtensionContainer { { CUtoDURRCInformation-ExtIEs} } OPTIONAL, + ... +} + +CUtoDURRCInformation-ExtIEs F1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- D + +DRBID ::= INTEGER (0..15, ...) + +DRXCycle ::= SEQUENCE { + longDRXCycleLength LongDRXCycleLength, + shortDRXCycleLength ShortDRXCycleLength OPTIONAL, + shortDRXCycleTimer ShortDRXCycleTimer OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { DRXCycle-ExtIEs} } OPTIONAL, + ... +} + +DRXCycle-ExtIEs F1AP-PROTOCOL-EXTENSION ::= { + ... +} +DUtoCURRCInformation ::= SEQUENCE { + cellGroupConfig CellGroupConfig, + iE-Extensions ProtocolExtensionContainer { { DUtoCURRCInformation-ExtIEs} } OPTIONAL, + ... +} + +DUtoCURRCInformation-ExtIEs F1AP-PROTOCOL-EXTENSION ::= { + ... +} +-- E + +EUTRANQoS ::= SEQUENCE { + qCI QCI, + allocationAndRetentionPriority AllocationAndRetentionPriority, + gbrQosInformation GBR-QosInformation OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { EUTRANQoS-ExtIEs} } OPTIONAL, + ... +} + +EUTRANQoS-ExtIEs F1AP-PROTOCOL-EXTENSION ::= { + ... +} +-- F + +FDD-Info ::= SEQUENCE { + uL-NARFCN NARFCN, + dL-NARFCN NARFCN, + uL-Transmission-Bandwidth Transmission-Bandwidth, + dL-Transmission-Bandwidth Transmission-Bandwidth, + iE-Extensions ProtocolExtensionContainer { {FDD-Info-ExtIEs} } OPTIONAL, + ... +} + +FDD-Info-ExtIEs F1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- G + +GBR-QosInformation ::= SEQUENCE { + e-RAB-MaximumBitrateDL BitRate, + e-RAB-MaximumBitrateUL BitRate, + e-RAB-GuaranteedBitrateDL BitRate, + e-RAB-GuaranteedBitrateUL BitRate, + iE-Extensions ProtocolExtensionContainer { { GBR-QosInformation-ExtIEs} } OPTIONAL, + ... +} + +GBR-QosInformation-ExtIEs F1AP-PROTOCOL-EXTENSION ::= { + ... +} + + + + +GNB-CU-F1AP-ID ::= INTEGER (0..4294967295) + +GNB-DU-F1AP-ID ::= INTEGER (0..4294967295) + +GNB-DU-ID ::= INTEGER (0..68719476735) + +GNB-DU-System-Information ::= SEQUENCE { + mIB-message MIB-message, + sIB1-message SIB1-message, + iE-Extensions ProtocolExtensionContainer { { GNB-DU-System-Information-ExtIEs } } OPTIONAL, + ... +} + +GNB-DU-System-Information-ExtIEs F1AP-PROTOCOL-EXTENSION ::= { + ... +} + +GTP-TEID ::= OCTET STRING (SIZE (4)) + +GTPTunnelEndpoint ::= SEQUENCE { + transportLayerAddress TransportLayerAddress, + gTP-TEID GTP-TEID, + iE-Extensions ProtocolExtensionContainer { { GTPTunnelEndpoint-ExtIEs} } OPTIONAL, + ... +} + + +GTPTunnelEndpoint-ExtIEs F1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- H + +-- I + +-- J + +-- K + +-- L + +LongDRXCycleLength ::= ENUMERATED +{ms10, ms20, ms32, ms40, ms60, ms64, ms70, ms80, ms128, ms160, ms256, ms320, ms512, ms640, ms1024, ms1280, ms2048, ms2560, ms5120, ms10240, ...} + +-- M + +MIB-message ::= OCTET STRING + +-- N + +NARFCN ::= INTEGER (0..65535) +-- This IE may be refined + +NCGI ::= SEQUENCE { + pLMN-Identity PLMN-Identity, + nRCellIdentity NRCellIdentity, + iE-Extensions ProtocolExtensionContainer { {NCGI-ExtIEs} } OPTIONAL, + ... +} + +NCGI-ExtIEs F1AP-PROTOCOL-EXTENSION ::= { + ... +} + +NR-Mode-Info ::= CHOICE { + fDD FDD-Info, + tDD TDD-Info, + ... +} + +NRCellIdentity ::= BIT STRING (SIZE(36)) + +-- O + +-- P + +PLMN-Identity ::= OCTET STRING (SIZE(3)) + +Pre-emptionCapability ::= ENUMERATED { + shall-not-trigger-pre-emption, + may-trigger-pre-emption +} + +Pre-emptionVulnerability ::= ENUMERATED { + not-pre-emptable, + pre-emptable +} + +PriorityLevel ::= INTEGER { spare (0), highest (1), lowest (14), no-priority (15) } (0..15) + +PCI ::= INTEGER(0..1007) + +-- Q + +QCI ::= INTEGER (0..255) + +-- R + +RRCContainer ::= OCTET STRING + +-- S +SCG-Config-Info ::= OCTET STRING + +Served-Cell-Information ::= SEQUENCE { + nCGI NCGI, + pCI PCI, + broadcastPLMNs BroadcastPLMNs-Item, + nR-Mode-Info NR-Mode-Info, + iE-Extensions ProtocolExtensionContainer { {Served-Cell-Information-ExtIEs} } OPTIONAL, + ... +} + +Served-Cell-Information-ExtIEs F1AP-PROTOCOL-EXTENSION ::= { + ... +} + +ShortDRXCycleLength ::= ENUMERATED {ms2, ms3, ms4, ms5, ms6, ms7, ms8, ms10, ms14, ms16, ms20, ms30, ms32, ms35, ms40, ms64, ms80, ms128, ms160, ms256, ms320, ms512, ms640, ...} + +ShortDRXCycleTimer ::= INTEGER (1..16) + +SIB1-message ::= OCTET STRING + +SRBID ::= INTEGER (0..3, ...) +-- T + +TDD-Info ::= SEQUENCE { + nARFCN NARFCN, + transmission-Bandwidth Transmission-Bandwidth, + iE-Extensions ProtocolExtensionContainer { {TDD-Info-ExtIEs} } OPTIONAL, + ... +} + +TDD-Info-ExtIEs F1AP-PROTOCOL-EXTENSION ::= { + ... +} + +TimeToWait ::= ENUMERATED {v1s, v2s, v5s, v10s, v20s, v60s, ...} + +TransportLayerAddress ::= BIT STRING (SIZE(1..160, ...)) + +TransactionID ::= INTEGER (0..255, ...) + +Transmission-Bandwidth ::= INTEGER (0..65535) +-- This IE may be refined + +TransmissionStopIndicator ::= ENUMERATED {true, ...} + +TypeOfError ::= ENUMERATED { + not-understood, + missing, + ... +} + +-- U + +UE-associatedLogicalF1-ConnectionItem ::= SEQUENCE { + gNB-CU-F1AP-ID GNB-CU-F1AP-ID OPTIONAL, + gNB-DU-F1AP-ID GNB-DU-F1AP-ID OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { UE-associatedLogicalF1-ConnectionItemExtIEs} } OPTIONAL, + ... +} + +UE-associatedLogicalF1-ConnectionItemExtIEs F1AP-PROTOCOL-EXTENSION ::= { + ... +} + +UERadiocapabilities::= OCTET STRING + +-- V + +-- W + +-- X + +-- Y + +-- Z + +END diff --git a/epan/dissectors/asn1/f1ap/F1AP-PDU-Contents.asn b/epan/dissectors/asn1/f1ap/F1AP-PDU-Contents.asn new file mode 100644 index 0000000000..ef9e4cd96f --- /dev/null +++ b/epan/dissectors/asn1/f1ap/F1AP-PDU-Contents.asn @@ -0,0 +1,938 @@ +-- 3GPP TS 38.473 V15.0.0 (2017-12) +-- 9.4.4 PDU Definitions +-- ************************************************************** +-- +-- PDU definitions for F1AP. +-- +-- ************************************************************** + +F1AP-PDU-Contents { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +ngran-access (22) modules (3) f1ap (3) version1 (1) f1ap-PDU-Contents (1) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** + +IMPORTS + Cause, + CriticalityDiagnostics, + GNB-CU-F1AP-ID, + GNB-DU-F1AP-ID, + TimeToWait, + UE-associatedLogicalF1-ConnectionItem, + RRCContainer, + TransactionID, + PCI, + GNB-DU-ID, + Served-Cell-Information, + GNB-DU-System-Information, + NCGI, + DRBID, + SRBID, + EUTRANQoS, + GTPTunnelEndpoint, + CUtoDURRCInformation, + DUtoCURRCInformation, + TransmissionStopIndicator, DRXCycle + + +FROM F1AP-IEs + PrivateIE-Container{}, + ProtocolExtensionContainer{}, + ProtocolIE-Container{}, + ProtocolIE-ContainerList{}, + ProtocolIE-ContainerPair{}, + ProtocolIE-ContainerPairList{}, + ProtocolIE-SingleContainer{}, + F1AP-PRIVATE-IES, + F1AP-PROTOCOL-EXTENSION, + F1AP-PROTOCOL-IES, + F1AP-PROTOCOL-IES-PAIR + +FROM F1AP-Containers + id-Cause, + id-CriticalityDiagnostics, + id-gNB-CU-F1AP-ID, + id-gNB-DU-F1AP-ID, + id-ResetType, + id-TimeToWait, + id-UE-associatedLogicalF1-ConnectionItem, + id-UE-associatedLogicalF1-ConnectionListResAck, + id-RRCContainer, + id-SRBID, + id-TransactionID, + id-PCI, + id-gNB-DU-ID, + id-gNB-Name, + id-gNB-DU-Served-Cells-List, + id-Served-Cell-Information, + id-gNB-DU-System-Information, + id-Cells-to-be-Activated-List, + id-NCGI, + id-gNB-CU-System-Information, + id-Served-Cells-To-Add-List, + id-Served-Cells-To-Modify-List, + id-Served-Cells-To-Delete-List, + id-OldNCGI, + id-Cells-to-be-Deactivated-List, + id-Cells-Failed-to-be-Activated-List, + id-DRBID, + id-SRBID, + id-PSCell-ID, + id-EUTRANQoS, + id-SRBs-ToBeSetup-List, + id-DRBs-ToBeSetup-List, + id-DLTunnels-ToBeSetup-List, + id-ULTunnels-ToBeSetup-List, + id-UL-GTP-Tunnel-EndPoint, + id-DL-GTP-Tunnel-EndPoint, + id-CUtoDURRCInformation, + id-DUtoCURRCInformation, + id-UERadioCapability, + id-UEAggregateMaximumBitRate, + id-SCell-ToBeSetup-List, + id-ResourceCoordinationTransferContainer, + id-DRBs-ToBeModified-List, + id-SRBs-ToBeReleased-List, + id-DRBs-ToBeReleased-List, + id-DRBs-Modified-List, + id-DRBs-FailedToSetup-List, + id-DRBs-FailedToBeModified-List, + id-SCell-ID, + id-DRXCycle, + id-DRBs-Setup-List, + id-SRBs-Setup-List, + id-DRBs-FailedToBeSetup-List, + id-SRBs-FailedToBeSetup-List, + id-DLTunnels-ToBeSetup-list, + id-ULTunnels-ToBeSetup-list, + id-TransmissionStopIndicator, + id-DRBs-Required-ToBeModified-List, + id-DRBs-Required-ToBeReleased-List, + id-SRBs-Required-ToBeReleased-List, + id-oldgNB-DU-F1AP-ID, + maxnoofSCells, + maxnoofSRBs, + maxnoofDRBs, + maxnoofULTunnels, + maxnoofDLTunnels, + maxCellingNBDU, + maxnoofErrors, + maxnoofIndividualF1ConnectionsToReset, + id-DRBs-ModifiedConf-List + +FROM F1AP-Constants; + + +-- ************************************************************** +-- +-- RESET ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Reset +-- +-- ************************************************************** + +Reset ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {ResetIEs} }, + ... +} + +ResetIEs F1AP-PROTOCOL-IES ::= { + { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-ResetType CRITICALITY reject TYPE ResetType PRESENCE mandatory }, + ... +} + +ResetType ::= CHOICE { + f1-Interface ResetAll, + partOfF1-Interface UE-associatedLogicalF1-ConnectionListRes, + ... +} + + +ResetAll ::= ENUMERATED { + reset-all, + ... +} + +UE-associatedLogicalF1-ConnectionListRes ::= SEQUENCE (SIZE(1.. maxnoofIndividualF1ConnectionsToReset)) OF ProtocolIE-SingleContainer { { UE-associatedLogicalF1-ConnectionItemRes } } + +UE-associatedLogicalF1-ConnectionItemRes F1AP-PROTOCOL-IES ::= { + { ID id-UE-associatedLogicalF1-ConnectionItem CRITICALITY reject TYPE UE-associatedLogicalF1-ConnectionItem PRESENCE mandatory}, + ... +} + + +-- ************************************************************** +-- +-- Reset Acknowledge +-- +-- ************************************************************** + +ResetAcknowledge ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {ResetAcknowledgeIEs} }, + ... +} + +ResetAcknowledgeIEs F1AP-PROTOCOL-IES ::= { + { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }| + { ID id-UE-associatedLogicalF1-ConnectionListResAck CRITICALITY ignore TYPE UE-associatedLogicalF1-ConnectionListResAck PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +UE-associatedLogicalF1-ConnectionListResAck ::= SEQUENCE (SIZE(1.. maxnoofIndividualF1ConnectionsToReset)) OF ProtocolIE-SingleContainer { { UE-associatedLogicalF1-ConnectionItemResAck } } + +UE-associatedLogicalF1-ConnectionItemResAck F1AP-PROTOCOL-IES ::= { + { ID id-UE-associatedLogicalF1-ConnectionItem CRITICALITY ignore TYPE UE-associatedLogicalF1-ConnectionItem PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- ERROR INDICATION ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Error Indication +-- +-- ************************************************************** + +ErrorIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{ErrorIndicationIEs}}, + ... +} + +ErrorIndicationIEs F1AP-PROTOCOL-IES ::= { + { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory}| + { ID id-gNB-CU-F1AP-ID CRITICALITY ignore TYPE GNB-CU-F1AP-ID PRESENCE optional }| + { ID id-gNB-DU-F1AP-ID CRITICALITY ignore TYPE GNB-DU-F1AP-ID PRESENCE optional }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- F1 SETUP ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- F1 Setup Request +-- +-- ************************************************************** + +F1SetupRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {F1SetupRequestIEs} }, + ... +} + +F1SetupRequestIEs F1AP-PROTOCOL-IES ::= { + { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }| + { ID id-gNB-DU-ID CRITICALITY reject TYPE GNB-DU-ID PRESENCE mandatory }| + { ID id-gNB-Name CRITICALITY ignore TYPE GNB-Name PRESENCE optional }| + { ID id-gNB-DU-Served-Cells-List CRITICALITY reject TYPE GNB-DU-Served-Cells-List PRESENCE mandatory }, + ... +} + + +GNB-DU-Served-Cells-List ::= SEQUENCE (SIZE(1.. maxCellingNBDU)) OF ProtocolIE-SingleContainer { { GNB-DU-Served-Cells-ItemIEs } } + +GNB-DU-Served-Cells-ItemIEs F1AP-PROTOCOL-IES ::= { + { ID id-Served-Cell-Information CRITICALITY reject TYPE Served-Cell-Information PRESENCE mandatory }| + { ID id-gNB-DU-System-Information CRITICALITY reject TYPE GNB-DU-System-Information PRESENCE mandatory }, + ... +} + +GNB-Name ::= PrintableString(SIZE(1..150,...)) + +-- ************************************************************** +-- +-- F1 Setup Response +-- +-- ************************************************************** + +F1SetupResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {F1SetupResponseIEs} }, + ... +} + + +F1SetupResponseIEs F1AP-PROTOCOL-IES ::= { + { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }| + { ID id-Cells-to-be-Activated-List CRITICALITY reject TYPE Cells-to-be-Activated-List PRESENCE optional }, + ... +} + + +Cells-to-be-Activated-List ::= SEQUENCE (SIZE(1.. maxCellingNBDU)) OF ProtocolIE-SingleContainer { { Cells-to-be-Activated-List-ItemIEs } } + +Cells-to-be-Activated-List-ItemIEs F1AP-PROTOCOL-IES::= { + { ID id-NCGI CRITICALITY reject TYPE NCGI PRESENCE mandatory}| + { ID id-PCI CRITICALITY reject TYPE PCI PRESENCE optional}, +... +} + +-- ************************************************************** +-- +-- F1 Setup Failure +-- +-- ************************************************************** + +F1SetupFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {F1SetupFailureIEs} }, + ... +} + +F1SetupFailureIEs F1AP-PROTOCOL-IES ::= { + { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + + +-- ************************************************************** +-- +-- GNB-DU CONFIGURATION UPDATE ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- GNB-DU CONFIGURATION UPDATE +-- +-- ************************************************************** + +GNBDUConfigurationUpdate::= SEQUENCE { + protocolIEs ProtocolIE-Container { {GNBDUConfigurationUpdateIEs} }, + ... +} + +GNBDUConfigurationUpdateIEs F1AP-PROTOCOL-IES ::= { + { ID id-Served-Cells-To-Add-List CRITICALITY reject TYPE Served-Cells-To-Add-List PRESENCE optional }| + { ID id-Served-Cells-To-Modify-List CRITICALITY reject TYPE Served-Cells-To-Modify-List PRESENCE optional }| + { ID id-Served-Cells-To-Delete-List CRITICALITY reject TYPE Served-Cells-To-Delete-List PRESENCE optional }, + ... +} +Served-Cells-To-Add-List ::= SEQUENCE (SIZE(1.. maxCellingNBDU)) OF ProtocolIE-SingleContainer { { Served-Cells-To-Add-ItemIEs } } +Served-Cells-To-Modify-List ::= SEQUENCE (SIZE(1.. maxCellingNBDU)) OF ProtocolIE-SingleContainer { { Served-Cells-To-Modify-ItemIEs } } +Served-Cells-To-Delete-List ::= SEQUENCE (SIZE(1.. maxCellingNBDU)) OF ProtocolIE-SingleContainer { { Served-Cells-To-Delete-ItemIEs } } + +Served-Cells-To-Add-ItemIEs F1AP-PROTOCOL-IES ::= { + { ID id-Served-Cell-Information CRITICALITY reject TYPE Served-Cell-Information PRESENCE mandatory }| + { ID id-gNB-DU-System-Information CRITICALITY reject TYPE GNB-DU-System-Information PRESENCE mandatory }, +... +} + +Served-Cells-To-Modify-ItemIEs F1AP-PROTOCOL-IES ::= { + { ID id-OldNCGI CRITICALITY reject TYPE NCGI PRESENCE mandatory }| + { ID id-Served-Cell-Information CRITICALITY reject TYPE Served-Cell-Information PRESENCE mandatory }| + { ID id-gNB-DU-System-Information CRITICALITY reject TYPE GNB-DU-System-Information PRESENCE optional }, +... +} + +Served-Cells-To-Delete-ItemIEs F1AP-PROTOCOL-IES ::= { + { ID id-OldNCGI CRITICALITY reject TYPE NCGI PRESENCE mandatory }, +... +} + +-- ************************************************************** +-- +-- GNB-DU CONFIGURATION UPDATE ACKNOWLEDGE +-- +-- ************************************************************** + +GNBDUConfigurationUpdateAcknowledge ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {GNBDUConfigurationUpdateAcknowledgeIEs} }, + ... +} + + +GNBDUConfigurationUpdateAcknowledgeIEs F1AP-PROTOCOL-IES ::= { + { ID id-Cells-to-be-Activated-List CRITICALITY reject TYPE Cells-to-be-Activated-List PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- GNB-DU CONFIGURATION UPDATE FAILURE +-- +-- ************************************************************** + +GNBDUConfigurationUpdateFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {GNBDUConfigurationUpdateFailureIEs} }, + ... +} + +GNBDUConfigurationUpdateFailureIEs F1AP-PROTOCOL-IES ::= { + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- GNB-CU CONFIGURATION UPDATE ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- GNB-CU CONFIGURATION UPDATE +-- +-- ************************************************************** + +GNBCUConfigurationUpdate ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { GNBCUConfigurationUpdateIEs} }, + ... +} + +GNBCUConfigurationUpdateIEs F1AP-PROTOCOL-IES ::= { + { ID id-Cells-to-be-Activated-List CRITICALITY reject TYPE Cells-to-be-Activated-List PRESENCE optional }| + { ID id-Cells-to-be-Deactivated-List CRITICALITY reject TYPE Cells-to-be-Deactivated-List PRESENCE optional }, + ... +} + +Cells-to-be-Deactivated-List ::= SEQUENCE (SIZE(1.. maxCellingNBDU)) OF ProtocolIE-SingleContainer { { Cells-to-be-Deactivated-List-ItemIEs } } + +Cells-to-be-Deactivated-List-ItemIEs F1AP-PROTOCOL-IES ::= { + { ID id-NCGI CRITICALITY reject TYPE NCGI PRESENCE mandatory }, +...} + + +-- ************************************************************** +-- +-- GNB-CU CONFIGURATION UPDATE ACKNOWLEDGE +-- +-- ************************************************************** + +GNBCUConfigurationUpdateAcknowledge ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { GNBCUConfigurationUpdateAcknowledgeIEs} }, + ... +} + + +GNBCUConfigurationUpdateAcknowledgeIEs F1AP-PROTOCOL-IES ::= { + { ID id-Cells-Failed-to-be-Activated-List CRITICALITY reject TYPE Cells-Failed-to-be-Activated-List PRESENCE optional}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} +Cells-Failed-to-be-Activated-List ::= SEQUENCE (SIZE(1.. maxCellingNBDU)) OF ProtocolIE-SingleContainer { { Cells-Failed-to-be-Activated-List-ItemIEs } } + +Cells-Failed-to-be-Activated-List-ItemIEs F1AP-PROTOCOL-IES ::= { + { ID id-NCGI CRITICALITY reject TYPE NCGI PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }, +... +} + +-- ************************************************************** +-- +-- GNB-CU CONFIGURATION UPDATE FAILURE +-- +-- ************************************************************** + +GNBCUConfigurationUpdateFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { GNBCUConfigurationUpdateFailureIEs} }, + ... +} + +GNBCUConfigurationUpdateFailureIEs F1AP-PROTOCOL-IES ::= { + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- UE Context Setup ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- UE CONTEXT SETUP REQUEST +-- +-- ************************************************************** + +UEContextSetupRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UEContextSetupRequestIEs} }, + ... +} + +UEContextSetupRequestIEs F1AP-PROTOCOL-IES ::= { + { ID id-gNB-CU-F1AP-ID CRITICALITY reject TYPE GNB-CU-F1AP-ID PRESENCE mandatory }| + { ID id-gNB-DU-F1AP-ID CRITICALITY ignore TYPE GNB-DU-F1AP-ID PRESENCE optional }| + { ID id-PSCell-ID CRITICALITY ignore TYPE NCGI PRESENCE optional }| + { ID id-CUtoDURRCInformation CRITICALITY reject TYPE CUtoDURRCInformation PRESENCE mandatory}| + { ID id-DRXCycle CRITICALITY ignore TYPE DRXCycle PRESENCE optional }| + { ID id-ResourceCoordinationTransferContainer CRITICALITY reject TYPE ResourceCoordinationTransferContainer PRESENCE optional }| + { ID id-SCell-ToBeSetup-List CRITICALITY ignore TYPE SCell-ToBeSetup-List PRESENCE optional }| + { ID id-SRBs-ToBeSetup-List CRITICALITY reject TYPE SRBs-ToBeSetup-List PRESENCE optional }| + { ID id-DRBs-ToBeSetup-List CRITICALITY reject TYPE DRBs-ToBeSetup-List PRESENCE mandatory }, + ... +} + +SCell-ToBeSetup-List::= SEQUENCE (SIZE(1..maxnoofSCells)) OF ProtocolIE-SingleContainer { { SCell-ToBeSetup-ItemIEs} }SRBs-ToBeSetup-List ::= SEQUENCE (SIZE(1..maxnoofSRBs)) OF ProtocolIE-SingleContainer { { SRBs-ToBeSetup-ItemIEs} } +DRBs-ToBeSetup-List ::= SEQUENCE (SIZE(1..maxnoofDRBs)) OF ProtocolIE-SingleContainer { { DRBs-ToBeSetup-ItemIEs} } + +ResourceCoordinationTransferContainer ::= OCTET STRING + +SCell-ToBeSetup-ItemIEs F1AP-PROTOCOL-IES ::= { + { ID id-SCell-ID CRITICALITY ignore TYPE NCGI PRESENCE mandatory }, + ... +} + +SRBs-ToBeSetup-ItemIEs F1AP-PROTOCOL-IES ::= { + { ID id-SRBID CRITICALITY reject TYPE SRBID PRESENCE mandatory}, + ... +} + +DRBs-ToBeSetup-ItemIEs F1AP-PROTOCOL-IES ::= { + { ID id-DRBID CRITICALITY reject TYPE DRBID PRESENCE mandatory}| + { ID id-EUTRANQoS CRITICALITY reject TYPE EUTRANQoS PRESENCE optional}| + { ID id-ULTunnels-ToBeSetup-list CRITICALITY reject TYPE ULTunnels-ToBeSetup-list PRESENCE mandatory}, + ... +} + +ULTunnels-ToBeSetup-list ::= SEQUENCE (SIZE(1..maxnoofULTunnels)) OF ProtocolIE-SingleContainer { { ULTunnels-ToBeSetup-ItemIEs} } + +ULTunnels-ToBeSetup-ItemIEs F1AP-PROTOCOL-IES ::= { + { ID id-UL-GTP-Tunnel-EndPoint CRITICALITY reject TYPE GTPTunnelEndpoint PRESENCE mandatory}, + ... +} + + +-- ************************************************************** +-- +-- UE CONTEXT SETUP RESPONSE +-- +-- ************************************************************** + +UEContextSetupResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UEContextSetupResponseIEs} }, + ... +} + + +UEContextSetupResponseIEs F1AP-PROTOCOL-IES ::= { + { ID id-gNB-CU-F1AP-ID CRITICALITY reject TYPE GNB-CU-F1AP-ID PRESENCE mandatory }| + { ID id-gNB-DU-F1AP-ID CRITICALITY reject TYPE GNB-DU-F1AP-ID PRESENCE mandatory }| + { ID id-DUtoCURRCInformation CRITICALITY reject TYPE DUtoCURRCInformation PRESENCE mandatory }| + { ID id-ResourceCoordinationTransferContainer CRITICALITY reject TYPE ResourceCoordinationTransferContainer PRESENCE optional }| + { ID id-SRBs-Setup-List CRITICALITY ignore TYPE SRBs-Setup-List PRESENCE optional }| + { ID id-DRBs-Setup-List CRITICALITY ignore TYPE DRBs-Setup-List PRESENCE optional }| + { ID id-SRBs-FailedToBeSetup-List CRITICALITY ignore TYPE SRBs-FailedToBeSetup-List PRESENCE optional }| + { ID id-DRBs-FailedToBeSetup-List CRITICALITY ignore TYPE DRBs-FailedToBeSetup-List PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +SRBs-Setup-List ::= SEQUENCE (SIZE(1..maxnoofSRBs)) OF ProtocolIE-SingleContainer { { SRBs-Setup-ItemIEs} } +DRBs-Setup-List ::= SEQUENCE (SIZE(1..maxnoofDRBs)) OF ProtocolIE-SingleContainer { { DRBs-Setup-ItemIEs} } +SRBs-FailedToBeSetup-List ::= SEQUENCE (SIZE(1..maxnoofSRBs)) OF ProtocolIE-SingleContainer { { SRBs-FailedToBeSetup-ItemIEs} } +DRBs-FailedToBeSetup-List ::= SEQUENCE (SIZE(1..maxnoofDRBs)) OF ProtocolIE-SingleContainer { { DRBs-FailedToBeSetup-ItemIEs} } + +SRBs-Setup-ItemIEs F1AP-PROTOCOL-IES ::= { + { ID id-SRBID CRITICALITY ignore TYPE SRBID PRESENCE mandatory}, + ... +} + +DRBs-Setup-ItemIEs F1AP-PROTOCOL-IES ::= { + { ID id-DRBID CRITICALITY ignore TYPE DRBID PRESENCE mandatory}| + { ID id-DLTunnels-ToBeSetup-list CRITICALITY ignore TYPE DLTunnels-ToBeSetup-list PRESENCE mandatory}, + ... +} + +DLTunnels-ToBeSetup-list ::= SEQUENCE (SIZE(1..maxnoofDLTunnels)) OF ProtocolIE-SingleContainer { { DLTunnels-ToBeSetup-ItemIEs} } + +DLTunnels-ToBeSetup-ItemIEs F1AP-PROTOCOL-IES ::= { + { ID id-DL-GTP-Tunnel-EndPoint CRITICALITY ignore TYPE GTPTunnelEndpoint PRESENCE mandatory}, + ... +} + +SRBs-FailedToBeSetup-ItemIEs F1AP-PROTOCOL-IES ::= { + { ID id-SRBID CRITICALITY ignore TYPE SRBID PRESENCE mandatory}| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE optional}, + ... +} + +DRBs-FailedToBeSetup-ItemIEs F1AP-PROTOCOL-IES ::= { + { ID id-DRBID CRITICALITY ignore TYPE DRBID PRESENCE mandatory}| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- UE CONTEXT SETUP FAILURE +-- +-- ************************************************************** + +UEContextSetupFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UEContextSetupFailureIEs} }, + ... +} + +UEContextSetupFailureIEs F1AP-PROTOCOL-IES ::= { + { ID id-gNB-CU-F1AP-ID CRITICALITY reject TYPE GNB-CU-F1AP-ID PRESENCE mandatory }| + { ID id-gNB-DU-F1AP-ID CRITICALITY ignore TYPE GNB-DU-F1AP-ID PRESENCE optional }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- UE Context Release Request ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- UE Context Release Request +-- +-- ************************************************************** + +UEContextReleaseRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{ UEContextReleaseRequestIEs}}, + ... +} + +UEContextReleaseRequestIEs F1AP-PROTOCOL-IES ::= { + { ID id-gNB-CU-F1AP-ID CRITICALITY reject TYPE GNB-CU-F1AP-ID PRESENCE mandatory }| + { ID id-gNB-DU-F1AP-ID CRITICALITY reject TYPE GNB-DU-F1AP-ID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }, + ... +} + + +-- ************************************************************** +-- +-- UE Context Release (gNB-CU initiated) ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- UE CONTEXT RELEASE COMMAND +-- +-- ************************************************************** + +UEContextReleaseCommand ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UEContextReleaseCommandIEs} }, + ... +} + +UEContextReleaseCommandIEs F1AP-PROTOCOL-IES ::= { + { ID id-gNB-CU-F1AP-ID CRITICALITY reject TYPE GNB-CU-F1AP-ID PRESENCE mandatory }| + { ID id-gNB-DU-F1AP-ID CRITICALITY reject TYPE GNB-DU-F1AP-ID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- UE CONTEXT RELEASE COMPLETE +-- +-- ************************************************************** + +UEContextReleaseComplete ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UEContextReleaseCompleteIEs} }, + ... +} + + +UEContextReleaseCompleteIEs F1AP-PROTOCOL-IES ::= { + { ID id-gNB-CU-F1AP-ID CRITICALITY reject TYPE GNB-CU-F1AP-ID PRESENCE mandatory }| + { ID id-gNB-DU-F1AP-ID CRITICALITY reject TYPE GNB-DU-F1AP-ID PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, ... +} + +-- ************************************************************** +-- +-- UE Context Modification ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- UE CONTEXT MODIFICATION REQUEST +-- +-- ************************************************************** + +UEContextModificationRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UEContextModificationRequestIEs} }, + ... +} + +UEContextModificationRequestIEs F1AP-PROTOCOL-IES ::= { + { ID id-gNB-CU-F1AP-ID CRITICALITY reject TYPE GNB-CU-F1AP-ID PRESENCE mandatory }| + { ID id-gNB-DU-F1AP-ID CRITICALITY reject TYPE GNB-DU-F1AP-ID PRESENCE mandatory }| + { ID id-PSCell-ID CRITICALITY ignore TYPE NCGI PRESENCE optional }| + { ID id-DRXCycle CRITICALITY ignore TYPE DRXCycle PRESENCE optional }| + { ID id-CUtoDURRCInformation CRITICALITY reject TYPE CUtoDURRCInformation PRESENCE optional }| + { ID id-TransmissionStopIndicator CRITICALITY ignore TYPE TransmissionStopIndicator PRESENCE optional }| + { ID id-ResourceCoordinationTransferContainer CRITICALITY reject TYPE ResourceCoordinationTransferContainer PRESENCE optional }| + { ID id-RRCContainer CRITICALITY ignore TYPE RRCContainer PRESENCE optional }| + { ID id-SCell-ToBeSetup-List CRITICALITY ignore TYPE SCell-ToBeSetup-List PRESENCE optional }| + { ID id-SRBs-ToBeSetup-List CRITICALITY reject TYPE SRBs-ToBeSetup-List PRESENCE optional }| + { ID id-DRBs-ToBeSetup-List CRITICALITY reject TYPE DRBs-ToBeSetup-List PRESENCE optional }| + { ID id-DRBs-ToBeModified-List CRITICALITY reject TYPE DRBs-ToBeModified-List PRESENCE optional }| + { ID id-SRBs-ToBeReleased-List CRITICALITY reject TYPE SRBs-ToBeReleased-List PRESENCE optional }| + { ID id-DRBs-ToBeReleased-List CRITICALITY reject TYPE DRBs-ToBeReleased-List PRESENCE optional }, + ... +} + +DRBs-ToBeModified-List ::= SEQUENCE (SIZE(1..maxnoofDRBs)) OF ProtocolIE-SingleContainer { { DRBs-ToBeModified-ItemIEs} } +SRBs-ToBeReleased-List ::= SEQUENCE (SIZE(1..maxnoofSRBs)) OF ProtocolIE-SingleContainer { { SRBs-ToBeReleased-ItemIEs} } +DRBs-ToBeReleased-List ::= SEQUENCE (SIZE(1..maxnoofDRBs)) OF ProtocolIE-SingleContainer { { DRBs-ToBeReleased-ItemIEs} } + +DRBs-ToBeModified-ItemIEs F1AP-PROTOCOL-IES ::= { + { ID id-DRBID CRITICALITY reject TYPE DRBID PRESENCE mandatory}| + { ID id-EUTRANQoS CRITICALITY reject TYPE EUTRANQoS PRESENCE optional}| + { ID id-ULTunnels-ToBeSetup-list CRITICALITY reject TYPE ULTunnels-ToBeSetup-list PRESENCE mandatory}, + ... +} + +SRBs-ToBeReleased-ItemIEs F1AP-PROTOCOL-IES ::= { + { ID id-SRBID CRITICALITY reject TYPE SRBID PRESENCE mandatory}, + ... +} + +DRBs-ToBeReleased-ItemIEs F1AP-PROTOCOL-IES ::= { + { ID id-DRBID CRITICALITY reject TYPE DRBID PRESENCE mandatory}, + ... +} + +-- ************************************************************** +-- +-- UE CONTEXT MODIFICATION RESPONSE +-- +-- ************************************************************** + +UEContextModificationResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UEContextModificationResponseIEs} }, + ... +} + + +UEContextModificationResponseIEs F1AP-PROTOCOL-IES ::= { + { ID id-gNB-CU-F1AP-ID CRITICALITY reject TYPE GNB-CU-F1AP-ID PRESENCE mandatory }| + { ID id-gNB-DU-F1AP-ID CRITICALITY reject TYPE GNB-DU-F1AP-ID PRESENCE mandatory }| + { ID id-ResourceCoordinationTransferContainer CRITICALITY reject TYPE ResourceCoordinationTransferContainer PRESENCE optional }| + { ID id-DUtoCURRCInformation CRITICALITY reject TYPE DUtoCURRCInformation PRESENCE optional}| + { ID id-DRBs-Setup-List CRITICALITY ignore TYPE DRBs-Setup-List PRESENCE optional}| + { ID id-DRBs-Modified-List CRITICALITY ignore TYPE DRBs-Modified-List PRESENCE optional}| + { ID id-SRBs-FailedToBeSetup-List CRITICALITY ignore TYPE SRBs-FailedToBeSetup-List PRESENCE optional }| + { ID id-DRBs-FailedToBeSetup-List CRITICALITY ignore TYPE DRBs-FailedToBeSetup-List PRESENCE optional }| + { ID id-DRBs-FailedToBeModified-List CRITICALITY ignore TYPE DRBs-FailedToBeModified-List PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + + +DRBs-Modified-List::= SEQUENCE (SIZE(1..maxnoofDRBs)) OF ProtocolIE-SingleContainer { { DRBs-Modified-ItemIEs } } +DRBs-FailedToBeModified-List ::= SEQUENCE (SIZE(1..maxnoofDRBs)) OF ProtocolIE-SingleContainer { { DRBs-FailedToBeModified-ItemIEs} } + +DRBs-Modified-ItemIEs F1AP-PROTOCOL-IES ::= { + { ID id-DRBID CRITICALITY ignore TYPE DRBID PRESENCE mandatory}| + { ID id-DLTunnels-ToBeSetup-list CRITICALITY ignore TYPE DLTunnels-ToBeSetup-list PRESENCE mandatory}, + ... +} + +DRBs-FailedToBeModified-ItemIEs F1AP-PROTOCOL-IES ::= { + { ID id-DRBID CRITICALITY ignore TYPE DRBID PRESENCE mandatory}| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE optional}, + ... +} + + +-- ************************************************************** +-- +-- UE CONTEXT MODIFICATION FAILURE +-- +-- ************************************************************** + +UEContextModificationFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UEContextModificationFailureIEs} }, + ... +} + +UEContextModificationFailureIEs F1AP-PROTOCOL-IES ::= { + { ID id-gNB-CU-F1AP-ID CRITICALITY reject TYPE GNB-CU-F1AP-ID PRESENCE mandatory }| + { ID id-gNB-DU-F1AP-ID CRITICALITY reject TYPE GNB-DU-F1AP-ID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + + +-- ************************************************************** +-- +-- UE Context Modification Required (gNB-DU initiated) ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- UE CONTEXT MODIFICATION REQUIRED +-- +-- ************************************************************** + +UEContextModificationRequired ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UEContextModificationRequiredIEs} }, + ... +} + +UEContextModificationRequiredIEs F1AP-PROTOCOL-IES ::= { + { ID id-gNB-CU-F1AP-ID CRITICALITY reject TYPE GNB-CU-F1AP-ID PRESENCE mandatory }| + { ID id-gNB-DU-F1AP-ID CRITICALITY reject TYPE GNB-DU-F1AP-ID PRESENCE mandatory }| + { ID id-ResourceCoordinationTransferContainer CRITICALITY reject TYPE ResourceCoordinationTransferContainer PRESENCE optional }| + { ID id-DUtoCURRCInformation CRITICALITY reject TYPE DUtoCURRCInformation PRESENCE optional}| + { ID id-DRBs-Required-ToBeModified-List CRITICALITY reject TYPE DRBs-Required-ToBeModified-List PRESENCE optional}| + { ID id-SRBs-Required-ToBeReleased-List CRITICALITY reject TYPE SRBs-Required-ToBeReleased-List PRESENCE optional}| + { ID id-DRBs-Required-ToBeReleased-List CRITICALITY reject TYPE DRBs-Required-ToBeReleased-List PRESENCE optional}| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }, + ... +} + +DRBs-Required-ToBeModified-List::= SEQUENCE (SIZE(1..maxnoofDRBs)) OF ProtocolIE-SingleContainer { { DRBs-Required-ToBeModified-ItemIEs } } +DRBs-Required-ToBeReleased-List::= SEQUENCE (SIZE(1..maxnoofDRBs)) OF ProtocolIE-SingleContainer { { DRBs-Required-ToBeReleased-ItemIEs } } + +SRBs-Required-ToBeReleased-List::= SEQUENCE (SIZE(1..maxnoofSRBs)) OF ProtocolIE-SingleContainer { { SRBs-Required-ToBeReleased-ItemIEs } } + +DRBs-Required-ToBeModified-ItemIEs F1AP-PROTOCOL-IES ::= { + { ID id-DRBID CRITICALITY reject TYPE DRBID PRESENCE mandatory}| + { ID id-DLTunnels-ToBeSetup-list CRITICALITY reject TYPE DLTunnels-ToBeSetup-list PRESENCE mandatory}, + ... +} + +DRBs-Required-ToBeReleased-ItemIEs F1AP-PROTOCOL-IES ::= { + { ID id-DRBID CRITICALITY reject TYPE DRBID PRESENCE mandatory}, + ... +} + +SRBs-Required-ToBeReleased-ItemIEs F1AP-PROTOCOL-IES ::= { + { ID id-SRBID CRITICALITY reject TYPE SRBID PRESENCE mandatory}, + ... +} + +-- ************************************************************** +-- +-- UE CONTEXT MODIFICATION CONFIRM +-- +-- ************************************************************** + +UEContextModificationConfirm::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UEContextModificationConfirmIEs} }, + ... +} + + +UEContextModificationConfirmIEs F1AP-PROTOCOL-IES ::= { + { ID id-gNB-CU-F1AP-ID CRITICALITY reject TYPE GNB-CU-F1AP-ID PRESENCE mandatory }| + { ID id-gNB-DU-F1AP-ID CRITICALITY reject TYPE GNB-DU-F1AP-ID PRESENCE mandatory }| + { ID id-ResourceCoordinationTransferContainer CRITICALITY reject TYPE ResourceCoordinationTransferContainer PRESENCE optional }| + { ID id-DRBs-ModifiedConf-List CRITICALITY ignore TYPE DRBs-ModifiedConf-List PRESENCE optional}| + { ID id-DRBs-FailedToBeModified-List CRITICALITY ignore TYPE DRBs-FailedToBeModified-List PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +DRBs-ModifiedConf-List::= SEQUENCE (SIZE(1..maxnoofDRBs)) OF ProtocolIE-SingleContainer { { DRBs-ModifiedConf-ItemIEs } } + +DRBs-ModifiedConf-ItemIEs F1AP-PROTOCOL-IES ::= { + { ID id-DRBID CRITICALITY ignore TYPE DRBID PRESENCE mandatory}| + { ID id-ULTunnels-ToBeSetup-list CRITICALITY ignore TYPE ULTunnels-ToBeSetup-list PRESENCE mandatory}, + ... +} + + + +-- ************************************************************** +-- +-- DL RRC Message Transfer ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- DL RRC Message Transfer +-- +-- ************************************************************** + +DLRRCMessageTransfer ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{ DLRRCMessageTransferIEs}}, + ... +} + +DLRRCMessageTransferIEs F1AP-PROTOCOL-IES ::= { + { ID id-gNB-CU-F1AP-ID CRITICALITY reject TYPE GNB-CU-F1AP-ID PRESENCE mandatory }| + { ID id-gNB-DU-F1AP-ID CRITICALITY reject TYPE GNB-DU-F1AP-ID PRESENCE mandatory }| + { ID id-oldgNB-DU-F1AP-ID CRITICALITY reject TYPE GNB-DU-F1AP-ID PRESENCE optional }| + { ID id-SRBID CRITICALITY reject TYPE SRBID PRESENCE mandatory }| + { ID id-RRCContainer CRITICALITY reject TYPE RRCContainer PRESENCE mandatory }, + ... +} +-- ************************************************************** +-- +-- UL RRC Message Transfer ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- UL RRC Message Transfer +-- +-- ************************************************************** + +ULRRCMessageTransfer ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{ ULRRCMessageTransferIEs}}, + ... +} + +ULRRCMessageTransferIEs F1AP-PROTOCOL-IES ::= { + { ID id-gNB-CU-F1AP-ID CRITICALITY reject TYPE GNB-CU-F1AP-ID PRESENCE mandatory }| + { ID id-gNB-DU-F1AP-ID CRITICALITY reject TYPE GNB-DU-F1AP-ID PRESENCE mandatory }| + { ID id-SRBID CRITICALITY reject TYPE SRBID PRESENCE mandatory }| + { ID id-RRCContainer CRITICALITY reject TYPE RRCContainer PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- PRIVATE MESSAGE +-- +-- ************************************************************** + +PrivateMessage ::= SEQUENCE { + privateIEs PrivateIE-Container {{PrivateMessage-IEs}}, + ... +} + +PrivateMessage-IEs F1AP-PRIVATE-IES ::= { + ... +} + +END diff --git a/epan/dissectors/asn1/f1ap/F1AP-PDU-Descriptions.asn b/epan/dissectors/asn1/f1ap/F1AP-PDU-Descriptions.asn new file mode 100644 index 0000000000..9c170550bb --- /dev/null +++ b/epan/dissectors/asn1/f1ap/F1AP-PDU-Descriptions.asn @@ -0,0 +1,260 @@ +-- 3GPP TS 38.473 V15.0.0 (2017-12) +-- 9.4.3 Elementary Procedure Definitions +-- ************************************************************** +-- +-- Elementary Procedure definitions +-- +-- ************************************************************** + +F1AP-PDU-Descriptions { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +ngran-access (22) modules (3) f1ap (3) version1 (1) f1ap-PDU-Descriptions (0)} + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** + +IMPORTS + Criticality, + ProcedureCode + +FROM F1AP-CommonDataTypes + Reset, + ResetAcknowledge, + F1SetupRequest, + F1SetupResponse, + F1SetupFailure, + GNBDUConfigurationUpdate, + GNBDUConfigurationUpdateAcknowledge, + GNBDUConfigurationUpdateFailure, + GNBCUConfigurationUpdate, + GNBCUConfigurationUpdateAcknowledge, + GNBCUConfigurationUpdateFailure, + UEContextSetupRequest, + UEContextSetupResponse, + UEContextSetupFailure, + UEContextReleaseCommand, + UEContextReleaseComplete, + UEContextModificationRequest, + UEContextModificationResponse, + UEContextModificationFailure, + UEContextModificationRequired, + UEContextModificationConfirm, + ErrorIndication, + UEContextReleaseRequest, + DLRRCMessageTransfer, + ULRRCMessageTransfer, + PrivateMessage + +FROM F1AP-PDU-Contents + id-Reset, + id-F1Setup, + id-gNBDUConfigurationUpdate, + id-gNBCUConfigurationUpdate, + id-UEContextSetup, + id-UEContextRelease, + id-UEContextModification, + id-UEContextModificationRequired, + id-ErrorIndication, + id-UEContextReleaseRequest, + id-DLRRCMessageTransfer, + id-ULRRCMessageTransfer, + id-privateMessage + + +FROM F1AP-Constants; + + +-- ************************************************************** +-- +-- Interface Elementary Procedure Class +-- +-- ************************************************************** + +F1AP-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 +-- +-- ************************************************************** + +F1AP-PDU ::= CHOICE { + initiatingMessage InitiatingMessage, + successfulOutcome SuccessfulOutcome, + unsuccessfulOutcome UnsuccessfulOutcome, + ... +} + +InitiatingMessage ::= SEQUENCE { + procedureCode F1AP-ELEMENTARY-PROCEDURE.&procedureCode ({F1AP-ELEMENTARY-PROCEDURES}), + criticality F1AP-ELEMENTARY-PROCEDURE.&criticality ({F1AP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value F1AP-ELEMENTARY-PROCEDURE.&InitiatingMessage ({F1AP-ELEMENTARY-PROCEDURES}{@procedureCode}) +} + +SuccessfulOutcome ::= SEQUENCE { + procedureCode F1AP-ELEMENTARY-PROCEDURE.&procedureCode ({F1AP-ELEMENTARY-PROCEDURES}), + criticality F1AP-ELEMENTARY-PROCEDURE.&criticality ({F1AP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value F1AP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({F1AP-ELEMENTARY-PROCEDURES}{@procedureCode}) +} + +UnsuccessfulOutcome ::= SEQUENCE { + procedureCode F1AP-ELEMENTARY-PROCEDURE.&procedureCode ({F1AP-ELEMENTARY-PROCEDURES}), + criticality F1AP-ELEMENTARY-PROCEDURE.&criticality ({F1AP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value F1AP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({F1AP-ELEMENTARY-PROCEDURES}{@procedureCode}) +} + +-- ************************************************************** +-- +-- Interface Elementary Procedure List +-- +-- ************************************************************** + +F1AP-ELEMENTARY-PROCEDURES F1AP-ELEMENTARY-PROCEDURE ::= { + F1AP-ELEMENTARY-PROCEDURES-CLASS-1 | + F1AP-ELEMENTARY-PROCEDURES-CLASS-2, + ... +} + + +F1AP-ELEMENTARY-PROCEDURES-CLASS-1 F1AP-ELEMENTARY-PROCEDURE ::= { + reset | + f1Setup | + gNBDUConfigurationUpdate | + gNBCUConfigurationUpdate | + uEContextSetup | + uEContextRelease | + uEContextModification | + uEContextModificationRequired , + ...} + + F1AP-ELEMENTARY-PROCEDURES-CLASS-2 F1AP-ELEMENTARY-PROCEDURE ::= { + errorIndication | + uEContextReleaseRequest | + dLRRCMessageTransfer | + uLRRCMessageTransfer | + privateMessage , + ... +} +-- ************************************************************** +-- +-- Interface Elementary Procedures +-- +-- ************************************************************** + +reset F1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE Reset + SUCCESSFUL OUTCOME ResetAcknowledge + PROCEDURE CODE id-Reset + CRITICALITY reject +} + +f1Setup F1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE F1SetupRequest + SUCCESSFUL OUTCOME F1SetupResponse + UNSUCCESSFUL OUTCOME F1SetupFailure + PROCEDURE CODE id-F1Setup + CRITICALITY reject +} + +gNBDUConfigurationUpdate F1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE GNBDUConfigurationUpdate + SUCCESSFUL OUTCOME GNBDUConfigurationUpdateAcknowledge + UNSUCCESSFUL OUTCOME GNBDUConfigurationUpdateFailure + PROCEDURE CODE id-gNBDUConfigurationUpdate + CRITICALITY reject +} + +gNBCUConfigurationUpdate F1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE GNBCUConfigurationUpdate + SUCCESSFUL OUTCOME GNBCUConfigurationUpdateAcknowledge + UNSUCCESSFUL OUTCOME GNBCUConfigurationUpdateFailure + PROCEDURE CODE id-gNBCUConfigurationUpdate + CRITICALITY reject +} + +uEContextSetup F1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UEContextSetupRequest + SUCCESSFUL OUTCOME UEContextSetupResponse + UNSUCCESSFUL OUTCOME UEContextSetupFailure + PROCEDURE CODE id-UEContextSetup + CRITICALITY reject +} + +uEContextRelease F1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UEContextReleaseCommand + SUCCESSFUL OUTCOME UEContextReleaseComplete + PROCEDURE CODE id-UEContextRelease + CRITICALITY reject +} + +uEContextModification F1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UEContextModificationRequest + SUCCESSFUL OUTCOME UEContextModificationResponse + UNSUCCESSFUL OUTCOME UEContextModificationFailure + PROCEDURE CODE id-UEContextModification + CRITICALITY reject +} + +uEContextModificationRequired F1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UEContextModificationRequired + SUCCESSFUL OUTCOME UEContextModificationConfirm + PROCEDURE CODE id-UEContextModificationRequired + CRITICALITY reject +} + + +errorIndication F1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE ErrorIndication + PROCEDURE CODE id-ErrorIndication + CRITICALITY ignore +} + +uEContextReleaseRequest F1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UEContextReleaseRequest + PROCEDURE CODE id-UEContextReleaseRequest + CRITICALITY ignore +} + + +dLRRCMessageTransfer F1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE DLRRCMessageTransfer + PROCEDURE CODE id-DLRRCMessageTransfer + CRITICALITY ignore +} + +uLRRCMessageTransfer F1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE ULRRCMessageTransfer + PROCEDURE CODE id-ULRRCMessageTransfer + CRITICALITY ignore +} + + +privateMessage F1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE PrivateMessage + PROCEDURE CODE id-privateMessage + CRITICALITY ignore +} + + + +END diff --git a/epan/dissectors/asn1/f1ap/Makefile.am b/epan/dissectors/asn1/f1ap/Makefile.am new file mode 100644 index 0000000000..76ca823db4 --- /dev/null +++ b/epan/dissectors/asn1/f1ap/Makefile.am @@ -0,0 +1,35 @@ +# Wireshark - Network traffic analyzer +# By Gerald Combs <gerald@wireshark.org> +# Copyright 1998 Gerald Combs +# +# SPDX-License-Identifier: GPL-2.0-or-later + +include ../Makefile.inc + +PROTOCOL_NAME = f1ap + +EXPORT_FILES = $(PROTOCOL_NAME)-exp.cnf + +EXT_ASN_FILE_LIST = + +ASN_FILE_LIST = \ + F1AP-CommonDataTypes.asn \ + F1AP-Constants.asn \ + F1AP-Containers.asn \ + F1AP-IEs.asn \ + F1AP-PDU-Contents.asn \ + F1AP-PDU-Descriptions.asn + +EXTRA_DIST = \ + $(EXTRA_DIST_COMMON) \ + $(ASN_FILE_LIST) \ + packet-$(PROTOCOL_NAME)-template.c \ + $(PROTOCOL_NAME).cnf + +SRC_FILES = \ + $(EXTRA_DIST) \ + $(EXT_ASN_FILE_LIST) + +A2W_FLAGS = + +EXTRA_CNF = diff --git a/epan/dissectors/asn1/f1ap/f1ap.cnf b/epan/dissectors/asn1/f1ap/f1ap.cnf new file mode 100644 index 0000000000..585c13ae59 --- /dev/null +++ b/epan/dissectors/asn1/f1ap/f1ap.cnf @@ -0,0 +1,497 @@ +# f1ap.cnf +# f1ap conformation file + +#.OPT +PER +ALIGNED +#.END + +#.USE_VALS_EXT +LongDRXCycleLength +ProcedureCode +ProtocolIE-ID +ShortDRXCycleLength + +#.EXPORTS + +#.PDU +F1AP-PDU + +#.MAKE_ENUM +ProcedureCode +ProtocolIE-ID + +#.NO_EMIT + +#.OMIT_ASSIGNMENT +# Get rid of unused code warnings +Presence +ProtocolIE-ContainerList +ProtocolIE-ContainerPair +ProtocolIE-ContainerPairList +ProtocolIE-FieldPair +#.END + + +#.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 + + +PrivateIE-Field/id private_id +ProtocolExtensionField/id ext_id + +#PrivateIE-Field/value private_value +ProtocolIE-Field/value ie_field_value + +#.FN_BODY ProtocolIE-ID VAL_PTR=&f1ap_data->protocol_ie_id + f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo); +%(DEFAULT_BODY)s + +#.FN_FTR ProtocolIE-ID + if (tree) { + proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", + val_to_str_ext(f1ap_data->protocol_ie_id, &f1ap_ProtocolIE_ID_vals_ext, "unknown (%d)")); + } + +#.FN_PARS ProtocolIE-Field/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolIEFieldValue + +#.FN_BODY ProtocolExtensionID VAL_PTR=&f1ap_data->protocol_extension_id + f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo); +%(DEFAULT_BODY)s + +#.FN_PARS ProtocolExtensionField/extensionValue FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolExtensionFieldExtensionValue + +#.FN_BODY ProcedureCode VAL_PTR = &f1ap_data->procedure_code + f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo); +%(DEFAULT_BODY)s +#.END + +#.FN_PARS InitiatingMessage/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_InitiatingMessageValue +#.FN_HDR InitiatingMessage/value + f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo); + f1ap_data->message_type = INITIATING_MESSAGE; +#.FN_PARS SuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_SuccessfulOutcomeValue +#.FN_HDR SuccessfulOutcome/value + f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo); + f1ap_data->message_type = SUCCESSFUL_OUTCOME; +#.FN_PARS UnsuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_UnsuccessfulOutcomeValue +#.FN_HDR UnsuccessfulOutcome/value + f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo); + f1ap_data->message_type = UNSUCCESSFUL_OUTCOME; +#.END + +#--- Parameterization is not supported in asn2wrs --- + +#ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, F1AP-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, (asn1_par_type)0 } +# }; +# asn1_stack_frame_check(actx, "ProtocolIE-ContainerList", ProtocolIE_ContainerList_pars); +#.END + +#ProtocolIE-ContainerPairList {INTEGER : lowerBound, INTEGER : upperBound, F1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= +# SEQUENCE (SIZE (lowerBound..upperBound)) OF +# ProtocolIE-ContainerPair {{IEsSetParam}} + +# Currently not used +# FN_PARS ProtocolIE-ContainerPairList +#MIN_VAL = asn1_param_get_integer(%(ACTX)s,"lowerBound") +#MAX_VAL = asn1_param_get_integer(%(ACTX)s,"upperBound") +# FN_HDR ProtocolIE-ContainerPairList +# static const asn1_par_def_t ProtocolIE_ContainerPairList_pars[] = { +# { "lowerBound", ASN1_PAR_INTEGER }, +# { "upperBound", ASN1_PAR_INTEGER }, +# { NULL, 0 } +# }; +# asn1_stack_frame_check(actx, "ProtocolIE-ContainerPairList", ProtocolIE_ContainerPairList_pars); +# END + +#.FN_HDR PrivateIE-ID + f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo); + f1ap_data->obj_id = NULL; + +#.FN_BODY PrivateIE-ID/global FN_VARIANT = _str VAL_PTR = &f1ap_data->obj_id + f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo); +%(DEFAULT_BODY)s + +#.FN_BODY PrivateIE-Field/value + f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo); + if (f1ap_data->obj_id) { + offset = call_per_oid_callback(f1ap_data->obj_id, tvb, actx->pinfo, tree, offset, actx, hf_index); + } else { +%(DEFAULT_BODY)s + } + +#.ASSIGN_VALUE_TO_TYPE # F1AP does not have constants assigned to types, they are pure INTEGER +# ProcedureCode + +id-Reset ProcedureCode +id-F1Setup ProcedureCode +id-ErrorIndication ProcedureCode +id-gNBDUConfigurationUpdate ProcedureCode +id-gNBCUConfigurationUpdate ProcedureCode +id-UEContextSetup ProcedureCode +id-UEContextRelease ProcedureCode +id-UEContextModification ProcedureCode +id-UEContextModificationRequired ProcedureCode +id-UEMobilityCommand ProcedureCode +id-UEContextReleaseRequest ProcedureCode +id-InitialULRRCMessageTransfer ProcedureCode +id-DLRRCMessageTransfer ProcedureCode +id-ULRRCMessageTransfer ProcedureCode +id-SystemInformationDelivery ProcedureCode +id-Paging ProcedureCode + +# ProtocolIE-ID +id-Cause ProtocolIE-ID +id-CriticalityDiagnostics ProtocolIE-ID +id-gNB-DU-F1AP-ID ProtocolIE-ID +id-gNB-CU-F1AP-ID ProtocolIE-ID +id-ResetType ProtocolIE-ID +id-TimeToWait ProtocolIE-ID +id-UE-associatedLogicalF1-ConnectionItem ProtocolIE-ID +id-UE-associatedLogicalF1-ConnectionListResAck ProtocolIE-ID +id-RRCContainer ProtocolIE-ID +id-SRBID ProtocolIE-ID +id-gNB-DU-ID ProtocolIE-ID +id-gNB-Name ProtocolIE-ID +id-NRCellID ProtocolIE-ID +id-PCI ProtocolIE-ID +id-gNB-DU-Served-Cells-List ProtocolIE-ID +id-Cells-to-be-Activated-List ProtocolIE-ID +id-Served-Cells-To-Add-List ProtocolIE-ID +id-Served-Cells-To-Modify-List ProtocolIE-ID +id-Served-Cells-To-Delete-List ProtocolIE-ID +id-Cells-to-be-Deactivated-List ProtocolIE-ID +id-Cells-Failed-to-be-Activated-List ProtocolIE-ID +id-TransactionID ProtocolIE-ID +id-Served-Cell-Information ProtocolIE-ID +id-gNB-DU-System-Information ProtocolIE-ID +id-NCGI ProtocolIE-ID +id-gNB-CU-System-Information ProtocolIE-ID +id-OldNCGI ProtocolIE-ID +id-DRBID ProtocolIE-ID +id-PSCell-ID ProtocolIE-ID +id-EUTRANQoS ProtocolIE-ID +id-SRBs-ToBeSetup-List ProtocolIE-ID +id-DRBs-ToBeSetup-List ProtocolIE-ID +id-DLTunnels-ToBeSetup-List ProtocolIE-ID +id-ULTunnels-ToBeSetup-List ProtocolIE-ID +id-UL-GTP-Tunnel-EndPoint ProtocolIE-ID +id-DL-GTP-Tunnel-EndPoint ProtocolIE-ID +id-CUtoDURRCInformation ProtocolIE-ID +id-DUtoCURRCInformation ProtocolIE-ID +id-UERadioCapability ProtocolIE-ID +id-UEAggregateMaximumBitRate ProtocolIE-ID +id-SCell-ToBeSetup-List ProtocolIE-ID +id-ResourceCoordinationTransferContainer ProtocolIE-ID +id-DRBs-ToBeModified-List ProtocolIE-ID +id-DRBs-ToBeReleased-List ProtocolIE-ID +id-DRBs-Modified-List ProtocolIE-ID +id-DRBs-FailedToSetup-List ProtocolIE-ID +id-DRBs-FailedToBeModified-List ProtocolIE-ID +id-SCell-ID ProtocolIE-ID +id-DRXCycle ProtocolIE-ID +id-DRBs-Setup-List ProtocolIE-ID +id-SRBs-Setup-List ProtocolIE-ID +id-DRBs-FailedToBeSetup-List ProtocolIE-ID +id-SRBs-FailedToBeSetup-List ProtocolIE-ID +id-DLTunnels-ToBeSetup-list ProtocolIE-ID +id-ULTunnels-ToBeSetup-list ProtocolIE-ID +id-TransmissionStopIndicator ProtocolIE-ID +id-DRBs-Required-ToBeModified-List ProtocolIE-ID +id-DRBs-Required-ToBeReleased-List ProtocolIE-ID +id-SRBs-Required-ToBeReleased-List ProtocolIE-ID +id-oldgNB-DU-F1AP-ID ProtocolIE-ID +id-SRBs-ToBeReleased-List ProtocolIE-ID +id-DRBs-ModifiedConf-List ProtocolIE-ID +id-privateMessage ProtocolIE-ID +#.END + +#.REGISTER + +#F1AP-PROTOCOL-IES +Cause N f1ap.ies id-Cause +CriticalityDiagnostics N f1ap.ies id-CriticalityDiagnostics +GNB-DU-F1AP-ID N f1ap.ies id-gNB-DU-F1AP-ID +GNB-CU-F1AP-ID N f1ap.ies id-gNB-CU-F1AP-ID +ResetType N f1ap.ies id-ResetType +TimeToWait N f1ap.ies id-TimeToWait +UE-associatedLogicalF1-ConnectionItem N f1ap.ies id-UE-associatedLogicalF1-ConnectionItem +UE-associatedLogicalF1-ConnectionListResAck N f1ap.ies id-UE-associatedLogicalF1-ConnectionListResAck +RRCContainer N f1ap.ies id-RRCContainer +SRBID N f1ap.ies id-SRBID +GNB-DU-ID N f1ap.ies id-gNB-DU-ID +GNB-Name N f1ap.ies id-gNB-Name +PCI N f1ap.ies id-PCI +GNB-DU-Served-Cells-List N f1ap.ies id-gNB-DU-Served-Cells-List +Cells-to-be-Activated-List N f1ap.ies id-Cells-to-be-Activated-List +Served-Cells-To-Add-List N f1ap.ies id-Served-Cells-To-Add-List +Served-Cells-To-Modify-List N f1ap.ies id-Served-Cells-To-Modify-List +Served-Cells-To-Delete-List N f1ap.ies id-Served-Cells-To-Delete-List +Cells-to-be-Deactivated-List N f1ap.ies id-Cells-to-be-Deactivated-List +Cells-Failed-to-be-Activated-List N f1ap.ies id-Cells-Failed-to-be-Activated-List +TransactionID N f1ap.ies id-TransactionID +Served-Cell-Information N f1ap.ies id-Served-Cell-Information +GNB-DU-System-Information N f1ap.ies id-gNB-DU-System-Information +NCGI N f1ap.ies id-NCGI +NCGI N f1ap.ies id-OldNCGI +DRBID N f1ap.ies id-DRBID +NCGI N f1ap.ies id-PSCell-ID +EUTRANQoS N f1ap.ies id-EUTRANQoS +SRBs-ToBeSetup-List N f1ap.ies id-SRBs-ToBeSetup-List +DRBs-ToBeSetup-List N f1ap.ies id-DRBs-ToBeSetup-List +DLTunnels-ToBeSetup-list N f1ap.ies id-DLTunnels-ToBeSetup-List +ULTunnels-ToBeSetup-list N f1ap.ies id-ULTunnels-ToBeSetup-List +GTPTunnelEndpoint N f1ap.ies id-UL-GTP-Tunnel-EndPoint +GTPTunnelEndpoint N f1ap.ies id-DL-GTP-Tunnel-EndPoint +CUtoDURRCInformation N f1ap.ies id-CUtoDURRCInformation +DUtoCURRCInformation N f1ap.ies id-DUtoCURRCInformation +SCell-ToBeSetup-List N f1ap.ies id-SCell-ToBeSetup-List +ResourceCoordinationTransferContainer N f1ap.ies id-ResourceCoordinationTransferContainer +DRBs-ToBeModified-List N f1ap.ies id-DRBs-ToBeModified-List +DRBs-ToBeReleased-List N f1ap.ies id-DRBs-ToBeReleased-List +DRBs-Modified-List N f1ap.ies id-DRBs-Modified-List +DRBs-FailedToBeModified-List N f1ap.ies id-DRBs-FailedToBeModified-List +NCGI N f1ap.ies id-SCell-ID +DRXCycle N f1ap.ies id-DRXCycle +DRBs-Setup-List N f1ap.ies id-DRBs-Setup-List +SRBs-Setup-List N f1ap.ies id-SRBs-Setup-List +DRBs-FailedToBeSetup-List N f1ap.ies id-DRBs-FailedToBeSetup-List +SRBs-FailedToBeSetup-List N f1ap.ies id-SRBs-FailedToBeSetup-List +DLTunnels-ToBeSetup-list N f1ap.ies id-DLTunnels-ToBeSetup-list +ULTunnels-ToBeSetup-list N f1ap.ies id-ULTunnels-ToBeSetup-list +TransmissionStopIndicator N f1ap.ies id-TransmissionStopIndicator +DRBs-Required-ToBeModified-List N f1ap.ies id-DRBs-Required-ToBeModified-List +DRBs-Required-ToBeReleased-List N f1ap.ies id-DRBs-Required-ToBeReleased-List +SRBs-Required-ToBeReleased-List N f1ap.ies id-SRBs-Required-ToBeReleased-List +GNB-DU-F1AP-ID N f1ap.ies id-oldgNB-DU-F1AP-ID +SRBs-ToBeReleased-List N f1ap.ies id-SRBs-ToBeReleased-List +DRBs-ModifiedConf-List N f1ap.ies id-DRBs-ModifiedConf-List + +#F1AP-PROTOCOL-EXTENSION + +#F1AP-ELEMENTARY-PROCEDURE +Reset N f1ap.proc.imsg id-Reset +ResetAcknowledge N f1ap.proc.sout id-Reset + +F1SetupRequest N f1ap.proc.imsg id-F1Setup +F1SetupResponse N f1ap.proc.sout id-F1Setup +F1SetupFailure N f1ap.proc.uout id-F1Setup + +GNBDUConfigurationUpdate N f1ap.proc.imsg id-gNBDUConfigurationUpdate +GNBDUConfigurationUpdateAcknowledge N f1ap.proc.sout id-gNBDUConfigurationUpdate +GNBDUConfigurationUpdateFailure N f1ap.proc.uout id-gNBDUConfigurationUpdate + +GNBCUConfigurationUpdate N f1ap.proc.imsg id-gNBCUConfigurationUpdate +GNBCUConfigurationUpdateAcknowledge N f1ap.proc.sout id-gNBCUConfigurationUpdate +GNBCUConfigurationUpdateFailure N f1ap.proc.uout id-gNBCUConfigurationUpdate + +UEContextSetupRequest N f1ap.proc.imsg id-UEContextSetup +UEContextSetupResponse N f1ap.proc.sout id-UEContextSetup +UEContextSetupFailure N f1ap.proc.uout id-UEContextSetup + +UEContextReleaseCommand N f1ap.proc.imsg id-UEContextRelease +UEContextReleaseComplete N f1ap.proc.sout id-UEContextRelease + +UEContextModificationRequest N f1ap.proc.imsg id-UEContextModification +UEContextModificationResponse N f1ap.proc.sout id-UEContextModification +UEContextModificationFailure N f1ap.proc.uout id-UEContextModification + +UEContextModificationRequired N f1ap.proc.imsg id-UEContextModificationRequired +UEContextModificationConfirm N f1ap.proc.sout id-UEContextModificationRequired + +ErrorIndication N f1ap.proc.imsg id-ErrorIndication + +UEContextReleaseRequest N f1ap.proc.imsg id-UEContextReleaseRequest + +DLRRCMessageTransfer N f1ap.proc.imsg id-DLRRCMessageTransfer + +ULRRCMessageTransfer N f1ap.proc.imsg id-ULRRCMessageTransfer + +PrivateMessage N f1ap.proc.imsg id-privateMessage + + +#.FN_BODY ResourceCoordinationTransferContainer VAL_PTR=¶m_tvb + tvbuff_t *param_tvb = NULL; +%(DEFAULT_BODY)s + if (param_tvb) { + proto_tree *subtree; + f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo); + + subtree = proto_item_add_subtree(actx->created_item, ett_f1ap_ResourceCoordinationTransferContainer); + switch (f1ap_data->message_type) { + case INITIATING_MESSAGE: + switch (f1ap_data->procedure_code) { + case id_UEContextSetup: + case id_UEContextModification: + dissect_x2ap_MeNBResourceCoordinationInformation_PDU(param_tvb, actx->pinfo, subtree, NULL); + break; + case id_UEContextModificationRequired: + dissect_x2ap_SgNBResourceCoordinationInformation_PDU(param_tvb, actx->pinfo, subtree, NULL); + break; + default: + break; + } + break; + case SUCCESSFUL_OUTCOME: + switch (f1ap_data->procedure_code) { + case id_UEContextSetup: + case id_UEContextModification: + dissect_x2ap_SgNBResourceCoordinationInformation_PDU(param_tvb, actx->pinfo, subtree, NULL); + break; + case id_UEContextModificationRequired: + dissect_x2ap_MeNBResourceCoordinationInformation_PDU(param_tvb, actx->pinfo, subtree, NULL); + break; + default: + break; + } + break; + default: + break; + } + } + +#.FN_BODY PLMN-Identity VAL_PTR = ¶m_tvb + tvbuff_t *param_tvb = NULL; +%(DEFAULT_BODY)s + if (param_tvb) { + proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_f1ap_PLMN_Identity); + dissect_e212_mcc_mnc(param_tvb, actx->pinfo, subtree, 0, E212_NONE, FALSE); + } + +#.FN_BODY MIB-message VAL_PTR = ¶m_tvb + tvbuff_t *param_tvb = NULL; +%(DEFAULT_BODY)s + if (param_tvb) { + proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_f1ap_MIB_message); + dissect_nr_rrc_MIB_PDU(param_tvb, actx->pinfo, subtree, NULL); + } + +#.TYPE_ATTR +BitRate DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_bit_sec + +#.FN_BODY SCG-Config-Info VAL_PTR = ¶m_tvb + tvbuff_t *param_tvb = NULL; +%(DEFAULT_BODY)s + if (param_tvb) { + proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_f1ap_SCG_Config_Info); + dissect_nr_rrc_SCG_ConfigInfo_PDU(param_tvb, actx->pinfo, subtree, NULL); + } + +#.FN_BODY CellGroupConfig VAL_PTR = ¶m_tvb + tvbuff_t *param_tvb = NULL; +%(DEFAULT_BODY)s + if (param_tvb) { + proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_f1ap_CellGroupConfig); + dissect_nr_rrc_CellGroupConfig_PDU(param_tvb, actx->pinfo, subtree, NULL); + } + +#.FN_BODY TransportLayerAddress VAL_PTR = ¶m_tvb + tvbuff_t *param_tvb = NULL; +%(DEFAULT_BODY)s + if (param_tvb) { + proto_tree *subtree; + gint tvb_len; + + tvb_len = tvb_reported_length(param_tvb); + subtree = proto_item_add_subtree(actx->created_item, ett_f1ap_TransportLayerAddress); + if (tvb_len == 4) { + /* IPv4 */ + proto_tree_add_item(subtree, hf_f1ap_transportLayerAddressIPv4, param_tvb, 0, 4, ENC_BIG_ENDIAN); + } else if (tvb_len == 16) { + /* IPv6 */ + proto_tree_add_item(subtree, hf_f1ap_transportLayerAddressIPv6, param_tvb, 0, 16, ENC_NA); + } else if (tvb_len == 20) { + /* IPv4 */ + proto_tree_add_item(subtree, hf_f1ap_transportLayerAddressIPv4, param_tvb, 0, 4, ENC_BIG_ENDIAN); + /* IPv6 */ + proto_tree_add_item(subtree, hf_f1ap_transportLayerAddressIPv6, param_tvb, 4, 16, ENC_NA); + } + } + + +#.FN_HDR Reset + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Reset"); +#.FN_HDR ResetAcknowledge + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ResetAcknowledge"); +#.FN_HDR F1SetupRequest + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "F1SetupRequest"); +#.FN_HDR F1SetupResponse + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "F1SetupResponse"); +#.FN_HDR F1SetupFailure + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "F1SetupFailure"); +#.FN_HDR GNBDUConfigurationUpdate + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNBDUConfigurationUpdate"); +#.FN_HDR GNBDUConfigurationUpdateAcknowledge + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNBDUConfigurationUpdateAcknowledge"); +#.FN_HDR GNBDUConfigurationUpdateFailure + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNBDUConfigurationUpdateFailure"); +#.FN_HDR GNBCUConfigurationUpdate + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNBCUConfigurationUpdate"); +#.FN_HDR GNBCUConfigurationUpdateAcknowledge + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNBCUConfigurationUpdateAcknowledge"); +#.FN_HDR GNBCUConfigurationUpdateFailure + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNBCUConfigurationUpdateFailure"); +#.FN_HDR UEContextSetupRequest + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextSetupRequest"); +#.FN_HDR UEContextSetupResponse + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextSetupResponse"); +#.FN_HDR UEContextSetupFailure + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextSetupFailure"); +#.FN_HDR UEContextReleaseCommand + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextReleaseCommand"); +#.FN_HDR UEContextReleaseComplete + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextReleaseComplete"); +#.FN_HDR UEContextModificationRequest + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextModificationRequest"); +#.FN_HDR UEContextModificationResponse + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextModificationResponse"); +#.FN_HDR UEContextModificationFailure + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextModificationFailure"); +#.FN_HDR UEContextModificationRequired + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextModificationRequired"); +#.FN_HDR UEContextModificationConfirm + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextModificationConfirm"); +#.FN_HDR ErrorIndication + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ErrorIndication"); +#.FN_HDR UEContextReleaseRequest + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextReleaseRequest"); +#.FN_HDR DLRRCMessageTransfer + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "DLRRCMessageTransfer"); +#.FN_HDR ULRRCMessageTransfer + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ULRRCMessageTransfer"); +#.FN_HDR PrivateMessage + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "PrivateMessage"); +#.END + +# +# Editor modelines - http://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: +# diff --git a/epan/dissectors/asn1/f1ap/packet-f1ap-template.c b/epan/dissectors/asn1/f1ap/packet-f1ap-template.c new file mode 100644 index 0000000000..054575e846 --- /dev/null +++ b/epan/dissectors/asn1/f1ap/packet-f1ap-template.c @@ -0,0 +1,235 @@ +/* packet-f1ap.c + * Routines for E-UTRAN F1 Application Protocol (F1AP) packet dissection + * Copyright 2018, Pascal Quantin <pascal.quantin@gmail.com> + * + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> + * Copyright 1998 Gerald Combs + * + * SPDX-License-Identifier: GPL-2.0-or-later + * + * References: 3GPP TS 38.473 V15.0.0 (2017-12) + */ + +#include "config.h" + +#include <epan/packet.h> + +#include <epan/asn1.h> +#include <epan/sctpppids.h> +#include <epan/proto_data.h> + +#include "packet-per.h" +#include "packet-x2ap.h" +#include "packet-nr-rrc.h" +#include "packet-e212.h" + +#define PNAME "F1 Application Protocol" +#define PSNAME "F1AP" +#define PFNAME "f1ap" + +#define SCTP_PORT_F1AP 38472 + +void proto_register_f1ap(void); +void proto_reg_handoff_f1ap(void); + +#include "packet-f1ap-val.h" + +/* Initialize the protocol and registered fields */ +static int proto_f1ap = -1; + +static int hf_f1ap_transportLayerAddressIPv4 = -1; +static int hf_f1ap_transportLayerAddressIPv6 = -1; +#include "packet-f1ap-hf.c" + +/* Initialize the subtree pointers */ +static gint ett_f1ap = -1; +static gint ett_f1ap_ResourceCoordinationTransferContainer = -1; +static gint ett_f1ap_PLMN_Identity = -1; +static gint ett_f1ap_MIB_message = -1; +static gint ett_f1ap_SCG_Config_Info = -1; +static gint ett_f1ap_CellGroupConfig = -1; +static gint ett_f1ap_TransportLayerAddress = -1; +#include "packet-f1ap-ett.c" + +enum{ + INITIATING_MESSAGE, + SUCCESSFUL_OUTCOME, + UNSUCCESSFUL_OUTCOME +}; + +typedef struct { + guint32 message_type; + guint32 procedure_code; + guint32 protocol_ie_id; + guint32 protocol_extension_id; + const char *obj_id; +} f1ap_private_data_t; + +typedef struct { + guint32 message_type; + guint32 ProcedureCode; + guint32 ProtocolIE_ID; + guint32 ProtocolExtensionID; +} f1ap_ctx_t; + +/* Global variables */ +static dissector_handle_t f1ap_handle; + +/* Dissector tables */ +static dissector_table_t f1ap_ies_dissector_table; +static dissector_table_t f1ap_extension_dissector_table; +static dissector_table_t f1ap_proc_imsg_dissector_table; +static dissector_table_t f1ap_proc_sout_dissector_table; +static dissector_table_t f1ap_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 f1ap_private_data_t* +f1ap_get_private_data(packet_info *pinfo) +{ + f1ap_private_data_t *f1ap_data = (f1ap_private_data_t*)p_get_proto_data(pinfo->pool, pinfo, proto_f1ap, 0); + if (!f1ap_data) { + f1ap_data = wmem_new0(pinfo->pool, f1ap_private_data_t); + p_add_proto_data(pinfo->pool, pinfo, proto_f1ap, 0, f1ap_data); + } + return f1ap_data; +} + +#include "packet-f1ap-fn.c" + +static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) +{ + f1ap_ctx_t f1ap_ctx; + f1ap_private_data_t *f1ap_data = f1ap_get_private_data(pinfo); + + f1ap_ctx.message_type = f1ap_data->message_type; + f1ap_ctx.ProcedureCode = f1ap_data->procedure_code; + f1ap_ctx.ProtocolIE_ID = f1ap_data->protocol_ie_id; + f1ap_ctx.ProtocolExtensionID = f1ap_data->protocol_extension_id; + + return (dissector_try_uint_new(f1ap_ies_dissector_table, f1ap_data->protocol_ie_id, tvb, pinfo, tree, FALSE, &f1ap_ctx)) ? tvb_captured_length(tvb) : 0; +} + +static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) +{ + f1ap_ctx_t f1ap_ctx; + f1ap_private_data_t *f1ap_data = f1ap_get_private_data(pinfo); + + f1ap_ctx.message_type = f1ap_data->message_type; + f1ap_ctx.ProcedureCode = f1ap_data->procedure_code; + f1ap_ctx.ProtocolIE_ID = f1ap_data->protocol_ie_id; + f1ap_ctx.ProtocolExtensionID = f1ap_data->protocol_extension_id; + + return (dissector_try_uint_new(f1ap_extension_dissector_table, f1ap_data->protocol_extension_id, tvb, pinfo, tree, FALSE, &f1ap_ctx)) ? tvb_captured_length(tvb) : 0; +} + +static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) +{ + f1ap_private_data_t *f1ap_data = f1ap_get_private_data(pinfo); + + return (dissector_try_uint_new(f1ap_proc_imsg_dissector_table, f1ap_data->procedure_code, tvb, pinfo, tree, FALSE, data)) ? tvb_captured_length(tvb) : 0; +} + +static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) +{ + f1ap_private_data_t *f1ap_data = f1ap_get_private_data(pinfo); + + return (dissector_try_uint_new(f1ap_proc_sout_dissector_table, f1ap_data->procedure_code, tvb, pinfo, tree, FALSE, data)) ? tvb_captured_length(tvb) : 0; +} + +static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) +{ + f1ap_private_data_t *f1ap_data = f1ap_get_private_data(pinfo); + + return (dissector_try_uint_new(f1ap_proc_uout_dissector_table, f1ap_data->procedure_code, tvb, pinfo, tree, FALSE, data)) ? tvb_captured_length(tvb) : 0; +} + + +static int +dissect_f1ap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_) +{ + proto_item *f1ap_item = NULL; + proto_tree *f1ap_tree = NULL; + + /* make entry in the Protocol column on summary display */ + col_set_str(pinfo->cinfo, COL_PROTOCOL, "F1AP"); + col_clear(pinfo->cinfo, COL_INFO); + + /* create the f1ap protocol tree */ + f1ap_item = proto_tree_add_item(tree, proto_f1ap, tvb, 0, -1, ENC_NA); + f1ap_tree = proto_item_add_subtree(f1ap_item, ett_f1ap); + + dissect_F1AP_PDU_PDU(tvb, pinfo, f1ap_tree, NULL); + return tvb_captured_length(tvb); +} + +void proto_register_f1ap(void) { + + /* List of fields */ + + static hf_register_info hf[] = { + { &hf_f1ap_transportLayerAddressIPv4, + { "IPv4 transportLayerAddress", "f1ap.transportLayerAddressIPv4", + FT_IPv4, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_transportLayerAddressIPv6, + { "IPv6 transportLayerAddress", "f1ap.transportLayerAddressIPv6", + FT_IPv6, BASE_NONE, NULL, 0, + NULL, HFILL }}, +#include "packet-f1ap-hfarr.c" + }; + + /* List of subtrees */ + static gint *ett[] = { + &ett_f1ap, + &ett_f1ap_ResourceCoordinationTransferContainer, + &ett_f1ap_PLMN_Identity, + &ett_f1ap_MIB_message, + &ett_f1ap_SCG_Config_Info, + &ett_f1ap_CellGroupConfig, + &ett_f1ap_TransportLayerAddress, +#include "packet-f1ap-ettarr.c" + }; + + /* Register protocol */ + proto_f1ap = proto_register_protocol(PNAME, PSNAME, PFNAME); + /* Register fields and subtrees */ + proto_register_field_array(proto_f1ap, hf, array_length(hf)); + proto_register_subtree_array(ett, array_length(ett)); + + /* Register dissector */ + f1ap_handle = register_dissector("f1ap", dissect_f1ap, proto_f1ap); + + /* Register dissector tables */ + f1ap_ies_dissector_table = register_dissector_table("f1ap.ies", "F1AP-PROTOCOL-IES", proto_f1ap, FT_UINT32, BASE_DEC); + f1ap_extension_dissector_table = register_dissector_table("f1ap.extension", "F1AP-PROTOCOL-EXTENSION", proto_f1ap, FT_UINT32, BASE_DEC); + f1ap_proc_imsg_dissector_table = register_dissector_table("f1ap.proc.imsg", "F1AP-ELEMENTARY-PROCEDURE InitiatingMessage", proto_f1ap, FT_UINT32, BASE_DEC); + f1ap_proc_sout_dissector_table = register_dissector_table("f1ap.proc.sout", "F1AP-ELEMENTARY-PROCEDURE SuccessfulOutcome", proto_f1ap, FT_UINT32, BASE_DEC); + f1ap_proc_uout_dissector_table = register_dissector_table("f1ap.proc.uout", "F1AP-ELEMENTARY-PROCEDURE UnsuccessfulOutcome", proto_f1ap, FT_UINT32, BASE_DEC); +} + +void +proto_reg_handoff_f1ap(void) +{ + dissector_add_uint_with_preference("sctp.port", SCTP_PORT_F1AP, f1ap_handle); + dissector_add_uint("sctp.ppi", F1AP_PROTOCOL_ID, f1ap_handle); +#include "packet-f1ap-dis-tab.c" +} + +/* + * 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/nr-rrc/nr-rrc.cnf b/epan/dissectors/asn1/nr-rrc/nr-rrc.cnf index 62411e04e3..6d2d1e2903 100644 --- a/epan/dissectors/asn1/nr-rrc/nr-rrc.cnf +++ b/epan/dissectors/asn1/nr-rrc/nr-rrc.cnf @@ -27,7 +27,9 @@ T-Reassembly T-StatusProhibit #.EXPORTS +CellGroupConfig_PDU MeasResults_PDU +MIB_PDU SCG-ConfigInfo_PDU RadioBearerConfig_PDU RRCReconfiguration_PDU @@ -38,7 +40,9 @@ UE-NR-Capability_PDU #.PDU BCCH-BCH-Message @bcch.bch +CellGroupConfig DL-DCCH-Message @dl.dcch +MIB MeasResults RadioBearerConfig RRCReconfiguration diff --git a/epan/dissectors/asn1/x2ap/CMakeLists.txt b/epan/dissectors/asn1/x2ap/CMakeLists.txt index d9e4b6b226..a858ff93aa 100644 --- a/epan/dissectors/asn1/x2ap/CMakeLists.txt +++ b/epan/dissectors/asn1/x2ap/CMakeLists.txt @@ -26,6 +26,7 @@ set( ASN_FILE_LIST set( EXTRA_DIST ${ASN_FILE_LIST} packet-${PROTOCOL_NAME}-template.c + packet-${PROTOCOL_NAME}-template.h ${PROTOCOL_NAME}.cnf ) diff --git a/epan/dissectors/asn1/x2ap/Makefile.am b/epan/dissectors/asn1/x2ap/Makefile.am index d0da63a6d5..f934a38bfa 100644 --- a/epan/dissectors/asn1/x2ap/Makefile.am +++ b/epan/dissectors/asn1/x2ap/Makefile.am @@ -22,6 +22,7 @@ EXTRA_DIST = \ $(EXTRA_DIST_COMMON) \ $(ASN_FILE_LIST) \ packet-$(PROTOCOL_NAME)-template.c \ + packet-$(PROTOCOL_NAME)-template.h \ $(PROTOCOL_NAME).cnf SRC_FILES = \ diff --git a/epan/dissectors/asn1/x2ap/packet-x2ap-template.h b/epan/dissectors/asn1/x2ap/packet-x2ap-template.h new file mode 100644 index 0000000000..6fdb557947 --- /dev/null +++ b/epan/dissectors/asn1/x2ap/packet-x2ap-template.h @@ -0,0 +1,29 @@ +/* packet-x2ap.h + * Routines for E-UTRAN X2 Application Protocol (S1AP) packet dissection + * + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> + * Copyright 1998 Gerald Combs + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef PACKET_X2AP_H +#define PACKET_X2AP_H + +#include "packet-x2ap-exp.h" + +#endif /* PACKET_X2AP_H */ + +/* + * 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/x2ap/x2ap.cnf b/epan/dissectors/asn1/x2ap/x2ap.cnf index e19e55ed25..ed6290bcba 100644 --- a/epan/dissectors/asn1/x2ap/x2ap.cnf +++ b/epan/dissectors/asn1/x2ap/x2ap.cnf @@ -25,6 +25,14 @@ ProcedureCode ProtocolIE-ID OffsetOfNbiotChannelNumberToEARFCN +#.EXPORTS +MeNBResourceCoordinationInformation_PDU +SgNBResourceCoordinationInformation_PDU + +#.PDU +MeNBResourceCoordinationInformation +SgNBResourceCoordinationInformation + #.TYPE_RENAME ProtocolIE-Field/value ProtocolIE_Field_value PrivateIE-Field/value PrivateIE_Field_value |