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 | |
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>
27 files changed, 7404 insertions, 132 deletions
diff --git a/configure.ac b/configure.ac index 88a50aef8c..0f67875f27 100644 --- a/configure.ac +++ b/configure.ac @@ -2687,6 +2687,7 @@ AC_CONFIG_FILES( epan/dissectors/asn1/dop/Makefile epan/dissectors/asn1/dsp/Makefile epan/dissectors/asn1/ess/Makefile + epan/dissectors/asn1/f1ap/Makefile epan/dissectors/asn1/ftam/Makefile epan/dissectors/asn1/goose/Makefile epan/dissectors/asn1/gprscdr/Makefile diff --git a/docbook/release-notes.asciidoc b/docbook/release-notes.asciidoc index cb2cb04eee..3eb59e2a36 100644 --- a/docbook/release-notes.asciidoc +++ b/docbook/release-notes.asciidoc @@ -103,6 +103,7 @@ Broadcom tags (Broadcom Ethernet switch management frames) CVS password server CAN-ETH Excentis DOCSIS31 XRA header +F1 Application Protocol F5ethtrailer FP Mux GRPC (gRPC) diff --git a/epan/dissectors/.editorconfig b/epan/dissectors/.editorconfig index 474d3d37fc..d3f54934de 100644 --- a/epan/dissectors/.editorconfig +++ b/epan/dissectors/.editorconfig @@ -713,6 +713,9 @@ indent_size = tab indent_style = tab indent_size = tab +[packet-f1ap.[ch]] +indent_size = 2 + [packet-fcgi.[ch]] indent_size = 3 diff --git a/epan/dissectors/CMakeLists.txt b/epan/dissectors/CMakeLists.txt index 89849491be..336acd3420 100644 --- a/epan/dissectors/CMakeLists.txt +++ b/epan/dissectors/CMakeLists.txt @@ -94,6 +94,7 @@ set(CLEAN_ASN1_DISSECTOR_SRC ${CMAKE_CURRENT_SOURCE_DIR}/packet-dsp.c ${CMAKE_CURRENT_SOURCE_DIR}/packet-ecp.c ${CMAKE_CURRENT_SOURCE_DIR}/packet-ess.c + ${CMAKE_CURRENT_SOURCE_DIR}/packet-f1ap.c ${CMAKE_CURRENT_SOURCE_DIR}/packet-ftam.c ${CMAKE_CURRENT_SOURCE_DIR}/packet-goose.c ${CMAKE_CURRENT_SOURCE_DIR}/packet-gsm_map.c @@ -575,6 +576,7 @@ set(DISSECTOR_PUBLIC_HEADERS packet-wtp.h packet-x11.h packet-x11-keysymdef.h + packet-x2ap.h packet-x509af.h packet-x509ce.h packet-x509if.h diff --git a/epan/dissectors/Makefile.am b/epan/dissectors/Makefile.am index 10e4246ce7..486bec337e 100644 --- a/epan/dissectors/Makefile.am +++ b/epan/dissectors/Makefile.am @@ -109,6 +109,7 @@ ASN1_DISSECTOR_SRC = \ packet-dsp.c \ packet-ecp.c \ packet-ess.c \ + packet-f1ap.c \ packet-ftam.c \ packet-goose.c \ packet-gsm_map.c \ @@ -1844,6 +1845,7 @@ DISSECTOR_INCLUDES = \ x11-extension-errors.h \ x11-glx-render-enum.h \ x11-enum.h \ + packet-x2ap.h \ packet-x509af.h \ packet-x509ce.h \ packet-x509if.h \ 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 diff --git a/epan/dissectors/packet-f1ap.c b/epan/dissectors/packet-f1ap.c new file mode 100644 index 0000000000..432dbadeaa --- /dev/null +++ b/epan/dissectors/packet-f1ap.c @@ -0,0 +1,4371 @@ +/* Do not modify this file. Changes will be overwritten. */ +/* Generated automatically by the ASN.1 to Wireshark dissector compiler */ +/* packet-f1ap.c */ +/* asn2wrs.py -p f1ap -c ./f1ap.cnf -s ./packet-f1ap-template -D . -O ../.. F1AP-CommonDataTypes.asn F1AP-Constants.asn F1AP-Containers.asn F1AP-IEs.asn F1AP-PDU-Contents.asn F1AP-PDU-Descriptions.asn */ + +/* Input file: packet-f1ap-template.c */ + +#line 1 "./asn1/f1ap/packet-f1ap-template.c" +/* 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); + + +/*--- Included file: packet-f1ap-val.h ---*/ +#line 1 "./asn1/f1ap/packet-f1ap-val.h" +#define maxPrivateIEs 65535 +#define maxProtocolExtensions 65535 +#define maxProtocolIEs 65535 +#define maxnoofErrors 256 +#define maxnoofIndividualF1ConnectionsToReset 256 +#define maxCellingNBDU 512 +#define maxnoofSCells 64 +#define maxnoofSRBs 8 +#define maxnoofDRBs 64 +#define maxnoofULTunnels 2 +#define maxnoofDLTunnels 2 +#define maxnoofBPLMNs 6 + +typedef enum _ProcedureCode_enum { + id_Reset = 0, + id_F1Setup = 1, + id_ErrorIndication = 2, + id_gNBDUConfigurationUpdate = 3, + id_gNBCUConfigurationUpdate = 4, + id_UEContextSetup = 5, + id_UEContextRelease = 6, + id_UEContextModification = 7, + id_UEContextModificationRequired = 8, + id_UEMobilityCommand = 9, + id_UEContextReleaseRequest = 10, + id_InitialULRRCMessageTransfer = 11, + id_DLRRCMessageTransfer = 12, + id_ULRRCMessageTransfer = 13, + id_SystemInformationDelivery = 14, + id_Paging = 15 +} ProcedureCode_enum; + +typedef enum _ProtocolIE_ID_enum { + id_Cause = 0, + id_CriticalityDiagnostics = 1, + id_gNB_DU_F1AP_ID = 2, + id_gNB_CU_F1AP_ID = 3, + id_ResetType = 4, + id_TimeToWait = 5, + id_UE_associatedLogicalF1_ConnectionItem = 6, + id_UE_associatedLogicalF1_ConnectionListResAck = 7, + id_RRCContainer = 8, + id_SRBID = 9, + id_gNB_DU_ID = 10, + id_gNB_Name = 11, + id_NRCellID = 12, + id_PCI = 13, + id_gNB_DU_Served_Cells_List = 14, + id_Cells_to_be_Activated_List = 15, + id_Served_Cells_To_Add_List = 16, + id_Served_Cells_To_Modify_List = 17, + id_Served_Cells_To_Delete_List = 18, + id_Cells_to_be_Deactivated_List = 19, + id_Cells_Failed_to_be_Activated_List = 20, + id_TransactionID = 21, + id_Served_Cell_Information = 22, + id_gNB_DU_System_Information = 23, + id_NCGI = 24, + id_gNB_CU_System_Information = 25, + id_OldNCGI = 26, + id_DRBID = 27, + id_PSCell_ID = 28, + id_EUTRANQoS = 29, + id_SRBs_ToBeSetup_List = 30, + id_DRBs_ToBeSetup_List = 31, + id_DLTunnels_ToBeSetup_List = 32, + id_ULTunnels_ToBeSetup_List = 33, + id_UL_GTP_Tunnel_EndPoint = 34, + id_DL_GTP_Tunnel_EndPoint = 35, + id_CUtoDURRCInformation = 36, + id_DUtoCURRCInformation = 37, + id_UERadioCapability = 38, + id_UEAggregateMaximumBitRate = 39, + id_SCell_ToBeSetup_List = 40, + id_ResourceCoordinationTransferContainer = 41, + id_DRBs_ToBeModified_List = 42, + id_DRBs_ToBeReleased_List = 43, + id_DRBs_Modified_List = 44, + id_DRBs_FailedToSetup_List = 45, + id_DRBs_FailedToBeModified_List = 46, + id_SCell_ID = 47, + id_DRXCycle = 48, + id_DRBs_Setup_List = 49, + id_SRBs_Setup_List = 50, + id_DRBs_FailedToBeSetup_List = 51, + id_SRBs_FailedToBeSetup_List = 52, + id_DLTunnels_ToBeSetup_list = 53, + id_ULTunnels_ToBeSetup_list = 54, + id_TransmissionStopIndicator = 55, + id_DRBs_Required_ToBeModified_List = 56, + id_DRBs_Required_ToBeReleased_List = 57, + id_SRBs_Required_ToBeReleased_List = 58, + id_oldgNB_DU_F1AP_ID = 59, + id_SRBs_ToBeReleased_List = 60, + id_DRBs_ModifiedConf_List = 61, + id_privateMessage = 62 +} ProtocolIE_ID_enum; + +/*--- End of included file: packet-f1ap-val.h ---*/ +#line 37 "./asn1/f1ap/packet-f1ap-template.c" + +/* Initialize the protocol and registered fields */ +static int proto_f1ap = -1; + +static int hf_f1ap_transportLayerAddressIPv4 = -1; +static int hf_f1ap_transportLayerAddressIPv6 = -1; + +/*--- Included file: packet-f1ap-hf.c ---*/ +#line 1 "./asn1/f1ap/packet-f1ap-hf.c" +static int hf_f1ap_Cause_PDU = -1; /* Cause */ +static int hf_f1ap_CriticalityDiagnostics_PDU = -1; /* CriticalityDiagnostics */ +static int hf_f1ap_CUtoDURRCInformation_PDU = -1; /* CUtoDURRCInformation */ +static int hf_f1ap_DRBID_PDU = -1; /* DRBID */ +static int hf_f1ap_DRXCycle_PDU = -1; /* DRXCycle */ +static int hf_f1ap_DUtoCURRCInformation_PDU = -1; /* DUtoCURRCInformation */ +static int hf_f1ap_EUTRANQoS_PDU = -1; /* EUTRANQoS */ +static int hf_f1ap_GNB_CU_F1AP_ID_PDU = -1; /* GNB_CU_F1AP_ID */ +static int hf_f1ap_GNB_DU_F1AP_ID_PDU = -1; /* GNB_DU_F1AP_ID */ +static int hf_f1ap_GNB_DU_ID_PDU = -1; /* GNB_DU_ID */ +static int hf_f1ap_GNB_DU_System_Information_PDU = -1; /* GNB_DU_System_Information */ +static int hf_f1ap_GTPTunnelEndpoint_PDU = -1; /* GTPTunnelEndpoint */ +static int hf_f1ap_NCGI_PDU = -1; /* NCGI */ +static int hf_f1ap_PCI_PDU = -1; /* PCI */ +static int hf_f1ap_RRCContainer_PDU = -1; /* RRCContainer */ +static int hf_f1ap_Served_Cell_Information_PDU = -1; /* Served_Cell_Information */ +static int hf_f1ap_SRBID_PDU = -1; /* SRBID */ +static int hf_f1ap_TimeToWait_PDU = -1; /* TimeToWait */ +static int hf_f1ap_TransactionID_PDU = -1; /* TransactionID */ +static int hf_f1ap_TransmissionStopIndicator_PDU = -1; /* TransmissionStopIndicator */ +static int hf_f1ap_UE_associatedLogicalF1_ConnectionItem_PDU = -1; /* UE_associatedLogicalF1_ConnectionItem */ +static int hf_f1ap_Reset_PDU = -1; /* Reset */ +static int hf_f1ap_ResetType_PDU = -1; /* ResetType */ +static int hf_f1ap_ResetAcknowledge_PDU = -1; /* ResetAcknowledge */ +static int hf_f1ap_UE_associatedLogicalF1_ConnectionListResAck_PDU = -1; /* UE_associatedLogicalF1_ConnectionListResAck */ +static int hf_f1ap_ErrorIndication_PDU = -1; /* ErrorIndication */ +static int hf_f1ap_F1SetupRequest_PDU = -1; /* F1SetupRequest */ +static int hf_f1ap_GNB_DU_Served_Cells_List_PDU = -1; /* GNB_DU_Served_Cells_List */ +static int hf_f1ap_GNB_Name_PDU = -1; /* GNB_Name */ +static int hf_f1ap_F1SetupResponse_PDU = -1; /* F1SetupResponse */ +static int hf_f1ap_Cells_to_be_Activated_List_PDU = -1; /* Cells_to_be_Activated_List */ +static int hf_f1ap_F1SetupFailure_PDU = -1; /* F1SetupFailure */ +static int hf_f1ap_GNBDUConfigurationUpdate_PDU = -1; /* GNBDUConfigurationUpdate */ +static int hf_f1ap_Served_Cells_To_Add_List_PDU = -1; /* Served_Cells_To_Add_List */ +static int hf_f1ap_Served_Cells_To_Modify_List_PDU = -1; /* Served_Cells_To_Modify_List */ +static int hf_f1ap_Served_Cells_To_Delete_List_PDU = -1; /* Served_Cells_To_Delete_List */ +static int hf_f1ap_GNBDUConfigurationUpdateAcknowledge_PDU = -1; /* GNBDUConfigurationUpdateAcknowledge */ +static int hf_f1ap_GNBDUConfigurationUpdateFailure_PDU = -1; /* GNBDUConfigurationUpdateFailure */ +static int hf_f1ap_GNBCUConfigurationUpdate_PDU = -1; /* GNBCUConfigurationUpdate */ +static int hf_f1ap_Cells_to_be_Deactivated_List_PDU = -1; /* Cells_to_be_Deactivated_List */ +static int hf_f1ap_GNBCUConfigurationUpdateAcknowledge_PDU = -1; /* GNBCUConfigurationUpdateAcknowledge */ +static int hf_f1ap_Cells_Failed_to_be_Activated_List_PDU = -1; /* Cells_Failed_to_be_Activated_List */ +static int hf_f1ap_GNBCUConfigurationUpdateFailure_PDU = -1; /* GNBCUConfigurationUpdateFailure */ +static int hf_f1ap_UEContextSetupRequest_PDU = -1; /* UEContextSetupRequest */ +static int hf_f1ap_SCell_ToBeSetup_List_PDU = -1; /* SCell_ToBeSetup_List */ +static int hf_f1ap_SRBs_ToBeSetup_List_PDU = -1; /* SRBs_ToBeSetup_List */ +static int hf_f1ap_DRBs_ToBeSetup_List_PDU = -1; /* DRBs_ToBeSetup_List */ +static int hf_f1ap_ResourceCoordinationTransferContainer_PDU = -1; /* ResourceCoordinationTransferContainer */ +static int hf_f1ap_ULTunnels_ToBeSetup_list_PDU = -1; /* ULTunnels_ToBeSetup_list */ +static int hf_f1ap_UEContextSetupResponse_PDU = -1; /* UEContextSetupResponse */ +static int hf_f1ap_SRBs_Setup_List_PDU = -1; /* SRBs_Setup_List */ +static int hf_f1ap_DRBs_Setup_List_PDU = -1; /* DRBs_Setup_List */ +static int hf_f1ap_SRBs_FailedToBeSetup_List_PDU = -1; /* SRBs_FailedToBeSetup_List */ +static int hf_f1ap_DRBs_FailedToBeSetup_List_PDU = -1; /* DRBs_FailedToBeSetup_List */ +static int hf_f1ap_DLTunnels_ToBeSetup_list_PDU = -1; /* DLTunnels_ToBeSetup_list */ +static int hf_f1ap_UEContextSetupFailure_PDU = -1; /* UEContextSetupFailure */ +static int hf_f1ap_UEContextReleaseRequest_PDU = -1; /* UEContextReleaseRequest */ +static int hf_f1ap_UEContextReleaseCommand_PDU = -1; /* UEContextReleaseCommand */ +static int hf_f1ap_UEContextReleaseComplete_PDU = -1; /* UEContextReleaseComplete */ +static int hf_f1ap_UEContextModificationRequest_PDU = -1; /* UEContextModificationRequest */ +static int hf_f1ap_DRBs_ToBeModified_List_PDU = -1; /* DRBs_ToBeModified_List */ +static int hf_f1ap_SRBs_ToBeReleased_List_PDU = -1; /* SRBs_ToBeReleased_List */ +static int hf_f1ap_DRBs_ToBeReleased_List_PDU = -1; /* DRBs_ToBeReleased_List */ +static int hf_f1ap_UEContextModificationResponse_PDU = -1; /* UEContextModificationResponse */ +static int hf_f1ap_DRBs_Modified_List_PDU = -1; /* DRBs_Modified_List */ +static int hf_f1ap_DRBs_FailedToBeModified_List_PDU = -1; /* DRBs_FailedToBeModified_List */ +static int hf_f1ap_UEContextModificationFailure_PDU = -1; /* UEContextModificationFailure */ +static int hf_f1ap_UEContextModificationRequired_PDU = -1; /* UEContextModificationRequired */ +static int hf_f1ap_DRBs_Required_ToBeModified_List_PDU = -1; /* DRBs_Required_ToBeModified_List */ +static int hf_f1ap_DRBs_Required_ToBeReleased_List_PDU = -1; /* DRBs_Required_ToBeReleased_List */ +static int hf_f1ap_SRBs_Required_ToBeReleased_List_PDU = -1; /* SRBs_Required_ToBeReleased_List */ +static int hf_f1ap_UEContextModificationConfirm_PDU = -1; /* UEContextModificationConfirm */ +static int hf_f1ap_DRBs_ModifiedConf_List_PDU = -1; /* DRBs_ModifiedConf_List */ +static int hf_f1ap_DLRRCMessageTransfer_PDU = -1; /* DLRRCMessageTransfer */ +static int hf_f1ap_ULRRCMessageTransfer_PDU = -1; /* ULRRCMessageTransfer */ +static int hf_f1ap_PrivateMessage_PDU = -1; /* PrivateMessage */ +static int hf_f1ap_F1AP_PDU_PDU = -1; /* F1AP_PDU */ +static int hf_f1ap_local = -1; /* INTEGER_0_65535 */ +static int hf_f1ap_global = -1; /* T_global */ +static int hf_f1ap_ProtocolIE_Container_item = -1; /* ProtocolIE_Field */ +static int hf_f1ap_id = -1; /* ProtocolIE_ID */ +static int hf_f1ap_criticality = -1; /* Criticality */ +static int hf_f1ap_ie_field_value = -1; /* T_ie_field_value */ +static int hf_f1ap_ProtocolExtensionContainer_item = -1; /* ProtocolExtensionField */ +static int hf_f1ap_ext_id = -1; /* ProtocolExtensionID */ +static int hf_f1ap_extensionValue = -1; /* T_extensionValue */ +static int hf_f1ap_PrivateIE_Container_item = -1; /* PrivateIE_Field */ +static int hf_f1ap_private_id = -1; /* PrivateIE_ID */ +static int hf_f1ap_value = -1; /* T_value */ +static int hf_f1ap_priorityLevel = -1; /* PriorityLevel */ +static int hf_f1ap_pre_emptionCapability = -1; /* Pre_emptionCapability */ +static int hf_f1ap_pre_emptionVulnerability = -1; /* Pre_emptionVulnerability */ +static int hf_f1ap_iE_Extensions = -1; /* ProtocolExtensionContainer */ +static int hf_f1ap_BroadcastPLMNs_Item_item = -1; /* PLMN_Identity */ +static int hf_f1ap_radioNetwork = -1; /* CauseRadioNetwork */ +static int hf_f1ap_transport = -1; /* CauseTransport */ +static int hf_f1ap_protocol = -1; /* CauseProtocol */ +static int hf_f1ap_misc = -1; /* CauseMisc */ +static int hf_f1ap_procedureCode = -1; /* ProcedureCode */ +static int hf_f1ap_triggeringMessage = -1; /* TriggeringMessage */ +static int hf_f1ap_procedureCriticality = -1; /* Criticality */ +static int hf_f1ap_iEsCriticalityDiagnostics = -1; /* CriticalityDiagnostics_IE_List */ +static int hf_f1ap_CriticalityDiagnostics_IE_List_item = -1; /* CriticalityDiagnostics_IE_Item */ +static int hf_f1ap_iECriticality = -1; /* Criticality */ +static int hf_f1ap_iE_ID = -1; /* ProtocolIE_ID */ +static int hf_f1ap_typeOfError = -1; /* TypeOfError */ +static int hf_f1ap_sCG_Config_Info = -1; /* SCG_Config_Info */ +static int hf_f1ap_uERadiocapabilities = -1; /* UERadiocapabilities */ +static int hf_f1ap_longDRXCycleLength = -1; /* LongDRXCycleLength */ +static int hf_f1ap_shortDRXCycleLength = -1; /* ShortDRXCycleLength */ +static int hf_f1ap_shortDRXCycleTimer = -1; /* ShortDRXCycleTimer */ +static int hf_f1ap_cellGroupConfig = -1; /* CellGroupConfig */ +static int hf_f1ap_qCI = -1; /* QCI */ +static int hf_f1ap_allocationAndRetentionPriority = -1; /* AllocationAndRetentionPriority */ +static int hf_f1ap_gbrQosInformation = -1; /* GBR_QosInformation */ +static int hf_f1ap_uL_NARFCN = -1; /* NARFCN */ +static int hf_f1ap_dL_NARFCN = -1; /* NARFCN */ +static int hf_f1ap_uL_Transmission_Bandwidth = -1; /* Transmission_Bandwidth */ +static int hf_f1ap_dL_Transmission_Bandwidth = -1; /* Transmission_Bandwidth */ +static int hf_f1ap_e_RAB_MaximumBitrateDL = -1; /* BitRate */ +static int hf_f1ap_e_RAB_MaximumBitrateUL = -1; /* BitRate */ +static int hf_f1ap_e_RAB_GuaranteedBitrateDL = -1; /* BitRate */ +static int hf_f1ap_e_RAB_GuaranteedBitrateUL = -1; /* BitRate */ +static int hf_f1ap_mIB_message = -1; /* MIB_message */ +static int hf_f1ap_sIB1_message = -1; /* SIB1_message */ +static int hf_f1ap_transportLayerAddress = -1; /* TransportLayerAddress */ +static int hf_f1ap_gTP_TEID = -1; /* GTP_TEID */ +static int hf_f1ap_pLMN_Identity = -1; /* PLMN_Identity */ +static int hf_f1ap_nRCellIdentity = -1; /* NRCellIdentity */ +static int hf_f1ap_fDD = -1; /* FDD_Info */ +static int hf_f1ap_tDD = -1; /* TDD_Info */ +static int hf_f1ap_nCGI = -1; /* NCGI */ +static int hf_f1ap_pCI = -1; /* PCI */ +static int hf_f1ap_broadcastPLMNs = -1; /* BroadcastPLMNs_Item */ +static int hf_f1ap_nR_Mode_Info = -1; /* NR_Mode_Info */ +static int hf_f1ap_nARFCN = -1; /* NARFCN */ +static int hf_f1ap_transmission_Bandwidth = -1; /* Transmission_Bandwidth */ +static int hf_f1ap_gNB_CU_F1AP_ID = -1; /* GNB_CU_F1AP_ID */ +static int hf_f1ap_gNB_DU_F1AP_ID = -1; /* GNB_DU_F1AP_ID */ +static int hf_f1ap_protocolIEs = -1; /* ProtocolIE_Container */ +static int hf_f1ap_f1_Interface = -1; /* ResetAll */ +static int hf_f1ap_partOfF1_Interface = -1; /* UE_associatedLogicalF1_ConnectionListRes */ +static int hf_f1ap_UE_associatedLogicalF1_ConnectionListRes_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_f1ap_UE_associatedLogicalF1_ConnectionListResAck_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_f1ap_GNB_DU_Served_Cells_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_f1ap_Cells_to_be_Activated_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_f1ap_Served_Cells_To_Add_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_f1ap_Served_Cells_To_Modify_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_f1ap_Served_Cells_To_Delete_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_f1ap_Cells_to_be_Deactivated_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_f1ap_Cells_Failed_to_be_Activated_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_f1ap_SCell_ToBeSetup_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_f1ap_SRBs_ToBeSetup_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_f1ap_DRBs_ToBeSetup_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_f1ap_ULTunnels_ToBeSetup_list_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_f1ap_SRBs_Setup_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_f1ap_DRBs_Setup_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_f1ap_SRBs_FailedToBeSetup_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_f1ap_DRBs_FailedToBeSetup_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_f1ap_DLTunnels_ToBeSetup_list_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_f1ap_DRBs_ToBeModified_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_f1ap_SRBs_ToBeReleased_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_f1ap_DRBs_ToBeReleased_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_f1ap_DRBs_Modified_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_f1ap_DRBs_FailedToBeModified_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_f1ap_DRBs_Required_ToBeModified_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_f1ap_DRBs_Required_ToBeReleased_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_f1ap_SRBs_Required_ToBeReleased_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_f1ap_DRBs_ModifiedConf_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_f1ap_privateIEs = -1; /* PrivateIE_Container */ +static int hf_f1ap_initiatingMessage = -1; /* InitiatingMessage */ +static int hf_f1ap_successfulOutcome = -1; /* SuccessfulOutcome */ +static int hf_f1ap_unsuccessfulOutcome = -1; /* UnsuccessfulOutcome */ +static int hf_f1ap_initiatingMessagevalue = -1; /* InitiatingMessage_value */ +static int hf_f1ap_successfulOutcome_value = -1; /* SuccessfulOutcome_value */ +static int hf_f1ap_unsuccessfulOutcome_value = -1; /* UnsuccessfulOutcome_value */ + +/*--- End of included file: packet-f1ap-hf.c ---*/ +#line 44 "./asn1/f1ap/packet-f1ap-template.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; + +/*--- Included file: packet-f1ap-ett.c ---*/ +#line 1 "./asn1/f1ap/packet-f1ap-ett.c" +static gint ett_f1ap_PrivateIE_ID = -1; +static gint ett_f1ap_ProtocolIE_Container = -1; +static gint ett_f1ap_ProtocolIE_Field = -1; +static gint ett_f1ap_ProtocolExtensionContainer = -1; +static gint ett_f1ap_ProtocolExtensionField = -1; +static gint ett_f1ap_PrivateIE_Container = -1; +static gint ett_f1ap_PrivateIE_Field = -1; +static gint ett_f1ap_AllocationAndRetentionPriority = -1; +static gint ett_f1ap_BroadcastPLMNs_Item = -1; +static gint ett_f1ap_Cause = -1; +static gint ett_f1ap_CriticalityDiagnostics = -1; +static gint ett_f1ap_CriticalityDiagnostics_IE_List = -1; +static gint ett_f1ap_CriticalityDiagnostics_IE_Item = -1; +static gint ett_f1ap_CUtoDURRCInformation = -1; +static gint ett_f1ap_DRXCycle = -1; +static gint ett_f1ap_DUtoCURRCInformation = -1; +static gint ett_f1ap_EUTRANQoS = -1; +static gint ett_f1ap_FDD_Info = -1; +static gint ett_f1ap_GBR_QosInformation = -1; +static gint ett_f1ap_GNB_DU_System_Information = -1; +static gint ett_f1ap_GTPTunnelEndpoint = -1; +static gint ett_f1ap_NCGI = -1; +static gint ett_f1ap_NR_Mode_Info = -1; +static gint ett_f1ap_Served_Cell_Information = -1; +static gint ett_f1ap_TDD_Info = -1; +static gint ett_f1ap_UE_associatedLogicalF1_ConnectionItem = -1; +static gint ett_f1ap_Reset = -1; +static gint ett_f1ap_ResetType = -1; +static gint ett_f1ap_UE_associatedLogicalF1_ConnectionListRes = -1; +static gint ett_f1ap_ResetAcknowledge = -1; +static gint ett_f1ap_UE_associatedLogicalF1_ConnectionListResAck = -1; +static gint ett_f1ap_ErrorIndication = -1; +static gint ett_f1ap_F1SetupRequest = -1; +static gint ett_f1ap_GNB_DU_Served_Cells_List = -1; +static gint ett_f1ap_F1SetupResponse = -1; +static gint ett_f1ap_Cells_to_be_Activated_List = -1; +static gint ett_f1ap_F1SetupFailure = -1; +static gint ett_f1ap_GNBDUConfigurationUpdate = -1; +static gint ett_f1ap_Served_Cells_To_Add_List = -1; +static gint ett_f1ap_Served_Cells_To_Modify_List = -1; +static gint ett_f1ap_Served_Cells_To_Delete_List = -1; +static gint ett_f1ap_GNBDUConfigurationUpdateAcknowledge = -1; +static gint ett_f1ap_GNBDUConfigurationUpdateFailure = -1; +static gint ett_f1ap_GNBCUConfigurationUpdate = -1; +static gint ett_f1ap_Cells_to_be_Deactivated_List = -1; +static gint ett_f1ap_GNBCUConfigurationUpdateAcknowledge = -1; +static gint ett_f1ap_Cells_Failed_to_be_Activated_List = -1; +static gint ett_f1ap_GNBCUConfigurationUpdateFailure = -1; +static gint ett_f1ap_UEContextSetupRequest = -1; +static gint ett_f1ap_SCell_ToBeSetup_List = -1; +static gint ett_f1ap_SRBs_ToBeSetup_List = -1; +static gint ett_f1ap_DRBs_ToBeSetup_List = -1; +static gint ett_f1ap_ULTunnels_ToBeSetup_list = -1; +static gint ett_f1ap_UEContextSetupResponse = -1; +static gint ett_f1ap_SRBs_Setup_List = -1; +static gint ett_f1ap_DRBs_Setup_List = -1; +static gint ett_f1ap_SRBs_FailedToBeSetup_List = -1; +static gint ett_f1ap_DRBs_FailedToBeSetup_List = -1; +static gint ett_f1ap_DLTunnels_ToBeSetup_list = -1; +static gint ett_f1ap_UEContextSetupFailure = -1; +static gint ett_f1ap_UEContextReleaseRequest = -1; +static gint ett_f1ap_UEContextReleaseCommand = -1; +static gint ett_f1ap_UEContextReleaseComplete = -1; +static gint ett_f1ap_UEContextModificationRequest = -1; +static gint ett_f1ap_DRBs_ToBeModified_List = -1; +static gint ett_f1ap_SRBs_ToBeReleased_List = -1; +static gint ett_f1ap_DRBs_ToBeReleased_List = -1; +static gint ett_f1ap_UEContextModificationResponse = -1; +static gint ett_f1ap_DRBs_Modified_List = -1; +static gint ett_f1ap_DRBs_FailedToBeModified_List = -1; +static gint ett_f1ap_UEContextModificationFailure = -1; +static gint ett_f1ap_UEContextModificationRequired = -1; +static gint ett_f1ap_DRBs_Required_ToBeModified_List = -1; +static gint ett_f1ap_DRBs_Required_ToBeReleased_List = -1; +static gint ett_f1ap_SRBs_Required_ToBeReleased_List = -1; +static gint ett_f1ap_UEContextModificationConfirm = -1; +static gint ett_f1ap_DRBs_ModifiedConf_List = -1; +static gint ett_f1ap_DLRRCMessageTransfer = -1; +static gint ett_f1ap_ULRRCMessageTransfer = -1; +static gint ett_f1ap_PrivateMessage = -1; +static gint ett_f1ap_F1AP_PDU = -1; +static gint ett_f1ap_InitiatingMessage = -1; +static gint ett_f1ap_SuccessfulOutcome = -1; +static gint ett_f1ap_UnsuccessfulOutcome = -1; + +/*--- End of included file: packet-f1ap-ett.c ---*/ +#line 54 "./asn1/f1ap/packet-f1ap-template.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; +} + + +/*--- Included file: packet-f1ap-fn.c ---*/ +#line 1 "./asn1/f1ap/packet-f1ap-fn.c" + +static const value_string f1ap_Criticality_vals[] = { + { 0, "reject" }, + { 1, "ignore" }, + { 2, "notify" }, + { 0, NULL } +}; + + +static int +dissect_f1ap_Criticality(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 3, NULL, FALSE, 0, NULL); + + return offset; +} + + + +static int +dissect_f1ap_INTEGER_0_65535(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 65535U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_f1ap_T_global(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 132 "./asn1/f1ap/f1ap.cnf" + f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo); + offset = dissect_per_object_identifier_str(tvb, offset, actx, tree, hf_index, &f1ap_data->obj_id); + + + + + return offset; +} + + +static const value_string f1ap_PrivateIE_ID_vals[] = { + { 0, "local" }, + { 1, "global" }, + { 0, NULL } +}; + +static const per_choice_t PrivateIE_ID_choice[] = { + { 0, &hf_f1ap_local , ASN1_NO_EXTENSIONS , dissect_f1ap_INTEGER_0_65535 }, + { 1, &hf_f1ap_global , ASN1_NO_EXTENSIONS , dissect_f1ap_T_global }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_f1ap_PrivateIE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 128 "./asn1/f1ap/f1ap.cnf" + f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo); + f1ap_data->obj_id = NULL; + + + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_f1ap_PrivateIE_ID, PrivateIE_ID_choice, + NULL); + + return offset; +} + + +static const value_string f1ap_ProcedureCode_vals[] = { + { id_Reset, "id-Reset" }, + { id_F1Setup, "id-F1Setup" }, + { id_ErrorIndication, "id-ErrorIndication" }, + { id_gNBDUConfigurationUpdate, "id-gNBDUConfigurationUpdate" }, + { id_gNBCUConfigurationUpdate, "id-gNBCUConfigurationUpdate" }, + { id_UEContextSetup, "id-UEContextSetup" }, + { id_UEContextRelease, "id-UEContextRelease" }, + { id_UEContextModification, "id-UEContextModification" }, + { id_UEContextModificationRequired, "id-UEContextModificationRequired" }, + { id_UEMobilityCommand, "id-UEMobilityCommand" }, + { id_UEContextReleaseRequest, "id-UEContextReleaseRequest" }, + { id_InitialULRRCMessageTransfer, "id-InitialULRRCMessageTransfer" }, + { id_DLRRCMessageTransfer, "id-DLRRCMessageTransfer" }, + { id_ULRRCMessageTransfer, "id-ULRRCMessageTransfer" }, + { id_SystemInformationDelivery, "id-SystemInformationDelivery" }, + { id_Paging, "id-Paging" }, + { 0, NULL } +}; + +static value_string_ext f1ap_ProcedureCode_vals_ext = VALUE_STRING_EXT_INIT(f1ap_ProcedureCode_vals); + + +static int +dissect_f1ap_ProcedureCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 74 "./asn1/f1ap/f1ap.cnf" + f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo); + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 255U, &f1ap_data->procedure_code, FALSE); + + + + return offset; +} + + + +static int +dissect_f1ap_ProtocolExtensionID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 68 "./asn1/f1ap/f1ap.cnf" + f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo); + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 65535U, &f1ap_data->protocol_extension_id, FALSE); + + + + + return offset; +} + + +static const value_string f1ap_ProtocolIE_ID_vals[] = { + { id_Cause, "id-Cause" }, + { id_CriticalityDiagnostics, "id-CriticalityDiagnostics" }, + { id_gNB_DU_F1AP_ID, "id-gNB-DU-F1AP-ID" }, + { id_gNB_CU_F1AP_ID, "id-gNB-CU-F1AP-ID" }, + { id_ResetType, "id-ResetType" }, + { id_TimeToWait, "id-TimeToWait" }, + { id_UE_associatedLogicalF1_ConnectionItem, "id-UE-associatedLogicalF1-ConnectionItem" }, + { id_UE_associatedLogicalF1_ConnectionListResAck, "id-UE-associatedLogicalF1-ConnectionListResAck" }, + { id_RRCContainer, "id-RRCContainer" }, + { id_SRBID, "id-SRBID" }, + { id_gNB_DU_ID, "id-gNB-DU-ID" }, + { id_gNB_Name, "id-gNB-Name" }, + { id_NRCellID, "id-NRCellID" }, + { id_PCI, "id-PCI" }, + { id_gNB_DU_Served_Cells_List, "id-gNB-DU-Served-Cells-List" }, + { id_Cells_to_be_Activated_List, "id-Cells-to-be-Activated-List" }, + { id_Served_Cells_To_Add_List, "id-Served-Cells-To-Add-List" }, + { id_Served_Cells_To_Modify_List, "id-Served-Cells-To-Modify-List" }, + { id_Served_Cells_To_Delete_List, "id-Served-Cells-To-Delete-List" }, + { id_Cells_to_be_Deactivated_List, "id-Cells-to-be-Deactivated-List" }, + { id_Cells_Failed_to_be_Activated_List, "id-Cells-Failed-to-be-Activated-List" }, + { id_TransactionID, "id-TransactionID" }, + { id_Served_Cell_Information, "id-Served-Cell-Information" }, + { id_gNB_DU_System_Information, "id-gNB-DU-System-Information" }, + { id_NCGI, "id-NCGI" }, + { id_gNB_CU_System_Information, "id-gNB-CU-System-Information" }, + { id_OldNCGI, "id-OldNCGI" }, + { id_DRBID, "id-DRBID" }, + { id_PSCell_ID, "id-PSCell-ID" }, + { id_EUTRANQoS, "id-EUTRANQoS" }, + { id_SRBs_ToBeSetup_List, "id-SRBs-ToBeSetup-List" }, + { id_DRBs_ToBeSetup_List, "id-DRBs-ToBeSetup-List" }, + { id_DLTunnels_ToBeSetup_List, "id-DLTunnels-ToBeSetup-List" }, + { id_ULTunnels_ToBeSetup_List, "id-ULTunnels-ToBeSetup-List" }, + { id_UL_GTP_Tunnel_EndPoint, "id-UL-GTP-Tunnel-EndPoint" }, + { id_DL_GTP_Tunnel_EndPoint, "id-DL-GTP-Tunnel-EndPoint" }, + { id_CUtoDURRCInformation, "id-CUtoDURRCInformation" }, + { id_DUtoCURRCInformation, "id-DUtoCURRCInformation" }, + { id_UERadioCapability, "id-UERadioCapability" }, + { id_UEAggregateMaximumBitRate, "id-UEAggregateMaximumBitRate" }, + { id_SCell_ToBeSetup_List, "id-SCell-ToBeSetup-List" }, + { id_ResourceCoordinationTransferContainer, "id-ResourceCoordinationTransferContainer" }, + { id_DRBs_ToBeModified_List, "id-DRBs-ToBeModified-List" }, + { id_DRBs_ToBeReleased_List, "id-DRBs-ToBeReleased-List" }, + { id_DRBs_Modified_List, "id-DRBs-Modified-List" }, + { id_DRBs_FailedToSetup_List, "id-DRBs-FailedToSetup-List" }, + { id_DRBs_FailedToBeModified_List, "id-DRBs-FailedToBeModified-List" }, + { id_SCell_ID, "id-SCell-ID" }, + { id_DRXCycle, "id-DRXCycle" }, + { id_DRBs_Setup_List, "id-DRBs-Setup-List" }, + { id_SRBs_Setup_List, "id-SRBs-Setup-List" }, + { id_DRBs_FailedToBeSetup_List, "id-DRBs-FailedToBeSetup-List" }, + { id_SRBs_FailedToBeSetup_List, "id-SRBs-FailedToBeSetup-List" }, + { id_DLTunnels_ToBeSetup_list, "id-DLTunnels-ToBeSetup-list" }, + { id_ULTunnels_ToBeSetup_list, "id-ULTunnels-ToBeSetup-list" }, + { id_TransmissionStopIndicator, "id-TransmissionStopIndicator" }, + { id_DRBs_Required_ToBeModified_List, "id-DRBs-Required-ToBeModified-List" }, + { id_DRBs_Required_ToBeReleased_List, "id-DRBs-Required-ToBeReleased-List" }, + { id_SRBs_Required_ToBeReleased_List, "id-SRBs-Required-ToBeReleased-List" }, + { id_oldgNB_DU_F1AP_ID, "id-oldgNB-DU-F1AP-ID" }, + { id_SRBs_ToBeReleased_List, "id-SRBs-ToBeReleased-List" }, + { id_DRBs_ModifiedConf_List, "id-DRBs-ModifiedConf-List" }, + { id_privateMessage, "id-privateMessage" }, + { 0, NULL } +}; + +static value_string_ext f1ap_ProtocolIE_ID_vals_ext = VALUE_STRING_EXT_INIT(f1ap_ProtocolIE_ID_vals); + + +static int +dissect_f1ap_ProtocolIE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 56 "./asn1/f1ap/f1ap.cnf" + f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo); + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 65535U, &f1ap_data->protocol_ie_id, FALSE); + + + + +#line 60 "./asn1/f1ap/f1ap.cnf" + 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)")); + } + + + return offset; +} + + +static const value_string f1ap_TriggeringMessage_vals[] = { + { 0, "initiating-message" }, + { 1, "successful-outcome" }, + { 2, "unsuccessfull-outcome" }, + { 0, NULL } +}; + + +static int +dissect_f1ap_TriggeringMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 3, NULL, FALSE, 0, NULL); + + return offset; +} + + + +static int +dissect_f1ap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue); + + return offset; +} + + +static const per_sequence_t ProtocolIE_Field_sequence[] = { + { &hf_f1ap_id , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_ID }, + { &hf_f1ap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_Criticality }, + { &hf_f1ap_ie_field_value , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_T_ie_field_value }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_ProtocolIE_Field(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_ProtocolIE_Field, ProtocolIE_Field_sequence); + + return offset; +} + + +static const per_sequence_t ProtocolIE_Container_sequence_of[1] = { + { &hf_f1ap_ProtocolIE_Container_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_Field }, +}; + +static int +dissect_f1ap_ProtocolIE_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_f1ap_ProtocolIE_Container, ProtocolIE_Container_sequence_of, + 0, maxProtocolIEs, FALSE); + + return offset; +} + + + +static int +dissect_f1ap_ProtocolIE_SingleContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_f1ap_ProtocolIE_Field(tvb, offset, actx, tree, hf_index); + + return offset; +} + + + +static int +dissect_f1ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue); + + return offset; +} + + +static const per_sequence_t ProtocolExtensionField_sequence[] = { + { &hf_f1ap_ext_id , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolExtensionID }, + { &hf_f1ap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_Criticality }, + { &hf_f1ap_extensionValue , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_T_extensionValue }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_ProtocolExtensionField(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_ProtocolExtensionField, ProtocolExtensionField_sequence); + + return offset; +} + + +static const per_sequence_t ProtocolExtensionContainer_sequence_of[1] = { + { &hf_f1ap_ProtocolExtensionContainer_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolExtensionField }, +}; + +static int +dissect_f1ap_ProtocolExtensionContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_f1ap_ProtocolExtensionContainer, ProtocolExtensionContainer_sequence_of, + 1, maxProtocolExtensions, FALSE); + + return offset; +} + + + +static int +dissect_f1ap_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 136 "./asn1/f1ap/f1ap.cnf" + 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 { + offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL); + + } + + + + return offset; +} + + +static const per_sequence_t PrivateIE_Field_sequence[] = { + { &hf_f1ap_private_id , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_PrivateIE_ID }, + { &hf_f1ap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_Criticality }, + { &hf_f1ap_value , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_T_value }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_PrivateIE_Field(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_PrivateIE_Field, PrivateIE_Field_sequence); + + return offset; +} + + +static const per_sequence_t PrivateIE_Container_sequence_of[1] = { + { &hf_f1ap_PrivateIE_Container_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_PrivateIE_Field }, +}; + +static int +dissect_f1ap_PrivateIE_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_f1ap_PrivateIE_Container, PrivateIE_Container_sequence_of, + 1, maxPrivateIEs, FALSE); + + return offset; +} + + +static const value_string f1ap_PriorityLevel_vals[] = { + { 0, "spare" }, + { 1, "highest" }, + { 14, "lowest" }, + { 15, "no-priority" }, + { 0, NULL } +}; + + +static int +dissect_f1ap_PriorityLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 15U, NULL, FALSE); + + return offset; +} + + +static const value_string f1ap_Pre_emptionCapability_vals[] = { + { 0, "shall-not-trigger-pre-emption" }, + { 1, "may-trigger-pre-emption" }, + { 0, NULL } +}; + + +static int +dissect_f1ap_Pre_emptionCapability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, FALSE, 0, NULL); + + return offset; +} + + +static const value_string f1ap_Pre_emptionVulnerability_vals[] = { + { 0, "not-pre-emptable" }, + { 1, "pre-emptable" }, + { 0, NULL } +}; + + +static int +dissect_f1ap_Pre_emptionVulnerability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, FALSE, 0, NULL); + + return offset; +} + + +static const per_sequence_t AllocationAndRetentionPriority_sequence[] = { + { &hf_f1ap_priorityLevel , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_PriorityLevel }, + { &hf_f1ap_pre_emptionCapability, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_Pre_emptionCapability }, + { &hf_f1ap_pre_emptionVulnerability, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_Pre_emptionVulnerability }, + { &hf_f1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_f1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_AllocationAndRetentionPriority(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_AllocationAndRetentionPriority, AllocationAndRetentionPriority_sequence); + + return offset; +} + + + +static int +dissect_f1ap_BitRate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index, + 0U, G_GUINT64_CONSTANT(4000000000000), NULL, TRUE); + + return offset; +} + + + +static int +dissect_f1ap_PLMN_Identity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 374 "./asn1/f1ap/f1ap.cnf" + tvbuff_t *param_tvb = NULL; + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + 3, 3, FALSE, ¶m_tvb); + + 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); + } + + + + return offset; +} + + +static const per_sequence_t BroadcastPLMNs_Item_sequence_of[1] = { + { &hf_f1ap_BroadcastPLMNs_Item_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_PLMN_Identity }, +}; + +static int +dissect_f1ap_BroadcastPLMNs_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_f1ap_BroadcastPLMNs_Item, BroadcastPLMNs_Item_sequence_of, + 1, maxnoofBPLMNs, FALSE); + + return offset; +} + + +static const value_string f1ap_CauseRadioNetwork_vals[] = { + { 0, "unspecified" }, + { 0, NULL } +}; + + +static int +dissect_f1ap_CauseRadioNetwork(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 1, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string f1ap_CauseTransport_vals[] = { + { 0, "unspecified" }, + { 0, NULL } +}; + + +static int +dissect_f1ap_CauseTransport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 1, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string f1ap_CauseProtocol_vals[] = { + { 0, "transfer-syntax-error" }, + { 1, "abstract-syntax-error-reject" }, + { 2, "abstract-syntax-error-ignore-and-notify" }, + { 3, "message-not-compatible-with-receiver-state" }, + { 4, "semantic-error" }, + { 5, "abstract-syntax-error-falsely-constructed-message" }, + { 6, "unspecified" }, + { 0, NULL } +}; + + +static int +dissect_f1ap_CauseProtocol(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 7, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string f1ap_CauseMisc_vals[] = { + { 0, "control-processing-overload" }, + { 1, "not-enough-user-plane-processing-resources" }, + { 2, "hardware-failure" }, + { 3, "om-intervention" }, + { 4, "unspecified" }, + { 0, NULL } +}; + + +static int +dissect_f1ap_CauseMisc(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 5, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string f1ap_Cause_vals[] = { + { 0, "radioNetwork" }, + { 1, "transport" }, + { 2, "protocol" }, + { 3, "misc" }, + { 0, NULL } +}; + +static const per_choice_t Cause_choice[] = { + { 0, &hf_f1ap_radioNetwork , ASN1_EXTENSION_ROOT , dissect_f1ap_CauseRadioNetwork }, + { 1, &hf_f1ap_transport , ASN1_EXTENSION_ROOT , dissect_f1ap_CauseTransport }, + { 2, &hf_f1ap_protocol , ASN1_EXTENSION_ROOT , dissect_f1ap_CauseProtocol }, + { 3, &hf_f1ap_misc , ASN1_EXTENSION_ROOT , dissect_f1ap_CauseMisc }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_f1ap_Cause(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_f1ap_Cause, Cause_choice, + NULL); + + return offset; +} + + + +static int +dissect_f1ap_CellGroupConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 401 "./asn1/f1ap/f1ap.cnf" + tvbuff_t *param_tvb = NULL; + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + NO_BOUND, NO_BOUND, FALSE, ¶m_tvb); + + 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); + } + + + + return offset; +} + + +static const value_string f1ap_TypeOfError_vals[] = { + { 0, "not-understood" }, + { 1, "missing" }, + { 0, NULL } +}; + + +static int +dissect_f1ap_TypeOfError(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const per_sequence_t CriticalityDiagnostics_IE_Item_sequence[] = { + { &hf_f1ap_iECriticality , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_Criticality }, + { &hf_f1ap_iE_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_ID }, + { &hf_f1ap_typeOfError , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_TypeOfError }, + { &hf_f1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_f1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_CriticalityDiagnostics_IE_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_CriticalityDiagnostics_IE_Item, CriticalityDiagnostics_IE_Item_sequence); + + return offset; +} + + +static const per_sequence_t CriticalityDiagnostics_IE_List_sequence_of[1] = { + { &hf_f1ap_CriticalityDiagnostics_IE_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_CriticalityDiagnostics_IE_Item }, +}; + +static int +dissect_f1ap_CriticalityDiagnostics_IE_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_f1ap_CriticalityDiagnostics_IE_List, CriticalityDiagnostics_IE_List_sequence_of, + 1, maxnoofErrors, FALSE); + + return offset; +} + + +static const per_sequence_t CriticalityDiagnostics_sequence[] = { + { &hf_f1ap_procedureCode , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_f1ap_ProcedureCode }, + { &hf_f1ap_triggeringMessage, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_f1ap_TriggeringMessage }, + { &hf_f1ap_procedureCriticality, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_f1ap_Criticality }, + { &hf_f1ap_iEsCriticalityDiagnostics, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_f1ap_CriticalityDiagnostics_IE_List }, + { &hf_f1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_f1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_CriticalityDiagnostics(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_CriticalityDiagnostics, CriticalityDiagnostics_sequence); + + return offset; +} + + + +static int +dissect_f1ap_SCG_Config_Info(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 393 "./asn1/f1ap/f1ap.cnf" + tvbuff_t *param_tvb = NULL; + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + NO_BOUND, NO_BOUND, FALSE, ¶m_tvb); + + 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); + } + + + + return offset; +} + + + +static int +dissect_f1ap_UERadiocapabilities(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + NO_BOUND, NO_BOUND, FALSE, NULL); + + return offset; +} + + +static const per_sequence_t CUtoDURRCInformation_sequence[] = { + { &hf_f1ap_sCG_Config_Info, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_f1ap_SCG_Config_Info }, + { &hf_f1ap_uERadiocapabilities, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_UERadiocapabilities }, + { &hf_f1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_f1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_CUtoDURRCInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_CUtoDURRCInformation, CUtoDURRCInformation_sequence); + + return offset; +} + + + +static int +dissect_f1ap_DRBID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 15U, NULL, TRUE); + + return offset; +} + + +static const value_string f1ap_LongDRXCycleLength_vals[] = { + { 0, "ms10" }, + { 1, "ms20" }, + { 2, "ms32" }, + { 3, "ms40" }, + { 4, "ms60" }, + { 5, "ms64" }, + { 6, "ms70" }, + { 7, "ms80" }, + { 8, "ms128" }, + { 9, "ms160" }, + { 10, "ms256" }, + { 11, "ms320" }, + { 12, "ms512" }, + { 13, "ms640" }, + { 14, "ms1024" }, + { 15, "ms1280" }, + { 16, "ms2048" }, + { 17, "ms2560" }, + { 18, "ms5120" }, + { 19, "ms10240" }, + { 0, NULL } +}; + +static value_string_ext f1ap_LongDRXCycleLength_vals_ext = VALUE_STRING_EXT_INIT(f1ap_LongDRXCycleLength_vals); + + +static int +dissect_f1ap_LongDRXCycleLength(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 20, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string f1ap_ShortDRXCycleLength_vals[] = { + { 0, "ms2" }, + { 1, "ms3" }, + { 2, "ms4" }, + { 3, "ms5" }, + { 4, "ms6" }, + { 5, "ms7" }, + { 6, "ms8" }, + { 7, "ms10" }, + { 8, "ms14" }, + { 9, "ms16" }, + { 10, "ms20" }, + { 11, "ms30" }, + { 12, "ms32" }, + { 13, "ms35" }, + { 14, "ms40" }, + { 15, "ms64" }, + { 16, "ms80" }, + { 17, "ms128" }, + { 18, "ms160" }, + { 19, "ms256" }, + { 20, "ms320" }, + { 21, "ms512" }, + { 22, "ms640" }, + { 0, NULL } +}; + +static value_string_ext f1ap_ShortDRXCycleLength_vals_ext = VALUE_STRING_EXT_INIT(f1ap_ShortDRXCycleLength_vals); + + +static int +dissect_f1ap_ShortDRXCycleLength(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 23, NULL, TRUE, 0, NULL); + + return offset; +} + + + +static int +dissect_f1ap_ShortDRXCycleTimer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 1U, 16U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t DRXCycle_sequence[] = { + { &hf_f1ap_longDRXCycleLength, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_LongDRXCycleLength }, + { &hf_f1ap_shortDRXCycleLength, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_f1ap_ShortDRXCycleLength }, + { &hf_f1ap_shortDRXCycleTimer, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_f1ap_ShortDRXCycleTimer }, + { &hf_f1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_f1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_DRXCycle(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_DRXCycle, DRXCycle_sequence); + + return offset; +} + + +static const per_sequence_t DUtoCURRCInformation_sequence[] = { + { &hf_f1ap_cellGroupConfig, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_CellGroupConfig }, + { &hf_f1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_f1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_DUtoCURRCInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_DUtoCURRCInformation, DUtoCURRCInformation_sequence); + + return offset; +} + + + +static int +dissect_f1ap_QCI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 255U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t GBR_QosInformation_sequence[] = { + { &hf_f1ap_e_RAB_MaximumBitrateDL, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_BitRate }, + { &hf_f1ap_e_RAB_MaximumBitrateUL, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_BitRate }, + { &hf_f1ap_e_RAB_GuaranteedBitrateDL, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_BitRate }, + { &hf_f1ap_e_RAB_GuaranteedBitrateUL, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_BitRate }, + { &hf_f1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_f1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_GBR_QosInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_GBR_QosInformation, GBR_QosInformation_sequence); + + return offset; +} + + +static const per_sequence_t EUTRANQoS_sequence[] = { + { &hf_f1ap_qCI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_QCI }, + { &hf_f1ap_allocationAndRetentionPriority, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_AllocationAndRetentionPriority }, + { &hf_f1ap_gbrQosInformation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_f1ap_GBR_QosInformation }, + { &hf_f1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_f1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_EUTRANQoS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_EUTRANQoS, EUTRANQoS_sequence); + + return offset; +} + + + +static int +dissect_f1ap_NARFCN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 65535U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_f1ap_Transmission_Bandwidth(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 65535U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t FDD_Info_sequence[] = { + { &hf_f1ap_uL_NARFCN , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_NARFCN }, + { &hf_f1ap_dL_NARFCN , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_NARFCN }, + { &hf_f1ap_uL_Transmission_Bandwidth, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_Transmission_Bandwidth }, + { &hf_f1ap_dL_Transmission_Bandwidth, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_Transmission_Bandwidth }, + { &hf_f1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_f1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_FDD_Info(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_FDD_Info, FDD_Info_sequence); + + return offset; +} + + + +static int +dissect_f1ap_GNB_CU_F1AP_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 4294967295U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_f1ap_GNB_DU_F1AP_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 4294967295U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_f1ap_GNB_DU_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index, + 0U, G_GUINT64_CONSTANT(68719476735), NULL, FALSE); + + return offset; +} + + + +static int +dissect_f1ap_MIB_message(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 382 "./asn1/f1ap/f1ap.cnf" + tvbuff_t *param_tvb = NULL; + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + NO_BOUND, NO_BOUND, FALSE, ¶m_tvb); + + 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); + } + + + + return offset; +} + + + +static int +dissect_f1ap_SIB1_message(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + NO_BOUND, NO_BOUND, FALSE, NULL); + + return offset; +} + + +static const per_sequence_t GNB_DU_System_Information_sequence[] = { + { &hf_f1ap_mIB_message , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_MIB_message }, + { &hf_f1ap_sIB1_message , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_SIB1_message }, + { &hf_f1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_f1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_GNB_DU_System_Information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_GNB_DU_System_Information, GNB_DU_System_Information_sequence); + + return offset; +} + + + +static int +dissect_f1ap_GTP_TEID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + 4, 4, FALSE, NULL); + + return offset; +} + + + +static int +dissect_f1ap_TransportLayerAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 409 "./asn1/f1ap/f1ap.cnf" + tvbuff_t *param_tvb = NULL; + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 1, 160, TRUE, ¶m_tvb, NULL); + + 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); + } + } + + + + + return offset; +} + + +static const per_sequence_t GTPTunnelEndpoint_sequence[] = { + { &hf_f1ap_transportLayerAddress, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_TransportLayerAddress }, + { &hf_f1ap_gTP_TEID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_GTP_TEID }, + { &hf_f1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_f1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_GTPTunnelEndpoint(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_GTPTunnelEndpoint, GTPTunnelEndpoint_sequence); + + return offset; +} + + + +static int +dissect_f1ap_NRCellIdentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 36, 36, FALSE, NULL, NULL); + + return offset; +} + + +static const per_sequence_t NCGI_sequence[] = { + { &hf_f1ap_pLMN_Identity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_PLMN_Identity }, + { &hf_f1ap_nRCellIdentity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_NRCellIdentity }, + { &hf_f1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_f1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_NCGI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_NCGI, NCGI_sequence); + + return offset; +} + + +static const per_sequence_t TDD_Info_sequence[] = { + { &hf_f1ap_nARFCN , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_NARFCN }, + { &hf_f1ap_transmission_Bandwidth, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_Transmission_Bandwidth }, + { &hf_f1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_f1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_TDD_Info(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_TDD_Info, TDD_Info_sequence); + + return offset; +} + + +static const value_string f1ap_NR_Mode_Info_vals[] = { + { 0, "fDD" }, + { 1, "tDD" }, + { 0, NULL } +}; + +static const per_choice_t NR_Mode_Info_choice[] = { + { 0, &hf_f1ap_fDD , ASN1_EXTENSION_ROOT , dissect_f1ap_FDD_Info }, + { 1, &hf_f1ap_tDD , ASN1_EXTENSION_ROOT , dissect_f1ap_TDD_Info }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_f1ap_NR_Mode_Info(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_f1ap_NR_Mode_Info, NR_Mode_Info_choice, + NULL); + + return offset; +} + + + +static int +dissect_f1ap_PCI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 1007U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_f1ap_RRCContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + NO_BOUND, NO_BOUND, FALSE, NULL); + + return offset; +} + + +static const per_sequence_t Served_Cell_Information_sequence[] = { + { &hf_f1ap_nCGI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_NCGI }, + { &hf_f1ap_pCI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_PCI }, + { &hf_f1ap_broadcastPLMNs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_BroadcastPLMNs_Item }, + { &hf_f1ap_nR_Mode_Info , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_NR_Mode_Info }, + { &hf_f1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_f1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_Served_Cell_Information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_Served_Cell_Information, Served_Cell_Information_sequence); + + return offset; +} + + + +static int +dissect_f1ap_SRBID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 3U, NULL, TRUE); + + return offset; +} + + +static const value_string f1ap_TimeToWait_vals[] = { + { 0, "v1s" }, + { 1, "v2s" }, + { 2, "v5s" }, + { 3, "v10s" }, + { 4, "v20s" }, + { 5, "v60s" }, + { 0, NULL } +}; + + +static int +dissect_f1ap_TimeToWait(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 6, NULL, TRUE, 0, NULL); + + return offset; +} + + + +static int +dissect_f1ap_TransactionID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 255U, NULL, TRUE); + + return offset; +} + + +static const value_string f1ap_TransmissionStopIndicator_vals[] = { + { 0, "true" }, + { 0, NULL } +}; + + +static int +dissect_f1ap_TransmissionStopIndicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 1, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const per_sequence_t UE_associatedLogicalF1_ConnectionItem_sequence[] = { + { &hf_f1ap_gNB_CU_F1AP_ID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_f1ap_GNB_CU_F1AP_ID }, + { &hf_f1ap_gNB_DU_F1AP_ID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_f1ap_GNB_DU_F1AP_ID }, + { &hf_f1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_f1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_UE_associatedLogicalF1_ConnectionItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_UE_associatedLogicalF1_ConnectionItem, UE_associatedLogicalF1_ConnectionItem_sequence); + + return offset; +} + + +static const per_sequence_t Reset_sequence[] = { + { &hf_f1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_Reset(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 433 "./asn1/f1ap/f1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Reset"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_Reset, Reset_sequence); + + return offset; +} + + +static const value_string f1ap_ResetAll_vals[] = { + { 0, "reset-all" }, + { 0, NULL } +}; + + +static int +dissect_f1ap_ResetAll(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 1, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const per_sequence_t UE_associatedLogicalF1_ConnectionListRes_sequence_of[1] = { + { &hf_f1ap_UE_associatedLogicalF1_ConnectionListRes_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_f1ap_UE_associatedLogicalF1_ConnectionListRes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_f1ap_UE_associatedLogicalF1_ConnectionListRes, UE_associatedLogicalF1_ConnectionListRes_sequence_of, + 1, maxnoofIndividualF1ConnectionsToReset, FALSE); + + return offset; +} + + +static const value_string f1ap_ResetType_vals[] = { + { 0, "f1-Interface" }, + { 1, "partOfF1-Interface" }, + { 0, NULL } +}; + +static const per_choice_t ResetType_choice[] = { + { 0, &hf_f1ap_f1_Interface , ASN1_EXTENSION_ROOT , dissect_f1ap_ResetAll }, + { 1, &hf_f1ap_partOfF1_Interface, ASN1_EXTENSION_ROOT , dissect_f1ap_UE_associatedLogicalF1_ConnectionListRes }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_f1ap_ResetType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_f1ap_ResetType, ResetType_choice, + NULL); + + return offset; +} + + +static const per_sequence_t ResetAcknowledge_sequence[] = { + { &hf_f1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_ResetAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 435 "./asn1/f1ap/f1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ResetAcknowledge"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_ResetAcknowledge, ResetAcknowledge_sequence); + + return offset; +} + + +static const per_sequence_t UE_associatedLogicalF1_ConnectionListResAck_sequence_of[1] = { + { &hf_f1ap_UE_associatedLogicalF1_ConnectionListResAck_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_f1ap_UE_associatedLogicalF1_ConnectionListResAck(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_f1ap_UE_associatedLogicalF1_ConnectionListResAck, UE_associatedLogicalF1_ConnectionListResAck_sequence_of, + 1, maxnoofIndividualF1ConnectionsToReset, FALSE); + + return offset; +} + + +static const per_sequence_t ErrorIndication_sequence[] = { + { &hf_f1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_ErrorIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 475 "./asn1/f1ap/f1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ErrorIndication"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_ErrorIndication, ErrorIndication_sequence); + + return offset; +} + + +static const per_sequence_t F1SetupRequest_sequence[] = { + { &hf_f1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_F1SetupRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 437 "./asn1/f1ap/f1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "F1SetupRequest"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_F1SetupRequest, F1SetupRequest_sequence); + + return offset; +} + + +static const per_sequence_t GNB_DU_Served_Cells_List_sequence_of[1] = { + { &hf_f1ap_GNB_DU_Served_Cells_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_f1ap_GNB_DU_Served_Cells_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_f1ap_GNB_DU_Served_Cells_List, GNB_DU_Served_Cells_List_sequence_of, + 1, maxCellingNBDU, FALSE); + + return offset; +} + + + +static int +dissect_f1ap_GNB_Name(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index, + 1, 150, TRUE); + + return offset; +} + + +static const per_sequence_t F1SetupResponse_sequence[] = { + { &hf_f1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_F1SetupResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 439 "./asn1/f1ap/f1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "F1SetupResponse"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_F1SetupResponse, F1SetupResponse_sequence); + + return offset; +} + + +static const per_sequence_t Cells_to_be_Activated_List_sequence_of[1] = { + { &hf_f1ap_Cells_to_be_Activated_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_f1ap_Cells_to_be_Activated_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_f1ap_Cells_to_be_Activated_List, Cells_to_be_Activated_List_sequence_of, + 1, maxCellingNBDU, FALSE); + + return offset; +} + + +static const per_sequence_t F1SetupFailure_sequence[] = { + { &hf_f1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_F1SetupFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 441 "./asn1/f1ap/f1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "F1SetupFailure"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_F1SetupFailure, F1SetupFailure_sequence); + + return offset; +} + + +static const per_sequence_t GNBDUConfigurationUpdate_sequence[] = { + { &hf_f1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_GNBDUConfigurationUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 443 "./asn1/f1ap/f1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNBDUConfigurationUpdate"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_GNBDUConfigurationUpdate, GNBDUConfigurationUpdate_sequence); + + return offset; +} + + +static const per_sequence_t Served_Cells_To_Add_List_sequence_of[1] = { + { &hf_f1ap_Served_Cells_To_Add_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_f1ap_Served_Cells_To_Add_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_f1ap_Served_Cells_To_Add_List, Served_Cells_To_Add_List_sequence_of, + 1, maxCellingNBDU, FALSE); + + return offset; +} + + +static const per_sequence_t Served_Cells_To_Modify_List_sequence_of[1] = { + { &hf_f1ap_Served_Cells_To_Modify_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_f1ap_Served_Cells_To_Modify_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_f1ap_Served_Cells_To_Modify_List, Served_Cells_To_Modify_List_sequence_of, + 1, maxCellingNBDU, FALSE); + + return offset; +} + + +static const per_sequence_t Served_Cells_To_Delete_List_sequence_of[1] = { + { &hf_f1ap_Served_Cells_To_Delete_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_f1ap_Served_Cells_To_Delete_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_f1ap_Served_Cells_To_Delete_List, Served_Cells_To_Delete_List_sequence_of, + 1, maxCellingNBDU, FALSE); + + return offset; +} + + +static const per_sequence_t GNBDUConfigurationUpdateAcknowledge_sequence[] = { + { &hf_f1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_GNBDUConfigurationUpdateAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 445 "./asn1/f1ap/f1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNBDUConfigurationUpdateAcknowledge"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_GNBDUConfigurationUpdateAcknowledge, GNBDUConfigurationUpdateAcknowledge_sequence); + + return offset; +} + + +static const per_sequence_t GNBDUConfigurationUpdateFailure_sequence[] = { + { &hf_f1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_GNBDUConfigurationUpdateFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 447 "./asn1/f1ap/f1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNBDUConfigurationUpdateFailure"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_GNBDUConfigurationUpdateFailure, GNBDUConfigurationUpdateFailure_sequence); + + return offset; +} + + +static const per_sequence_t GNBCUConfigurationUpdate_sequence[] = { + { &hf_f1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_GNBCUConfigurationUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 449 "./asn1/f1ap/f1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNBCUConfigurationUpdate"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_GNBCUConfigurationUpdate, GNBCUConfigurationUpdate_sequence); + + return offset; +} + + +static const per_sequence_t Cells_to_be_Deactivated_List_sequence_of[1] = { + { &hf_f1ap_Cells_to_be_Deactivated_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_f1ap_Cells_to_be_Deactivated_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_f1ap_Cells_to_be_Deactivated_List, Cells_to_be_Deactivated_List_sequence_of, + 1, maxCellingNBDU, FALSE); + + return offset; +} + + +static const per_sequence_t GNBCUConfigurationUpdateAcknowledge_sequence[] = { + { &hf_f1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_GNBCUConfigurationUpdateAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 451 "./asn1/f1ap/f1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNBCUConfigurationUpdateAcknowledge"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_GNBCUConfigurationUpdateAcknowledge, GNBCUConfigurationUpdateAcknowledge_sequence); + + return offset; +} + + +static const per_sequence_t Cells_Failed_to_be_Activated_List_sequence_of[1] = { + { &hf_f1ap_Cells_Failed_to_be_Activated_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_f1ap_Cells_Failed_to_be_Activated_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_f1ap_Cells_Failed_to_be_Activated_List, Cells_Failed_to_be_Activated_List_sequence_of, + 1, maxCellingNBDU, FALSE); + + return offset; +} + + +static const per_sequence_t GNBCUConfigurationUpdateFailure_sequence[] = { + { &hf_f1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_GNBCUConfigurationUpdateFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 453 "./asn1/f1ap/f1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNBCUConfigurationUpdateFailure"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_GNBCUConfigurationUpdateFailure, GNBCUConfigurationUpdateFailure_sequence); + + return offset; +} + + +static const per_sequence_t UEContextSetupRequest_sequence[] = { + { &hf_f1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_UEContextSetupRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 455 "./asn1/f1ap/f1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextSetupRequest"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_UEContextSetupRequest, UEContextSetupRequest_sequence); + + return offset; +} + + +static const per_sequence_t SCell_ToBeSetup_List_sequence_of[1] = { + { &hf_f1ap_SCell_ToBeSetup_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_f1ap_SCell_ToBeSetup_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_f1ap_SCell_ToBeSetup_List, SCell_ToBeSetup_List_sequence_of, + 1, maxnoofSCells, FALSE); + + return offset; +} + + +static const per_sequence_t SRBs_ToBeSetup_List_sequence_of[1] = { + { &hf_f1ap_SRBs_ToBeSetup_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_f1ap_SRBs_ToBeSetup_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_f1ap_SRBs_ToBeSetup_List, SRBs_ToBeSetup_List_sequence_of, + 1, maxnoofSRBs, FALSE); + + return offset; +} + + +static const per_sequence_t DRBs_ToBeSetup_List_sequence_of[1] = { + { &hf_f1ap_DRBs_ToBeSetup_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_f1ap_DRBs_ToBeSetup_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_f1ap_DRBs_ToBeSetup_List, DRBs_ToBeSetup_List_sequence_of, + 1, maxnoofDRBs, FALSE); + + return offset; +} + + + +static int +dissect_f1ap_ResourceCoordinationTransferContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 334 "./asn1/f1ap/f1ap.cnf" + tvbuff_t *param_tvb = NULL; + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + NO_BOUND, NO_BOUND, FALSE, ¶m_tvb); + + 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; + } + } + + + + return offset; +} + + +static const per_sequence_t ULTunnels_ToBeSetup_list_sequence_of[1] = { + { &hf_f1ap_ULTunnels_ToBeSetup_list_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_f1ap_ULTunnels_ToBeSetup_list(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_f1ap_ULTunnels_ToBeSetup_list, ULTunnels_ToBeSetup_list_sequence_of, + 1, maxnoofULTunnels, FALSE); + + return offset; +} + + +static const per_sequence_t UEContextSetupResponse_sequence[] = { + { &hf_f1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_UEContextSetupResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 457 "./asn1/f1ap/f1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextSetupResponse"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_UEContextSetupResponse, UEContextSetupResponse_sequence); + + return offset; +} + + +static const per_sequence_t SRBs_Setup_List_sequence_of[1] = { + { &hf_f1ap_SRBs_Setup_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_f1ap_SRBs_Setup_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_f1ap_SRBs_Setup_List, SRBs_Setup_List_sequence_of, + 1, maxnoofSRBs, FALSE); + + return offset; +} + + +static const per_sequence_t DRBs_Setup_List_sequence_of[1] = { + { &hf_f1ap_DRBs_Setup_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_f1ap_DRBs_Setup_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_f1ap_DRBs_Setup_List, DRBs_Setup_List_sequence_of, + 1, maxnoofDRBs, FALSE); + + return offset; +} + + +static const per_sequence_t SRBs_FailedToBeSetup_List_sequence_of[1] = { + { &hf_f1ap_SRBs_FailedToBeSetup_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_f1ap_SRBs_FailedToBeSetup_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_f1ap_SRBs_FailedToBeSetup_List, SRBs_FailedToBeSetup_List_sequence_of, + 1, maxnoofSRBs, FALSE); + + return offset; +} + + +static const per_sequence_t DRBs_FailedToBeSetup_List_sequence_of[1] = { + { &hf_f1ap_DRBs_FailedToBeSetup_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_f1ap_DRBs_FailedToBeSetup_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_f1ap_DRBs_FailedToBeSetup_List, DRBs_FailedToBeSetup_List_sequence_of, + 1, maxnoofDRBs, FALSE); + + return offset; +} + + +static const per_sequence_t DLTunnels_ToBeSetup_list_sequence_of[1] = { + { &hf_f1ap_DLTunnels_ToBeSetup_list_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_f1ap_DLTunnels_ToBeSetup_list(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_f1ap_DLTunnels_ToBeSetup_list, DLTunnels_ToBeSetup_list_sequence_of, + 1, maxnoofDLTunnels, FALSE); + + return offset; +} + + +static const per_sequence_t UEContextSetupFailure_sequence[] = { + { &hf_f1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_UEContextSetupFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 459 "./asn1/f1ap/f1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextSetupFailure"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_UEContextSetupFailure, UEContextSetupFailure_sequence); + + return offset; +} + + +static const per_sequence_t UEContextReleaseRequest_sequence[] = { + { &hf_f1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_UEContextReleaseRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 477 "./asn1/f1ap/f1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextReleaseRequest"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_UEContextReleaseRequest, UEContextReleaseRequest_sequence); + + return offset; +} + + +static const per_sequence_t UEContextReleaseCommand_sequence[] = { + { &hf_f1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_UEContextReleaseCommand(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 461 "./asn1/f1ap/f1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextReleaseCommand"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_UEContextReleaseCommand, UEContextReleaseCommand_sequence); + + return offset; +} + + +static const per_sequence_t UEContextReleaseComplete_sequence[] = { + { &hf_f1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_UEContextReleaseComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 463 "./asn1/f1ap/f1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextReleaseComplete"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_UEContextReleaseComplete, UEContextReleaseComplete_sequence); + + return offset; +} + + +static const per_sequence_t UEContextModificationRequest_sequence[] = { + { &hf_f1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_UEContextModificationRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 465 "./asn1/f1ap/f1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextModificationRequest"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_UEContextModificationRequest, UEContextModificationRequest_sequence); + + return offset; +} + + +static const per_sequence_t DRBs_ToBeModified_List_sequence_of[1] = { + { &hf_f1ap_DRBs_ToBeModified_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_f1ap_DRBs_ToBeModified_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_f1ap_DRBs_ToBeModified_List, DRBs_ToBeModified_List_sequence_of, + 1, maxnoofDRBs, FALSE); + + return offset; +} + + +static const per_sequence_t SRBs_ToBeReleased_List_sequence_of[1] = { + { &hf_f1ap_SRBs_ToBeReleased_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_f1ap_SRBs_ToBeReleased_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_f1ap_SRBs_ToBeReleased_List, SRBs_ToBeReleased_List_sequence_of, + 1, maxnoofSRBs, FALSE); + + return offset; +} + + +static const per_sequence_t DRBs_ToBeReleased_List_sequence_of[1] = { + { &hf_f1ap_DRBs_ToBeReleased_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_f1ap_DRBs_ToBeReleased_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_f1ap_DRBs_ToBeReleased_List, DRBs_ToBeReleased_List_sequence_of, + 1, maxnoofDRBs, FALSE); + + return offset; +} + + +static const per_sequence_t UEContextModificationResponse_sequence[] = { + { &hf_f1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_UEContextModificationResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 467 "./asn1/f1ap/f1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextModificationResponse"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_UEContextModificationResponse, UEContextModificationResponse_sequence); + + return offset; +} + + +static const per_sequence_t DRBs_Modified_List_sequence_of[1] = { + { &hf_f1ap_DRBs_Modified_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_f1ap_DRBs_Modified_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_f1ap_DRBs_Modified_List, DRBs_Modified_List_sequence_of, + 1, maxnoofDRBs, FALSE); + + return offset; +} + + +static const per_sequence_t DRBs_FailedToBeModified_List_sequence_of[1] = { + { &hf_f1ap_DRBs_FailedToBeModified_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_f1ap_DRBs_FailedToBeModified_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_f1ap_DRBs_FailedToBeModified_List, DRBs_FailedToBeModified_List_sequence_of, + 1, maxnoofDRBs, FALSE); + + return offset; +} + + +static const per_sequence_t UEContextModificationFailure_sequence[] = { + { &hf_f1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_UEContextModificationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 469 "./asn1/f1ap/f1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextModificationFailure"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_UEContextModificationFailure, UEContextModificationFailure_sequence); + + return offset; +} + + +static const per_sequence_t UEContextModificationRequired_sequence[] = { + { &hf_f1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_UEContextModificationRequired(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 471 "./asn1/f1ap/f1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextModificationRequired"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_UEContextModificationRequired, UEContextModificationRequired_sequence); + + return offset; +} + + +static const per_sequence_t DRBs_Required_ToBeModified_List_sequence_of[1] = { + { &hf_f1ap_DRBs_Required_ToBeModified_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_f1ap_DRBs_Required_ToBeModified_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_f1ap_DRBs_Required_ToBeModified_List, DRBs_Required_ToBeModified_List_sequence_of, + 1, maxnoofDRBs, FALSE); + + return offset; +} + + +static const per_sequence_t DRBs_Required_ToBeReleased_List_sequence_of[1] = { + { &hf_f1ap_DRBs_Required_ToBeReleased_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_f1ap_DRBs_Required_ToBeReleased_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_f1ap_DRBs_Required_ToBeReleased_List, DRBs_Required_ToBeReleased_List_sequence_of, + 1, maxnoofDRBs, FALSE); + + return offset; +} + + +static const per_sequence_t SRBs_Required_ToBeReleased_List_sequence_of[1] = { + { &hf_f1ap_SRBs_Required_ToBeReleased_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_f1ap_SRBs_Required_ToBeReleased_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_f1ap_SRBs_Required_ToBeReleased_List, SRBs_Required_ToBeReleased_List_sequence_of, + 1, maxnoofSRBs, FALSE); + + return offset; +} + + +static const per_sequence_t UEContextModificationConfirm_sequence[] = { + { &hf_f1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_UEContextModificationConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 473 "./asn1/f1ap/f1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextModificationConfirm"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_UEContextModificationConfirm, UEContextModificationConfirm_sequence); + + return offset; +} + + +static const per_sequence_t DRBs_ModifiedConf_List_sequence_of[1] = { + { &hf_f1ap_DRBs_ModifiedConf_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_f1ap_DRBs_ModifiedConf_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_f1ap_DRBs_ModifiedConf_List, DRBs_ModifiedConf_List_sequence_of, + 1, maxnoofDRBs, FALSE); + + return offset; +} + + +static const per_sequence_t DLRRCMessageTransfer_sequence[] = { + { &hf_f1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_DLRRCMessageTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 479 "./asn1/f1ap/f1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "DLRRCMessageTransfer"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_DLRRCMessageTransfer, DLRRCMessageTransfer_sequence); + + return offset; +} + + +static const per_sequence_t ULRRCMessageTransfer_sequence[] = { + { &hf_f1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_ULRRCMessageTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 481 "./asn1/f1ap/f1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ULRRCMessageTransfer"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_ULRRCMessageTransfer, ULRRCMessageTransfer_sequence); + + return offset; +} + + +static const per_sequence_t PrivateMessage_sequence[] = { + { &hf_f1ap_privateIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_f1ap_PrivateIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_PrivateMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 483 "./asn1/f1ap/f1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "PrivateMessage"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_PrivateMessage, PrivateMessage_sequence); + + return offset; +} + + + +static int +dissect_f1ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 80 "./asn1/f1ap/f1ap.cnf" + f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo); + f1ap_data->message_type = INITIATING_MESSAGE; + + offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue); + + return offset; +} + + +static const per_sequence_t InitiatingMessage_sequence[] = { + { &hf_f1ap_procedureCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProcedureCode }, + { &hf_f1ap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_Criticality }, + { &hf_f1ap_initiatingMessagevalue, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_InitiatingMessage_value }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_InitiatingMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_InitiatingMessage, InitiatingMessage_sequence); + + return offset; +} + + + +static int +dissect_f1ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 84 "./asn1/f1ap/f1ap.cnf" + f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo); + f1ap_data->message_type = SUCCESSFUL_OUTCOME; + + offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue); + + return offset; +} + + +static const per_sequence_t SuccessfulOutcome_sequence[] = { + { &hf_f1ap_procedureCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProcedureCode }, + { &hf_f1ap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_Criticality }, + { &hf_f1ap_successfulOutcome_value, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_SuccessfulOutcome_value }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_SuccessfulOutcome(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_SuccessfulOutcome, SuccessfulOutcome_sequence); + + return offset; +} + + + +static int +dissect_f1ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 88 "./asn1/f1ap/f1ap.cnf" + f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo); + f1ap_data->message_type = UNSUCCESSFUL_OUTCOME; + + offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue); + + return offset; +} + + +static const per_sequence_t UnsuccessfulOutcome_sequence[] = { + { &hf_f1ap_procedureCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_ProcedureCode }, + { &hf_f1ap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_Criticality }, + { &hf_f1ap_unsuccessfulOutcome_value, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_f1ap_UnsuccessfulOutcome_value }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_f1ap_UnsuccessfulOutcome(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_f1ap_UnsuccessfulOutcome, UnsuccessfulOutcome_sequence); + + return offset; +} + + +static const value_string f1ap_F1AP_PDU_vals[] = { + { 0, "initiatingMessage" }, + { 1, "successfulOutcome" }, + { 2, "unsuccessfulOutcome" }, + { 0, NULL } +}; + +static const per_choice_t F1AP_PDU_choice[] = { + { 0, &hf_f1ap_initiatingMessage, ASN1_EXTENSION_ROOT , dissect_f1ap_InitiatingMessage }, + { 1, &hf_f1ap_successfulOutcome, ASN1_EXTENSION_ROOT , dissect_f1ap_SuccessfulOutcome }, + { 2, &hf_f1ap_unsuccessfulOutcome, ASN1_EXTENSION_ROOT , dissect_f1ap_UnsuccessfulOutcome }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_f1ap_F1AP_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_f1ap_F1AP_PDU, F1AP_PDU_choice, + NULL); + + return offset; +} + +/*--- PDUs ---*/ + +static int dissect_Cause_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_Cause(tvb, offset, &asn1_ctx, tree, hf_f1ap_Cause_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_CriticalityDiagnostics_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_CriticalityDiagnostics(tvb, offset, &asn1_ctx, tree, hf_f1ap_CriticalityDiagnostics_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_CUtoDURRCInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_CUtoDURRCInformation(tvb, offset, &asn1_ctx, tree, hf_f1ap_CUtoDURRCInformation_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_DRBID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_DRBID(tvb, offset, &asn1_ctx, tree, hf_f1ap_DRBID_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_DRXCycle_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_DRXCycle(tvb, offset, &asn1_ctx, tree, hf_f1ap_DRXCycle_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_DUtoCURRCInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_DUtoCURRCInformation(tvb, offset, &asn1_ctx, tree, hf_f1ap_DUtoCURRCInformation_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_EUTRANQoS_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_EUTRANQoS(tvb, offset, &asn1_ctx, tree, hf_f1ap_EUTRANQoS_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_GNB_CU_F1AP_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_GNB_CU_F1AP_ID(tvb, offset, &asn1_ctx, tree, hf_f1ap_GNB_CU_F1AP_ID_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_GNB_DU_F1AP_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_GNB_DU_F1AP_ID(tvb, offset, &asn1_ctx, tree, hf_f1ap_GNB_DU_F1AP_ID_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_GNB_DU_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_GNB_DU_ID(tvb, offset, &asn1_ctx, tree, hf_f1ap_GNB_DU_ID_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_GNB_DU_System_Information_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_GNB_DU_System_Information(tvb, offset, &asn1_ctx, tree, hf_f1ap_GNB_DU_System_Information_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_GTPTunnelEndpoint_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_GTPTunnelEndpoint(tvb, offset, &asn1_ctx, tree, hf_f1ap_GTPTunnelEndpoint_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_NCGI_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_NCGI(tvb, offset, &asn1_ctx, tree, hf_f1ap_NCGI_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_PCI_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_PCI(tvb, offset, &asn1_ctx, tree, hf_f1ap_PCI_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_RRCContainer_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_RRCContainer(tvb, offset, &asn1_ctx, tree, hf_f1ap_RRCContainer_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_Served_Cell_Information_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_Served_Cell_Information(tvb, offset, &asn1_ctx, tree, hf_f1ap_Served_Cell_Information_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_SRBID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_SRBID(tvb, offset, &asn1_ctx, tree, hf_f1ap_SRBID_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_TimeToWait_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_TimeToWait(tvb, offset, &asn1_ctx, tree, hf_f1ap_TimeToWait_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_TransactionID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_TransactionID(tvb, offset, &asn1_ctx, tree, hf_f1ap_TransactionID_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_TransmissionStopIndicator_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_TransmissionStopIndicator(tvb, offset, &asn1_ctx, tree, hf_f1ap_TransmissionStopIndicator_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_UE_associatedLogicalF1_ConnectionItem_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_UE_associatedLogicalF1_ConnectionItem(tvb, offset, &asn1_ctx, tree, hf_f1ap_UE_associatedLogicalF1_ConnectionItem_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_Reset_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_Reset(tvb, offset, &asn1_ctx, tree, hf_f1ap_Reset_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_ResetType_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_ResetType(tvb, offset, &asn1_ctx, tree, hf_f1ap_ResetType_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_ResetAcknowledge_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_ResetAcknowledge(tvb, offset, &asn1_ctx, tree, hf_f1ap_ResetAcknowledge_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_UE_associatedLogicalF1_ConnectionListResAck_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_UE_associatedLogicalF1_ConnectionListResAck(tvb, offset, &asn1_ctx, tree, hf_f1ap_UE_associatedLogicalF1_ConnectionListResAck_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_ErrorIndication_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_ErrorIndication(tvb, offset, &asn1_ctx, tree, hf_f1ap_ErrorIndication_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_F1SetupRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_F1SetupRequest(tvb, offset, &asn1_ctx, tree, hf_f1ap_F1SetupRequest_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_GNB_DU_Served_Cells_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_GNB_DU_Served_Cells_List(tvb, offset, &asn1_ctx, tree, hf_f1ap_GNB_DU_Served_Cells_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_GNB_Name_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_GNB_Name(tvb, offset, &asn1_ctx, tree, hf_f1ap_GNB_Name_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_F1SetupResponse_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_F1SetupResponse(tvb, offset, &asn1_ctx, tree, hf_f1ap_F1SetupResponse_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_Cells_to_be_Activated_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_Cells_to_be_Activated_List(tvb, offset, &asn1_ctx, tree, hf_f1ap_Cells_to_be_Activated_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_F1SetupFailure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_F1SetupFailure(tvb, offset, &asn1_ctx, tree, hf_f1ap_F1SetupFailure_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_GNBDUConfigurationUpdate_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_GNBDUConfigurationUpdate(tvb, offset, &asn1_ctx, tree, hf_f1ap_GNBDUConfigurationUpdate_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_Served_Cells_To_Add_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_Served_Cells_To_Add_List(tvb, offset, &asn1_ctx, tree, hf_f1ap_Served_Cells_To_Add_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_Served_Cells_To_Modify_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_Served_Cells_To_Modify_List(tvb, offset, &asn1_ctx, tree, hf_f1ap_Served_Cells_To_Modify_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_Served_Cells_To_Delete_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_Served_Cells_To_Delete_List(tvb, offset, &asn1_ctx, tree, hf_f1ap_Served_Cells_To_Delete_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_GNBDUConfigurationUpdateAcknowledge_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_GNBDUConfigurationUpdateAcknowledge(tvb, offset, &asn1_ctx, tree, hf_f1ap_GNBDUConfigurationUpdateAcknowledge_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_GNBDUConfigurationUpdateFailure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_GNBDUConfigurationUpdateFailure(tvb, offset, &asn1_ctx, tree, hf_f1ap_GNBDUConfigurationUpdateFailure_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_GNBCUConfigurationUpdate_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_GNBCUConfigurationUpdate(tvb, offset, &asn1_ctx, tree, hf_f1ap_GNBCUConfigurationUpdate_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_Cells_to_be_Deactivated_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_Cells_to_be_Deactivated_List(tvb, offset, &asn1_ctx, tree, hf_f1ap_Cells_to_be_Deactivated_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_GNBCUConfigurationUpdateAcknowledge_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_GNBCUConfigurationUpdateAcknowledge(tvb, offset, &asn1_ctx, tree, hf_f1ap_GNBCUConfigurationUpdateAcknowledge_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_Cells_Failed_to_be_Activated_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_Cells_Failed_to_be_Activated_List(tvb, offset, &asn1_ctx, tree, hf_f1ap_Cells_Failed_to_be_Activated_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_GNBCUConfigurationUpdateFailure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_GNBCUConfigurationUpdateFailure(tvb, offset, &asn1_ctx, tree, hf_f1ap_GNBCUConfigurationUpdateFailure_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_UEContextSetupRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_UEContextSetupRequest(tvb, offset, &asn1_ctx, tree, hf_f1ap_UEContextSetupRequest_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_SCell_ToBeSetup_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_SCell_ToBeSetup_List(tvb, offset, &asn1_ctx, tree, hf_f1ap_SCell_ToBeSetup_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_SRBs_ToBeSetup_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_SRBs_ToBeSetup_List(tvb, offset, &asn1_ctx, tree, hf_f1ap_SRBs_ToBeSetup_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_DRBs_ToBeSetup_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_DRBs_ToBeSetup_List(tvb, offset, &asn1_ctx, tree, hf_f1ap_DRBs_ToBeSetup_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_ResourceCoordinationTransferContainer_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_ResourceCoordinationTransferContainer(tvb, offset, &asn1_ctx, tree, hf_f1ap_ResourceCoordinationTransferContainer_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_ULTunnels_ToBeSetup_list_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_ULTunnels_ToBeSetup_list(tvb, offset, &asn1_ctx, tree, hf_f1ap_ULTunnels_ToBeSetup_list_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_UEContextSetupResponse_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_UEContextSetupResponse(tvb, offset, &asn1_ctx, tree, hf_f1ap_UEContextSetupResponse_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_SRBs_Setup_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_SRBs_Setup_List(tvb, offset, &asn1_ctx, tree, hf_f1ap_SRBs_Setup_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_DRBs_Setup_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_DRBs_Setup_List(tvb, offset, &asn1_ctx, tree, hf_f1ap_DRBs_Setup_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_SRBs_FailedToBeSetup_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_SRBs_FailedToBeSetup_List(tvb, offset, &asn1_ctx, tree, hf_f1ap_SRBs_FailedToBeSetup_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_DRBs_FailedToBeSetup_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_DRBs_FailedToBeSetup_List(tvb, offset, &asn1_ctx, tree, hf_f1ap_DRBs_FailedToBeSetup_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_DLTunnels_ToBeSetup_list_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_DLTunnels_ToBeSetup_list(tvb, offset, &asn1_ctx, tree, hf_f1ap_DLTunnels_ToBeSetup_list_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_UEContextSetupFailure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_UEContextSetupFailure(tvb, offset, &asn1_ctx, tree, hf_f1ap_UEContextSetupFailure_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_UEContextReleaseRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_UEContextReleaseRequest(tvb, offset, &asn1_ctx, tree, hf_f1ap_UEContextReleaseRequest_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_UEContextReleaseCommand_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_UEContextReleaseCommand(tvb, offset, &asn1_ctx, tree, hf_f1ap_UEContextReleaseCommand_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_UEContextReleaseComplete_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_UEContextReleaseComplete(tvb, offset, &asn1_ctx, tree, hf_f1ap_UEContextReleaseComplete_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_UEContextModificationRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_UEContextModificationRequest(tvb, offset, &asn1_ctx, tree, hf_f1ap_UEContextModificationRequest_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_DRBs_ToBeModified_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_DRBs_ToBeModified_List(tvb, offset, &asn1_ctx, tree, hf_f1ap_DRBs_ToBeModified_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_SRBs_ToBeReleased_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_SRBs_ToBeReleased_List(tvb, offset, &asn1_ctx, tree, hf_f1ap_SRBs_ToBeReleased_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_DRBs_ToBeReleased_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_DRBs_ToBeReleased_List(tvb, offset, &asn1_ctx, tree, hf_f1ap_DRBs_ToBeReleased_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_UEContextModificationResponse_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_UEContextModificationResponse(tvb, offset, &asn1_ctx, tree, hf_f1ap_UEContextModificationResponse_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_DRBs_Modified_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_DRBs_Modified_List(tvb, offset, &asn1_ctx, tree, hf_f1ap_DRBs_Modified_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_DRBs_FailedToBeModified_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_DRBs_FailedToBeModified_List(tvb, offset, &asn1_ctx, tree, hf_f1ap_DRBs_FailedToBeModified_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_UEContextModificationFailure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_UEContextModificationFailure(tvb, offset, &asn1_ctx, tree, hf_f1ap_UEContextModificationFailure_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_UEContextModificationRequired_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_UEContextModificationRequired(tvb, offset, &asn1_ctx, tree, hf_f1ap_UEContextModificationRequired_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_DRBs_Required_ToBeModified_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_DRBs_Required_ToBeModified_List(tvb, offset, &asn1_ctx, tree, hf_f1ap_DRBs_Required_ToBeModified_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_DRBs_Required_ToBeReleased_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_DRBs_Required_ToBeReleased_List(tvb, offset, &asn1_ctx, tree, hf_f1ap_DRBs_Required_ToBeReleased_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_SRBs_Required_ToBeReleased_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_SRBs_Required_ToBeReleased_List(tvb, offset, &asn1_ctx, tree, hf_f1ap_SRBs_Required_ToBeReleased_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_UEContextModificationConfirm_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_UEContextModificationConfirm(tvb, offset, &asn1_ctx, tree, hf_f1ap_UEContextModificationConfirm_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_DRBs_ModifiedConf_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_DRBs_ModifiedConf_List(tvb, offset, &asn1_ctx, tree, hf_f1ap_DRBs_ModifiedConf_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_DLRRCMessageTransfer_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_DLRRCMessageTransfer(tvb, offset, &asn1_ctx, tree, hf_f1ap_DLRRCMessageTransfer_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_ULRRCMessageTransfer_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_ULRRCMessageTransfer(tvb, offset, &asn1_ctx, tree, hf_f1ap_ULRRCMessageTransfer_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_PrivateMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_PrivateMessage(tvb, offset, &asn1_ctx, tree, hf_f1ap_PrivateMessage_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_F1AP_PDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_f1ap_F1AP_PDU(tvb, offset, &asn1_ctx, tree, hf_f1ap_F1AP_PDU_PDU); + offset += 7; offset >>= 3; + return offset; +} + + +/*--- End of included file: packet-f1ap-fn.c ---*/ +#line 104 "./asn1/f1ap/packet-f1ap-template.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 }}, + +/*--- Included file: packet-f1ap-hfarr.c ---*/ +#line 1 "./asn1/f1ap/packet-f1ap-hfarr.c" + { &hf_f1ap_Cause_PDU, + { "Cause", "f1ap.Cause", + FT_UINT32, BASE_DEC, VALS(f1ap_Cause_vals), 0, + NULL, HFILL }}, + { &hf_f1ap_CriticalityDiagnostics_PDU, + { "CriticalityDiagnostics", "f1ap.CriticalityDiagnostics_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_CUtoDURRCInformation_PDU, + { "CUtoDURRCInformation", "f1ap.CUtoDURRCInformation_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_DRBID_PDU, + { "DRBID", "f1ap.DRBID", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_DRXCycle_PDU, + { "DRXCycle", "f1ap.DRXCycle_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_DUtoCURRCInformation_PDU, + { "DUtoCURRCInformation", "f1ap.DUtoCURRCInformation_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_EUTRANQoS_PDU, + { "EUTRANQoS", "f1ap.EUTRANQoS_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_GNB_CU_F1AP_ID_PDU, + { "GNB-CU-F1AP-ID", "f1ap.GNB_CU_F1AP_ID", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_GNB_DU_F1AP_ID_PDU, + { "GNB-DU-F1AP-ID", "f1ap.GNB_DU_F1AP_ID", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_GNB_DU_ID_PDU, + { "GNB-DU-ID", "f1ap.GNB_DU_ID", + FT_UINT64, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_GNB_DU_System_Information_PDU, + { "GNB-DU-System-Information", "f1ap.GNB_DU_System_Information_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_GTPTunnelEndpoint_PDU, + { "GTPTunnelEndpoint", "f1ap.GTPTunnelEndpoint_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_NCGI_PDU, + { "NCGI", "f1ap.NCGI_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_PCI_PDU, + { "PCI", "f1ap.PCI", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_RRCContainer_PDU, + { "RRCContainer", "f1ap.RRCContainer", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_Served_Cell_Information_PDU, + { "Served-Cell-Information", "f1ap.Served_Cell_Information_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_SRBID_PDU, + { "SRBID", "f1ap.SRBID", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_TimeToWait_PDU, + { "TimeToWait", "f1ap.TimeToWait", + FT_UINT32, BASE_DEC, VALS(f1ap_TimeToWait_vals), 0, + NULL, HFILL }}, + { &hf_f1ap_TransactionID_PDU, + { "TransactionID", "f1ap.TransactionID", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_TransmissionStopIndicator_PDU, + { "TransmissionStopIndicator", "f1ap.TransmissionStopIndicator", + FT_UINT32, BASE_DEC, VALS(f1ap_TransmissionStopIndicator_vals), 0, + NULL, HFILL }}, + { &hf_f1ap_UE_associatedLogicalF1_ConnectionItem_PDU, + { "UE-associatedLogicalF1-ConnectionItem", "f1ap.UE_associatedLogicalF1_ConnectionItem_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_Reset_PDU, + { "Reset", "f1ap.Reset_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_ResetType_PDU, + { "ResetType", "f1ap.ResetType", + FT_UINT32, BASE_DEC, VALS(f1ap_ResetType_vals), 0, + NULL, HFILL }}, + { &hf_f1ap_ResetAcknowledge_PDU, + { "ResetAcknowledge", "f1ap.ResetAcknowledge_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_UE_associatedLogicalF1_ConnectionListResAck_PDU, + { "UE-associatedLogicalF1-ConnectionListResAck", "f1ap.UE_associatedLogicalF1_ConnectionListResAck", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_ErrorIndication_PDU, + { "ErrorIndication", "f1ap.ErrorIndication_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_F1SetupRequest_PDU, + { "F1SetupRequest", "f1ap.F1SetupRequest_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_GNB_DU_Served_Cells_List_PDU, + { "GNB-DU-Served-Cells-List", "f1ap.GNB_DU_Served_Cells_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_GNB_Name_PDU, + { "GNB-Name", "f1ap.GNB_Name", + FT_STRING, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_F1SetupResponse_PDU, + { "F1SetupResponse", "f1ap.F1SetupResponse_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_Cells_to_be_Activated_List_PDU, + { "Cells-to-be-Activated-List", "f1ap.Cells_to_be_Activated_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_F1SetupFailure_PDU, + { "F1SetupFailure", "f1ap.F1SetupFailure_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_GNBDUConfigurationUpdate_PDU, + { "GNBDUConfigurationUpdate", "f1ap.GNBDUConfigurationUpdate_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_Served_Cells_To_Add_List_PDU, + { "Served-Cells-To-Add-List", "f1ap.Served_Cells_To_Add_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_Served_Cells_To_Modify_List_PDU, + { "Served-Cells-To-Modify-List", "f1ap.Served_Cells_To_Modify_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_Served_Cells_To_Delete_List_PDU, + { "Served-Cells-To-Delete-List", "f1ap.Served_Cells_To_Delete_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_GNBDUConfigurationUpdateAcknowledge_PDU, + { "GNBDUConfigurationUpdateAcknowledge", "f1ap.GNBDUConfigurationUpdateAcknowledge_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_GNBDUConfigurationUpdateFailure_PDU, + { "GNBDUConfigurationUpdateFailure", "f1ap.GNBDUConfigurationUpdateFailure_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_GNBCUConfigurationUpdate_PDU, + { "GNBCUConfigurationUpdate", "f1ap.GNBCUConfigurationUpdate_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_Cells_to_be_Deactivated_List_PDU, + { "Cells-to-be-Deactivated-List", "f1ap.Cells_to_be_Deactivated_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_GNBCUConfigurationUpdateAcknowledge_PDU, + { "GNBCUConfigurationUpdateAcknowledge", "f1ap.GNBCUConfigurationUpdateAcknowledge_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_Cells_Failed_to_be_Activated_List_PDU, + { "Cells-Failed-to-be-Activated-List", "f1ap.Cells_Failed_to_be_Activated_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_GNBCUConfigurationUpdateFailure_PDU, + { "GNBCUConfigurationUpdateFailure", "f1ap.GNBCUConfigurationUpdateFailure_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_UEContextSetupRequest_PDU, + { "UEContextSetupRequest", "f1ap.UEContextSetupRequest_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_SCell_ToBeSetup_List_PDU, + { "SCell-ToBeSetup-List", "f1ap.SCell_ToBeSetup_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_SRBs_ToBeSetup_List_PDU, + { "SRBs-ToBeSetup-List", "f1ap.SRBs_ToBeSetup_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_DRBs_ToBeSetup_List_PDU, + { "DRBs-ToBeSetup-List", "f1ap.DRBs_ToBeSetup_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_ResourceCoordinationTransferContainer_PDU, + { "ResourceCoordinationTransferContainer", "f1ap.ResourceCoordinationTransferContainer", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_ULTunnels_ToBeSetup_list_PDU, + { "ULTunnels-ToBeSetup-list", "f1ap.ULTunnels_ToBeSetup_list", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_UEContextSetupResponse_PDU, + { "UEContextSetupResponse", "f1ap.UEContextSetupResponse_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_SRBs_Setup_List_PDU, + { "SRBs-Setup-List", "f1ap.SRBs_Setup_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_DRBs_Setup_List_PDU, + { "DRBs-Setup-List", "f1ap.DRBs_Setup_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_SRBs_FailedToBeSetup_List_PDU, + { "SRBs-FailedToBeSetup-List", "f1ap.SRBs_FailedToBeSetup_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_DRBs_FailedToBeSetup_List_PDU, + { "DRBs-FailedToBeSetup-List", "f1ap.DRBs_FailedToBeSetup_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_DLTunnels_ToBeSetup_list_PDU, + { "DLTunnels-ToBeSetup-list", "f1ap.DLTunnels_ToBeSetup_list", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_UEContextSetupFailure_PDU, + { "UEContextSetupFailure", "f1ap.UEContextSetupFailure_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_UEContextReleaseRequest_PDU, + { "UEContextReleaseRequest", "f1ap.UEContextReleaseRequest_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_UEContextReleaseCommand_PDU, + { "UEContextReleaseCommand", "f1ap.UEContextReleaseCommand_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_UEContextReleaseComplete_PDU, + { "UEContextReleaseComplete", "f1ap.UEContextReleaseComplete_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_UEContextModificationRequest_PDU, + { "UEContextModificationRequest", "f1ap.UEContextModificationRequest_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_DRBs_ToBeModified_List_PDU, + { "DRBs-ToBeModified-List", "f1ap.DRBs_ToBeModified_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_SRBs_ToBeReleased_List_PDU, + { "SRBs-ToBeReleased-List", "f1ap.SRBs_ToBeReleased_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_DRBs_ToBeReleased_List_PDU, + { "DRBs-ToBeReleased-List", "f1ap.DRBs_ToBeReleased_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_UEContextModificationResponse_PDU, + { "UEContextModificationResponse", "f1ap.UEContextModificationResponse_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_DRBs_Modified_List_PDU, + { "DRBs-Modified-List", "f1ap.DRBs_Modified_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_DRBs_FailedToBeModified_List_PDU, + { "DRBs-FailedToBeModified-List", "f1ap.DRBs_FailedToBeModified_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_UEContextModificationFailure_PDU, + { "UEContextModificationFailure", "f1ap.UEContextModificationFailure_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_UEContextModificationRequired_PDU, + { "UEContextModificationRequired", "f1ap.UEContextModificationRequired_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_DRBs_Required_ToBeModified_List_PDU, + { "DRBs-Required-ToBeModified-List", "f1ap.DRBs_Required_ToBeModified_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_DRBs_Required_ToBeReleased_List_PDU, + { "DRBs-Required-ToBeReleased-List", "f1ap.DRBs_Required_ToBeReleased_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_SRBs_Required_ToBeReleased_List_PDU, + { "SRBs-Required-ToBeReleased-List", "f1ap.SRBs_Required_ToBeReleased_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_UEContextModificationConfirm_PDU, + { "UEContextModificationConfirm", "f1ap.UEContextModificationConfirm_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_DRBs_ModifiedConf_List_PDU, + { "DRBs-ModifiedConf-List", "f1ap.DRBs_ModifiedConf_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_DLRRCMessageTransfer_PDU, + { "DLRRCMessageTransfer", "f1ap.DLRRCMessageTransfer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_ULRRCMessageTransfer_PDU, + { "ULRRCMessageTransfer", "f1ap.ULRRCMessageTransfer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_PrivateMessage_PDU, + { "PrivateMessage", "f1ap.PrivateMessage_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_F1AP_PDU_PDU, + { "F1AP-PDU", "f1ap.F1AP_PDU", + FT_UINT32, BASE_DEC, VALS(f1ap_F1AP_PDU_vals), 0, + NULL, HFILL }}, + { &hf_f1ap_local, + { "local", "f1ap.local", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_65535", HFILL }}, + { &hf_f1ap_global, + { "global", "f1ap.global", + FT_OID, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_ProtocolIE_Container_item, + { "ProtocolIE-Field", "f1ap.ProtocolIE_Field_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_id, + { "id", "f1ap.id", + FT_UINT32, BASE_DEC|BASE_EXT_STRING, &f1ap_ProtocolIE_ID_vals_ext, 0, + "ProtocolIE_ID", HFILL }}, + { &hf_f1ap_criticality, + { "criticality", "f1ap.criticality", + FT_UINT32, BASE_DEC, VALS(f1ap_Criticality_vals), 0, + NULL, HFILL }}, + { &hf_f1ap_ie_field_value, + { "value", "f1ap.value_element", + FT_NONE, BASE_NONE, NULL, 0, + "T_ie_field_value", HFILL }}, + { &hf_f1ap_ProtocolExtensionContainer_item, + { "ProtocolExtensionField", "f1ap.ProtocolExtensionField_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_ext_id, + { "id", "f1ap.id", + FT_UINT32, BASE_DEC, NULL, 0, + "ProtocolExtensionID", HFILL }}, + { &hf_f1ap_extensionValue, + { "extensionValue", "f1ap.extensionValue_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_PrivateIE_Container_item, + { "PrivateIE-Field", "f1ap.PrivateIE_Field_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_private_id, + { "id", "f1ap.id", + FT_UINT32, BASE_DEC, VALS(f1ap_PrivateIE_ID_vals), 0, + "PrivateIE_ID", HFILL }}, + { &hf_f1ap_value, + { "value", "f1ap.value_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_priorityLevel, + { "priorityLevel", "f1ap.priorityLevel", + FT_UINT32, BASE_DEC, VALS(f1ap_PriorityLevel_vals), 0, + NULL, HFILL }}, + { &hf_f1ap_pre_emptionCapability, + { "pre-emptionCapability", "f1ap.pre_emptionCapability", + FT_UINT32, BASE_DEC, VALS(f1ap_Pre_emptionCapability_vals), 0, + NULL, HFILL }}, + { &hf_f1ap_pre_emptionVulnerability, + { "pre-emptionVulnerability", "f1ap.pre_emptionVulnerability", + FT_UINT32, BASE_DEC, VALS(f1ap_Pre_emptionVulnerability_vals), 0, + NULL, HFILL }}, + { &hf_f1ap_iE_Extensions, + { "iE-Extensions", "f1ap.iE_Extensions", + FT_UINT32, BASE_DEC, NULL, 0, + "ProtocolExtensionContainer", HFILL }}, + { &hf_f1ap_BroadcastPLMNs_Item_item, + { "PLMN-Identity", "f1ap.PLMN_Identity", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_radioNetwork, + { "radioNetwork", "f1ap.radioNetwork", + FT_UINT32, BASE_DEC, VALS(f1ap_CauseRadioNetwork_vals), 0, + "CauseRadioNetwork", HFILL }}, + { &hf_f1ap_transport, + { "transport", "f1ap.transport", + FT_UINT32, BASE_DEC, VALS(f1ap_CauseTransport_vals), 0, + "CauseTransport", HFILL }}, + { &hf_f1ap_protocol, + { "protocol", "f1ap.protocol", + FT_UINT32, BASE_DEC, VALS(f1ap_CauseProtocol_vals), 0, + "CauseProtocol", HFILL }}, + { &hf_f1ap_misc, + { "misc", "f1ap.misc", + FT_UINT32, BASE_DEC, VALS(f1ap_CauseMisc_vals), 0, + "CauseMisc", HFILL }}, + { &hf_f1ap_procedureCode, + { "procedureCode", "f1ap.procedureCode", + FT_UINT32, BASE_DEC|BASE_EXT_STRING, &f1ap_ProcedureCode_vals_ext, 0, + NULL, HFILL }}, + { &hf_f1ap_triggeringMessage, + { "triggeringMessage", "f1ap.triggeringMessage", + FT_UINT32, BASE_DEC, VALS(f1ap_TriggeringMessage_vals), 0, + NULL, HFILL }}, + { &hf_f1ap_procedureCriticality, + { "procedureCriticality", "f1ap.procedureCriticality", + FT_UINT32, BASE_DEC, VALS(f1ap_Criticality_vals), 0, + "Criticality", HFILL }}, + { &hf_f1ap_iEsCriticalityDiagnostics, + { "iEsCriticalityDiagnostics", "f1ap.iEsCriticalityDiagnostics", + FT_UINT32, BASE_DEC, NULL, 0, + "CriticalityDiagnostics_IE_List", HFILL }}, + { &hf_f1ap_CriticalityDiagnostics_IE_List_item, + { "CriticalityDiagnostics-IE-Item", "f1ap.CriticalityDiagnostics_IE_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_iECriticality, + { "iECriticality", "f1ap.iECriticality", + FT_UINT32, BASE_DEC, VALS(f1ap_Criticality_vals), 0, + "Criticality", HFILL }}, + { &hf_f1ap_iE_ID, + { "iE-ID", "f1ap.iE_ID", + FT_UINT32, BASE_DEC|BASE_EXT_STRING, &f1ap_ProtocolIE_ID_vals_ext, 0, + "ProtocolIE_ID", HFILL }}, + { &hf_f1ap_typeOfError, + { "typeOfError", "f1ap.typeOfError", + FT_UINT32, BASE_DEC, VALS(f1ap_TypeOfError_vals), 0, + NULL, HFILL }}, + { &hf_f1ap_sCG_Config_Info, + { "sCG-Config-Info", "f1ap.sCG_Config_Info", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_uERadiocapabilities, + { "uERadiocapabilities", "f1ap.uERadiocapabilities", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_longDRXCycleLength, + { "longDRXCycleLength", "f1ap.longDRXCycleLength", + FT_UINT32, BASE_DEC|BASE_EXT_STRING, &f1ap_LongDRXCycleLength_vals_ext, 0, + NULL, HFILL }}, + { &hf_f1ap_shortDRXCycleLength, + { "shortDRXCycleLength", "f1ap.shortDRXCycleLength", + FT_UINT32, BASE_DEC|BASE_EXT_STRING, &f1ap_ShortDRXCycleLength_vals_ext, 0, + NULL, HFILL }}, + { &hf_f1ap_shortDRXCycleTimer, + { "shortDRXCycleTimer", "f1ap.shortDRXCycleTimer", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_cellGroupConfig, + { "cellGroupConfig", "f1ap.cellGroupConfig", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_qCI, + { "qCI", "f1ap.qCI", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_allocationAndRetentionPriority, + { "allocationAndRetentionPriority", "f1ap.allocationAndRetentionPriority_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_gbrQosInformation, + { "gbrQosInformation", "f1ap.gbrQosInformation_element", + FT_NONE, BASE_NONE, NULL, 0, + "GBR_QosInformation", HFILL }}, + { &hf_f1ap_uL_NARFCN, + { "uL-NARFCN", "f1ap.uL_NARFCN", + FT_UINT32, BASE_DEC, NULL, 0, + "NARFCN", HFILL }}, + { &hf_f1ap_dL_NARFCN, + { "dL-NARFCN", "f1ap.dL_NARFCN", + FT_UINT32, BASE_DEC, NULL, 0, + "NARFCN", HFILL }}, + { &hf_f1ap_uL_Transmission_Bandwidth, + { "uL-Transmission-Bandwidth", "f1ap.uL_Transmission_Bandwidth", + FT_UINT32, BASE_DEC, NULL, 0, + "Transmission_Bandwidth", HFILL }}, + { &hf_f1ap_dL_Transmission_Bandwidth, + { "dL-Transmission-Bandwidth", "f1ap.dL_Transmission_Bandwidth", + FT_UINT32, BASE_DEC, NULL, 0, + "Transmission_Bandwidth", HFILL }}, + { &hf_f1ap_e_RAB_MaximumBitrateDL, + { "e-RAB-MaximumBitrateDL", "f1ap.e_RAB_MaximumBitrateDL", + FT_UINT64, BASE_DEC|BASE_UNIT_STRING, &units_bit_sec, 0, + "BitRate", HFILL }}, + { &hf_f1ap_e_RAB_MaximumBitrateUL, + { "e-RAB-MaximumBitrateUL", "f1ap.e_RAB_MaximumBitrateUL", + FT_UINT64, BASE_DEC|BASE_UNIT_STRING, &units_bit_sec, 0, + "BitRate", HFILL }}, + { &hf_f1ap_e_RAB_GuaranteedBitrateDL, + { "e-RAB-GuaranteedBitrateDL", "f1ap.e_RAB_GuaranteedBitrateDL", + FT_UINT64, BASE_DEC|BASE_UNIT_STRING, &units_bit_sec, 0, + "BitRate", HFILL }}, + { &hf_f1ap_e_RAB_GuaranteedBitrateUL, + { "e-RAB-GuaranteedBitrateUL", "f1ap.e_RAB_GuaranteedBitrateUL", + FT_UINT64, BASE_DEC|BASE_UNIT_STRING, &units_bit_sec, 0, + "BitRate", HFILL }}, + { &hf_f1ap_mIB_message, + { "mIB-message", "f1ap.mIB_message", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_sIB1_message, + { "sIB1-message", "f1ap.sIB1_message", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_transportLayerAddress, + { "transportLayerAddress", "f1ap.transportLayerAddress", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_gTP_TEID, + { "gTP-TEID", "f1ap.gTP_TEID", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_pLMN_Identity, + { "pLMN-Identity", "f1ap.pLMN_Identity", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_nRCellIdentity, + { "nRCellIdentity", "f1ap.nRCellIdentity", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_fDD, + { "fDD", "f1ap.fDD_element", + FT_NONE, BASE_NONE, NULL, 0, + "FDD_Info", HFILL }}, + { &hf_f1ap_tDD, + { "tDD", "f1ap.tDD_element", + FT_NONE, BASE_NONE, NULL, 0, + "TDD_Info", HFILL }}, + { &hf_f1ap_nCGI, + { "nCGI", "f1ap.nCGI_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_pCI, + { "pCI", "f1ap.pCI", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_broadcastPLMNs, + { "broadcastPLMNs", "f1ap.broadcastPLMNs", + FT_UINT32, BASE_DEC, NULL, 0, + "BroadcastPLMNs_Item", HFILL }}, + { &hf_f1ap_nR_Mode_Info, + { "nR-Mode-Info", "f1ap.nR_Mode_Info", + FT_UINT32, BASE_DEC, VALS(f1ap_NR_Mode_Info_vals), 0, + NULL, HFILL }}, + { &hf_f1ap_nARFCN, + { "nARFCN", "f1ap.nARFCN", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_transmission_Bandwidth, + { "transmission-Bandwidth", "f1ap.transmission_Bandwidth", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_gNB_CU_F1AP_ID, + { "gNB-CU-F1AP-ID", "f1ap.gNB_CU_F1AP_ID", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_gNB_DU_F1AP_ID, + { "gNB-DU-F1AP-ID", "f1ap.gNB_DU_F1AP_ID", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_protocolIEs, + { "protocolIEs", "f1ap.protocolIEs", + FT_UINT32, BASE_DEC, NULL, 0, + "ProtocolIE_Container", HFILL }}, + { &hf_f1ap_f1_Interface, + { "f1-Interface", "f1ap.f1_Interface", + FT_UINT32, BASE_DEC, VALS(f1ap_ResetAll_vals), 0, + "ResetAll", HFILL }}, + { &hf_f1ap_partOfF1_Interface, + { "partOfF1-Interface", "f1ap.partOfF1_Interface", + FT_UINT32, BASE_DEC, NULL, 0, + "UE_associatedLogicalF1_ConnectionListRes", HFILL }}, + { &hf_f1ap_UE_associatedLogicalF1_ConnectionListRes_item, + { "ProtocolIE-SingleContainer", "f1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_UE_associatedLogicalF1_ConnectionListResAck_item, + { "ProtocolIE-SingleContainer", "f1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_GNB_DU_Served_Cells_List_item, + { "ProtocolIE-SingleContainer", "f1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_Cells_to_be_Activated_List_item, + { "ProtocolIE-SingleContainer", "f1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_Served_Cells_To_Add_List_item, + { "ProtocolIE-SingleContainer", "f1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_Served_Cells_To_Modify_List_item, + { "ProtocolIE-SingleContainer", "f1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_Served_Cells_To_Delete_List_item, + { "ProtocolIE-SingleContainer", "f1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_Cells_to_be_Deactivated_List_item, + { "ProtocolIE-SingleContainer", "f1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_Cells_Failed_to_be_Activated_List_item, + { "ProtocolIE-SingleContainer", "f1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_SCell_ToBeSetup_List_item, + { "ProtocolIE-SingleContainer", "f1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_SRBs_ToBeSetup_List_item, + { "ProtocolIE-SingleContainer", "f1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_DRBs_ToBeSetup_List_item, + { "ProtocolIE-SingleContainer", "f1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_ULTunnels_ToBeSetup_list_item, + { "ProtocolIE-SingleContainer", "f1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_SRBs_Setup_List_item, + { "ProtocolIE-SingleContainer", "f1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_DRBs_Setup_List_item, + { "ProtocolIE-SingleContainer", "f1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_SRBs_FailedToBeSetup_List_item, + { "ProtocolIE-SingleContainer", "f1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_DRBs_FailedToBeSetup_List_item, + { "ProtocolIE-SingleContainer", "f1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_DLTunnels_ToBeSetup_list_item, + { "ProtocolIE-SingleContainer", "f1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_DRBs_ToBeModified_List_item, + { "ProtocolIE-SingleContainer", "f1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_SRBs_ToBeReleased_List_item, + { "ProtocolIE-SingleContainer", "f1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_DRBs_ToBeReleased_List_item, + { "ProtocolIE-SingleContainer", "f1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_DRBs_Modified_List_item, + { "ProtocolIE-SingleContainer", "f1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_DRBs_FailedToBeModified_List_item, + { "ProtocolIE-SingleContainer", "f1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_DRBs_Required_ToBeModified_List_item, + { "ProtocolIE-SingleContainer", "f1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_DRBs_Required_ToBeReleased_List_item, + { "ProtocolIE-SingleContainer", "f1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_SRBs_Required_ToBeReleased_List_item, + { "ProtocolIE-SingleContainer", "f1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_DRBs_ModifiedConf_List_item, + { "ProtocolIE-SingleContainer", "f1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_privateIEs, + { "privateIEs", "f1ap.privateIEs", + FT_UINT32, BASE_DEC, NULL, 0, + "PrivateIE_Container", HFILL }}, + { &hf_f1ap_initiatingMessage, + { "initiatingMessage", "f1ap.initiatingMessage_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_successfulOutcome, + { "successfulOutcome", "f1ap.successfulOutcome_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_unsuccessfulOutcome, + { "unsuccessfulOutcome", "f1ap.unsuccessfulOutcome_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_f1ap_initiatingMessagevalue, + { "value", "f1ap.value_element", + FT_NONE, BASE_NONE, NULL, 0, + "InitiatingMessage_value", HFILL }}, + { &hf_f1ap_successfulOutcome_value, + { "value", "f1ap.value_element", + FT_NONE, BASE_NONE, NULL, 0, + "SuccessfulOutcome_value", HFILL }}, + { &hf_f1ap_unsuccessfulOutcome_value, + { "value", "f1ap.value_element", + FT_NONE, BASE_NONE, NULL, 0, + "UnsuccessfulOutcome_value", HFILL }}, + +/*--- End of included file: packet-f1ap-hfarr.c ---*/ +#line 185 "./asn1/f1ap/packet-f1ap-template.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, + +/*--- Included file: packet-f1ap-ettarr.c ---*/ +#line 1 "./asn1/f1ap/packet-f1ap-ettarr.c" + &ett_f1ap_PrivateIE_ID, + &ett_f1ap_ProtocolIE_Container, + &ett_f1ap_ProtocolIE_Field, + &ett_f1ap_ProtocolExtensionContainer, + &ett_f1ap_ProtocolExtensionField, + &ett_f1ap_PrivateIE_Container, + &ett_f1ap_PrivateIE_Field, + &ett_f1ap_AllocationAndRetentionPriority, + &ett_f1ap_BroadcastPLMNs_Item, + &ett_f1ap_Cause, + &ett_f1ap_CriticalityDiagnostics, + &ett_f1ap_CriticalityDiagnostics_IE_List, + &ett_f1ap_CriticalityDiagnostics_IE_Item, + &ett_f1ap_CUtoDURRCInformation, + &ett_f1ap_DRXCycle, + &ett_f1ap_DUtoCURRCInformation, + &ett_f1ap_EUTRANQoS, + &ett_f1ap_FDD_Info, + &ett_f1ap_GBR_QosInformation, + &ett_f1ap_GNB_DU_System_Information, + &ett_f1ap_GTPTunnelEndpoint, + &ett_f1ap_NCGI, + &ett_f1ap_NR_Mode_Info, + &ett_f1ap_Served_Cell_Information, + &ett_f1ap_TDD_Info, + &ett_f1ap_UE_associatedLogicalF1_ConnectionItem, + &ett_f1ap_Reset, + &ett_f1ap_ResetType, + &ett_f1ap_UE_associatedLogicalF1_ConnectionListRes, + &ett_f1ap_ResetAcknowledge, + &ett_f1ap_UE_associatedLogicalF1_ConnectionListResAck, + &ett_f1ap_ErrorIndication, + &ett_f1ap_F1SetupRequest, + &ett_f1ap_GNB_DU_Served_Cells_List, + &ett_f1ap_F1SetupResponse, + &ett_f1ap_Cells_to_be_Activated_List, + &ett_f1ap_F1SetupFailure, + &ett_f1ap_GNBDUConfigurationUpdate, + &ett_f1ap_Served_Cells_To_Add_List, + &ett_f1ap_Served_Cells_To_Modify_List, + &ett_f1ap_Served_Cells_To_Delete_List, + &ett_f1ap_GNBDUConfigurationUpdateAcknowledge, + &ett_f1ap_GNBDUConfigurationUpdateFailure, + &ett_f1ap_GNBCUConfigurationUpdate, + &ett_f1ap_Cells_to_be_Deactivated_List, + &ett_f1ap_GNBCUConfigurationUpdateAcknowledge, + &ett_f1ap_Cells_Failed_to_be_Activated_List, + &ett_f1ap_GNBCUConfigurationUpdateFailure, + &ett_f1ap_UEContextSetupRequest, + &ett_f1ap_SCell_ToBeSetup_List, + &ett_f1ap_SRBs_ToBeSetup_List, + &ett_f1ap_DRBs_ToBeSetup_List, + &ett_f1ap_ULTunnels_ToBeSetup_list, + &ett_f1ap_UEContextSetupResponse, + &ett_f1ap_SRBs_Setup_List, + &ett_f1ap_DRBs_Setup_List, + &ett_f1ap_SRBs_FailedToBeSetup_List, + &ett_f1ap_DRBs_FailedToBeSetup_List, + &ett_f1ap_DLTunnels_ToBeSetup_list, + &ett_f1ap_UEContextSetupFailure, + &ett_f1ap_UEContextReleaseRequest, + &ett_f1ap_UEContextReleaseCommand, + &ett_f1ap_UEContextReleaseComplete, + &ett_f1ap_UEContextModificationRequest, + &ett_f1ap_DRBs_ToBeModified_List, + &ett_f1ap_SRBs_ToBeReleased_List, + &ett_f1ap_DRBs_ToBeReleased_List, + &ett_f1ap_UEContextModificationResponse, + &ett_f1ap_DRBs_Modified_List, + &ett_f1ap_DRBs_FailedToBeModified_List, + &ett_f1ap_UEContextModificationFailure, + &ett_f1ap_UEContextModificationRequired, + &ett_f1ap_DRBs_Required_ToBeModified_List, + &ett_f1ap_DRBs_Required_ToBeReleased_List, + &ett_f1ap_SRBs_Required_ToBeReleased_List, + &ett_f1ap_UEContextModificationConfirm, + &ett_f1ap_DRBs_ModifiedConf_List, + &ett_f1ap_DLRRCMessageTransfer, + &ett_f1ap_ULRRCMessageTransfer, + &ett_f1ap_PrivateMessage, + &ett_f1ap_F1AP_PDU, + &ett_f1ap_InitiatingMessage, + &ett_f1ap_SuccessfulOutcome, + &ett_f1ap_UnsuccessfulOutcome, + +/*--- End of included file: packet-f1ap-ettarr.c ---*/ +#line 197 "./asn1/f1ap/packet-f1ap-template.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); + +/*--- Included file: packet-f1ap-dis-tab.c ---*/ +#line 1 "./asn1/f1ap/packet-f1ap-dis-tab.c" + dissector_add_uint("f1ap.ies", id_Cause, create_dissector_handle(dissect_Cause_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_CriticalityDiagnostics, create_dissector_handle(dissect_CriticalityDiagnostics_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_gNB_DU_F1AP_ID, create_dissector_handle(dissect_GNB_DU_F1AP_ID_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_gNB_CU_F1AP_ID, create_dissector_handle(dissect_GNB_CU_F1AP_ID_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_ResetType, create_dissector_handle(dissect_ResetType_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_TimeToWait, create_dissector_handle(dissect_TimeToWait_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_UE_associatedLogicalF1_ConnectionItem, create_dissector_handle(dissect_UE_associatedLogicalF1_ConnectionItem_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_UE_associatedLogicalF1_ConnectionListResAck, create_dissector_handle(dissect_UE_associatedLogicalF1_ConnectionListResAck_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_RRCContainer, create_dissector_handle(dissect_RRCContainer_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_SRBID, create_dissector_handle(dissect_SRBID_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_gNB_DU_ID, create_dissector_handle(dissect_GNB_DU_ID_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_gNB_Name, create_dissector_handle(dissect_GNB_Name_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_PCI, create_dissector_handle(dissect_PCI_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_gNB_DU_Served_Cells_List, create_dissector_handle(dissect_GNB_DU_Served_Cells_List_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_Cells_to_be_Activated_List, create_dissector_handle(dissect_Cells_to_be_Activated_List_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_Served_Cells_To_Add_List, create_dissector_handle(dissect_Served_Cells_To_Add_List_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_Served_Cells_To_Modify_List, create_dissector_handle(dissect_Served_Cells_To_Modify_List_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_Served_Cells_To_Delete_List, create_dissector_handle(dissect_Served_Cells_To_Delete_List_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_Cells_to_be_Deactivated_List, create_dissector_handle(dissect_Cells_to_be_Deactivated_List_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_Cells_Failed_to_be_Activated_List, create_dissector_handle(dissect_Cells_Failed_to_be_Activated_List_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_TransactionID, create_dissector_handle(dissect_TransactionID_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_Served_Cell_Information, create_dissector_handle(dissect_Served_Cell_Information_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_gNB_DU_System_Information, create_dissector_handle(dissect_GNB_DU_System_Information_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_NCGI, create_dissector_handle(dissect_NCGI_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_OldNCGI, create_dissector_handle(dissect_NCGI_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_DRBID, create_dissector_handle(dissect_DRBID_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_PSCell_ID, create_dissector_handle(dissect_NCGI_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_EUTRANQoS, create_dissector_handle(dissect_EUTRANQoS_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_SRBs_ToBeSetup_List, create_dissector_handle(dissect_SRBs_ToBeSetup_List_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_DRBs_ToBeSetup_List, create_dissector_handle(dissect_DRBs_ToBeSetup_List_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_DLTunnels_ToBeSetup_List, create_dissector_handle(dissect_DLTunnels_ToBeSetup_list_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_ULTunnels_ToBeSetup_List, create_dissector_handle(dissect_ULTunnels_ToBeSetup_list_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_UL_GTP_Tunnel_EndPoint, create_dissector_handle(dissect_GTPTunnelEndpoint_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_DL_GTP_Tunnel_EndPoint, create_dissector_handle(dissect_GTPTunnelEndpoint_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_CUtoDURRCInformation, create_dissector_handle(dissect_CUtoDURRCInformation_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_DUtoCURRCInformation, create_dissector_handle(dissect_DUtoCURRCInformation_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_SCell_ToBeSetup_List, create_dissector_handle(dissect_SCell_ToBeSetup_List_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_ResourceCoordinationTransferContainer, create_dissector_handle(dissect_ResourceCoordinationTransferContainer_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_DRBs_ToBeModified_List, create_dissector_handle(dissect_DRBs_ToBeModified_List_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_DRBs_ToBeReleased_List, create_dissector_handle(dissect_DRBs_ToBeReleased_List_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_DRBs_Modified_List, create_dissector_handle(dissect_DRBs_Modified_List_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_DRBs_FailedToBeModified_List, create_dissector_handle(dissect_DRBs_FailedToBeModified_List_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_SCell_ID, create_dissector_handle(dissect_NCGI_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_DRXCycle, create_dissector_handle(dissect_DRXCycle_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_DRBs_Setup_List, create_dissector_handle(dissect_DRBs_Setup_List_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_SRBs_Setup_List, create_dissector_handle(dissect_SRBs_Setup_List_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_DRBs_FailedToBeSetup_List, create_dissector_handle(dissect_DRBs_FailedToBeSetup_List_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_SRBs_FailedToBeSetup_List, create_dissector_handle(dissect_SRBs_FailedToBeSetup_List_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_DLTunnels_ToBeSetup_list, create_dissector_handle(dissect_DLTunnels_ToBeSetup_list_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_ULTunnels_ToBeSetup_list, create_dissector_handle(dissect_ULTunnels_ToBeSetup_list_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_TransmissionStopIndicator, create_dissector_handle(dissect_TransmissionStopIndicator_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_DRBs_Required_ToBeModified_List, create_dissector_handle(dissect_DRBs_Required_ToBeModified_List_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_DRBs_Required_ToBeReleased_List, create_dissector_handle(dissect_DRBs_Required_ToBeReleased_List_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_SRBs_Required_ToBeReleased_List, create_dissector_handle(dissect_SRBs_Required_ToBeReleased_List_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_oldgNB_DU_F1AP_ID, create_dissector_handle(dissect_GNB_DU_F1AP_ID_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_SRBs_ToBeReleased_List, create_dissector_handle(dissect_SRBs_ToBeReleased_List_PDU, proto_f1ap)); + dissector_add_uint("f1ap.ies", id_DRBs_ModifiedConf_List, create_dissector_handle(dissect_DRBs_ModifiedConf_List_PDU, proto_f1ap)); + dissector_add_uint("f1ap.proc.imsg", id_Reset, create_dissector_handle(dissect_Reset_PDU, proto_f1ap)); + dissector_add_uint("f1ap.proc.sout", id_Reset, create_dissector_handle(dissect_ResetAcknowledge_PDU, proto_f1ap)); + dissector_add_uint("f1ap.proc.imsg", id_F1Setup, create_dissector_handle(dissect_F1SetupRequest_PDU, proto_f1ap)); + dissector_add_uint("f1ap.proc.sout", id_F1Setup, create_dissector_handle(dissect_F1SetupResponse_PDU, proto_f1ap)); + dissector_add_uint("f1ap.proc.uout", id_F1Setup, create_dissector_handle(dissect_F1SetupFailure_PDU, proto_f1ap)); + dissector_add_uint("f1ap.proc.imsg", id_gNBDUConfigurationUpdate, create_dissector_handle(dissect_GNBDUConfigurationUpdate_PDU, proto_f1ap)); + dissector_add_uint("f1ap.proc.sout", id_gNBDUConfigurationUpdate, create_dissector_handle(dissect_GNBDUConfigurationUpdateAcknowledge_PDU, proto_f1ap)); + dissector_add_uint("f1ap.proc.uout", id_gNBDUConfigurationUpdate, create_dissector_handle(dissect_GNBDUConfigurationUpdateFailure_PDU, proto_f1ap)); + dissector_add_uint("f1ap.proc.imsg", id_gNBCUConfigurationUpdate, create_dissector_handle(dissect_GNBCUConfigurationUpdate_PDU, proto_f1ap)); + dissector_add_uint("f1ap.proc.sout", id_gNBCUConfigurationUpdate, create_dissector_handle(dissect_GNBCUConfigurationUpdateAcknowledge_PDU, proto_f1ap)); + dissector_add_uint("f1ap.proc.uout", id_gNBCUConfigurationUpdate, create_dissector_handle(dissect_GNBCUConfigurationUpdateFailure_PDU, proto_f1ap)); + dissector_add_uint("f1ap.proc.imsg", id_UEContextSetup, create_dissector_handle(dissect_UEContextSetupRequest_PDU, proto_f1ap)); + dissector_add_uint("f1ap.proc.sout", id_UEContextSetup, create_dissector_handle(dissect_UEContextSetupResponse_PDU, proto_f1ap)); + dissector_add_uint("f1ap.proc.uout", id_UEContextSetup, create_dissector_handle(dissect_UEContextSetupFailure_PDU, proto_f1ap)); + dissector_add_uint("f1ap.proc.imsg", id_UEContextRelease, create_dissector_handle(dissect_UEContextReleaseCommand_PDU, proto_f1ap)); + dissector_add_uint("f1ap.proc.sout", id_UEContextRelease, create_dissector_handle(dissect_UEContextReleaseComplete_PDU, proto_f1ap)); + dissector_add_uint("f1ap.proc.imsg", id_UEContextModification, create_dissector_handle(dissect_UEContextModificationRequest_PDU, proto_f1ap)); + dissector_add_uint("f1ap.proc.sout", id_UEContextModification, create_dissector_handle(dissect_UEContextModificationResponse_PDU, proto_f1ap)); + dissector_add_uint("f1ap.proc.uout", id_UEContextModification, create_dissector_handle(dissect_UEContextModificationFailure_PDU, proto_f1ap)); + dissector_add_uint("f1ap.proc.imsg", id_UEContextModificationRequired, create_dissector_handle(dissect_UEContextModificationRequired_PDU, proto_f1ap)); + dissector_add_uint("f1ap.proc.sout", id_UEContextModificationRequired, create_dissector_handle(dissect_UEContextModificationConfirm_PDU, proto_f1ap)); + dissector_add_uint("f1ap.proc.imsg", id_ErrorIndication, create_dissector_handle(dissect_ErrorIndication_PDU, proto_f1ap)); + dissector_add_uint("f1ap.proc.imsg", id_UEContextReleaseRequest, create_dissector_handle(dissect_UEContextReleaseRequest_PDU, proto_f1ap)); + dissector_add_uint("f1ap.proc.imsg", id_DLRRCMessageTransfer, create_dissector_handle(dissect_DLRRCMessageTransfer_PDU, proto_f1ap)); + dissector_add_uint("f1ap.proc.imsg", id_ULRRCMessageTransfer, create_dissector_handle(dissect_ULRRCMessageTransfer_PDU, proto_f1ap)); + dissector_add_uint("f1ap.proc.imsg", id_privateMessage, create_dissector_handle(dissect_PrivateMessage_PDU, proto_f1ap)); + + +/*--- End of included file: packet-f1ap-dis-tab.c ---*/ +#line 222 "./asn1/f1ap/packet-f1ap-template.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/packet-nr-rrc.c b/epan/dissectors/packet-nr-rrc.c index 1fff4a5a75..37bf2e9cd2 100644 --- a/epan/dissectors/packet-nr-rrc.c +++ b/epan/dissectors/packet-nr-rrc.c @@ -140,8 +140,10 @@ static int hf_nr_rrc_nr_rrc_SCG_ConfigInfo_PDU = -1; /* SCG_ConfigInfo */ static int hf_nr_rrc_BCCH_BCH_Message_PDU = -1; /* BCCH_BCH_Message */ static int hf_nr_rrc_DL_DCCH_Message_PDU = -1; /* DL_DCCH_Message */ static int hf_nr_rrc_nr_rrc_UL_DCCH_Message_PDU = -1; /* UL_DCCH_Message */ +static int hf_nr_rrc_nr_rrc_MIB_PDU = -1; /* MIB */ static int hf_nr_rrc_nr_rrc_RRCReconfiguration_PDU = -1; /* RRCReconfiguration */ static int hf_nr_rrc_nr_rrc_RRCReconfigurationComplete_PDU = -1; /* RRCReconfigurationComplete */ +static int hf_nr_rrc_nr_rrc_CellGroupConfig_PDU = -1; /* CellGroupConfig */ static int hf_nr_rrc_nr_rrc_MeasResults_PDU = -1; /* MeasResults */ static int hf_nr_rrc_nr_rrc_RadioBearerConfig_PDU = -1; /* RadioBearerConfig */ static int hf_nr_rrc_nr_rrc_UE_MRDC_Capability_PDU = -1; /* UE_MRDC_Capability */ @@ -12624,6 +12626,14 @@ int dissect_nr_rrc_UL_DCCH_Message_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_ offset += 7; offset >>= 3; return offset; } +int dissect_nr_rrc_MIB_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo); + offset = dissect_nr_rrc_MIB(tvb, offset, &asn1_ctx, tree, hf_nr_rrc_nr_rrc_MIB_PDU); + offset += 7; offset >>= 3; + return offset; +} int dissect_nr_rrc_RRCReconfiguration_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; @@ -12640,6 +12650,14 @@ int dissect_nr_rrc_RRCReconfigurationComplete_PDU(tvbuff_t *tvb _U_, packet_info offset += 7; offset >>= 3; return offset; } +int dissect_nr_rrc_CellGroupConfig_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo); + offset = dissect_nr_rrc_CellGroupConfig(tvb, offset, &asn1_ctx, tree, hf_nr_rrc_nr_rrc_CellGroupConfig_PDU); + offset += 7; offset >>= 3; + return offset; +} int dissect_nr_rrc_MeasResults_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; @@ -12717,6 +12735,10 @@ void proto_register_nr_rrc(void) { { "UL-DCCH-Message", "nr-rrc.UL_DCCH_Message_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_nr_rrc_nr_rrc_MIB_PDU, + { "MIB", "nr-rrc.MIB_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_nr_rrc_nr_rrc_RRCReconfiguration_PDU, { "RRCReconfiguration", "nr-rrc.RRCReconfiguration_element", FT_NONE, BASE_NONE, NULL, 0, @@ -12725,6 +12747,10 @@ void proto_register_nr_rrc(void) { { "RRCReconfigurationComplete", "nr-rrc.RRCReconfigurationComplete_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_nr_rrc_nr_rrc_CellGroupConfig_PDU, + { "CellGroupConfig", "nr-rrc.CellGroupConfig_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_nr_rrc_nr_rrc_MeasResults_PDU, { "MeasResults", "nr-rrc.MeasResults_element", FT_NONE, BASE_NONE, NULL, 0, diff --git a/epan/dissectors/packet-nr-rrc.h b/epan/dissectors/packet-nr-rrc.h index 3f1de1435a..b261aa72b1 100644 --- a/epan/dissectors/packet-nr-rrc.h +++ b/epan/dissectors/packet-nr-rrc.h @@ -24,8 +24,10 @@ #line 1 "./asn1/nr-rrc/packet-nr-rrc-exp.h" int dissect_nr_rrc_SCG_ConfigInfo_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); int dissect_nr_rrc_UL_DCCH_Message_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); +int dissect_nr_rrc_MIB_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); int dissect_nr_rrc_RRCReconfiguration_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); int dissect_nr_rrc_RRCReconfigurationComplete_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); +int dissect_nr_rrc_CellGroupConfig_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); int dissect_nr_rrc_MeasResults_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); int dissect_nr_rrc_RadioBearerConfig_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); int dissect_nr_rrc_UE_MRDC_Capability_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); diff --git a/epan/dissectors/packet-x2ap.c b/epan/dissectors/packet-x2ap.c index 91863c0cdc..8230974d8c 100644 --- a/epan/dissectors/packet-x2ap.c +++ b/epan/dissectors/packet-x2ap.c @@ -543,7 +543,7 @@ static int hf_x2ap_MDT_Configuration_PDU = -1; /* MDT_Configuration */ static int hf_x2ap_MDTPLMNList_PDU = -1; /* MDTPLMNList */ static int hf_x2ap_MDT_Location_Info_PDU = -1; /* MDT_Location_Info */ static int hf_x2ap_Measurement_ID_PDU = -1; /* Measurement_ID */ -static int hf_x2ap_MeNBResourceCoordinationInformation_PDU = -1; /* MeNBResourceCoordinationInformation */ +static int hf_x2ap_x2ap_MeNBResourceCoordinationInformation_PDU = -1; /* MeNBResourceCoordinationInformation */ static int hf_x2ap_MeNBtoSeNBContainer_PDU = -1; /* MeNBtoSeNBContainer */ static int hf_x2ap_MBMS_Service_Area_Identity_List_PDU = -1; /* MBMS_Service_Area_Identity_List */ static int hf_x2ap_MBSFN_Subframe_Infolist_PDU = -1; /* MBSFN_Subframe_Infolist */ @@ -580,7 +580,7 @@ static int hf_x2ap_SecondaryRATUsageReport_Item_PDU = -1; /* SecondaryRATUsageR static int hf_x2ap_SeNBSecurityKey_PDU = -1; /* SeNBSecurityKey */ static int hf_x2ap_SeNBtoMeNBContainer_PDU = -1; /* SeNBtoMeNBContainer */ static int hf_x2ap_ServedCells_PDU = -1; /* ServedCells */ -static int hf_x2ap_SgNBResourceCoordinationInformation_PDU = -1; /* SgNBResourceCoordinationInformation */ +static int hf_x2ap_x2ap_SgNBResourceCoordinationInformation_PDU = -1; /* SgNBResourceCoordinationInformation */ static int hf_x2ap_SgNB_UE_X2AP_ID_PDU = -1; /* SgNB_UE_X2AP_ID */ static int hf_x2ap_SIPTOBearerDeactivationIndication_PDU = -1; /* SIPTOBearerDeactivationIndication */ static int hf_x2ap_ShortMAC_I_PDU = -1; /* ShortMAC_I */ @@ -1993,7 +1993,7 @@ static value_string_ext x2ap_ProcedureCode_vals_ext = VALUE_STRING_EXT_INIT(x2ap static int dissect_x2ap_ProcedureCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 66 "./asn1/x2ap/x2ap.cnf" +#line 74 "./asn1/x2ap/x2ap.cnf" struct x2ap_private_data *x2ap_data = x2ap_get_private_data(actx->pinfo); offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 255U, &x2ap_data->procedure_code, FALSE); @@ -2283,14 +2283,14 @@ static value_string_ext x2ap_ProtocolIE_ID_vals_ext = VALUE_STRING_EXT_INIT(x2ap static int dissect_x2ap_ProtocolIE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 53 "./asn1/x2ap/x2ap.cnf" +#line 61 "./asn1/x2ap/x2ap.cnf" struct x2ap_private_data *x2ap_data = x2ap_get_private_data(actx->pinfo); offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, maxProtocolIEs, &x2ap_data->protocol_ie_id, FALSE); -#line 56 "./asn1/x2ap/x2ap.cnf" +#line 64 "./asn1/x2ap/x2ap.cnf" if (tree) { proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", val_to_str_ext(x2ap_data->protocol_ie_id, &x2ap_ProtocolIE_ID_vals_ext, "unknown (%d)")); } @@ -2309,7 +2309,7 @@ static const value_string x2ap_TriggeringMessage_vals[] = { static int dissect_x2ap_TriggeringMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 70 "./asn1/x2ap/x2ap.cnf" +#line 78 "./asn1/x2ap/x2ap.cnf" struct x2ap_private_data *x2ap_data = x2ap_get_private_data(actx->pinfo); offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 3, &x2ap_data->triggering_message, FALSE, 0, NULL); @@ -2830,7 +2830,7 @@ dissect_x2ap_AllocationAndRetentionPriority(tvbuff_t *tvb _U_, int offset _U_, a static int dissect_x2ap_PLMN_Identity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 352 "./asn1/x2ap/x2ap.cnf" +#line 360 "./asn1/x2ap/x2ap.cnf" tvbuff_t *parameter_tvb = NULL; proto_tree *subtree; @@ -2911,7 +2911,7 @@ dissect_x2ap_CellBasedMDT(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U static int dissect_x2ap_TAC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 336 "./asn1/x2ap/x2ap.cnf" +#line 344 "./asn1/x2ap/x2ap.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, -1, 2, 2, FALSE, ¶meter_tvb); @@ -4369,7 +4369,7 @@ dissect_x2ap_DL_Total_PRB_usage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a static int dissect_x2ap_T_transmissionModes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 481 "./asn1/x2ap/x2ap.cnf" +#line 489 "./asn1/x2ap/x2ap.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, 8, 8, FALSE, ¶meter_tvb, NULL); @@ -4643,7 +4643,7 @@ dissect_x2ap_ENB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro static int dissect_x2ap_EncryptionAlgorithms(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 388 "./asn1/x2ap/x2ap.cnf" +#line 396 "./asn1/x2ap/x2ap.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, 16, 16, TRUE, ¶meter_tvb, NULL); @@ -4847,7 +4847,7 @@ dissect_x2ap_E_RABUsageReportList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t static int dissect_x2ap_T_startTimeStamp(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 548 "./asn1/x2ap/x2ap.cnf" +#line 556 "./asn1/x2ap/x2ap.cnf" tvbuff_t *timestamp_tvb = NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, 4, 4, FALSE, ×tamp_tvb); @@ -4855,7 +4855,7 @@ dissect_x2ap_T_startTimeStamp(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act -#line 552 "./asn1/x2ap/x2ap.cnf" +#line 560 "./asn1/x2ap/x2ap.cnf" if (timestamp_tvb) { proto_item_append_text(actx->created_item, " (%s)", tvb_ntp_fmt_ts_sec(timestamp_tvb, 0)); } @@ -4868,7 +4868,7 @@ dissect_x2ap_T_startTimeStamp(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act static int dissect_x2ap_T_endTimeStamp(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 557 "./asn1/x2ap/x2ap.cnf" +#line 565 "./asn1/x2ap/x2ap.cnf" tvbuff_t *timestamp_tvb = NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, 4, 4, FALSE, ×tamp_tvb); @@ -4876,7 +4876,7 @@ dissect_x2ap_T_endTimeStamp(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx -#line 561 "./asn1/x2ap/x2ap.cnf" +#line 569 "./asn1/x2ap/x2ap.cnf" if (timestamp_tvb) { proto_item_append_text(actx->created_item, " (%s)", tvb_ntp_fmt_ts_sec(timestamp_tvb, 0)); } @@ -5056,7 +5056,7 @@ dissect_x2ap_EUTRA_Mode_Info(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx static int dissect_x2ap_EUTRANTraceID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 285 "./asn1/x2ap/x2ap.cnf" +#line 293 "./asn1/x2ap/x2ap.cnf" tvbuff_t *parameter_tvb; proto_tree *subtree = NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, @@ -5314,7 +5314,7 @@ dissect_x2ap_ForbiddenTAs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U static int dissect_x2ap_LAC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 345 "./asn1/x2ap/x2ap.cnf" +#line 353 "./asn1/x2ap/x2ap.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, -1, 2, 2, FALSE, ¶meter_tvb); @@ -5474,7 +5474,7 @@ dissect_x2ap_GlobalGNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U static int dissect_x2ap_TransportLayerAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 100 "./asn1/x2ap/x2ap.cnf" +#line 108 "./asn1/x2ap/x2ap.cnf" tvbuff_t *parameter_tvb = NULL; proto_tree *subtree; int len; @@ -5534,7 +5534,7 @@ dissect_x2ap_GTPtunnelEndpoint(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac static int dissect_x2ap_MME_Group_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 381 "./asn1/x2ap/x2ap.cnf" +#line 389 "./asn1/x2ap/x2ap.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, -1, 2, 2, FALSE, ¶meter_tvb); @@ -5582,7 +5582,7 @@ dissect_x2ap_GUGroupIDList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _ static int dissect_x2ap_MME_Code(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 372 "./asn1/x2ap/x2ap.cnf" +#line 380 "./asn1/x2ap/x2ap.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, -1, 1, 1, FALSE, ¶meter_tvb); @@ -5686,7 +5686,7 @@ dissect_x2ap_HWLoadIndicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx static int dissect_x2ap_IntegrityProtectionAlgorithms(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 403 "./asn1/x2ap/x2ap.cnf" +#line 411 "./asn1/x2ap/x2ap.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, 16, 16, TRUE, ¶meter_tvb, NULL); @@ -5712,7 +5712,7 @@ dissect_x2ap_IntegrityProtectionAlgorithms(tvbuff_t *tvb _U_, int offset _U_, as static int dissect_x2ap_InterfacesToTrace(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 296 "./asn1/x2ap/x2ap.cnf" +#line 304 "./asn1/x2ap/x2ap.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, 8, 8, FALSE, ¶meter_tvb, NULL); @@ -5836,7 +5836,7 @@ dissect_x2ap_LastVisitedCell_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t static int dissect_x2ap_LHN_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 502 "./asn1/x2ap/x2ap.cnf" +#line 510 "./asn1/x2ap/x2ap.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, -1, 32, 256, FALSE, ¶meter_tvb); @@ -6284,7 +6284,7 @@ dissect_x2ap_MDT_Activation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx static int dissect_x2ap_MeasurementsToActivate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 433 "./asn1/x2ap/x2ap.cnf" +#line 441 "./asn1/x2ap/x2ap.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, 8, 8, FALSE, ¶meter_tvb, NULL); @@ -6348,7 +6348,7 @@ dissect_x2ap_MDTPLMNList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_ static int dissect_x2ap_MDT_Location_Info(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 458 "./asn1/x2ap/x2ap.cnf" +#line 466 "./asn1/x2ap/x2ap.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, 8, 8, FALSE, ¶meter_tvb, NULL); @@ -6400,7 +6400,7 @@ dissect_x2ap_MeNBResourceCoordinationInformation(tvbuff_t *tvb _U_, int offset _ static int dissect_x2ap_MeNBtoSeNBContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 219 "./asn1/x2ap/x2ap.cnf" +#line 227 "./asn1/x2ap/x2ap.cnf" tvbuff_t *parameter_tvb; proto_tree *subtree = NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, @@ -6605,7 +6605,7 @@ dissect_x2ap_MultibandInfoList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac static int dissect_x2ap_MeNBtoSgNBContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 237 "./asn1/x2ap/x2ap.cnf" +#line 245 "./asn1/x2ap/x2ap.cnf" tvbuff_t *parameter_tvb; proto_tree *subtree = NULL; struct x2ap_private_data *x2ap_data = x2ap_get_private_data(actx->pinfo); @@ -6650,7 +6650,7 @@ dissect_x2ap_MCGSplitSRBs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U static int dissect_x2ap_RRCContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 273 "./asn1/x2ap/x2ap.cnf" +#line 281 "./asn1/x2ap/x2ap.cnf" tvbuff_t *parameter_tvb; proto_tree *subtree = NULL; struct x2ap_private_data *x2ap_data = x2ap_get_private_data(actx->pinfo); @@ -6673,7 +6673,7 @@ dissect_x2ap_RRCContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U static int dissect_x2ap_T_rrcContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 263 "./asn1/x2ap/x2ap.cnf" +#line 271 "./asn1/x2ap/x2ap.cnf" struct x2ap_private_data *x2ap_data = x2ap_get_private_data(actx->pinfo); x2ap_data->rrc_container_type = RRC_CONTAINER_TYPE_PDCP_C_PDU; @@ -6721,7 +6721,7 @@ dissect_x2ap_MCGSplitSRB(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_ static int dissect_x2ap_T_uENRMeasurements(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 268 "./asn1/x2ap/x2ap.cnf" +#line 276 "./asn1/x2ap/x2ap.cnf" struct x2ap_private_data *x2ap_data = x2ap_get_private_data(actx->pinfo); x2ap_data->rrc_container_type = RRC_CONTAINER_TYPE_NR_UE_MEAS_REPORT; @@ -6880,7 +6880,7 @@ dissect_x2ap_NRrestriction(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _ static int dissect_x2ap_NRencryptionAlgorithms(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 518 "./asn1/x2ap/x2ap.cnf" +#line 526 "./asn1/x2ap/x2ap.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, 16, 16, TRUE, ¶meter_tvb, NULL); @@ -6906,7 +6906,7 @@ dissect_x2ap_NRencryptionAlgorithms(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_ static int dissect_x2ap_NRintegrityProtectionAlgorithms(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 533 "./asn1/x2ap/x2ap.cnf" +#line 541 "./asn1/x2ap/x2ap.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, 16, 16, TRUE, ¶meter_tvb, NULL); @@ -7001,7 +7001,7 @@ dissect_x2ap_PDCPChangeIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t static int dissect_x2ap_Port_Number(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 125 "./asn1/x2ap/x2ap.cnf" +#line 133 "./asn1/x2ap/x2ap.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, -1, 2, 2, FALSE, ¶meter_tvb); @@ -7305,7 +7305,7 @@ dissect_x2ap_RelativeNarrowbandTxPower(tvbuff_t *tvb _U_, int offset _U_, asn1_c static int dissect_x2ap_ReportCharacteristics(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 160 "./asn1/x2ap/x2ap.cnf" +#line 168 "./asn1/x2ap/x2ap.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, 32, 32, FALSE, ¶meter_tvb, NULL); @@ -7420,7 +7420,7 @@ dissect_x2ap_RLCMode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr static int dissect_x2ap_RRC_Context(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 136 "./asn1/x2ap/x2ap.cnf" +#line 144 "./asn1/x2ap/x2ap.cnf" tvbuff_t *parameter_tvb = NULL; proto_tree *subtree; @@ -7636,7 +7636,7 @@ dissect_x2ap_SeNBSecurityKey(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx static int dissect_x2ap_SeNBtoMeNBContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 228 "./asn1/x2ap/x2ap.cnf" +#line 236 "./asn1/x2ap/x2ap.cnf" tvbuff_t *parameter_tvb; proto_tree *subtree = NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, @@ -7792,7 +7792,7 @@ dissect_x2ap_SgNBSecurityKey(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx static int dissect_x2ap_SgNBtoMeNBContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 254 "./asn1/x2ap/x2ap.cnf" +#line 262 "./asn1/x2ap/x2ap.cnf" tvbuff_t *parameter_tvb; proto_tree *subtree = NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, @@ -7837,7 +7837,7 @@ dissect_x2ap_TargetCellInUTRAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac static int dissect_x2ap_TargeteNBtoSource_eNBTransparentContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 81 "./asn1/x2ap/x2ap.cnf" +#line 89 "./asn1/x2ap/x2ap.cnf" tvbuff_t *parameter_tvb = NULL; proto_tree *subtree; @@ -7909,7 +7909,7 @@ dissect_x2ap_TraceDepth(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, static int dissect_x2ap_TraceCollectionEntityIPAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 311 "./asn1/x2ap/x2ap.cnf" +#line 319 "./asn1/x2ap/x2ap.cnf" tvbuff_t *parameter_tvb = NULL; proto_tree *subtree; int len; @@ -8048,7 +8048,7 @@ dissect_x2ap_UE_HistoryInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t static int dissect_x2ap_UE_HistoryInformationFromTheUE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 151 "./asn1/x2ap/x2ap.cnf" +#line 159 "./asn1/x2ap/x2ap.cnf" tvbuff_t *parameter_tvb = NULL; proto_tree *subtree; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, @@ -8098,7 +8098,7 @@ dissect_x2ap_UE_X2AP_ID_Extension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t static int dissect_x2ap_UE_RLF_Report_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 201 "./asn1/x2ap/x2ap.cnf" +#line 209 "./asn1/x2ap/x2ap.cnf" tvbuff_t *parameter_tvb; proto_tree *subtree = NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, @@ -8118,7 +8118,7 @@ dissect_x2ap_UE_RLF_Report_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx static int dissect_x2ap_UE_RLF_Report_Container_for_extended_bands(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 210 "./asn1/x2ap/x2ap.cnf" +#line 218 "./asn1/x2ap/x2ap.cnf" tvbuff_t *parameter_tvb; proto_tree *subtree = NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, @@ -8370,7 +8370,7 @@ static const per_sequence_t HandoverRequest_sequence[] = { static int dissect_x2ap_HandoverRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 574 "./asn1/x2ap/x2ap.cnf" +#line 582 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "HandoverRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8501,7 +8501,7 @@ static const per_sequence_t HandoverRequestAcknowledge_sequence[] = { static int dissect_x2ap_HandoverRequestAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 576 "./asn1/x2ap/x2ap.cnf" +#line 584 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "HandoverRequestAcknowledge"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8549,7 +8549,7 @@ static const per_sequence_t HandoverPreparationFailure_sequence[] = { static int dissect_x2ap_HandoverPreparationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 578 "./asn1/x2ap/x2ap.cnf" +#line 586 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "HandoverPreparationFailure"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8566,7 +8566,7 @@ static const per_sequence_t HandoverReport_sequence[] = { static int dissect_x2ap_HandoverReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 616 "./asn1/x2ap/x2ap.cnf" +#line 624 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "HandoverReport"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8583,7 +8583,7 @@ static const per_sequence_t SNStatusTransfer_sequence[] = { static int dissect_x2ap_SNStatusTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 580 "./asn1/x2ap/x2ap.cnf" +#line 588 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SNStatusTransfer"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8632,7 +8632,7 @@ static const per_sequence_t UEContextRelease_sequence[] = { static int dissect_x2ap_UEContextRelease(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 582 "./asn1/x2ap/x2ap.cnf" +#line 590 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextRelease"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8649,7 +8649,7 @@ static const per_sequence_t HandoverCancel_sequence[] = { static int dissect_x2ap_HandoverCancel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 584 "./asn1/x2ap/x2ap.cnf" +#line 592 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "HandoverCancel"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8666,7 +8666,7 @@ static const per_sequence_t ErrorIndication_sequence[] = { static int dissect_x2ap_ErrorIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 586 "./asn1/x2ap/x2ap.cnf" +#line 594 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ErrorIndication"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8683,7 +8683,7 @@ static const per_sequence_t ResetRequest_sequence[] = { static int dissect_x2ap_ResetRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 588 "./asn1/x2ap/x2ap.cnf" +#line 596 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ResetRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8700,7 +8700,7 @@ static const per_sequence_t ResetResponse_sequence[] = { static int dissect_x2ap_ResetResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 590 "./asn1/x2ap/x2ap.cnf" +#line 598 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ResetResponse"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8717,7 +8717,7 @@ static const per_sequence_t X2SetupRequest_sequence[] = { static int dissect_x2ap_X2SetupRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 592 "./asn1/x2ap/x2ap.cnf" +#line 600 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "X2SetupRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8734,7 +8734,7 @@ static const per_sequence_t X2SetupResponse_sequence[] = { static int dissect_x2ap_X2SetupResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 594 "./asn1/x2ap/x2ap.cnf" +#line 602 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "X2SetupResponse"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8751,7 +8751,7 @@ static const per_sequence_t X2SetupFailure_sequence[] = { static int dissect_x2ap_X2SetupFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 596 "./asn1/x2ap/x2ap.cnf" +#line 604 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "X2SetupFailure"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8768,7 +8768,7 @@ static const per_sequence_t LoadInformation_sequence[] = { static int dissect_x2ap_LoadInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 598 "./asn1/x2ap/x2ap.cnf" +#line 606 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "LoadInformation"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8817,7 +8817,7 @@ static const per_sequence_t ENBConfigurationUpdate_sequence[] = { static int dissect_x2ap_ENBConfigurationUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 600 "./asn1/x2ap/x2ap.cnf" +#line 608 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ENBConfigurationUpdate"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8879,7 +8879,7 @@ static const per_sequence_t ENBConfigurationUpdateAcknowledge_sequence[] = { static int dissect_x2ap_ENBConfigurationUpdateAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 602 "./asn1/x2ap/x2ap.cnf" +#line 610 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ENBConfigurationUpdateAcknowledge"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8896,7 +8896,7 @@ static const per_sequence_t ENBConfigurationUpdateFailure_sequence[] = { static int dissect_x2ap_ENBConfigurationUpdateFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 604 "./asn1/x2ap/x2ap.cnf" +#line 612 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ENBConfigurationUpdateFailure"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8913,7 +8913,7 @@ static const per_sequence_t ResourceStatusRequest_sequence[] = { static int dissect_x2ap_ResourceStatusRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 606 "./asn1/x2ap/x2ap.cnf" +#line 614 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ResourceStatusRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8992,7 +8992,7 @@ static const per_sequence_t ResourceStatusResponse_sequence[] = { static int dissect_x2ap_ResourceStatusResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 608 "./asn1/x2ap/x2ap.cnf" +#line 616 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ResourceStatusResponse"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9049,7 +9049,7 @@ dissect_x2ap_MeasurementInitiationResult_Item(tvbuff_t *tvb _U_, int offset _U_, static int dissect_x2ap_T_measurementFailedReportCharacteristics(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 179 "./asn1/x2ap/x2ap.cnf" +#line 187 "./asn1/x2ap/x2ap.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, @@ -9100,7 +9100,7 @@ static const per_sequence_t ResourceStatusFailure_sequence[] = { static int dissect_x2ap_ResourceStatusFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 610 "./asn1/x2ap/x2ap.cnf" +#line 618 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ResourceStatusFailure"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9147,7 +9147,7 @@ static const per_sequence_t ResourceStatusUpdate_sequence[] = { static int dissect_x2ap_ResourceStatusUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 612 "./asn1/x2ap/x2ap.cnf" +#line 620 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ResourceStatusUpdate"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9196,7 +9196,7 @@ static const per_sequence_t PrivateMessage_sequence[] = { static int dissect_x2ap_PrivateMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 614 "./asn1/x2ap/x2ap.cnf" +#line 622 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "PrivateMessage"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9213,7 +9213,7 @@ static const per_sequence_t MobilityChangeRequest_sequence[] = { static int dissect_x2ap_MobilityChangeRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 620 "./asn1/x2ap/x2ap.cnf" +#line 628 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "MobilityChangeRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9230,7 +9230,7 @@ static const per_sequence_t MobilityChangeAcknowledge_sequence[] = { static int dissect_x2ap_MobilityChangeAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 622 "./asn1/x2ap/x2ap.cnf" +#line 630 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "MobilityChangeAcknowledge"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9247,7 +9247,7 @@ static const per_sequence_t MobilityChangeFailure_sequence[] = { static int dissect_x2ap_MobilityChangeFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 624 "./asn1/x2ap/x2ap.cnf" +#line 632 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "MobilityChangeFailure"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9264,7 +9264,7 @@ static const per_sequence_t RLFIndication_sequence[] = { static int dissect_x2ap_RLFIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 618 "./asn1/x2ap/x2ap.cnf" +#line 626 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RLFIndication"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9281,7 +9281,7 @@ static const per_sequence_t CellActivationRequest_sequence[] = { static int dissect_x2ap_CellActivationRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 626 "./asn1/x2ap/x2ap.cnf" +#line 634 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "CellActivationRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9327,7 +9327,7 @@ static const per_sequence_t CellActivationResponse_sequence[] = { static int dissect_x2ap_CellActivationResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 628 "./asn1/x2ap/x2ap.cnf" +#line 636 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "CellActivationResponse"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9373,7 +9373,7 @@ static const per_sequence_t CellActivationFailure_sequence[] = { static int dissect_x2ap_CellActivationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 630 "./asn1/x2ap/x2ap.cnf" +#line 638 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "CellActivationFailure"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9390,7 +9390,7 @@ static const per_sequence_t X2Release_sequence[] = { static int dissect_x2ap_X2Release(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 632 "./asn1/x2ap/x2ap.cnf" +#line 640 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "X2Release"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9407,7 +9407,7 @@ static const per_sequence_t X2APMessageTransfer_sequence[] = { static int dissect_x2ap_X2APMessageTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 634 "./asn1/x2ap/x2ap.cnf" +#line 642 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "X2APMessageTransfer"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9436,7 +9436,7 @@ dissect_x2ap_RNL_Header(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, static int dissect_x2ap_X2AP_Message(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 507 "./asn1/x2ap/x2ap.cnf" +#line 515 "./asn1/x2ap/x2ap.cnf" tvbuff_t *parameter_tvb; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, FALSE, ¶meter_tvb); @@ -9459,7 +9459,7 @@ static const per_sequence_t SeNBAdditionRequest_sequence[] = { static int dissect_x2ap_SeNBAdditionRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 642 "./asn1/x2ap/x2ap.cnf" +#line 650 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SeNBAdditionRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9547,7 +9547,7 @@ static const per_sequence_t SeNBAdditionRequestAcknowledge_sequence[] = { static int dissect_x2ap_SeNBAdditionRequestAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 644 "./asn1/x2ap/x2ap.cnf" +#line 652 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SeNBAdditionRequestAcknowledge"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9634,7 +9634,7 @@ static const per_sequence_t SeNBAdditionRequestReject_sequence[] = { static int dissect_x2ap_SeNBAdditionRequestReject(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 646 "./asn1/x2ap/x2ap.cnf" +#line 654 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SeNBAdditionRequestReject"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9651,7 +9651,7 @@ static const per_sequence_t SeNBReconfigurationComplete_sequence[] = { static int dissect_x2ap_SeNBReconfigurationComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 648 "./asn1/x2ap/x2ap.cnf" +#line 656 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SeNBReconfigurationComplete"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9721,7 +9721,7 @@ static const per_sequence_t SeNBModificationRequest_sequence[] = { static int dissect_x2ap_SeNBModificationRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 650 "./asn1/x2ap/x2ap.cnf" +#line 658 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SeNBModificationRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9968,7 +9968,7 @@ static const per_sequence_t SeNBModificationRequestAcknowledge_sequence[] = { static int dissect_x2ap_SeNBModificationRequestAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 652 "./asn1/x2ap/x2ap.cnf" +#line 660 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SeNBModificationRequestAcknowledge"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10189,7 +10189,7 @@ static const per_sequence_t SeNBModificationRequestReject_sequence[] = { static int dissect_x2ap_SeNBModificationRequestReject(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 654 "./asn1/x2ap/x2ap.cnf" +#line 662 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SeNBModificationRequestReject"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10206,7 +10206,7 @@ static const per_sequence_t SeNBModificationRequired_sequence[] = { static int dissect_x2ap_SeNBModificationRequired(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 656 "./asn1/x2ap/x2ap.cnf" +#line 664 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SeNBModificationRequired"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10253,7 +10253,7 @@ static const per_sequence_t SeNBModificationConfirm_sequence[] = { static int dissect_x2ap_SeNBModificationConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 658 "./asn1/x2ap/x2ap.cnf" +#line 666 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SeNBModificationConfirm"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10270,7 +10270,7 @@ static const per_sequence_t SeNBModificationRefuse_sequence[] = { static int dissect_x2ap_SeNBModificationRefuse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 660 "./asn1/x2ap/x2ap.cnf" +#line 668 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SeNBModificationRefuse"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10287,7 +10287,7 @@ static const per_sequence_t SeNBReleaseRequest_sequence[] = { static int dissect_x2ap_SeNBReleaseRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 662 "./asn1/x2ap/x2ap.cnf" +#line 670 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SeNBReleaseRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10373,7 +10373,7 @@ static const per_sequence_t SeNBReleaseRequired_sequence[] = { static int dissect_x2ap_SeNBReleaseRequired(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 664 "./asn1/x2ap/x2ap.cnf" +#line 672 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SeNBReleaseRequired"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10390,7 +10390,7 @@ static const per_sequence_t SeNBReleaseConfirm_sequence[] = { static int dissect_x2ap_SeNBReleaseConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 666 "./asn1/x2ap/x2ap.cnf" +#line 674 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SeNBReleaseConfirm"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10476,7 +10476,7 @@ static const per_sequence_t SeNBCounterCheckRequest_sequence[] = { static int dissect_x2ap_SeNBCounterCheckRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 668 "./asn1/x2ap/x2ap.cnf" +#line 676 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SeNBCounterCheckRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10534,7 +10534,7 @@ static const per_sequence_t X2RemovalRequest_sequence[] = { static int dissect_x2ap_X2RemovalRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 636 "./asn1/x2ap/x2ap.cnf" +#line 644 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "X2RemovalRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10551,7 +10551,7 @@ static const per_sequence_t X2RemovalResponse_sequence[] = { static int dissect_x2ap_X2RemovalResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 638 "./asn1/x2ap/x2ap.cnf" +#line 646 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "X2RemovalResponse"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10568,7 +10568,7 @@ static const per_sequence_t X2RemovalFailure_sequence[] = { static int dissect_x2ap_X2RemovalFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 640 "./asn1/x2ap/x2ap.cnf" +#line 648 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "X2RemovalFailure"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10585,7 +10585,7 @@ static const per_sequence_t RetrieveUEContextRequest_sequence[] = { static int dissect_x2ap_RetrieveUEContextRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 670 "./asn1/x2ap/x2ap.cnf" +#line 678 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RetrieveUEContextRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10602,7 +10602,7 @@ static const per_sequence_t RetrieveUEContextResponse_sequence[] = { static int dissect_x2ap_RetrieveUEContextResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 672 "./asn1/x2ap/x2ap.cnf" +#line 680 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RetrieveUEContextResponse"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10675,7 +10675,7 @@ static const per_sequence_t RetrieveUEContextFailure_sequence[] = { static int dissect_x2ap_RetrieveUEContextFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 674 "./asn1/x2ap/x2ap.cnf" +#line 682 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RetrieveUEContextFailure"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10692,7 +10692,7 @@ static const per_sequence_t SgNBAdditionRequest_sequence[] = { static int dissect_x2ap_SgNBAdditionRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 676 "./asn1/x2ap/x2ap.cnf" +#line 684 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SgNBAdditionRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10799,7 +10799,7 @@ static const per_sequence_t SgNBAdditionRequestAcknowledge_sequence[] = { static int dissect_x2ap_SgNBAdditionRequestAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 678 "./asn1/x2ap/x2ap.cnf" +#line 686 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SgNBAdditionRequestAcknowledge"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10905,7 +10905,7 @@ static const per_sequence_t SgNBAdditionRequestReject_sequence[] = { static int dissect_x2ap_SgNBAdditionRequestReject(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 680 "./asn1/x2ap/x2ap.cnf" +#line 688 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SgNBAdditionRequestReject"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10922,7 +10922,7 @@ static const per_sequence_t SgNBReconfigurationComplete_sequence[] = { static int dissect_x2ap_SgNBReconfigurationComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 682 "./asn1/x2ap/x2ap.cnf" +#line 690 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SgNBReconfigurationComplete"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10991,7 +10991,7 @@ static const per_sequence_t SgNBModificationRequest_sequence[] = { static int dissect_x2ap_SgNBModificationRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 684 "./asn1/x2ap/x2ap.cnf" +#line 692 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SgNBModificationRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -11290,7 +11290,7 @@ static const per_sequence_t SgNBModificationRequestAcknowledge_sequence[] = { static int dissect_x2ap_SgNBModificationRequestAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 686 "./asn1/x2ap/x2ap.cnf" +#line 694 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SgNBModificationRequestAcknowledge"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -11562,7 +11562,7 @@ static const per_sequence_t SgNBModificationRequestReject_sequence[] = { static int dissect_x2ap_SgNBModificationRequestReject(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 688 "./asn1/x2ap/x2ap.cnf" +#line 696 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SgNBModificationRequestReject"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -11579,7 +11579,7 @@ static const per_sequence_t SgNBModificationRequired_sequence[] = { static int dissect_x2ap_SgNBModificationRequired(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 690 "./asn1/x2ap/x2ap.cnf" +#line 698 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SgNBModificationRequired"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -11710,7 +11710,7 @@ static const per_sequence_t SgNBModificationConfirm_sequence[] = { static int dissect_x2ap_SgNBModificationConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 692 "./asn1/x2ap/x2ap.cnf" +#line 700 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SgNBModificationConfirm"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -11727,7 +11727,7 @@ static const per_sequence_t SgNBModificationRefuse_sequence[] = { static int dissect_x2ap_SgNBModificationRefuse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 694 "./asn1/x2ap/x2ap.cnf" +#line 702 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SgNBModificationRefuse"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -11744,7 +11744,7 @@ static const per_sequence_t SgNBReleaseRequest_sequence[] = { static int dissect_x2ap_SgNBReleaseRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 696 "./asn1/x2ap/x2ap.cnf" +#line 704 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SgNBReleaseRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -11845,7 +11845,7 @@ static const per_sequence_t SgNBReleaseRequestAcknowledge_sequence[] = { static int dissect_x2ap_SgNBReleaseRequestAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 698 "./asn1/x2ap/x2ap.cnf" +#line 706 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SgNBReleaseRequestAcknowledge"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -11862,7 +11862,7 @@ static const per_sequence_t SgNBReleaseRequestReject_sequence[] = { static int dissect_x2ap_SgNBReleaseRequestReject(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 700 "./asn1/x2ap/x2ap.cnf" +#line 708 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SgNBReleaseRequestReject"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -11879,7 +11879,7 @@ static const per_sequence_t SgNBReleaseRequired_sequence[] = { static int dissect_x2ap_SgNBReleaseRequired(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 702 "./asn1/x2ap/x2ap.cnf" +#line 710 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SgNBReleaseRequired"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -11896,7 +11896,7 @@ static const per_sequence_t SgNBReleaseConfirm_sequence[] = { static int dissect_x2ap_SgNBReleaseConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 704 "./asn1/x2ap/x2ap.cnf" +#line 712 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SgNBReleaseConfirm"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -11997,7 +11997,7 @@ static const per_sequence_t SgNBCounterCheckRequest_sequence[] = { static int dissect_x2ap_SgNBCounterCheckRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 706 "./asn1/x2ap/x2ap.cnf" +#line 714 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SgNBCounterCheckRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -12045,7 +12045,7 @@ static const per_sequence_t SgNBChangeRequired_sequence[] = { static int dissect_x2ap_SgNBChangeRequired(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 708 "./asn1/x2ap/x2ap.cnf" +#line 716 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SgNBChangeRequired"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -12062,7 +12062,7 @@ static const per_sequence_t SgNBChangeConfirm_sequence[] = { static int dissect_x2ap_SgNBChangeConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 710 "./asn1/x2ap/x2ap.cnf" +#line 718 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SgNBChangeConfirm"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -12163,7 +12163,7 @@ static const per_sequence_t RRCTransfer_sequence[] = { static int dissect_x2ap_RRCTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 714 "./asn1/x2ap/x2ap.cnf" +#line 722 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RRCTransfer"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -12180,7 +12180,7 @@ static const per_sequence_t SgNBChangeRefuse_sequence[] = { static int dissect_x2ap_SgNBChangeRefuse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 712 "./asn1/x2ap/x2ap.cnf" +#line 720 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SgNBChangeRefuse"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -12197,7 +12197,7 @@ static const per_sequence_t ENDCX2SetupRequest_sequence[] = { static int dissect_x2ap_ENDCX2SetupRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 716 "./asn1/x2ap/x2ap.cnf" +#line 724 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ENDCX2SetupRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -12438,7 +12438,7 @@ static const per_sequence_t ENDCX2SetupResponse_sequence[] = { static int dissect_x2ap_ENDCX2SetupResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 718 "./asn1/x2ap/x2ap.cnf" +#line 726 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ENDCX2SetupResponse"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -12477,7 +12477,7 @@ static const per_sequence_t ENDCX2SetupFailure_sequence[] = { static int dissect_x2ap_ENDCX2SetupFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 720 "./asn1/x2ap/x2ap.cnf" +#line 728 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ENDCX2SetupFailure"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -12494,7 +12494,7 @@ static const per_sequence_t ENDCConfigurationUpdate_sequence[] = { static int dissect_x2ap_ENDCConfigurationUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 722 "./asn1/x2ap/x2ap.cnf" +#line 730 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ENDCConfigurationUpdate"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -12624,7 +12624,7 @@ static const per_sequence_t ENDCConfigurationUpdateAcknowledge_sequence[] = { static int dissect_x2ap_ENDCConfigurationUpdateAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 724 "./asn1/x2ap/x2ap.cnf" +#line 732 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ENDCConfigurationUpdateAcknowledge"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -12661,7 +12661,7 @@ static const per_sequence_t ENDCConfigurationUpdateFailure_sequence[] = { static int dissect_x2ap_ENDCConfigurationUpdateFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 726 "./asn1/x2ap/x2ap.cnf" +#line 734 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ENDCConfigurationUpdateFailure"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -12678,7 +12678,7 @@ static const per_sequence_t ENDCCellActivationRequest_sequence[] = { static int dissect_x2ap_ENDCCellActivationRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 730 "./asn1/x2ap/x2ap.cnf" +#line 738 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ENDCCellActivationRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -12724,7 +12724,7 @@ static const per_sequence_t ENDCCellActivationResponse_sequence[] = { static int dissect_x2ap_ENDCCellActivationResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 732 "./asn1/x2ap/x2ap.cnf" +#line 740 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ENDCCellActivationResponse"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -12770,7 +12770,7 @@ static const per_sequence_t ENDCCellActivationFailure_sequence[] = { static int dissect_x2ap_ENDCCellActivationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 734 "./asn1/x2ap/x2ap.cnf" +#line 742 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ENDCCellActivationFailure"); @@ -12788,7 +12788,7 @@ static const per_sequence_t SecondaryRATDataUsageReport_sequence[] = { static int dissect_x2ap_SecondaryRATDataUsageReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 728 "./asn1/x2ap/x2ap.cnf" +#line 736 "./asn1/x2ap/x2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SecondaryRATDataUsageReport"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -13346,11 +13346,11 @@ static int dissect_Measurement_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, offset += 7; offset >>= 3; return offset; } -static int dissect_MeNBResourceCoordinationInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { +int dissect_x2ap_MeNBResourceCoordinationInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); - offset = dissect_x2ap_MeNBResourceCoordinationInformation(tvb, offset, &asn1_ctx, tree, hf_x2ap_MeNBResourceCoordinationInformation_PDU); + offset = dissect_x2ap_MeNBResourceCoordinationInformation(tvb, offset, &asn1_ctx, tree, hf_x2ap_x2ap_MeNBResourceCoordinationInformation_PDU); offset += 7; offset >>= 3; return offset; } @@ -13642,11 +13642,11 @@ static int dissect_ServedCells_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, pr offset += 7; offset >>= 3; return offset; } -static int dissect_SgNBResourceCoordinationInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { +int dissect_x2ap_SgNBResourceCoordinationInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); - offset = dissect_x2ap_SgNBResourceCoordinationInformation(tvb, offset, &asn1_ctx, tree, hf_x2ap_SgNBResourceCoordinationInformation_PDU); + offset = dissect_x2ap_SgNBResourceCoordinationInformation(tvb, offset, &asn1_ctx, tree, hf_x2ap_x2ap_SgNBResourceCoordinationInformation_PDU); offset += 7; offset >>= 3; return offset; } @@ -15841,7 +15841,7 @@ void proto_register_x2ap(void) { { "Measurement-ID", "x2ap.Measurement_ID", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_x2ap_MeNBResourceCoordinationInformation_PDU, + { &hf_x2ap_x2ap_MeNBResourceCoordinationInformation_PDU, { "MeNBResourceCoordinationInformation", "x2ap.MeNBResourceCoordinationInformation_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, @@ -15989,7 +15989,7 @@ void proto_register_x2ap(void) { { "ServedCells", "x2ap.ServedCells", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_x2ap_SgNBResourceCoordinationInformation_PDU, + { &hf_x2ap_x2ap_SgNBResourceCoordinationInformation_PDU, { "SgNBResourceCoordinationInformation", "x2ap.SgNBResourceCoordinationInformation_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, @@ -19650,8 +19650,8 @@ proto_reg_handoff_x2ap(void) dissector_add_uint("x2ap.ies", id_ServedNRcellsENDCX2ManagementList, create_dissector_handle(dissect_ServedNRcellsENDCX2ManagementList_PDU, proto_x2ap)); dissector_add_uint("x2ap.ies", id_UE_ContextReferenceAtSgNB, create_dissector_handle(dissect_UE_ContextReferenceAtSgNB_PDU, proto_x2ap)); dissector_add_uint("x2ap.ies", id_ActivationID, create_dissector_handle(dissect_ActivationID_PDU, proto_x2ap)); - dissector_add_uint("x2ap.ies", id_MeNBResourceCoordinationInformation, create_dissector_handle(dissect_MeNBResourceCoordinationInformation_PDU, proto_x2ap)); - dissector_add_uint("x2ap.ies", id_SgNBResourceCoordinationInformation, create_dissector_handle(dissect_SgNBResourceCoordinationInformation_PDU, proto_x2ap)); + dissector_add_uint("x2ap.ies", id_MeNBResourceCoordinationInformation, create_dissector_handle(dissect_x2ap_MeNBResourceCoordinationInformation_PDU, proto_x2ap)); + dissector_add_uint("x2ap.ies", id_SgNBResourceCoordinationInformation, create_dissector_handle(dissect_x2ap_SgNBResourceCoordinationInformation_PDU, proto_x2ap)); dissector_add_uint("x2ap.ies", id_ServedEUTRAcellsToModifyListENDCConfUpd, create_dissector_handle(dissect_ServedEUTRAcellsToModifyListENDCConfUpd_PDU, proto_x2ap)); dissector_add_uint("x2ap.ies", id_ServedEUTRAcellsToDeleteListENDCConfUpd, create_dissector_handle(dissect_ServedEUTRAcellsToDeleteListENDCConfUpd_PDU, proto_x2ap)); dissector_add_uint("x2ap.ies", id_ServedNRcellsToModifyListENDCConfUpd, create_dissector_handle(dissect_ServedNRcellsToModifyENDCConfUpdList_PDU, proto_x2ap)); diff --git a/epan/dissectors/packet-x2ap.h b/epan/dissectors/packet-x2ap.h new file mode 100644 index 0000000000..9944ce0ded --- /dev/null +++ b/epan/dissectors/packet-x2ap.h @@ -0,0 +1,44 @@ +/* Do not modify this file. Changes will be overwritten. */ +/* Generated automatically by the ASN.1 to Wireshark dissector compiler */ +/* packet-x2ap.h */ +/* asn2wrs.py -p x2ap -c ./x2ap.cnf -s ./packet-x2ap-template -D . -O ../.. X2AP-CommonDataTypes.asn X2AP-Constants.asn X2AP-Containers.asn X2AP-IEs.asn X2AP-PDU-Contents.asn X2AP-PDU-Descriptions.asn */ + +/* Input file: packet-x2ap-template.h */ + +#line 1 "./asn1/x2ap/packet-x2ap-template.h" +/* 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 + + +/*--- Included file: packet-x2ap-exp.h ---*/ +#line 1 "./asn1/x2ap/packet-x2ap-exp.h" +int dissect_x2ap_MeNBResourceCoordinationInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); +int dissect_x2ap_SgNBResourceCoordinationInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); + +/*--- End of included file: packet-x2ap-exp.h ---*/ +#line 15 "./asn1/x2ap/packet-x2ap-template.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: + */ |