aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/asn1
diff options
context:
space:
mode:
Diffstat (limited to 'epan/dissectors/asn1')
-rw-r--r--epan/dissectors/asn1/CMakeLists.txt1
-rw-r--r--epan/dissectors/asn1/Makefile.am1
-rw-r--r--epan/dissectors/asn1/f1ap/CMakeLists.txt43
-rw-r--r--epan/dissectors/asn1/f1ap/F1AP-CommonDataTypes.asn34
-rw-r--r--epan/dissectors/asn1/f1ap/F1AP-Constants.asn148
-rw-r--r--epan/dissectors/asn1/f1ap/F1AP-Containers.asn200
-rw-r--r--epan/dissectors/asn1/f1ap/F1AP-IEs.asn385
-rw-r--r--epan/dissectors/asn1/f1ap/F1AP-PDU-Contents.asn938
-rw-r--r--epan/dissectors/asn1/f1ap/F1AP-PDU-Descriptions.asn260
-rw-r--r--epan/dissectors/asn1/f1ap/Makefile.am35
-rw-r--r--epan/dissectors/asn1/f1ap/f1ap.cnf497
-rw-r--r--epan/dissectors/asn1/f1ap/packet-f1ap-template.c235
-rw-r--r--epan/dissectors/asn1/nr-rrc/nr-rrc.cnf4
-rw-r--r--epan/dissectors/asn1/x2ap/CMakeLists.txt1
-rw-r--r--epan/dissectors/asn1/x2ap/Makefile.am1
-rw-r--r--epan/dissectors/asn1/x2ap/packet-x2ap-template.h29
-rw-r--r--epan/dissectors/asn1/x2ap/x2ap.cnf8
17 files changed, 2820 insertions, 0 deletions
diff --git a/epan/dissectors/asn1/CMakeLists.txt b/epan/dissectors/asn1/CMakeLists.txt
index 72006ffcdb..6891bffe94 100644
--- a/epan/dissectors/asn1/CMakeLists.txt
+++ b/epan/dissectors/asn1/CMakeLists.txt
@@ -32,6 +32,7 @@ set(ASN1_SRC_DIRS
dop
dsp
ess
+ f1ap
ftam
goose
gprscdr
diff --git a/epan/dissectors/asn1/Makefile.am b/epan/dissectors/asn1/Makefile.am
index 185990928e..75bc121466 100644
--- a/epan/dissectors/asn1/Makefile.am
+++ b/epan/dissectors/asn1/Makefile.am
@@ -32,6 +32,7 @@ SUBDIRS = \
dop \
dsp \
ess \
+ f1ap \
ftam \
goose \
gprscdr \
diff --git a/epan/dissectors/asn1/f1ap/CMakeLists.txt b/epan/dissectors/asn1/f1ap/CMakeLists.txt
new file mode 100644
index 0000000000..7f7500e4eb
--- /dev/null
+++ b/epan/dissectors/asn1/f1ap/CMakeLists.txt
@@ -0,0 +1,43 @@
+# CMakeLists.txt
+#
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+# Copyright 1998 Gerald Combs
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+
+set( PROTOCOL_NAME f1ap )
+
+set( PROTO_OPT )
+
+set( EXPORT_FILES
+ ${PROTOCOL_NAME}-exp.cnf
+)
+
+set( EXT_ASN_FILE_LIST
+)
+
+set( ASN_FILE_LIST
+ F1AP-CommonDataTypes.asn
+ F1AP-Constants.asn
+ F1AP-Containers.asn
+ F1AP-IEs.asn
+ F1AP-PDU-Contents.asn
+ F1AP-PDU-Descriptions.asn
+)
+
+set( EXTRA_DIST
+ ${ASN_FILE_LIST}
+ packet-${PROTOCOL_NAME}-template.c
+ ${PROTOCOL_NAME}.cnf
+)
+
+set( SRC_FILES
+ ${EXTRA_DIST}
+ ${EXT_ASN_FILE_LIST}
+)
+
+set( A2W_FLAGS )
+
+ASN2WRS()
diff --git a/epan/dissectors/asn1/f1ap/F1AP-CommonDataTypes.asn b/epan/dissectors/asn1/f1ap/F1AP-CommonDataTypes.asn
new file mode 100644
index 0000000000..003117eae0
--- /dev/null
+++ b/epan/dissectors/asn1/f1ap/F1AP-CommonDataTypes.asn
@@ -0,0 +1,34 @@
+-- 3GPP TS 38.473 V15.0.0 (2017-12)
+-- 9.4.6 Common Definitions
+-- **************************************************************
+--
+-- Common definitions
+--
+-- **************************************************************
+
+F1AP-CommonDataTypes {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+ngran-access (22) modules (3) f1ap (3) version1 (1) f1ap-CommonDataTypes (3) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+Criticality ::= ENUMERATED { reject, ignore, notify }
+
+Presence ::= ENUMERATED { optional, conditional, mandatory }
+
+PrivateIE-ID ::= CHOICE {
+ local INTEGER (0..65535),
+ global OBJECT IDENTIFIER
+}
+
+ProcedureCode ::= INTEGER (0..255)
+
+ProtocolExtensionID ::= INTEGER (0..65535)
+
+ProtocolIE-ID ::= INTEGER (0..65535)
+
+TriggeringMessage ::= ENUMERATED { initiating-message, successful-outcome, unsuccessfull-outcome }
+
+END
diff --git a/epan/dissectors/asn1/f1ap/F1AP-Constants.asn b/epan/dissectors/asn1/f1ap/F1AP-Constants.asn
new file mode 100644
index 0000000000..68f1fa08ec
--- /dev/null
+++ b/epan/dissectors/asn1/f1ap/F1AP-Constants.asn
@@ -0,0 +1,148 @@
+-- 3GPP TS 38.473 V15.0.0 (2017-12)
+-- 9.4.7 Constant Definitions
+-- **************************************************************
+--
+-- Constant definitions
+--
+-- **************************************************************
+
+F1AP-Constants {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+ngran-access (22) modules (3) f1ap (3) version1 (1) f1ap-Constants (4) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+-- **************************************************************
+--
+-- IE parameter types from other modules.
+--
+-- **************************************************************
+
+IMPORTS
+ ProcedureCode,
+ ProtocolIE-ID
+
+FROM F1AP-CommonDataTypes;
+
+
+-- **************************************************************
+--
+-- Elementary Procedures
+--
+-- **************************************************************
+
+id-Reset ProcedureCode ::= 0
+id-F1Setup ProcedureCode ::= 1
+id-ErrorIndication ProcedureCode ::= 2
+id-gNBDUConfigurationUpdate ProcedureCode ::= 3
+id-gNBCUConfigurationUpdate ProcedureCode ::= 4
+id-UEContextSetup ProcedureCode ::= 5
+id-UEContextRelease ProcedureCode ::= 6
+id-UEContextModification ProcedureCode ::= 7
+id-UEContextModificationRequired ProcedureCode ::= 8
+id-UEMobilityCommand ProcedureCode ::= 9
+
+id-UEContextReleaseRequest ProcedureCode ::= 10
+id-InitialULRRCMessageTransfer ProcedureCode ::= 11
+id-DLRRCMessageTransfer ProcedureCode ::= 12
+id-ULRRCMessageTransfer ProcedureCode ::= 13
+id-SystemInformationDelivery ProcedureCode ::= 14
+id-Paging ProcedureCode ::= 15
+
+-- **************************************************************
+--
+-- Extension constants
+--
+-- **************************************************************
+
+maxPrivateIEs INTEGER ::= 65535
+maxProtocolExtensions INTEGER ::= 65535
+maxProtocolIEs INTEGER ::= 65535
+-- **************************************************************
+--
+-- Lists
+--
+-- **************************************************************
+
+maxnoofErrors INTEGER ::= 256
+maxnoofIndividualF1ConnectionsToReset INTEGER ::= 256
+maxCellingNBDU INTEGER ::= 512
+maxnoofSCells INTEGER ::= 64
+maxnoofSRBs INTEGER ::= 8
+maxnoofDRBs INTEGER ::= 64
+maxnoofULTunnels INTEGER ::= 2
+maxnoofDLTunnels INTEGER ::= 2
+maxnoofBPLMNs INTEGER ::= 6
+-- **************************************************************
+--
+-- IEs
+--
+-- **************************************************************
+
+id-Cause ProtocolIE-ID ::= 0
+id-CriticalityDiagnostics ProtocolIE-ID ::= 1
+id-gNB-DU-F1AP-ID ProtocolIE-ID ::= 2
+id-gNB-CU-F1AP-ID ProtocolIE-ID ::= 3
+id-ResetType ProtocolIE-ID ::= 4
+id-TimeToWait ProtocolIE-ID ::= 5
+id-UE-associatedLogicalF1-ConnectionItem ProtocolIE-ID ::= 6
+id-UE-associatedLogicalF1-ConnectionListResAck ProtocolIE-ID ::= 7
+id-RRCContainer ProtocolIE-ID ::= 8
+id-SRBID ProtocolIE-ID ::= 9
+id-gNB-DU-ID ProtocolIE-ID ::= 10
+id-gNB-Name ProtocolIE-ID ::= 11
+id-NRCellID ProtocolIE-ID ::= 12
+id-PCI ProtocolIE-ID ::= 13
+id-gNB-DU-Served-Cells-List ProtocolIE-ID ::= 14
+id-Cells-to-be-Activated-List ProtocolIE-ID ::= 15
+id-Served-Cells-To-Add-List ProtocolIE-ID ::= 16
+id-Served-Cells-To-Modify-List ProtocolIE-ID ::= 17
+id-Served-Cells-To-Delete-List ProtocolIE-ID ::= 18
+id-Cells-to-be-Deactivated-List ProtocolIE-ID ::= 19
+id-Cells-Failed-to-be-Activated-List ProtocolIE-ID ::= 20
+id-TransactionID ProtocolIE-ID ::= 21
+id-Served-Cell-Information ProtocolIE-ID ::= 22
+id-gNB-DU-System-Information ProtocolIE-ID ::= 23
+id-NCGI ProtocolIE-ID ::= 24
+id-gNB-CU-System-Information ProtocolIE-ID ::= 25
+id-OldNCGI ProtocolIE-ID ::= 26
+id-DRBID ProtocolIE-ID ::= 27
+id-PSCell-ID ProtocolIE-ID ::= 28
+id-EUTRANQoS ProtocolIE-ID ::= 29
+id-SRBs-ToBeSetup-List ProtocolIE-ID ::= 30
+id-DRBs-ToBeSetup-List ProtocolIE-ID ::= 31
+id-DLTunnels-ToBeSetup-List ProtocolIE-ID ::= 32
+id-ULTunnels-ToBeSetup-List ProtocolIE-ID ::= 33
+id-UL-GTP-Tunnel-EndPoint ProtocolIE-ID ::= 34
+id-DL-GTP-Tunnel-EndPoint ProtocolIE-ID ::= 35
+id-CUtoDURRCInformation ProtocolIE-ID ::= 36
+id-DUtoCURRCInformation ProtocolIE-ID ::= 37
+id-UERadioCapability ProtocolIE-ID ::= 38
+id-UEAggregateMaximumBitRate ProtocolIE-ID ::= 39
+id-SCell-ToBeSetup-List ProtocolIE-ID ::= 40
+id-ResourceCoordinationTransferContainer ProtocolIE-ID ::= 41
+id-DRBs-ToBeModified-List ProtocolIE-ID ::= 42
+id-DRBs-ToBeReleased-List ProtocolIE-ID ::= 43
+id-DRBs-Modified-List ProtocolIE-ID ::= 44
+id-DRBs-FailedToSetup-List ProtocolIE-ID ::= 45
+id-DRBs-FailedToBeModified-List ProtocolIE-ID ::= 46
+id-SCell-ID ProtocolIE-ID ::= 47
+id-DRXCycle ProtocolIE-ID ::= 48
+id-DRBs-Setup-List ProtocolIE-ID ::= 49
+id-SRBs-Setup-List ProtocolIE-ID ::= 50
+id-DRBs-FailedToBeSetup-List ProtocolIE-ID ::= 51
+id-SRBs-FailedToBeSetup-List ProtocolIE-ID ::= 52
+id-DLTunnels-ToBeSetup-list ProtocolIE-ID ::= 53
+id-ULTunnels-ToBeSetup-list ProtocolIE-ID ::= 54
+id-TransmissionStopIndicator ProtocolIE-ID ::= 55
+id-DRBs-Required-ToBeModified-List ProtocolIE-ID ::= 56
+id-DRBs-Required-ToBeReleased-List ProtocolIE-ID ::= 57
+id-SRBs-Required-ToBeReleased-List ProtocolIE-ID ::= 58
+id-oldgNB-DU-F1AP-ID ProtocolIE-ID ::= 59
+id-SRBs-ToBeReleased-List ProtocolIE-ID ::= 60
+id-DRBs-ModifiedConf-List ProtocolIE-ID ::= 61
+id-privateMessage ProtocolIE-ID ::= 62
+
+END
diff --git a/epan/dissectors/asn1/f1ap/F1AP-Containers.asn b/epan/dissectors/asn1/f1ap/F1AP-Containers.asn
new file mode 100644
index 0000000000..dff0bd4715
--- /dev/null
+++ b/epan/dissectors/asn1/f1ap/F1AP-Containers.asn
@@ -0,0 +1,200 @@
+-- 3GPP TS 38.473 V15.0.0 (2017-12)
+-- 9.4.8 Container Definitions
+-- **************************************************************
+--
+-- Container definitions
+--
+-- **************************************************************
+
+F1AP-Containers {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+ngran-access (22) modules (3) f1ap (3) version1 (1) f1ap-Containers (5) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+-- **************************************************************
+--
+-- IE parameter types from other modules.
+--
+-- **************************************************************
+
+IMPORTS
+ Criticality,
+ Presence,
+ PrivateIE-ID,
+ ProtocolExtensionID,
+ ProtocolIE-ID
+
+FROM F1AP-CommonDataTypes
+ maxPrivateIEs,
+ maxProtocolExtensions,
+ maxProtocolIEs
+
+FROM F1AP-Constants;
+
+-- **************************************************************
+--
+-- Class Definition for Protocol IEs
+--
+-- **************************************************************
+
+F1AP-PROTOCOL-IES ::= CLASS {
+ &id ProtocolIE-ID UNIQUE,
+ &criticality Criticality,
+ &Value,
+ &presence Presence
+}
+WITH SYNTAX {
+ ID &id
+ CRITICALITY &criticality
+ TYPE &Value
+ PRESENCE &presence
+}
+
+-- **************************************************************
+--
+-- Class Definition for Protocol IEs
+--
+-- **************************************************************
+
+F1AP-PROTOCOL-IES-PAIR ::= CLASS {
+ &id ProtocolIE-ID UNIQUE,
+ &firstCriticality Criticality,
+ &FirstValue,
+ &secondCriticality Criticality,
+ &SecondValue,
+ &presence Presence
+}
+WITH SYNTAX {
+ ID &id
+ FIRST CRITICALITY &firstCriticality
+ FIRST TYPE &FirstValue
+ SECOND CRITICALITY &secondCriticality
+ SECOND TYPE &SecondValue
+ PRESENCE &presence
+}
+
+-- **************************************************************
+--
+-- Class Definition for Protocol Extensions
+--
+-- **************************************************************
+
+F1AP-PROTOCOL-EXTENSION ::= CLASS {
+ &id ProtocolExtensionID UNIQUE,
+ &criticality Criticality,
+ &Extension,
+ &presence Presence
+}
+WITH SYNTAX {
+ ID &id
+ CRITICALITY &criticality
+ EXTENSION &Extension
+ PRESENCE &presence
+}
+
+-- **************************************************************
+--
+-- Class Definition for Private IEs
+--
+-- **************************************************************
+
+F1AP-PRIVATE-IES ::= CLASS {
+ &id PrivateIE-ID,
+ &criticality Criticality,
+ &Value,
+ &presence Presence
+}
+WITH SYNTAX {
+ ID &id
+ CRITICALITY &criticality
+ TYPE &Value
+ PRESENCE &presence
+}
+
+-- **************************************************************
+--
+-- Container for Protocol IEs
+--
+-- **************************************************************
+
+ProtocolIE-Container {F1AP-PROTOCOL-IES : IEsSetParam} ::=
+ SEQUENCE (SIZE (0..maxProtocolIEs)) OF
+ ProtocolIE-Field {{IEsSetParam}}
+
+ProtocolIE-SingleContainer {F1AP-PROTOCOL-IES : IEsSetParam} ::=
+ ProtocolIE-Field {{IEsSetParam}}
+
+ProtocolIE-Field {F1AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE {
+ id F1AP-PROTOCOL-IES.&id ({IEsSetParam}),
+ criticality F1AP-PROTOCOL-IES.&criticality ({IEsSetParam}{@id}),
+ value F1AP-PROTOCOL-IES.&Value ({IEsSetParam}{@id})
+}
+
+-- **************************************************************
+--
+-- Container for Protocol IE Pairs
+--
+-- **************************************************************
+
+ProtocolIE-ContainerPair {F1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::=
+ SEQUENCE (SIZE (0..maxProtocolIEs)) OF
+ ProtocolIE-FieldPair {{IEsSetParam}}
+
+ProtocolIE-FieldPair {F1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= SEQUENCE {
+ id F1AP-PROTOCOL-IES-PAIR.&id ({IEsSetParam}),
+ firstCriticality F1AP-PROTOCOL-IES-PAIR.&firstCriticality ({IEsSetParam}{@id}),
+ firstValue F1AP-PROTOCOL-IES-PAIR.&FirstValue ({IEsSetParam}{@id}),
+ secondCriticality F1AP-PROTOCOL-IES-PAIR.&secondCriticality ({IEsSetParam}{@id}),
+ secondValue F1AP-PROTOCOL-IES-PAIR.&SecondValue ({IEsSetParam}{@id})
+}
+
+-- **************************************************************
+--
+-- Container Lists for Protocol IE Containers
+--
+-- **************************************************************
+
+ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, F1AP-PROTOCOL-IES : IEsSetParam} ::=
+ SEQUENCE (SIZE (lowerBound..upperBound)) OF
+ ProtocolIE-SingleContainer {{IEsSetParam}}
+
+ProtocolIE-ContainerPairList {INTEGER : lowerBound, INTEGER : upperBound,F1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::=
+ SEQUENCE (SIZE (lowerBound..upperBound)) OF
+ ProtocolIE-ContainerPair {{IEsSetParam}}
+
+-- **************************************************************
+--
+-- Container for Protocol Extensions
+--
+-- **************************************************************
+
+ProtocolExtensionContainer {F1AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::=
+ SEQUENCE (SIZE (1..maxProtocolExtensions)) OF
+ ProtocolExtensionField {{ExtensionSetParam}}
+
+ProtocolExtensionField {F1AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE {
+ id F1AP-PROTOCOL-EXTENSION.&id ({ExtensionSetParam}),
+ criticality F1AP-PROTOCOL-EXTENSION.&criticality ({ExtensionSetParam}{@id}),
+ extensionValue F1AP-PROTOCOL-EXTENSION.&Extension ({ExtensionSetParam}{@id})
+}
+
+-- **************************************************************
+--
+-- Container for Private IEs
+--
+-- **************************************************************
+
+PrivateIE-Container {F1AP-PRIVATE-IES : IEsSetParam } ::=
+ SEQUENCE (SIZE (1.. maxPrivateIEs)) OF
+ PrivateIE-Field {{IEsSetParam}}
+
+PrivateIE-Field {F1AP-PRIVATE-IES : IEsSetParam} ::= SEQUENCE {
+ id F1AP-PRIVATE-IES.&id ({IEsSetParam}),
+ criticality F1AP-PRIVATE-IES.&criticality ({IEsSetParam}{@id}),
+ value F1AP-PRIVATE-IES.&Value ({IEsSetParam}{@id})
+}
+
+END
diff --git a/epan/dissectors/asn1/f1ap/F1AP-IEs.asn b/epan/dissectors/asn1/f1ap/F1AP-IEs.asn
new file mode 100644
index 0000000000..35dfd6ae25
--- /dev/null
+++ b/epan/dissectors/asn1/f1ap/F1AP-IEs.asn
@@ -0,0 +1,385 @@
+-- 3GPP TS 38.473 V15.0.0 (2017-12)
+-- 9.4.5 Information Element Definitions
+-- **************************************************************
+--
+-- Information Element Definitions
+--
+-- **************************************************************
+
+F1AP-IEs {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+ngran-access (22) modules (3) f1ap (3) version1 (1) f1ap-IEs (2) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+IMPORTS
+ maxnoofErrors,
+ maxnoofIndividualF1ConnectionsToReset,
+ maxnoofBPLMNs
+
+FROM F1AP-Constants
+
+ Criticality,
+ ProcedureCode,
+ ProtocolIE-ID,
+ TriggeringMessage
+
+FROM F1AP-CommonDataTypes
+
+ ProtocolExtensionContainer{},
+ F1AP-PROTOCOL-EXTENSION,
+ ProtocolIE-SingleContainer{},
+ F1AP-PROTOCOL-IES
+
+FROM F1AP-Containers;
+
+-- A
+
+AllocationAndRetentionPriority ::= SEQUENCE {
+ priorityLevel PriorityLevel,
+ pre-emptionCapability Pre-emptionCapability,
+ pre-emptionVulnerability Pre-emptionVulnerability,
+ iE-Extensions ProtocolExtensionContainer { {AllocationAndRetentionPriority-ExtIEs} } OPTIONAL,
+ ...
+}
+
+AllocationAndRetentionPriority-ExtIEs F1AP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+-- B
+
+BitRate ::= INTEGER (0..4000000000000,...)
+
+BroadcastPLMNs-Item ::= SEQUENCE (SIZE(1..maxnoofBPLMNs)) OF PLMN-Identity
+
+-- C
+
+Cause ::= CHOICE {
+ radioNetwork CauseRadioNetwork,
+ transport CauseTransport,
+ protocol CauseProtocol,
+ misc CauseMisc,
+ ...
+}
+
+CauseMisc ::= ENUMERATED {
+ control-processing-overload,
+ not-enough-user-plane-processing-resources,
+ hardware-failure,
+ om-intervention,
+ unspecified,
+...
+}
+
+CauseProtocol ::= ENUMERATED {
+ transfer-syntax-error,
+ abstract-syntax-error-reject,
+ abstract-syntax-error-ignore-and-notify,
+ message-not-compatible-with-receiver-state,
+ semantic-error,
+ abstract-syntax-error-falsely-constructed-message,
+ unspecified,
+ ...
+}
+
+CauseRadioNetwork ::= ENUMERATED {
+ unspecified,
+ ...
+}
+
+CauseTransport ::= ENUMERATED {
+ unspecified,
+ ...
+}
+
+CellGroupConfig ::= OCTET STRING
+
+CriticalityDiagnostics ::= SEQUENCE {
+ procedureCode ProcedureCode OPTIONAL,
+ triggeringMessage TriggeringMessage OPTIONAL,
+ procedureCriticality Criticality OPTIONAL,
+ iEsCriticalityDiagnostics CriticalityDiagnostics-IE-List OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer {{CriticalityDiagnostics-ExtIEs}} OPTIONAL,
+ ...
+}
+
+CriticalityDiagnostics-ExtIEs F1AP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+CriticalityDiagnostics-IE-List ::= SEQUENCE (SIZE (1.. maxnoofErrors)) OF CriticalityDiagnostics-IE-Item
+
+CriticalityDiagnostics-IE-Item ::= SEQUENCE {
+ iECriticality Criticality,
+ iE-ID ProtocolIE-ID,
+ typeOfError TypeOfError,
+ iE-Extensions ProtocolExtensionContainer {{CriticalityDiagnostics-IE-Item-ExtIEs}} OPTIONAL,
+ ...
+}
+
+CriticalityDiagnostics-IE-Item-ExtIEs F1AP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+CUtoDURRCInformation ::= SEQUENCE {
+ sCG-Config-Info SCG-Config-Info OPTIONAL,
+ uERadiocapabilities UERadiocapabilities,
+ iE-Extensions ProtocolExtensionContainer { { CUtoDURRCInformation-ExtIEs} } OPTIONAL,
+ ...
+}
+
+CUtoDURRCInformation-ExtIEs F1AP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- D
+
+DRBID ::= INTEGER (0..15, ...)
+
+DRXCycle ::= SEQUENCE {
+ longDRXCycleLength LongDRXCycleLength,
+ shortDRXCycleLength ShortDRXCycleLength OPTIONAL,
+ shortDRXCycleTimer ShortDRXCycleTimer OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer { { DRXCycle-ExtIEs} } OPTIONAL,
+ ...
+}
+
+DRXCycle-ExtIEs F1AP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+DUtoCURRCInformation ::= SEQUENCE {
+ cellGroupConfig CellGroupConfig,
+ iE-Extensions ProtocolExtensionContainer { { DUtoCURRCInformation-ExtIEs} } OPTIONAL,
+ ...
+}
+
+DUtoCURRCInformation-ExtIEs F1AP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+-- E
+
+EUTRANQoS ::= SEQUENCE {
+ qCI QCI,
+ allocationAndRetentionPriority AllocationAndRetentionPriority,
+ gbrQosInformation GBR-QosInformation OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer { { EUTRANQoS-ExtIEs} } OPTIONAL,
+ ...
+}
+
+EUTRANQoS-ExtIEs F1AP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+-- F
+
+FDD-Info ::= SEQUENCE {
+ uL-NARFCN NARFCN,
+ dL-NARFCN NARFCN,
+ uL-Transmission-Bandwidth Transmission-Bandwidth,
+ dL-Transmission-Bandwidth Transmission-Bandwidth,
+ iE-Extensions ProtocolExtensionContainer { {FDD-Info-ExtIEs} } OPTIONAL,
+ ...
+}
+
+FDD-Info-ExtIEs F1AP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- G
+
+GBR-QosInformation ::= SEQUENCE {
+ e-RAB-MaximumBitrateDL BitRate,
+ e-RAB-MaximumBitrateUL BitRate,
+ e-RAB-GuaranteedBitrateDL BitRate,
+ e-RAB-GuaranteedBitrateUL BitRate,
+ iE-Extensions ProtocolExtensionContainer { { GBR-QosInformation-ExtIEs} } OPTIONAL,
+ ...
+}
+
+GBR-QosInformation-ExtIEs F1AP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+
+
+
+GNB-CU-F1AP-ID ::= INTEGER (0..4294967295)
+
+GNB-DU-F1AP-ID ::= INTEGER (0..4294967295)
+
+GNB-DU-ID ::= INTEGER (0..68719476735)
+
+GNB-DU-System-Information ::= SEQUENCE {
+ mIB-message MIB-message,
+ sIB1-message SIB1-message,
+ iE-Extensions ProtocolExtensionContainer { { GNB-DU-System-Information-ExtIEs } } OPTIONAL,
+ ...
+}
+
+GNB-DU-System-Information-ExtIEs F1AP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+GTP-TEID ::= OCTET STRING (SIZE (4))
+
+GTPTunnelEndpoint ::= SEQUENCE {
+ transportLayerAddress TransportLayerAddress,
+ gTP-TEID GTP-TEID,
+ iE-Extensions ProtocolExtensionContainer { { GTPTunnelEndpoint-ExtIEs} } OPTIONAL,
+ ...
+}
+
+
+GTPTunnelEndpoint-ExtIEs F1AP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- H
+
+-- I
+
+-- J
+
+-- K
+
+-- L
+
+LongDRXCycleLength ::= ENUMERATED
+{ms10, ms20, ms32, ms40, ms60, ms64, ms70, ms80, ms128, ms160, ms256, ms320, ms512, ms640, ms1024, ms1280, ms2048, ms2560, ms5120, ms10240, ...}
+
+-- M
+
+MIB-message ::= OCTET STRING
+
+-- N
+
+NARFCN ::= INTEGER (0..65535)
+-- This IE may be refined
+
+NCGI ::= SEQUENCE {
+ pLMN-Identity PLMN-Identity,
+ nRCellIdentity NRCellIdentity,
+ iE-Extensions ProtocolExtensionContainer { {NCGI-ExtIEs} } OPTIONAL,
+ ...
+}
+
+NCGI-ExtIEs F1AP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+NR-Mode-Info ::= CHOICE {
+ fDD FDD-Info,
+ tDD TDD-Info,
+ ...
+}
+
+NRCellIdentity ::= BIT STRING (SIZE(36))
+
+-- O
+
+-- P
+
+PLMN-Identity ::= OCTET STRING (SIZE(3))
+
+Pre-emptionCapability ::= ENUMERATED {
+ shall-not-trigger-pre-emption,
+ may-trigger-pre-emption
+}
+
+Pre-emptionVulnerability ::= ENUMERATED {
+ not-pre-emptable,
+ pre-emptable
+}
+
+PriorityLevel ::= INTEGER { spare (0), highest (1), lowest (14), no-priority (15) } (0..15)
+
+PCI ::= INTEGER(0..1007)
+
+-- Q
+
+QCI ::= INTEGER (0..255)
+
+-- R
+
+RRCContainer ::= OCTET STRING
+
+-- S
+SCG-Config-Info ::= OCTET STRING
+
+Served-Cell-Information ::= SEQUENCE {
+ nCGI NCGI,
+ pCI PCI,
+ broadcastPLMNs BroadcastPLMNs-Item,
+ nR-Mode-Info NR-Mode-Info,
+ iE-Extensions ProtocolExtensionContainer { {Served-Cell-Information-ExtIEs} } OPTIONAL,
+ ...
+}
+
+Served-Cell-Information-ExtIEs F1AP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+ShortDRXCycleLength ::= ENUMERATED {ms2, ms3, ms4, ms5, ms6, ms7, ms8, ms10, ms14, ms16, ms20, ms30, ms32, ms35, ms40, ms64, ms80, ms128, ms160, ms256, ms320, ms512, ms640, ...}
+
+ShortDRXCycleTimer ::= INTEGER (1..16)
+
+SIB1-message ::= OCTET STRING
+
+SRBID ::= INTEGER (0..3, ...)
+-- T
+
+TDD-Info ::= SEQUENCE {
+ nARFCN NARFCN,
+ transmission-Bandwidth Transmission-Bandwidth,
+ iE-Extensions ProtocolExtensionContainer { {TDD-Info-ExtIEs} } OPTIONAL,
+ ...
+}
+
+TDD-Info-ExtIEs F1AP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+TimeToWait ::= ENUMERATED {v1s, v2s, v5s, v10s, v20s, v60s, ...}
+
+TransportLayerAddress ::= BIT STRING (SIZE(1..160, ...))
+
+TransactionID ::= INTEGER (0..255, ...)
+
+Transmission-Bandwidth ::= INTEGER (0..65535)
+-- This IE may be refined
+
+TransmissionStopIndicator ::= ENUMERATED {true, ...}
+
+TypeOfError ::= ENUMERATED {
+ not-understood,
+ missing,
+ ...
+}
+
+-- U
+
+UE-associatedLogicalF1-ConnectionItem ::= SEQUENCE {
+ gNB-CU-F1AP-ID GNB-CU-F1AP-ID OPTIONAL,
+ gNB-DU-F1AP-ID GNB-DU-F1AP-ID OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer { { UE-associatedLogicalF1-ConnectionItemExtIEs} } OPTIONAL,
+ ...
+}
+
+UE-associatedLogicalF1-ConnectionItemExtIEs F1AP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+UERadiocapabilities::= OCTET STRING
+
+-- V
+
+-- W
+
+-- X
+
+-- Y
+
+-- Z
+
+END
diff --git a/epan/dissectors/asn1/f1ap/F1AP-PDU-Contents.asn b/epan/dissectors/asn1/f1ap/F1AP-PDU-Contents.asn
new file mode 100644
index 0000000000..ef9e4cd96f
--- /dev/null
+++ b/epan/dissectors/asn1/f1ap/F1AP-PDU-Contents.asn
@@ -0,0 +1,938 @@
+-- 3GPP TS 38.473 V15.0.0 (2017-12)
+-- 9.4.4 PDU Definitions
+-- **************************************************************
+--
+-- PDU definitions for F1AP.
+--
+-- **************************************************************
+
+F1AP-PDU-Contents {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+ngran-access (22) modules (3) f1ap (3) version1 (1) f1ap-PDU-Contents (1) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+-- **************************************************************
+--
+-- IE parameter types from other modules.
+--
+-- **************************************************************
+
+IMPORTS
+ Cause,
+ CriticalityDiagnostics,
+ GNB-CU-F1AP-ID,
+ GNB-DU-F1AP-ID,
+ TimeToWait,
+ UE-associatedLogicalF1-ConnectionItem,
+ RRCContainer,
+ TransactionID,
+ PCI,
+ GNB-DU-ID,
+ Served-Cell-Information,
+ GNB-DU-System-Information,
+ NCGI,
+ DRBID,
+ SRBID,
+ EUTRANQoS,
+ GTPTunnelEndpoint,
+ CUtoDURRCInformation,
+ DUtoCURRCInformation,
+ TransmissionStopIndicator, DRXCycle
+
+
+FROM F1AP-IEs
+ PrivateIE-Container{},
+ ProtocolExtensionContainer{},
+ ProtocolIE-Container{},
+ ProtocolIE-ContainerList{},
+ ProtocolIE-ContainerPair{},
+ ProtocolIE-ContainerPairList{},
+ ProtocolIE-SingleContainer{},
+ F1AP-PRIVATE-IES,
+ F1AP-PROTOCOL-EXTENSION,
+ F1AP-PROTOCOL-IES,
+ F1AP-PROTOCOL-IES-PAIR
+
+FROM F1AP-Containers
+ id-Cause,
+ id-CriticalityDiagnostics,
+ id-gNB-CU-F1AP-ID,
+ id-gNB-DU-F1AP-ID,
+ id-ResetType,
+ id-TimeToWait,
+ id-UE-associatedLogicalF1-ConnectionItem,
+ id-UE-associatedLogicalF1-ConnectionListResAck,
+ id-RRCContainer,
+ id-SRBID,
+ id-TransactionID,
+ id-PCI,
+ id-gNB-DU-ID,
+ id-gNB-Name,
+ id-gNB-DU-Served-Cells-List,
+ id-Served-Cell-Information,
+ id-gNB-DU-System-Information,
+ id-Cells-to-be-Activated-List,
+ id-NCGI,
+ id-gNB-CU-System-Information,
+ id-Served-Cells-To-Add-List,
+ id-Served-Cells-To-Modify-List,
+ id-Served-Cells-To-Delete-List,
+ id-OldNCGI,
+ id-Cells-to-be-Deactivated-List,
+ id-Cells-Failed-to-be-Activated-List,
+ id-DRBID,
+ id-SRBID,
+ id-PSCell-ID,
+ id-EUTRANQoS,
+ id-SRBs-ToBeSetup-List,
+ id-DRBs-ToBeSetup-List,
+ id-DLTunnels-ToBeSetup-List,
+ id-ULTunnels-ToBeSetup-List,
+ id-UL-GTP-Tunnel-EndPoint,
+ id-DL-GTP-Tunnel-EndPoint,
+ id-CUtoDURRCInformation,
+ id-DUtoCURRCInformation,
+ id-UERadioCapability,
+ id-UEAggregateMaximumBitRate,
+ id-SCell-ToBeSetup-List,
+ id-ResourceCoordinationTransferContainer,
+ id-DRBs-ToBeModified-List,
+ id-SRBs-ToBeReleased-List,
+ id-DRBs-ToBeReleased-List,
+ id-DRBs-Modified-List,
+ id-DRBs-FailedToSetup-List,
+ id-DRBs-FailedToBeModified-List,
+ id-SCell-ID,
+ id-DRXCycle,
+ id-DRBs-Setup-List,
+ id-SRBs-Setup-List,
+ id-DRBs-FailedToBeSetup-List,
+ id-SRBs-FailedToBeSetup-List,
+ id-DLTunnels-ToBeSetup-list,
+ id-ULTunnels-ToBeSetup-list,
+ id-TransmissionStopIndicator,
+ id-DRBs-Required-ToBeModified-List,
+ id-DRBs-Required-ToBeReleased-List,
+ id-SRBs-Required-ToBeReleased-List,
+ id-oldgNB-DU-F1AP-ID,
+ maxnoofSCells,
+ maxnoofSRBs,
+ maxnoofDRBs,
+ maxnoofULTunnels,
+ maxnoofDLTunnels,
+ maxCellingNBDU,
+ maxnoofErrors,
+ maxnoofIndividualF1ConnectionsToReset,
+ id-DRBs-ModifiedConf-List
+
+FROM F1AP-Constants;
+
+
+-- **************************************************************
+--
+-- RESET ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Reset
+--
+-- **************************************************************
+
+Reset ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {ResetIEs} },
+ ...
+}
+
+ResetIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }|
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }|
+ { ID id-ResetType CRITICALITY reject TYPE ResetType PRESENCE mandatory },
+ ...
+}
+
+ResetType ::= CHOICE {
+ f1-Interface ResetAll,
+ partOfF1-Interface UE-associatedLogicalF1-ConnectionListRes,
+ ...
+}
+
+
+ResetAll ::= ENUMERATED {
+ reset-all,
+ ...
+}
+
+UE-associatedLogicalF1-ConnectionListRes ::= SEQUENCE (SIZE(1.. maxnoofIndividualF1ConnectionsToReset)) OF ProtocolIE-SingleContainer { { UE-associatedLogicalF1-ConnectionItemRes } }
+
+UE-associatedLogicalF1-ConnectionItemRes F1AP-PROTOCOL-IES ::= {
+ { ID id-UE-associatedLogicalF1-ConnectionItem CRITICALITY reject TYPE UE-associatedLogicalF1-ConnectionItem PRESENCE mandatory},
+ ...
+}
+
+
+-- **************************************************************
+--
+-- Reset Acknowledge
+--
+-- **************************************************************
+
+ResetAcknowledge ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {ResetAcknowledgeIEs} },
+ ...
+}
+
+ResetAcknowledgeIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }|
+ { ID id-UE-associatedLogicalF1-ConnectionListResAck CRITICALITY ignore TYPE UE-associatedLogicalF1-ConnectionListResAck PRESENCE optional }|
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+UE-associatedLogicalF1-ConnectionListResAck ::= SEQUENCE (SIZE(1.. maxnoofIndividualF1ConnectionsToReset)) OF ProtocolIE-SingleContainer { { UE-associatedLogicalF1-ConnectionItemResAck } }
+
+UE-associatedLogicalF1-ConnectionItemResAck F1AP-PROTOCOL-IES ::= {
+ { ID id-UE-associatedLogicalF1-ConnectionItem CRITICALITY ignore TYPE UE-associatedLogicalF1-ConnectionItem PRESENCE mandatory },
+ ...
+}
+
+-- **************************************************************
+--
+-- ERROR INDICATION ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Error Indication
+--
+-- **************************************************************
+
+ErrorIndication ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{ErrorIndicationIEs}},
+ ...
+}
+
+ErrorIndicationIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory}|
+ { ID id-gNB-CU-F1AP-ID CRITICALITY ignore TYPE GNB-CU-F1AP-ID PRESENCE optional }|
+ { ID id-gNB-DU-F1AP-ID CRITICALITY ignore TYPE GNB-DU-F1AP-ID PRESENCE optional }|
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE optional }|
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- F1 SETUP ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- F1 Setup Request
+--
+-- **************************************************************
+
+F1SetupRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {F1SetupRequestIEs} },
+ ...
+}
+
+F1SetupRequestIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }|
+ { ID id-gNB-DU-ID CRITICALITY reject TYPE GNB-DU-ID PRESENCE mandatory }|
+ { ID id-gNB-Name CRITICALITY ignore TYPE GNB-Name PRESENCE optional }|
+ { ID id-gNB-DU-Served-Cells-List CRITICALITY reject TYPE GNB-DU-Served-Cells-List PRESENCE mandatory },
+ ...
+}
+
+
+GNB-DU-Served-Cells-List ::= SEQUENCE (SIZE(1.. maxCellingNBDU)) OF ProtocolIE-SingleContainer { { GNB-DU-Served-Cells-ItemIEs } }
+
+GNB-DU-Served-Cells-ItemIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-Served-Cell-Information CRITICALITY reject TYPE Served-Cell-Information PRESENCE mandatory }|
+ { ID id-gNB-DU-System-Information CRITICALITY reject TYPE GNB-DU-System-Information PRESENCE mandatory },
+ ...
+}
+
+GNB-Name ::= PrintableString(SIZE(1..150,...))
+
+-- **************************************************************
+--
+-- F1 Setup Response
+--
+-- **************************************************************
+
+F1SetupResponse ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {F1SetupResponseIEs} },
+ ...
+}
+
+
+F1SetupResponseIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }|
+ { ID id-Cells-to-be-Activated-List CRITICALITY reject TYPE Cells-to-be-Activated-List PRESENCE optional },
+ ...
+}
+
+
+Cells-to-be-Activated-List ::= SEQUENCE (SIZE(1.. maxCellingNBDU)) OF ProtocolIE-SingleContainer { { Cells-to-be-Activated-List-ItemIEs } }
+
+Cells-to-be-Activated-List-ItemIEs F1AP-PROTOCOL-IES::= {
+ { ID id-NCGI CRITICALITY reject TYPE NCGI PRESENCE mandatory}|
+ { ID id-PCI CRITICALITY reject TYPE PCI PRESENCE optional},
+...
+}
+
+-- **************************************************************
+--
+-- F1 Setup Failure
+--
+-- **************************************************************
+
+F1SetupFailure ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {F1SetupFailureIEs} },
+ ...
+}
+
+F1SetupFailureIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }|
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }|
+ { ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional }|
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+
+-- **************************************************************
+--
+-- GNB-DU CONFIGURATION UPDATE ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- GNB-DU CONFIGURATION UPDATE
+--
+-- **************************************************************
+
+GNBDUConfigurationUpdate::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {GNBDUConfigurationUpdateIEs} },
+ ...
+}
+
+GNBDUConfigurationUpdateIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-Served-Cells-To-Add-List CRITICALITY reject TYPE Served-Cells-To-Add-List PRESENCE optional }|
+ { ID id-Served-Cells-To-Modify-List CRITICALITY reject TYPE Served-Cells-To-Modify-List PRESENCE optional }|
+ { ID id-Served-Cells-To-Delete-List CRITICALITY reject TYPE Served-Cells-To-Delete-List PRESENCE optional },
+ ...
+}
+Served-Cells-To-Add-List ::= SEQUENCE (SIZE(1.. maxCellingNBDU)) OF ProtocolIE-SingleContainer { { Served-Cells-To-Add-ItemIEs } }
+Served-Cells-To-Modify-List ::= SEQUENCE (SIZE(1.. maxCellingNBDU)) OF ProtocolIE-SingleContainer { { Served-Cells-To-Modify-ItemIEs } }
+Served-Cells-To-Delete-List ::= SEQUENCE (SIZE(1.. maxCellingNBDU)) OF ProtocolIE-SingleContainer { { Served-Cells-To-Delete-ItemIEs } }
+
+Served-Cells-To-Add-ItemIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-Served-Cell-Information CRITICALITY reject TYPE Served-Cell-Information PRESENCE mandatory }|
+ { ID id-gNB-DU-System-Information CRITICALITY reject TYPE GNB-DU-System-Information PRESENCE mandatory },
+...
+}
+
+Served-Cells-To-Modify-ItemIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-OldNCGI CRITICALITY reject TYPE NCGI PRESENCE mandatory }|
+ { ID id-Served-Cell-Information CRITICALITY reject TYPE Served-Cell-Information PRESENCE mandatory }|
+ { ID id-gNB-DU-System-Information CRITICALITY reject TYPE GNB-DU-System-Information PRESENCE optional },
+...
+}
+
+Served-Cells-To-Delete-ItemIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-OldNCGI CRITICALITY reject TYPE NCGI PRESENCE mandatory },
+...
+}
+
+-- **************************************************************
+--
+-- GNB-DU CONFIGURATION UPDATE ACKNOWLEDGE
+--
+-- **************************************************************
+
+GNBDUConfigurationUpdateAcknowledge ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {GNBDUConfigurationUpdateAcknowledgeIEs} },
+ ...
+}
+
+
+GNBDUConfigurationUpdateAcknowledgeIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-Cells-to-be-Activated-List CRITICALITY reject TYPE Cells-to-be-Activated-List PRESENCE optional }|
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- GNB-DU CONFIGURATION UPDATE FAILURE
+--
+-- **************************************************************
+
+GNBDUConfigurationUpdateFailure ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {GNBDUConfigurationUpdateFailureIEs} },
+ ...
+}
+
+GNBDUConfigurationUpdateFailureIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }|
+ { ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional }|
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- GNB-CU CONFIGURATION UPDATE ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- GNB-CU CONFIGURATION UPDATE
+--
+-- **************************************************************
+
+GNBCUConfigurationUpdate ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { GNBCUConfigurationUpdateIEs} },
+ ...
+}
+
+GNBCUConfigurationUpdateIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-Cells-to-be-Activated-List CRITICALITY reject TYPE Cells-to-be-Activated-List PRESENCE optional }|
+ { ID id-Cells-to-be-Deactivated-List CRITICALITY reject TYPE Cells-to-be-Deactivated-List PRESENCE optional },
+ ...
+}
+
+Cells-to-be-Deactivated-List ::= SEQUENCE (SIZE(1.. maxCellingNBDU)) OF ProtocolIE-SingleContainer { { Cells-to-be-Deactivated-List-ItemIEs } }
+
+Cells-to-be-Deactivated-List-ItemIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-NCGI CRITICALITY reject TYPE NCGI PRESENCE mandatory },
+...}
+
+
+-- **************************************************************
+--
+-- GNB-CU CONFIGURATION UPDATE ACKNOWLEDGE
+--
+-- **************************************************************
+
+GNBCUConfigurationUpdateAcknowledge ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { GNBCUConfigurationUpdateAcknowledgeIEs} },
+ ...
+}
+
+
+GNBCUConfigurationUpdateAcknowledgeIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-Cells-Failed-to-be-Activated-List CRITICALITY reject TYPE Cells-Failed-to-be-Activated-List PRESENCE optional}|
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+Cells-Failed-to-be-Activated-List ::= SEQUENCE (SIZE(1.. maxCellingNBDU)) OF ProtocolIE-SingleContainer { { Cells-Failed-to-be-Activated-List-ItemIEs } }
+
+Cells-Failed-to-be-Activated-List-ItemIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-NCGI CRITICALITY reject TYPE NCGI PRESENCE mandatory }|
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory },
+...
+}
+
+-- **************************************************************
+--
+-- GNB-CU CONFIGURATION UPDATE FAILURE
+--
+-- **************************************************************
+
+GNBCUConfigurationUpdateFailure ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { GNBCUConfigurationUpdateFailureIEs} },
+ ...
+}
+
+GNBCUConfigurationUpdateFailureIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }|
+ { ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional }|
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- UE Context Setup ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- UE CONTEXT SETUP REQUEST
+--
+-- **************************************************************
+
+UEContextSetupRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { UEContextSetupRequestIEs} },
+ ...
+}
+
+UEContextSetupRequestIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-gNB-CU-F1AP-ID CRITICALITY reject TYPE GNB-CU-F1AP-ID PRESENCE mandatory }|
+ { ID id-gNB-DU-F1AP-ID CRITICALITY ignore TYPE GNB-DU-F1AP-ID PRESENCE optional }|
+ { ID id-PSCell-ID CRITICALITY ignore TYPE NCGI PRESENCE optional }|
+ { ID id-CUtoDURRCInformation CRITICALITY reject TYPE CUtoDURRCInformation PRESENCE mandatory}|
+ { ID id-DRXCycle CRITICALITY ignore TYPE DRXCycle PRESENCE optional }|
+ { ID id-ResourceCoordinationTransferContainer CRITICALITY reject TYPE ResourceCoordinationTransferContainer PRESENCE optional }|
+ { ID id-SCell-ToBeSetup-List CRITICALITY ignore TYPE SCell-ToBeSetup-List PRESENCE optional }|
+ { ID id-SRBs-ToBeSetup-List CRITICALITY reject TYPE SRBs-ToBeSetup-List PRESENCE optional }|
+ { ID id-DRBs-ToBeSetup-List CRITICALITY reject TYPE DRBs-ToBeSetup-List PRESENCE mandatory },
+ ...
+}
+
+SCell-ToBeSetup-List::= SEQUENCE (SIZE(1..maxnoofSCells)) OF ProtocolIE-SingleContainer { { SCell-ToBeSetup-ItemIEs} }SRBs-ToBeSetup-List ::= SEQUENCE (SIZE(1..maxnoofSRBs)) OF ProtocolIE-SingleContainer { { SRBs-ToBeSetup-ItemIEs} }
+DRBs-ToBeSetup-List ::= SEQUENCE (SIZE(1..maxnoofDRBs)) OF ProtocolIE-SingleContainer { { DRBs-ToBeSetup-ItemIEs} }
+
+ResourceCoordinationTransferContainer ::= OCTET STRING
+
+SCell-ToBeSetup-ItemIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-SCell-ID CRITICALITY ignore TYPE NCGI PRESENCE mandatory },
+ ...
+}
+
+SRBs-ToBeSetup-ItemIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-SRBID CRITICALITY reject TYPE SRBID PRESENCE mandatory},
+ ...
+}
+
+DRBs-ToBeSetup-ItemIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-DRBID CRITICALITY reject TYPE DRBID PRESENCE mandatory}|
+ { ID id-EUTRANQoS CRITICALITY reject TYPE EUTRANQoS PRESENCE optional}|
+ { ID id-ULTunnels-ToBeSetup-list CRITICALITY reject TYPE ULTunnels-ToBeSetup-list PRESENCE mandatory},
+ ...
+}
+
+ULTunnels-ToBeSetup-list ::= SEQUENCE (SIZE(1..maxnoofULTunnels)) OF ProtocolIE-SingleContainer { { ULTunnels-ToBeSetup-ItemIEs} }
+
+ULTunnels-ToBeSetup-ItemIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-UL-GTP-Tunnel-EndPoint CRITICALITY reject TYPE GTPTunnelEndpoint PRESENCE mandatory},
+ ...
+}
+
+
+-- **************************************************************
+--
+-- UE CONTEXT SETUP RESPONSE
+--
+-- **************************************************************
+
+UEContextSetupResponse ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { UEContextSetupResponseIEs} },
+ ...
+}
+
+
+UEContextSetupResponseIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-gNB-CU-F1AP-ID CRITICALITY reject TYPE GNB-CU-F1AP-ID PRESENCE mandatory }|
+ { ID id-gNB-DU-F1AP-ID CRITICALITY reject TYPE GNB-DU-F1AP-ID PRESENCE mandatory }|
+ { ID id-DUtoCURRCInformation CRITICALITY reject TYPE DUtoCURRCInformation PRESENCE mandatory }|
+ { ID id-ResourceCoordinationTransferContainer CRITICALITY reject TYPE ResourceCoordinationTransferContainer PRESENCE optional }|
+ { ID id-SRBs-Setup-List CRITICALITY ignore TYPE SRBs-Setup-List PRESENCE optional }|
+ { ID id-DRBs-Setup-List CRITICALITY ignore TYPE DRBs-Setup-List PRESENCE optional }|
+ { ID id-SRBs-FailedToBeSetup-List CRITICALITY ignore TYPE SRBs-FailedToBeSetup-List PRESENCE optional }|
+ { ID id-DRBs-FailedToBeSetup-List CRITICALITY ignore TYPE DRBs-FailedToBeSetup-List PRESENCE optional }|
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+SRBs-Setup-List ::= SEQUENCE (SIZE(1..maxnoofSRBs)) OF ProtocolIE-SingleContainer { { SRBs-Setup-ItemIEs} }
+DRBs-Setup-List ::= SEQUENCE (SIZE(1..maxnoofDRBs)) OF ProtocolIE-SingleContainer { { DRBs-Setup-ItemIEs} }
+SRBs-FailedToBeSetup-List ::= SEQUENCE (SIZE(1..maxnoofSRBs)) OF ProtocolIE-SingleContainer { { SRBs-FailedToBeSetup-ItemIEs} }
+DRBs-FailedToBeSetup-List ::= SEQUENCE (SIZE(1..maxnoofDRBs)) OF ProtocolIE-SingleContainer { { DRBs-FailedToBeSetup-ItemIEs} }
+
+SRBs-Setup-ItemIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-SRBID CRITICALITY ignore TYPE SRBID PRESENCE mandatory},
+ ...
+}
+
+DRBs-Setup-ItemIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-DRBID CRITICALITY ignore TYPE DRBID PRESENCE mandatory}|
+ { ID id-DLTunnels-ToBeSetup-list CRITICALITY ignore TYPE DLTunnels-ToBeSetup-list PRESENCE mandatory},
+ ...
+}
+
+DLTunnels-ToBeSetup-list ::= SEQUENCE (SIZE(1..maxnoofDLTunnels)) OF ProtocolIE-SingleContainer { { DLTunnels-ToBeSetup-ItemIEs} }
+
+DLTunnels-ToBeSetup-ItemIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-DL-GTP-Tunnel-EndPoint CRITICALITY ignore TYPE GTPTunnelEndpoint PRESENCE mandatory},
+ ...
+}
+
+SRBs-FailedToBeSetup-ItemIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-SRBID CRITICALITY ignore TYPE SRBID PRESENCE mandatory}|
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE optional},
+ ...
+}
+
+DRBs-FailedToBeSetup-ItemIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-DRBID CRITICALITY ignore TYPE DRBID PRESENCE mandatory}|
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE optional},
+ ...
+}
+
+-- **************************************************************
+--
+-- UE CONTEXT SETUP FAILURE
+--
+-- **************************************************************
+
+UEContextSetupFailure ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { UEContextSetupFailureIEs} },
+ ...
+}
+
+UEContextSetupFailureIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-gNB-CU-F1AP-ID CRITICALITY reject TYPE GNB-CU-F1AP-ID PRESENCE mandatory }|
+ { ID id-gNB-DU-F1AP-ID CRITICALITY ignore TYPE GNB-DU-F1AP-ID PRESENCE optional }|
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }|
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- UE Context Release Request ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- UE Context Release Request
+--
+-- **************************************************************
+
+UEContextReleaseRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{ UEContextReleaseRequestIEs}},
+ ...
+}
+
+UEContextReleaseRequestIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-gNB-CU-F1AP-ID CRITICALITY reject TYPE GNB-CU-F1AP-ID PRESENCE mandatory }|
+ { ID id-gNB-DU-F1AP-ID CRITICALITY reject TYPE GNB-DU-F1AP-ID PRESENCE mandatory }|
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory },
+ ...
+}
+
+
+-- **************************************************************
+--
+-- UE Context Release (gNB-CU initiated) ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- UE CONTEXT RELEASE COMMAND
+--
+-- **************************************************************
+
+UEContextReleaseCommand ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { UEContextReleaseCommandIEs} },
+ ...
+}
+
+UEContextReleaseCommandIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-gNB-CU-F1AP-ID CRITICALITY reject TYPE GNB-CU-F1AP-ID PRESENCE mandatory }|
+ { ID id-gNB-DU-F1AP-ID CRITICALITY reject TYPE GNB-DU-F1AP-ID PRESENCE mandatory }|
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory },
+ ...
+}
+
+-- **************************************************************
+--
+-- UE CONTEXT RELEASE COMPLETE
+--
+-- **************************************************************
+
+UEContextReleaseComplete ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { UEContextReleaseCompleteIEs} },
+ ...
+}
+
+
+UEContextReleaseCompleteIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-gNB-CU-F1AP-ID CRITICALITY reject TYPE GNB-CU-F1AP-ID PRESENCE mandatory }|
+ { ID id-gNB-DU-F1AP-ID CRITICALITY reject TYPE GNB-DU-F1AP-ID PRESENCE mandatory }|
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, ...
+}
+
+-- **************************************************************
+--
+-- UE Context Modification ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- UE CONTEXT MODIFICATION REQUEST
+--
+-- **************************************************************
+
+UEContextModificationRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { UEContextModificationRequestIEs} },
+ ...
+}
+
+UEContextModificationRequestIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-gNB-CU-F1AP-ID CRITICALITY reject TYPE GNB-CU-F1AP-ID PRESENCE mandatory }|
+ { ID id-gNB-DU-F1AP-ID CRITICALITY reject TYPE GNB-DU-F1AP-ID PRESENCE mandatory }|
+ { ID id-PSCell-ID CRITICALITY ignore TYPE NCGI PRESENCE optional }|
+ { ID id-DRXCycle CRITICALITY ignore TYPE DRXCycle PRESENCE optional }|
+ { ID id-CUtoDURRCInformation CRITICALITY reject TYPE CUtoDURRCInformation PRESENCE optional }|
+ { ID id-TransmissionStopIndicator CRITICALITY ignore TYPE TransmissionStopIndicator PRESENCE optional }|
+ { ID id-ResourceCoordinationTransferContainer CRITICALITY reject TYPE ResourceCoordinationTransferContainer PRESENCE optional }|
+ { ID id-RRCContainer CRITICALITY ignore TYPE RRCContainer PRESENCE optional }|
+ { ID id-SCell-ToBeSetup-List CRITICALITY ignore TYPE SCell-ToBeSetup-List PRESENCE optional }|
+ { ID id-SRBs-ToBeSetup-List CRITICALITY reject TYPE SRBs-ToBeSetup-List PRESENCE optional }|
+ { ID id-DRBs-ToBeSetup-List CRITICALITY reject TYPE DRBs-ToBeSetup-List PRESENCE optional }|
+ { ID id-DRBs-ToBeModified-List CRITICALITY reject TYPE DRBs-ToBeModified-List PRESENCE optional }|
+ { ID id-SRBs-ToBeReleased-List CRITICALITY reject TYPE SRBs-ToBeReleased-List PRESENCE optional }|
+ { ID id-DRBs-ToBeReleased-List CRITICALITY reject TYPE DRBs-ToBeReleased-List PRESENCE optional },
+ ...
+}
+
+DRBs-ToBeModified-List ::= SEQUENCE (SIZE(1..maxnoofDRBs)) OF ProtocolIE-SingleContainer { { DRBs-ToBeModified-ItemIEs} }
+SRBs-ToBeReleased-List ::= SEQUENCE (SIZE(1..maxnoofSRBs)) OF ProtocolIE-SingleContainer { { SRBs-ToBeReleased-ItemIEs} }
+DRBs-ToBeReleased-List ::= SEQUENCE (SIZE(1..maxnoofDRBs)) OF ProtocolIE-SingleContainer { { DRBs-ToBeReleased-ItemIEs} }
+
+DRBs-ToBeModified-ItemIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-DRBID CRITICALITY reject TYPE DRBID PRESENCE mandatory}|
+ { ID id-EUTRANQoS CRITICALITY reject TYPE EUTRANQoS PRESENCE optional}|
+ { ID id-ULTunnels-ToBeSetup-list CRITICALITY reject TYPE ULTunnels-ToBeSetup-list PRESENCE mandatory},
+ ...
+}
+
+SRBs-ToBeReleased-ItemIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-SRBID CRITICALITY reject TYPE SRBID PRESENCE mandatory},
+ ...
+}
+
+DRBs-ToBeReleased-ItemIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-DRBID CRITICALITY reject TYPE DRBID PRESENCE mandatory},
+ ...
+}
+
+-- **************************************************************
+--
+-- UE CONTEXT MODIFICATION RESPONSE
+--
+-- **************************************************************
+
+UEContextModificationResponse ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { UEContextModificationResponseIEs} },
+ ...
+}
+
+
+UEContextModificationResponseIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-gNB-CU-F1AP-ID CRITICALITY reject TYPE GNB-CU-F1AP-ID PRESENCE mandatory }|
+ { ID id-gNB-DU-F1AP-ID CRITICALITY reject TYPE GNB-DU-F1AP-ID PRESENCE mandatory }|
+ { ID id-ResourceCoordinationTransferContainer CRITICALITY reject TYPE ResourceCoordinationTransferContainer PRESENCE optional }|
+ { ID id-DUtoCURRCInformation CRITICALITY reject TYPE DUtoCURRCInformation PRESENCE optional}|
+ { ID id-DRBs-Setup-List CRITICALITY ignore TYPE DRBs-Setup-List PRESENCE optional}|
+ { ID id-DRBs-Modified-List CRITICALITY ignore TYPE DRBs-Modified-List PRESENCE optional}|
+ { ID id-SRBs-FailedToBeSetup-List CRITICALITY ignore TYPE SRBs-FailedToBeSetup-List PRESENCE optional }|
+ { ID id-DRBs-FailedToBeSetup-List CRITICALITY ignore TYPE DRBs-FailedToBeSetup-List PRESENCE optional }|
+ { ID id-DRBs-FailedToBeModified-List CRITICALITY ignore TYPE DRBs-FailedToBeModified-List PRESENCE optional }|
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+
+DRBs-Modified-List::= SEQUENCE (SIZE(1..maxnoofDRBs)) OF ProtocolIE-SingleContainer { { DRBs-Modified-ItemIEs } }
+DRBs-FailedToBeModified-List ::= SEQUENCE (SIZE(1..maxnoofDRBs)) OF ProtocolIE-SingleContainer { { DRBs-FailedToBeModified-ItemIEs} }
+
+DRBs-Modified-ItemIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-DRBID CRITICALITY ignore TYPE DRBID PRESENCE mandatory}|
+ { ID id-DLTunnels-ToBeSetup-list CRITICALITY ignore TYPE DLTunnels-ToBeSetup-list PRESENCE mandatory},
+ ...
+}
+
+DRBs-FailedToBeModified-ItemIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-DRBID CRITICALITY ignore TYPE DRBID PRESENCE mandatory}|
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE optional},
+ ...
+}
+
+
+-- **************************************************************
+--
+-- UE CONTEXT MODIFICATION FAILURE
+--
+-- **************************************************************
+
+UEContextModificationFailure ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { UEContextModificationFailureIEs} },
+ ...
+}
+
+UEContextModificationFailureIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-gNB-CU-F1AP-ID CRITICALITY reject TYPE GNB-CU-F1AP-ID PRESENCE mandatory }|
+ { ID id-gNB-DU-F1AP-ID CRITICALITY reject TYPE GNB-DU-F1AP-ID PRESENCE mandatory }|
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }|
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+
+-- **************************************************************
+--
+-- UE Context Modification Required (gNB-DU initiated) ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- UE CONTEXT MODIFICATION REQUIRED
+--
+-- **************************************************************
+
+UEContextModificationRequired ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { UEContextModificationRequiredIEs} },
+ ...
+}
+
+UEContextModificationRequiredIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-gNB-CU-F1AP-ID CRITICALITY reject TYPE GNB-CU-F1AP-ID PRESENCE mandatory }|
+ { ID id-gNB-DU-F1AP-ID CRITICALITY reject TYPE GNB-DU-F1AP-ID PRESENCE mandatory }|
+ { ID id-ResourceCoordinationTransferContainer CRITICALITY reject TYPE ResourceCoordinationTransferContainer PRESENCE optional }|
+ { ID id-DUtoCURRCInformation CRITICALITY reject TYPE DUtoCURRCInformation PRESENCE optional}|
+ { ID id-DRBs-Required-ToBeModified-List CRITICALITY reject TYPE DRBs-Required-ToBeModified-List PRESENCE optional}|
+ { ID id-SRBs-Required-ToBeReleased-List CRITICALITY reject TYPE SRBs-Required-ToBeReleased-List PRESENCE optional}|
+ { ID id-DRBs-Required-ToBeReleased-List CRITICALITY reject TYPE DRBs-Required-ToBeReleased-List PRESENCE optional}|
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory },
+ ...
+}
+
+DRBs-Required-ToBeModified-List::= SEQUENCE (SIZE(1..maxnoofDRBs)) OF ProtocolIE-SingleContainer { { DRBs-Required-ToBeModified-ItemIEs } }
+DRBs-Required-ToBeReleased-List::= SEQUENCE (SIZE(1..maxnoofDRBs)) OF ProtocolIE-SingleContainer { { DRBs-Required-ToBeReleased-ItemIEs } }
+
+SRBs-Required-ToBeReleased-List::= SEQUENCE (SIZE(1..maxnoofSRBs)) OF ProtocolIE-SingleContainer { { SRBs-Required-ToBeReleased-ItemIEs } }
+
+DRBs-Required-ToBeModified-ItemIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-DRBID CRITICALITY reject TYPE DRBID PRESENCE mandatory}|
+ { ID id-DLTunnels-ToBeSetup-list CRITICALITY reject TYPE DLTunnels-ToBeSetup-list PRESENCE mandatory},
+ ...
+}
+
+DRBs-Required-ToBeReleased-ItemIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-DRBID CRITICALITY reject TYPE DRBID PRESENCE mandatory},
+ ...
+}
+
+SRBs-Required-ToBeReleased-ItemIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-SRBID CRITICALITY reject TYPE SRBID PRESENCE mandatory},
+ ...
+}
+
+-- **************************************************************
+--
+-- UE CONTEXT MODIFICATION CONFIRM
+--
+-- **************************************************************
+
+UEContextModificationConfirm::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { UEContextModificationConfirmIEs} },
+ ...
+}
+
+
+UEContextModificationConfirmIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-gNB-CU-F1AP-ID CRITICALITY reject TYPE GNB-CU-F1AP-ID PRESENCE mandatory }|
+ { ID id-gNB-DU-F1AP-ID CRITICALITY reject TYPE GNB-DU-F1AP-ID PRESENCE mandatory }|
+ { ID id-ResourceCoordinationTransferContainer CRITICALITY reject TYPE ResourceCoordinationTransferContainer PRESENCE optional }|
+ { ID id-DRBs-ModifiedConf-List CRITICALITY ignore TYPE DRBs-ModifiedConf-List PRESENCE optional}|
+ { ID id-DRBs-FailedToBeModified-List CRITICALITY ignore TYPE DRBs-FailedToBeModified-List PRESENCE mandatory }|
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+DRBs-ModifiedConf-List::= SEQUENCE (SIZE(1..maxnoofDRBs)) OF ProtocolIE-SingleContainer { { DRBs-ModifiedConf-ItemIEs } }
+
+DRBs-ModifiedConf-ItemIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-DRBID CRITICALITY ignore TYPE DRBID PRESENCE mandatory}|
+ { ID id-ULTunnels-ToBeSetup-list CRITICALITY ignore TYPE ULTunnels-ToBeSetup-list PRESENCE mandatory},
+ ...
+}
+
+
+
+-- **************************************************************
+--
+-- DL RRC Message Transfer ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- DL RRC Message Transfer
+--
+-- **************************************************************
+
+DLRRCMessageTransfer ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{ DLRRCMessageTransferIEs}},
+ ...
+}
+
+DLRRCMessageTransferIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-gNB-CU-F1AP-ID CRITICALITY reject TYPE GNB-CU-F1AP-ID PRESENCE mandatory }|
+ { ID id-gNB-DU-F1AP-ID CRITICALITY reject TYPE GNB-DU-F1AP-ID PRESENCE mandatory }|
+ { ID id-oldgNB-DU-F1AP-ID CRITICALITY reject TYPE GNB-DU-F1AP-ID PRESENCE optional }|
+ { ID id-SRBID CRITICALITY reject TYPE SRBID PRESENCE mandatory }|
+ { ID id-RRCContainer CRITICALITY reject TYPE RRCContainer PRESENCE mandatory },
+ ...
+}
+-- **************************************************************
+--
+-- UL RRC Message Transfer ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- UL RRC Message Transfer
+--
+-- **************************************************************
+
+ULRRCMessageTransfer ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{ ULRRCMessageTransferIEs}},
+ ...
+}
+
+ULRRCMessageTransferIEs F1AP-PROTOCOL-IES ::= {
+ { ID id-gNB-CU-F1AP-ID CRITICALITY reject TYPE GNB-CU-F1AP-ID PRESENCE mandatory }|
+ { ID id-gNB-DU-F1AP-ID CRITICALITY reject TYPE GNB-DU-F1AP-ID PRESENCE mandatory }|
+ { ID id-SRBID CRITICALITY reject TYPE SRBID PRESENCE mandatory }|
+ { ID id-RRCContainer CRITICALITY reject TYPE RRCContainer PRESENCE mandatory },
+ ...
+}
+
+-- **************************************************************
+--
+-- PRIVATE MESSAGE
+--
+-- **************************************************************
+
+PrivateMessage ::= SEQUENCE {
+ privateIEs PrivateIE-Container {{PrivateMessage-IEs}},
+ ...
+}
+
+PrivateMessage-IEs F1AP-PRIVATE-IES ::= {
+ ...
+}
+
+END
diff --git a/epan/dissectors/asn1/f1ap/F1AP-PDU-Descriptions.asn b/epan/dissectors/asn1/f1ap/F1AP-PDU-Descriptions.asn
new file mode 100644
index 0000000000..9c170550bb
--- /dev/null
+++ b/epan/dissectors/asn1/f1ap/F1AP-PDU-Descriptions.asn
@@ -0,0 +1,260 @@
+-- 3GPP TS 38.473 V15.0.0 (2017-12)
+-- 9.4.3 Elementary Procedure Definitions
+-- **************************************************************
+--
+-- Elementary Procedure definitions
+--
+-- **************************************************************
+
+F1AP-PDU-Descriptions {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+ngran-access (22) modules (3) f1ap (3) version1 (1) f1ap-PDU-Descriptions (0)}
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+-- **************************************************************
+--
+-- IE parameter types from other modules.
+--
+-- **************************************************************
+
+IMPORTS
+ Criticality,
+ ProcedureCode
+
+FROM F1AP-CommonDataTypes
+ Reset,
+ ResetAcknowledge,
+ F1SetupRequest,
+ F1SetupResponse,
+ F1SetupFailure,
+ GNBDUConfigurationUpdate,
+ GNBDUConfigurationUpdateAcknowledge,
+ GNBDUConfigurationUpdateFailure,
+ GNBCUConfigurationUpdate,
+ GNBCUConfigurationUpdateAcknowledge,
+ GNBCUConfigurationUpdateFailure,
+ UEContextSetupRequest,
+ UEContextSetupResponse,
+ UEContextSetupFailure,
+ UEContextReleaseCommand,
+ UEContextReleaseComplete,
+ UEContextModificationRequest,
+ UEContextModificationResponse,
+ UEContextModificationFailure,
+ UEContextModificationRequired,
+ UEContextModificationConfirm,
+ ErrorIndication,
+ UEContextReleaseRequest,
+ DLRRCMessageTransfer,
+ ULRRCMessageTransfer,
+ PrivateMessage
+
+FROM F1AP-PDU-Contents
+ id-Reset,
+ id-F1Setup,
+ id-gNBDUConfigurationUpdate,
+ id-gNBCUConfigurationUpdate,
+ id-UEContextSetup,
+ id-UEContextRelease,
+ id-UEContextModification,
+ id-UEContextModificationRequired,
+ id-ErrorIndication,
+ id-UEContextReleaseRequest,
+ id-DLRRCMessageTransfer,
+ id-ULRRCMessageTransfer,
+ id-privateMessage
+
+
+FROM F1AP-Constants;
+
+
+-- **************************************************************
+--
+-- Interface Elementary Procedure Class
+--
+-- **************************************************************
+
+F1AP-ELEMENTARY-PROCEDURE ::= CLASS {
+ &InitiatingMessage ,
+ &SuccessfulOutcome OPTIONAL,
+ &UnsuccessfulOutcome OPTIONAL,
+ &procedureCode ProcedureCode UNIQUE,
+ &criticality Criticality DEFAULT ignore
+}
+WITH SYNTAX {
+ INITIATING MESSAGE &InitiatingMessage
+ [SUCCESSFUL OUTCOME &SuccessfulOutcome]
+ [UNSUCCESSFUL OUTCOME &UnsuccessfulOutcome]
+ PROCEDURE CODE &procedureCode
+ [CRITICALITY &criticality]
+}
+
+-- **************************************************************
+--
+-- Interface PDU Definition
+--
+-- **************************************************************
+
+F1AP-PDU ::= CHOICE {
+ initiatingMessage InitiatingMessage,
+ successfulOutcome SuccessfulOutcome,
+ unsuccessfulOutcome UnsuccessfulOutcome,
+ ...
+}
+
+InitiatingMessage ::= SEQUENCE {
+ procedureCode F1AP-ELEMENTARY-PROCEDURE.&procedureCode ({F1AP-ELEMENTARY-PROCEDURES}),
+ criticality F1AP-ELEMENTARY-PROCEDURE.&criticality ({F1AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
+ value F1AP-ELEMENTARY-PROCEDURE.&InitiatingMessage ({F1AP-ELEMENTARY-PROCEDURES}{@procedureCode})
+}
+
+SuccessfulOutcome ::= SEQUENCE {
+ procedureCode F1AP-ELEMENTARY-PROCEDURE.&procedureCode ({F1AP-ELEMENTARY-PROCEDURES}),
+ criticality F1AP-ELEMENTARY-PROCEDURE.&criticality ({F1AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
+ value F1AP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({F1AP-ELEMENTARY-PROCEDURES}{@procedureCode})
+}
+
+UnsuccessfulOutcome ::= SEQUENCE {
+ procedureCode F1AP-ELEMENTARY-PROCEDURE.&procedureCode ({F1AP-ELEMENTARY-PROCEDURES}),
+ criticality F1AP-ELEMENTARY-PROCEDURE.&criticality ({F1AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
+ value F1AP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({F1AP-ELEMENTARY-PROCEDURES}{@procedureCode})
+}
+
+-- **************************************************************
+--
+-- Interface Elementary Procedure List
+--
+-- **************************************************************
+
+F1AP-ELEMENTARY-PROCEDURES F1AP-ELEMENTARY-PROCEDURE ::= {
+ F1AP-ELEMENTARY-PROCEDURES-CLASS-1 |
+ F1AP-ELEMENTARY-PROCEDURES-CLASS-2,
+ ...
+}
+
+
+F1AP-ELEMENTARY-PROCEDURES-CLASS-1 F1AP-ELEMENTARY-PROCEDURE ::= {
+ reset |
+ f1Setup |
+ gNBDUConfigurationUpdate |
+ gNBCUConfigurationUpdate |
+ uEContextSetup |
+ uEContextRelease |
+ uEContextModification |
+ uEContextModificationRequired ,
+ ...}
+
+ F1AP-ELEMENTARY-PROCEDURES-CLASS-2 F1AP-ELEMENTARY-PROCEDURE ::= {
+ errorIndication |
+ uEContextReleaseRequest |
+ dLRRCMessageTransfer |
+ uLRRCMessageTransfer |
+ privateMessage ,
+ ...
+}
+-- **************************************************************
+--
+-- Interface Elementary Procedures
+--
+-- **************************************************************
+
+reset F1AP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE Reset
+ SUCCESSFUL OUTCOME ResetAcknowledge
+ PROCEDURE CODE id-Reset
+ CRITICALITY reject
+}
+
+f1Setup F1AP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE F1SetupRequest
+ SUCCESSFUL OUTCOME F1SetupResponse
+ UNSUCCESSFUL OUTCOME F1SetupFailure
+ PROCEDURE CODE id-F1Setup
+ CRITICALITY reject
+}
+
+gNBDUConfigurationUpdate F1AP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE GNBDUConfigurationUpdate
+ SUCCESSFUL OUTCOME GNBDUConfigurationUpdateAcknowledge
+ UNSUCCESSFUL OUTCOME GNBDUConfigurationUpdateFailure
+ PROCEDURE CODE id-gNBDUConfigurationUpdate
+ CRITICALITY reject
+}
+
+gNBCUConfigurationUpdate F1AP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE GNBCUConfigurationUpdate
+ SUCCESSFUL OUTCOME GNBCUConfigurationUpdateAcknowledge
+ UNSUCCESSFUL OUTCOME GNBCUConfigurationUpdateFailure
+ PROCEDURE CODE id-gNBCUConfigurationUpdate
+ CRITICALITY reject
+}
+
+uEContextSetup F1AP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE UEContextSetupRequest
+ SUCCESSFUL OUTCOME UEContextSetupResponse
+ UNSUCCESSFUL OUTCOME UEContextSetupFailure
+ PROCEDURE CODE id-UEContextSetup
+ CRITICALITY reject
+}
+
+uEContextRelease F1AP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE UEContextReleaseCommand
+ SUCCESSFUL OUTCOME UEContextReleaseComplete
+ PROCEDURE CODE id-UEContextRelease
+ CRITICALITY reject
+}
+
+uEContextModification F1AP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE UEContextModificationRequest
+ SUCCESSFUL OUTCOME UEContextModificationResponse
+ UNSUCCESSFUL OUTCOME UEContextModificationFailure
+ PROCEDURE CODE id-UEContextModification
+ CRITICALITY reject
+}
+
+uEContextModificationRequired F1AP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE UEContextModificationRequired
+ SUCCESSFUL OUTCOME UEContextModificationConfirm
+ PROCEDURE CODE id-UEContextModificationRequired
+ CRITICALITY reject
+}
+
+
+errorIndication F1AP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE ErrorIndication
+ PROCEDURE CODE id-ErrorIndication
+ CRITICALITY ignore
+}
+
+uEContextReleaseRequest F1AP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE UEContextReleaseRequest
+ PROCEDURE CODE id-UEContextReleaseRequest
+ CRITICALITY ignore
+}
+
+
+dLRRCMessageTransfer F1AP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE DLRRCMessageTransfer
+ PROCEDURE CODE id-DLRRCMessageTransfer
+ CRITICALITY ignore
+}
+
+uLRRCMessageTransfer F1AP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE ULRRCMessageTransfer
+ PROCEDURE CODE id-ULRRCMessageTransfer
+ CRITICALITY ignore
+}
+
+
+privateMessage F1AP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE PrivateMessage
+ PROCEDURE CODE id-privateMessage
+ CRITICALITY ignore
+}
+
+
+
+END
diff --git a/epan/dissectors/asn1/f1ap/Makefile.am b/epan/dissectors/asn1/f1ap/Makefile.am
new file mode 100644
index 0000000000..76ca823db4
--- /dev/null
+++ b/epan/dissectors/asn1/f1ap/Makefile.am
@@ -0,0 +1,35 @@
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+# Copyright 1998 Gerald Combs
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+include ../Makefile.inc
+
+PROTOCOL_NAME = f1ap
+
+EXPORT_FILES = $(PROTOCOL_NAME)-exp.cnf
+
+EXT_ASN_FILE_LIST =
+
+ASN_FILE_LIST = \
+ F1AP-CommonDataTypes.asn \
+ F1AP-Constants.asn \
+ F1AP-Containers.asn \
+ F1AP-IEs.asn \
+ F1AP-PDU-Contents.asn \
+ F1AP-PDU-Descriptions.asn
+
+EXTRA_DIST = \
+ $(EXTRA_DIST_COMMON) \
+ $(ASN_FILE_LIST) \
+ packet-$(PROTOCOL_NAME)-template.c \
+ $(PROTOCOL_NAME).cnf
+
+SRC_FILES = \
+ $(EXTRA_DIST) \
+ $(EXT_ASN_FILE_LIST)
+
+A2W_FLAGS =
+
+EXTRA_CNF =
diff --git a/epan/dissectors/asn1/f1ap/f1ap.cnf b/epan/dissectors/asn1/f1ap/f1ap.cnf
new file mode 100644
index 0000000000..585c13ae59
--- /dev/null
+++ b/epan/dissectors/asn1/f1ap/f1ap.cnf
@@ -0,0 +1,497 @@
+# f1ap.cnf
+# f1ap conformation file
+
+#.OPT
+PER
+ALIGNED
+#.END
+
+#.USE_VALS_EXT
+LongDRXCycleLength
+ProcedureCode
+ProtocolIE-ID
+ShortDRXCycleLength
+
+#.EXPORTS
+
+#.PDU
+F1AP-PDU
+
+#.MAKE_ENUM
+ProcedureCode
+ProtocolIE-ID
+
+#.NO_EMIT
+
+#.OMIT_ASSIGNMENT
+# Get rid of unused code warnings
+Presence
+ProtocolIE-ContainerList
+ProtocolIE-ContainerPair
+ProtocolIE-ContainerPairList
+ProtocolIE-FieldPair
+#.END
+
+
+#.TYPE_RENAME
+
+InitiatingMessage/value InitiatingMessage_value
+SuccessfulOutcome/value SuccessfulOutcome_value
+UnsuccessfulOutcome/value UnsuccessfulOutcome_value
+
+#.FIELD_RENAME
+
+InitiatingMessage/value initiatingMessagevalue
+UnsuccessfulOutcome/value unsuccessfulOutcome_value
+SuccessfulOutcome/value successfulOutcome_value
+
+
+PrivateIE-Field/id private_id
+ProtocolExtensionField/id ext_id
+
+#PrivateIE-Field/value private_value
+ProtocolIE-Field/value ie_field_value
+
+#.FN_BODY ProtocolIE-ID VAL_PTR=&f1ap_data->protocol_ie_id
+ f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo);
+%(DEFAULT_BODY)s
+
+#.FN_FTR ProtocolIE-ID
+ if (tree) {
+ proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s",
+ val_to_str_ext(f1ap_data->protocol_ie_id, &f1ap_ProtocolIE_ID_vals_ext, "unknown (%d)"));
+ }
+
+#.FN_PARS ProtocolIE-Field/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolIEFieldValue
+
+#.FN_BODY ProtocolExtensionID VAL_PTR=&f1ap_data->protocol_extension_id
+ f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo);
+%(DEFAULT_BODY)s
+
+#.FN_PARS ProtocolExtensionField/extensionValue FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolExtensionFieldExtensionValue
+
+#.FN_BODY ProcedureCode VAL_PTR = &f1ap_data->procedure_code
+ f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo);
+%(DEFAULT_BODY)s
+#.END
+
+#.FN_PARS InitiatingMessage/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_InitiatingMessageValue
+#.FN_HDR InitiatingMessage/value
+ f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo);
+ f1ap_data->message_type = INITIATING_MESSAGE;
+#.FN_PARS SuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_SuccessfulOutcomeValue
+#.FN_HDR SuccessfulOutcome/value
+ f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo);
+ f1ap_data->message_type = SUCCESSFUL_OUTCOME;
+#.FN_PARS UnsuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_UnsuccessfulOutcomeValue
+#.FN_HDR UnsuccessfulOutcome/value
+ f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo);
+ f1ap_data->message_type = UNSUCCESSFUL_OUTCOME;
+#.END
+
+#--- Parameterization is not supported in asn2wrs ---
+
+#ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, F1AP-PROTOCOL-IES : IEsSetParam} ::=
+# SEQUENCE (SIZE (lowerBound..upperBound)) OF
+# ProtocolIE-Container {{IEsSetParam}}
+
+# .FN_PARS ProtocolIE-ContainerList
+#MIN_VAL = asn1_param_get_integer(%(ACTX)s,"lowerBound")
+#MAX_VAL = asn1_param_get_integer(%(ACTX)s,"upperBound")
+#.FN_HDR ProtocolIE-ContainerList
+# static const asn1_par_def_t ProtocolIE_ContainerList_pars[] = {
+# { "lowerBound", ASN1_PAR_INTEGER },
+# { "upperBound", ASN1_PAR_INTEGER },
+# { NULL, (asn1_par_type)0 }
+# };
+# asn1_stack_frame_check(actx, "ProtocolIE-ContainerList", ProtocolIE_ContainerList_pars);
+#.END
+
+#ProtocolIE-ContainerPairList {INTEGER : lowerBound, INTEGER : upperBound, F1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::=
+# SEQUENCE (SIZE (lowerBound..upperBound)) OF
+# ProtocolIE-ContainerPair {{IEsSetParam}}
+
+# Currently not used
+# FN_PARS ProtocolIE-ContainerPairList
+#MIN_VAL = asn1_param_get_integer(%(ACTX)s,"lowerBound")
+#MAX_VAL = asn1_param_get_integer(%(ACTX)s,"upperBound")
+# FN_HDR ProtocolIE-ContainerPairList
+# static const asn1_par_def_t ProtocolIE_ContainerPairList_pars[] = {
+# { "lowerBound", ASN1_PAR_INTEGER },
+# { "upperBound", ASN1_PAR_INTEGER },
+# { NULL, 0 }
+# };
+# asn1_stack_frame_check(actx, "ProtocolIE-ContainerPairList", ProtocolIE_ContainerPairList_pars);
+# END
+
+#.FN_HDR PrivateIE-ID
+ f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo);
+ f1ap_data->obj_id = NULL;
+
+#.FN_BODY PrivateIE-ID/global FN_VARIANT = _str VAL_PTR = &f1ap_data->obj_id
+ f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo);
+%(DEFAULT_BODY)s
+
+#.FN_BODY PrivateIE-Field/value
+ f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo);
+ if (f1ap_data->obj_id) {
+ offset = call_per_oid_callback(f1ap_data->obj_id, tvb, actx->pinfo, tree, offset, actx, hf_index);
+ } else {
+%(DEFAULT_BODY)s
+ }
+
+#.ASSIGN_VALUE_TO_TYPE # F1AP does not have constants assigned to types, they are pure INTEGER
+# ProcedureCode
+
+id-Reset ProcedureCode
+id-F1Setup ProcedureCode
+id-ErrorIndication ProcedureCode
+id-gNBDUConfigurationUpdate ProcedureCode
+id-gNBCUConfigurationUpdate ProcedureCode
+id-UEContextSetup ProcedureCode
+id-UEContextRelease ProcedureCode
+id-UEContextModification ProcedureCode
+id-UEContextModificationRequired ProcedureCode
+id-UEMobilityCommand ProcedureCode
+id-UEContextReleaseRequest ProcedureCode
+id-InitialULRRCMessageTransfer ProcedureCode
+id-DLRRCMessageTransfer ProcedureCode
+id-ULRRCMessageTransfer ProcedureCode
+id-SystemInformationDelivery ProcedureCode
+id-Paging ProcedureCode
+
+# ProtocolIE-ID
+id-Cause ProtocolIE-ID
+id-CriticalityDiagnostics ProtocolIE-ID
+id-gNB-DU-F1AP-ID ProtocolIE-ID
+id-gNB-CU-F1AP-ID ProtocolIE-ID
+id-ResetType ProtocolIE-ID
+id-TimeToWait ProtocolIE-ID
+id-UE-associatedLogicalF1-ConnectionItem ProtocolIE-ID
+id-UE-associatedLogicalF1-ConnectionListResAck ProtocolIE-ID
+id-RRCContainer ProtocolIE-ID
+id-SRBID ProtocolIE-ID
+id-gNB-DU-ID ProtocolIE-ID
+id-gNB-Name ProtocolIE-ID
+id-NRCellID ProtocolIE-ID
+id-PCI ProtocolIE-ID
+id-gNB-DU-Served-Cells-List ProtocolIE-ID
+id-Cells-to-be-Activated-List ProtocolIE-ID
+id-Served-Cells-To-Add-List ProtocolIE-ID
+id-Served-Cells-To-Modify-List ProtocolIE-ID
+id-Served-Cells-To-Delete-List ProtocolIE-ID
+id-Cells-to-be-Deactivated-List ProtocolIE-ID
+id-Cells-Failed-to-be-Activated-List ProtocolIE-ID
+id-TransactionID ProtocolIE-ID
+id-Served-Cell-Information ProtocolIE-ID
+id-gNB-DU-System-Information ProtocolIE-ID
+id-NCGI ProtocolIE-ID
+id-gNB-CU-System-Information ProtocolIE-ID
+id-OldNCGI ProtocolIE-ID
+id-DRBID ProtocolIE-ID
+id-PSCell-ID ProtocolIE-ID
+id-EUTRANQoS ProtocolIE-ID
+id-SRBs-ToBeSetup-List ProtocolIE-ID
+id-DRBs-ToBeSetup-List ProtocolIE-ID
+id-DLTunnels-ToBeSetup-List ProtocolIE-ID
+id-ULTunnels-ToBeSetup-List ProtocolIE-ID
+id-UL-GTP-Tunnel-EndPoint ProtocolIE-ID
+id-DL-GTP-Tunnel-EndPoint ProtocolIE-ID
+id-CUtoDURRCInformation ProtocolIE-ID
+id-DUtoCURRCInformation ProtocolIE-ID
+id-UERadioCapability ProtocolIE-ID
+id-UEAggregateMaximumBitRate ProtocolIE-ID
+id-SCell-ToBeSetup-List ProtocolIE-ID
+id-ResourceCoordinationTransferContainer ProtocolIE-ID
+id-DRBs-ToBeModified-List ProtocolIE-ID
+id-DRBs-ToBeReleased-List ProtocolIE-ID
+id-DRBs-Modified-List ProtocolIE-ID
+id-DRBs-FailedToSetup-List ProtocolIE-ID
+id-DRBs-FailedToBeModified-List ProtocolIE-ID
+id-SCell-ID ProtocolIE-ID
+id-DRXCycle ProtocolIE-ID
+id-DRBs-Setup-List ProtocolIE-ID
+id-SRBs-Setup-List ProtocolIE-ID
+id-DRBs-FailedToBeSetup-List ProtocolIE-ID
+id-SRBs-FailedToBeSetup-List ProtocolIE-ID
+id-DLTunnels-ToBeSetup-list ProtocolIE-ID
+id-ULTunnels-ToBeSetup-list ProtocolIE-ID
+id-TransmissionStopIndicator ProtocolIE-ID
+id-DRBs-Required-ToBeModified-List ProtocolIE-ID
+id-DRBs-Required-ToBeReleased-List ProtocolIE-ID
+id-SRBs-Required-ToBeReleased-List ProtocolIE-ID
+id-oldgNB-DU-F1AP-ID ProtocolIE-ID
+id-SRBs-ToBeReleased-List ProtocolIE-ID
+id-DRBs-ModifiedConf-List ProtocolIE-ID
+id-privateMessage ProtocolIE-ID
+#.END
+
+#.REGISTER
+
+#F1AP-PROTOCOL-IES
+Cause N f1ap.ies id-Cause
+CriticalityDiagnostics N f1ap.ies id-CriticalityDiagnostics
+GNB-DU-F1AP-ID N f1ap.ies id-gNB-DU-F1AP-ID
+GNB-CU-F1AP-ID N f1ap.ies id-gNB-CU-F1AP-ID
+ResetType N f1ap.ies id-ResetType
+TimeToWait N f1ap.ies id-TimeToWait
+UE-associatedLogicalF1-ConnectionItem N f1ap.ies id-UE-associatedLogicalF1-ConnectionItem
+UE-associatedLogicalF1-ConnectionListResAck N f1ap.ies id-UE-associatedLogicalF1-ConnectionListResAck
+RRCContainer N f1ap.ies id-RRCContainer
+SRBID N f1ap.ies id-SRBID
+GNB-DU-ID N f1ap.ies id-gNB-DU-ID
+GNB-Name N f1ap.ies id-gNB-Name
+PCI N f1ap.ies id-PCI
+GNB-DU-Served-Cells-List N f1ap.ies id-gNB-DU-Served-Cells-List
+Cells-to-be-Activated-List N f1ap.ies id-Cells-to-be-Activated-List
+Served-Cells-To-Add-List N f1ap.ies id-Served-Cells-To-Add-List
+Served-Cells-To-Modify-List N f1ap.ies id-Served-Cells-To-Modify-List
+Served-Cells-To-Delete-List N f1ap.ies id-Served-Cells-To-Delete-List
+Cells-to-be-Deactivated-List N f1ap.ies id-Cells-to-be-Deactivated-List
+Cells-Failed-to-be-Activated-List N f1ap.ies id-Cells-Failed-to-be-Activated-List
+TransactionID N f1ap.ies id-TransactionID
+Served-Cell-Information N f1ap.ies id-Served-Cell-Information
+GNB-DU-System-Information N f1ap.ies id-gNB-DU-System-Information
+NCGI N f1ap.ies id-NCGI
+NCGI N f1ap.ies id-OldNCGI
+DRBID N f1ap.ies id-DRBID
+NCGI N f1ap.ies id-PSCell-ID
+EUTRANQoS N f1ap.ies id-EUTRANQoS
+SRBs-ToBeSetup-List N f1ap.ies id-SRBs-ToBeSetup-List
+DRBs-ToBeSetup-List N f1ap.ies id-DRBs-ToBeSetup-List
+DLTunnels-ToBeSetup-list N f1ap.ies id-DLTunnels-ToBeSetup-List
+ULTunnels-ToBeSetup-list N f1ap.ies id-ULTunnels-ToBeSetup-List
+GTPTunnelEndpoint N f1ap.ies id-UL-GTP-Tunnel-EndPoint
+GTPTunnelEndpoint N f1ap.ies id-DL-GTP-Tunnel-EndPoint
+CUtoDURRCInformation N f1ap.ies id-CUtoDURRCInformation
+DUtoCURRCInformation N f1ap.ies id-DUtoCURRCInformation
+SCell-ToBeSetup-List N f1ap.ies id-SCell-ToBeSetup-List
+ResourceCoordinationTransferContainer N f1ap.ies id-ResourceCoordinationTransferContainer
+DRBs-ToBeModified-List N f1ap.ies id-DRBs-ToBeModified-List
+DRBs-ToBeReleased-List N f1ap.ies id-DRBs-ToBeReleased-List
+DRBs-Modified-List N f1ap.ies id-DRBs-Modified-List
+DRBs-FailedToBeModified-List N f1ap.ies id-DRBs-FailedToBeModified-List
+NCGI N f1ap.ies id-SCell-ID
+DRXCycle N f1ap.ies id-DRXCycle
+DRBs-Setup-List N f1ap.ies id-DRBs-Setup-List
+SRBs-Setup-List N f1ap.ies id-SRBs-Setup-List
+DRBs-FailedToBeSetup-List N f1ap.ies id-DRBs-FailedToBeSetup-List
+SRBs-FailedToBeSetup-List N f1ap.ies id-SRBs-FailedToBeSetup-List
+DLTunnels-ToBeSetup-list N f1ap.ies id-DLTunnels-ToBeSetup-list
+ULTunnels-ToBeSetup-list N f1ap.ies id-ULTunnels-ToBeSetup-list
+TransmissionStopIndicator N f1ap.ies id-TransmissionStopIndicator
+DRBs-Required-ToBeModified-List N f1ap.ies id-DRBs-Required-ToBeModified-List
+DRBs-Required-ToBeReleased-List N f1ap.ies id-DRBs-Required-ToBeReleased-List
+SRBs-Required-ToBeReleased-List N f1ap.ies id-SRBs-Required-ToBeReleased-List
+GNB-DU-F1AP-ID N f1ap.ies id-oldgNB-DU-F1AP-ID
+SRBs-ToBeReleased-List N f1ap.ies id-SRBs-ToBeReleased-List
+DRBs-ModifiedConf-List N f1ap.ies id-DRBs-ModifiedConf-List
+
+#F1AP-PROTOCOL-EXTENSION
+
+#F1AP-ELEMENTARY-PROCEDURE
+Reset N f1ap.proc.imsg id-Reset
+ResetAcknowledge N f1ap.proc.sout id-Reset
+
+F1SetupRequest N f1ap.proc.imsg id-F1Setup
+F1SetupResponse N f1ap.proc.sout id-F1Setup
+F1SetupFailure N f1ap.proc.uout id-F1Setup
+
+GNBDUConfigurationUpdate N f1ap.proc.imsg id-gNBDUConfigurationUpdate
+GNBDUConfigurationUpdateAcknowledge N f1ap.proc.sout id-gNBDUConfigurationUpdate
+GNBDUConfigurationUpdateFailure N f1ap.proc.uout id-gNBDUConfigurationUpdate
+
+GNBCUConfigurationUpdate N f1ap.proc.imsg id-gNBCUConfigurationUpdate
+GNBCUConfigurationUpdateAcknowledge N f1ap.proc.sout id-gNBCUConfigurationUpdate
+GNBCUConfigurationUpdateFailure N f1ap.proc.uout id-gNBCUConfigurationUpdate
+
+UEContextSetupRequest N f1ap.proc.imsg id-UEContextSetup
+UEContextSetupResponse N f1ap.proc.sout id-UEContextSetup
+UEContextSetupFailure N f1ap.proc.uout id-UEContextSetup
+
+UEContextReleaseCommand N f1ap.proc.imsg id-UEContextRelease
+UEContextReleaseComplete N f1ap.proc.sout id-UEContextRelease
+
+UEContextModificationRequest N f1ap.proc.imsg id-UEContextModification
+UEContextModificationResponse N f1ap.proc.sout id-UEContextModification
+UEContextModificationFailure N f1ap.proc.uout id-UEContextModification
+
+UEContextModificationRequired N f1ap.proc.imsg id-UEContextModificationRequired
+UEContextModificationConfirm N f1ap.proc.sout id-UEContextModificationRequired
+
+ErrorIndication N f1ap.proc.imsg id-ErrorIndication
+
+UEContextReleaseRequest N f1ap.proc.imsg id-UEContextReleaseRequest
+
+DLRRCMessageTransfer N f1ap.proc.imsg id-DLRRCMessageTransfer
+
+ULRRCMessageTransfer N f1ap.proc.imsg id-ULRRCMessageTransfer
+
+PrivateMessage N f1ap.proc.imsg id-privateMessage
+
+
+#.FN_BODY ResourceCoordinationTransferContainer VAL_PTR=&param_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 = &param_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 = &param_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 = &param_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 = &param_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 = &param_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