summaryrefslogtreecommitdiffstats
path: root/epan/dissectors/asn1/e2ap
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:34:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:34:10 +0000
commite4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc (patch)
tree68cb5ef9081156392f1dd62a00c6ccc1451b93df /epan/dissectors/asn1/e2ap
parentInitial commit. (diff)
downloadwireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.tar.xz
wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.zip
Adding upstream version 4.2.2.upstream/4.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'epan/dissectors/asn1/e2ap')
-rw-r--r--epan/dissectors/asn1/e2ap/CMakeLists.txt47
-rw-r--r--epan/dissectors/asn1/e2ap/E2AP-CommonDataTypes.asn27
-rw-r--r--epan/dissectors/asn1/e2ap/E2AP-Constants.asn165
-rw-r--r--epan/dissectors/asn1/e2ap/E2AP-Containers.asn130
-rw-r--r--epan/dissectors/asn1/e2ap/E2AP-IEs.asn530
-rw-r--r--epan/dissectors/asn1/e2ap/E2AP-PDU-Contents.asn1412
-rw-r--r--epan/dissectors/asn1/e2ap/E2AP-PDU-Descriptions.asn304
-rw-r--r--epan/dissectors/asn1/e2ap/e2ap.cnf917
-rw-r--r--epan/dissectors/asn1/e2ap/e2sm-kpm-v3.00.asn448
-rw-r--r--epan/dissectors/asn1/e2ap/e2sm-ni-v1.00.asn486
-rw-r--r--epan/dissectors/asn1/e2ap/e2sm-rc-v1.03.asn1150
-rw-r--r--epan/dissectors/asn1/e2ap/e2sm-rc-v3.00.asn1332
-rw-r--r--epan/dissectors/asn1/e2ap/e2sm-v3.01.asn573
-rw-r--r--epan/dissectors/asn1/e2ap/packet-e2ap-template.c833
14 files changed, 8354 insertions, 0 deletions
diff --git a/epan/dissectors/asn1/e2ap/CMakeLists.txt b/epan/dissectors/asn1/e2ap/CMakeLists.txt
new file mode 100644
index 00000000..fb5efef4
--- /dev/null
+++ b/epan/dissectors/asn1/e2ap/CMakeLists.txt
@@ -0,0 +1,47 @@
+# 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 e2ap )
+
+set( PROTO_OPT )
+
+set( EXPORT_FILES
+ ${PROTOCOL_NAME}-exp.cnf
+)
+
+set( EXT_ASN_FILE_LIST
+)
+
+set( ASN_FILE_LIST
+ E2AP-CommonDataTypes.asn
+ E2AP-Constants.asn
+ E2AP-Containers.asn
+ E2AP-IEs.asn
+ E2AP-PDU-Contents.asn
+ E2AP-PDU-Descriptions.asn
+ e2sm-v3.01.asn
+ e2sm-rc-v1.03.asn
+ e2sm-kpm-v3.00.asn
+ e2sm-ni-v1.00.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/e2ap/E2AP-CommonDataTypes.asn b/epan/dissectors/asn1/e2ap/E2AP-CommonDataTypes.asn
new file mode 100644
index 00000000..7f3e5262
--- /dev/null
+++ b/epan/dissectors/asn1/e2ap/E2AP-CommonDataTypes.asn
@@ -0,0 +1,27 @@
+-- ASN1START
+-- **************************************************************
+--
+-- Common definitions
+-- Derived from 3GPP 38.413 (NGAP)
+--
+-- **************************************************************
+
+E2AP-CommonDataTypes {
+iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version2 (2) e2ap(1) e2ap-CommonDataTypes (3) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+Criticality ::= ENUMERATED { reject, ignore, notify }
+
+Presence ::= ENUMERATED { optional, conditional, mandatory }
+
+ProcedureCode ::= INTEGER (0..255)
+
+ProtocolIE-ID ::= INTEGER (0..65535)
+
+TriggeringMessage ::= ENUMERATED { initiating-message, successful-outcome, unsuccessfull-outcome }
+
+END
+-- ASN1STOP
diff --git a/epan/dissectors/asn1/e2ap/E2AP-Constants.asn b/epan/dissectors/asn1/e2ap/E2AP-Constants.asn
new file mode 100644
index 00000000..a38b7f26
--- /dev/null
+++ b/epan/dissectors/asn1/e2ap/E2AP-Constants.asn
@@ -0,0 +1,165 @@
+-- ASN1START
+-- **************************************************************
+--
+-- Constant definitions
+--
+-- **************************************************************
+
+E2AP-Constants {
+iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version2 (2) e2ap(1) e2ap-Constants (4) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+IMPORTS
+ ProcedureCode,
+ ProtocolIE-ID
+FROM E2AP-CommonDataTypes;
+
+-- **************************************************************
+--
+-- Elementary Procedures
+--
+-- **************************************************************
+id-E2setup ProcedureCode ::= 1
+id-ErrorIndication ProcedureCode ::= 2
+id-Reset ProcedureCode ::= 3
+id-RICcontrol ProcedureCode ::= 4
+id-RICindication ProcedureCode ::= 5
+id-RICserviceQuery ProcedureCode ::= 6
+id-RICserviceUpdate ProcedureCode ::= 7
+id-RICsubscription ProcedureCode ::= 8
+id-RICsubscriptionDelete ProcedureCode ::= 9
+id-E2nodeConfigurationUpdate ProcedureCode ::= 10
+id-E2connectionUpdate ProcedureCode ::= 11
+id-RICsubscriptionDeleteRequired ProcedureCode ::= 12
+id-E2removal ProcedureCode ::= 13
+id-RICsubscriptionModification ProcedureCode ::= 14
+id-RICsubscriptionModificationRequired ProcedureCode ::= 15
+id-RICquery ProcedureCode ::= 16
+
+-- **************************************************************
+--
+-- Extension constants
+--
+-- **************************************************************
+
+maxProtocolIEs INTEGER ::= 65535
+
+
+-- **************************************************************
+--
+-- Lists
+--
+-- **************************************************************
+maxnoofErrors INTEGER ::= 256
+maxofE2nodeComponents INTEGER ::= 1024
+maxofRANfunctionID INTEGER ::= 256
+maxofRICactionID INTEGER ::= 16
+maxofTNLA INTEGER ::= 32
+maxofRICrequestID INTEGER ::= 1024
+
+
+-- **************************************************************
+--
+-- IEs
+--
+-- **************************************************************
+id-Cause ProtocolIE-ID ::= 1
+id-CriticalityDiagnostics ProtocolIE-ID ::= 2
+id-GlobalE2node-ID ProtocolIE-ID ::= 3
+id-GlobalRIC-ID ProtocolIE-ID ::= 4
+id-RANfunctionID ProtocolIE-ID ::= 5
+id-RANfunctionID-Item ProtocolIE-ID ::= 6
+id-RANfunctionIEcause-Item ProtocolIE-ID ::= 7
+id-RANfunction-Item ProtocolIE-ID ::= 8
+id-RANfunctionsAccepted ProtocolIE-ID ::= 9
+id-RANfunctionsAdded ProtocolIE-ID ::= 10
+id-RANfunctionsDeleted ProtocolIE-ID ::= 11
+id-RANfunctionsModified ProtocolIE-ID ::= 12
+id-RANfunctionsRejected ProtocolIE-ID ::= 13
+id-RICaction-Admitted-Item ProtocolIE-ID ::= 14
+id-RICactionID ProtocolIE-ID ::= 15
+id-RICaction-NotAdmitted-Item ProtocolIE-ID ::= 16
+id-RICactions-Admitted ProtocolIE-ID ::= 17
+id-RICactions-NotAdmitted ProtocolIE-ID ::= 18
+id-RICaction-ToBeSetup-Item ProtocolIE-ID ::= 19
+id-RICcallProcessID ProtocolIE-ID ::= 20
+id-RICcontrolAckRequest ProtocolIE-ID ::= 21
+id-RICcontrolHeader ProtocolIE-ID ::= 22
+id-RICcontrolMessage ProtocolIE-ID ::= 23
+id-RICcontrolStatus ProtocolIE-ID ::= 24
+id-RICindicationHeader ProtocolIE-ID ::= 25
+id-RICindicationMessage ProtocolIE-ID ::= 26
+id-RICindicationSN ProtocolIE-ID ::= 27
+id-RICindicationType ProtocolIE-ID ::= 28
+id-RICrequestID ProtocolIE-ID ::= 29
+id-RICsubscriptionDetails ProtocolIE-ID ::= 30
+id-TimeToWait ProtocolIE-ID ::= 31
+id-RICcontrolOutcome ProtocolIE-ID ::= 32
+id-E2nodeComponentConfigUpdate ProtocolIE-ID ::= 33
+id-E2nodeComponentConfigUpdate-Item ProtocolIE-ID ::= 34
+id-E2nodeComponentConfigUpdateAck ProtocolIE-ID ::= 35
+id-E2nodeComponentConfigUpdateAck-Item ProtocolIE-ID ::= 36
+id-E2connectionSetup ProtocolIE-ID ::= 39
+id-E2connectionSetupFailed ProtocolIE-ID ::= 40
+id-E2connectionSetupFailed-Item ProtocolIE-ID ::= 41
+id-E2connectionFailed-Item ProtocolIE-ID ::= 42
+id-E2connectionUpdate-Item ProtocolIE-ID ::= 43
+id-E2connectionUpdateAdd ProtocolIE-ID ::= 44
+id-E2connectionUpdateModify ProtocolIE-ID ::= 45
+id-E2connectionUpdateRemove ProtocolIE-ID ::= 46
+id-E2connectionUpdateRemove-Item ProtocolIE-ID ::= 47
+id-TNLinformation ProtocolIE-ID ::= 48
+id-TransactionID ProtocolIE-ID ::= 49
+id-E2nodeComponentConfigAddition ProtocolIE-ID ::= 50
+id-E2nodeComponentConfigAddition-Item ProtocolIE-ID ::= 51
+id-E2nodeComponentConfigAdditionAck ProtocolIE-ID ::= 52
+id-E2nodeComponentConfigAdditionAck-Item ProtocolIE-ID ::= 53
+id-E2nodeComponentConfigRemoval ProtocolIE-ID ::= 54
+id-E2nodeComponentConfigRemoval-Item ProtocolIE-ID ::= 55
+id-E2nodeComponentConfigRemovalAck ProtocolIE-ID ::= 56
+id-E2nodeComponentConfigRemovalAck-Item ProtocolIE-ID ::= 57
+id-E2nodeTNLassociationRemoval ProtocolIE-ID ::= 58
+id-E2nodeTNLassociationRemoval-Item ProtocolIE-ID ::= 59
+id-RICsubscriptionToBeRemoved ProtocolIE-ID ::= 60
+id-RICsubscription-withCause-Item ProtocolIE-ID ::= 61
+id-RICsubscriptionStartTime ProtocolIE-ID ::= 62
+id-RICsubscriptionEndTime ProtocolIE-ID ::= 63
+id-RICeventTriggerDefinitionToBeModified ProtocolIE-ID ::= 64
+id-RICactionsToBeRemovedForModification-List ProtocolIE-ID ::= 65
+id-RICaction-ToBeRemovedForModification-Item ProtocolIE-ID ::= 66
+id-RICactionsToBeModifiedForModification-List ProtocolIE-ID ::= 67
+id-RICaction-ToBeModifiedForModification-Item ProtocolIE-ID ::= 68
+id-RICactionsToBeAddedForModification-List ProtocolIE-ID ::= 69
+id-RICaction-ToBeAddedForModification-Item ProtocolIE-ID ::= 70
+id-RICactionsRemovedForModification-List ProtocolIE-ID ::= 71
+id-RICaction-RemovedForModification-Item ProtocolIE-ID ::= 72
+id-RICactionsFailedToBeRemovedForModification-List ProtocolIE-ID ::= 73
+id-RICaction-FailedToBeRemovedForModification-Item ProtocolIE-ID ::= 74
+id-RICactionsModifiedForModification-List ProtocolIE-ID ::= 75
+id-RICaction-ModifiedForModification-Item ProtocolIE-ID ::= 76
+id-RICactionsFailedToBeModifiedForModification-List ProtocolIE-ID ::= 77
+id-RICaction-FailedToBeModifiedForModification-Item ProtocolIE-ID ::= 78
+id-RICactionsAddedForModification-List ProtocolIE-ID ::= 79
+id-RICaction-AddedForModification-Item ProtocolIE-ID ::= 80
+id-RICactionsFailedToBeAddedForModification-List ProtocolIE-ID ::= 81
+id-RICaction-FailedToBeAddedForModification-Item ProtocolIE-ID ::= 82
+id-RICactionsRequiredToBeModified-List ProtocolIE-ID ::= 83
+id-RICaction-RequiredToBeModified-Item ProtocolIE-ID ::= 84
+id-RICactionsRequiredToBeRemoved-List ProtocolIE-ID ::= 85
+id-RICaction-RequiredToBeRemoved-Item ProtocolIE-ID ::= 86
+id-RICactionsConfirmedForModification-List ProtocolIE-ID ::= 87
+id-RICaction-ConfirmedForModification-Item ProtocolIE-ID ::= 88
+id-RICactionsRefusedToBeModified-List ProtocolIE-ID ::= 89
+id-RICaction-RefusedToBeModified-Item ProtocolIE-ID ::= 90
+id-RICactionsConfirmedForRemoval-List ProtocolIE-ID ::= 91
+id-RICaction-ConfirmedForRemoval-Item ProtocolIE-ID ::= 92
+id-RICactionsRefusedToBeRemoved-List ProtocolIE-ID ::= 93
+id-RICaction-RefusedToBeRemoved-Item ProtocolIE-ID ::= 94
+id-RICqueryHeader ProtocolIE-ID ::= 95
+id-RICqueryDefinition ProtocolIE-ID ::= 96
+id-RICqueryOutcome ProtocolIE-ID ::= 97
+END
+-- ASN1STOP
diff --git a/epan/dissectors/asn1/e2ap/E2AP-Containers.asn b/epan/dissectors/asn1/e2ap/E2AP-Containers.asn
new file mode 100644
index 00000000..11bf4dac
--- /dev/null
+++ b/epan/dissectors/asn1/e2ap/E2AP-Containers.asn
@@ -0,0 +1,130 @@
+-- ASN1START
+-- **************************************************************
+--
+-- Container definitions
+--
+-- derived from 3GPP 38.413 (NGAP)
+-- **************************************************************
+
+E2AP-Containers {
+iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version2 (2) e2ap(1) e2ap-Containers (5) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+-- **************************************************************
+--
+-- IE parameter types from other modules.
+--
+-- **************************************************************
+
+IMPORTS
+
+ Criticality,
+ Presence,
+ ProtocolIE-ID
+FROM E2AP-CommonDataTypes
+
+ maxProtocolIEs
+FROM E2AP-Constants;
+
+-- **************************************************************
+--
+-- Class Definition for Protocol IEs
+--
+-- **************************************************************
+
+E2AP-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
+--
+-- **************************************************************
+
+E2AP-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
+}
+
+
+
+
+-- **************************************************************
+--
+-- Container for Protocol IEs
+--
+-- **************************************************************
+
+ProtocolIE-Container {E2AP-PROTOCOL-IES : IEsSetParam} ::=
+ SEQUENCE (SIZE (0..maxProtocolIEs)) OF
+ ProtocolIE-Field {{IEsSetParam}}
+
+ProtocolIE-SingleContainer {E2AP-PROTOCOL-IES : IEsSetParam} ::=
+ ProtocolIE-Field {{IEsSetParam}}
+
+ProtocolIE-Field {E2AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE {
+ id E2AP-PROTOCOL-IES.&id ({IEsSetParam}),
+ criticality E2AP-PROTOCOL-IES.&criticality ({IEsSetParam}{@id}),
+ value E2AP-PROTOCOL-IES.&Value ({IEsSetParam}{@id})
+}
+
+-- **************************************************************
+--
+-- Container for Protocol IE Pairs
+--
+-- **************************************************************
+
+ProtocolIE-ContainerPair {E2AP-PROTOCOL-IES-PAIR : IEsSetParam} ::=
+ SEQUENCE (SIZE (0..maxProtocolIEs)) OF
+ ProtocolIE-FieldPair {{IEsSetParam}}
+
+ProtocolIE-FieldPair {E2AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= SEQUENCE {
+ id E2AP-PROTOCOL-IES-PAIR.&id ({IEsSetParam}),
+ firstCriticality E2AP-PROTOCOL-IES-PAIR.&firstCriticality ({IEsSetParam}{@id}),
+ firstValue E2AP-PROTOCOL-IES-PAIR.&FirstValue ({IEsSetParam}{@id}),
+ secondCriticality E2AP-PROTOCOL-IES-PAIR.&secondCriticality ({IEsSetParam}{@id}),
+ secondValue E2AP-PROTOCOL-IES-PAIR.&SecondValue ({IEsSetParam}{@id})
+}
+
+-- **************************************************************
+--
+-- Container Lists for Protocol IE Containers
+--
+-- **************************************************************
+
+ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, E2AP-PROTOCOL-IES : IEsSetParam} ::=
+ SEQUENCE (SIZE (lowerBound..upperBound)) OF
+ ProtocolIE-SingleContainer {{IEsSetParam}}
+
+ProtocolIE-ContainerPairList {INTEGER : lowerBound, INTEGER : upperBound, E2AP-PROTOCOL-IES-PAIR : IEsSetParam} ::=
+ SEQUENCE (SIZE (lowerBound..upperBound)) OF
+ ProtocolIE-ContainerPair {{IEsSetParam}}
+
+
+END
+-- ASN1STOP
diff --git a/epan/dissectors/asn1/e2ap/E2AP-IEs.asn b/epan/dissectors/asn1/e2ap/E2AP-IEs.asn
new file mode 100644
index 00000000..52e856d7
--- /dev/null
+++ b/epan/dissectors/asn1/e2ap/E2AP-IEs.asn
@@ -0,0 +1,530 @@
+-- ASN1START
+-- **************************************************************
+-- E2AP
+-- Information Element Definitions
+--
+-- **************************************************************
+
+E2AP-IEs {
+iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version2 (2) e2ap(1) e2ap-IEs (2)}
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+IMPORTS
+ Criticality,
+ Presence,
+ ProcedureCode,
+ ProtocolIE-ID,
+ TriggeringMessage
+FROM E2AP-CommonDataTypes
+
+ maxnoofErrors,
+ maxProtocolIEs
+FROM E2AP-Constants;
+
+-- A
+
+-- **************************************************************
+-- [New for E2AP v02.00] copied from 3GPP 38.413 (NGAP) IEs
+-- **************************************************************
+AMFName ::= PrintableString (SIZE(1..150, ...))
+
+-- B
+-- C
+Cause ::= CHOICE {
+ ricRequest CauseRICrequest,
+ ricService CauseRICservice,
+ e2Node CauseE2node,
+ transport CauseTransport,
+ protocol CauseProtocol,
+ misc CauseMisc,
+ ...
+}
+
+CauseE2node ::= ENUMERATED {
+ e2node-component-unknown,
+ ...
+}
+
+CauseMisc ::= ENUMERATED {
+ control-processing-overload,
+ 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,
+ ...
+}
+
+CauseRICrequest ::= ENUMERATED {
+ ran-function-id-invalid,
+ action-not-supported,
+ excessive-actions,
+ duplicate-action,
+ duplicate-event-trigger,
+ function-resource-limit,
+ request-id-unknown,
+ inconsistent-action-subsequent-action-sequence,
+ control-message-invalid,
+ ric-call-process-id-invalid,
+ control-timer-expired,
+ control-failed-to-execute,
+ system-not-ready,
+ unspecified,
+ ... ,
+ ric-subscription-end-time-expired,
+ ric-subscription-end-time-invalid,
+ duplicate-ric-request-id,
+ eventTriggerNotSupported,
+ requested-information-unavailable,
+ invalid-information-request
+}
+
+CauseRICservice ::= ENUMERATED{
+ ran-function-not-supported,
+ excessive-functions,
+ ric-resource-limit,
+ ...
+}
+CauseTransport ::= ENUMERATED {
+ unspecified,
+ transport-resource-unavailable,
+ ...
+}
+
+-- **************************************************************
+-- copied from 3GPP 38.413 (NGAP) IEs
+-- note: ie-Extensions removed
+-- **************************************************************
+CriticalityDiagnostics ::= SEQUENCE {
+ procedureCode ProcedureCode OPTIONAL,
+ triggeringMessage TriggeringMessage OPTIONAL,
+ procedureCriticality Criticality OPTIONAL,
+ ricRequestorID RICrequestID OPTIONAL,
+ iEsCriticalityDiagnostics CriticalityDiagnostics-IE-List OPTIONAL,
+ ...
+}
+
+CriticalityDiagnostics-IE-List ::= SEQUENCE (SIZE(1..maxnoofErrors)) OF CriticalityDiagnostics-IE-Item
+
+CriticalityDiagnostics-IE-Item ::= SEQUENCE {
+ iECriticality Criticality,
+ iE-ID ProtocolIE-ID,
+ typeOfError TypeOfError,
+ ...
+}
+
+-- D
+-- E
+
+-- Following IE used to carry 3GPP defined SETUP and RAN Configuration messages defined in F1AP, E1AP, XnAP, etc.
+E2nodeComponentConfiguration ::= SEQUENCE{
+ e2nodeComponentRequestPart OCTET STRING,
+ e2nodeComponentResponsePart OCTET STRING,
+ ...
+}
+
+E2nodeComponentConfigurationAck ::= SEQUENCE{
+ updateOutcome ENUMERATED {success, failure, ...},
+ failureCause Cause OPTIONAL,
+ ...
+}
+
+E2nodeComponentInterfaceType ::= ENUMERATED {ng, xn, e1, f1, w1, s1, x2,...}
+
+E2nodeComponentID ::= CHOICE{
+ e2nodeComponentInterfaceTypeNG E2nodeComponentInterfaceNG,
+ e2nodeComponentInterfaceTypeXn E2nodeComponentInterfaceXn,
+ e2nodeComponentInterfaceTypeE1 E2nodeComponentInterfaceE1,
+ e2nodeComponentInterfaceTypeF1 E2nodeComponentInterfaceF1,
+ e2nodeComponentInterfaceTypeW1 E2nodeComponentInterfaceW1,
+ e2nodeComponentInterfaceTypeS1 E2nodeComponentInterfaceS1,
+ e2nodeComponentInterfaceTypeX2 E2nodeComponentInterfaceX2,
+ ...
+}
+
+E2nodeComponentInterfaceE1 ::= SEQUENCE{
+ gNB-CU-UP-ID GNB-CU-UP-ID,
+ ...
+}
+
+E2nodeComponentInterfaceF1 ::= SEQUENCE{
+ gNB-DU-ID GNB-DU-ID,
+ ...
+}
+
+E2nodeComponentInterfaceNG ::= SEQUENCE{
+ amf-name AMFName,
+ ...
+}
+
+E2nodeComponentInterfaceS1 ::= SEQUENCE{
+ mme-name MMEname,
+ ...
+}
+
+E2nodeComponentInterfaceX2 ::= SEQUENCE{
+ global-eNB-ID GlobalENB-ID OPTIONAL,
+ global-en-gNB-ID GlobalenGNB-ID OPTIONAL,
+ ...
+}
+
+E2nodeComponentInterfaceXn ::= SEQUENCE{
+ global-NG-RAN-Node-ID GlobalNG-RANNode-ID,
+ ...
+}
+
+E2nodeComponentInterfaceW1 ::= SEQUENCE{
+ ng-eNB-DU-ID NGENB-DU-ID,
+ ...
+}
+
+-- **************************************************************
+-- copied from 3GPP 36.423 (X2AP) IEs
+-- note: ie-Extensions removed
+-- **************************************************************
+ENB-ID ::= CHOICE {
+ macro-eNB-ID BIT STRING (SIZE (20)),
+ home-eNB-ID BIT STRING (SIZE (28)),
+ ... ,
+ short-Macro-eNB-ID BIT STRING (SIZE(18)),
+ long-Macro-eNB-ID BIT STRING (SIZE(21))
+}
+-- **************************************************************
+-- copied from 3GPP 38.423 (XnAP) IEs
+-- note: choice-extension removed
+-- **************************************************************
+ENB-ID-Choice ::= CHOICE {
+ enb-ID-macro BIT STRING (SIZE(20)),
+ enb-ID-shortmacro BIT STRING (SIZE(18)),
+ enb-ID-longmacro BIT STRING (SIZE(21)),
+ ...
+}
+
+-- **************************************************************
+-- copied from 3GPP 36.423 (X2AP) IEs
+-- note: ie-Extensions removed
+-- Note: to avoid duplicate names with XnAP, GNB-ID renamed ENGNB-ID, GlobalGNB-ID renamed GlobalenGNB-ID
+-- **************************************************************
+ENGNB-ID ::= CHOICE {
+ gNB-ID BIT STRING (SIZE (22..32)),
+ ...
+}
+
+-- F
+-- G
+GlobalE2node-ID ::= CHOICE{
+ gNB GlobalE2node-gNB-ID,
+ en-gNB GlobalE2node-en-gNB-ID,
+ ng-eNB GlobalE2node-ng-eNB-ID,
+ eNB GlobalE2node-eNB-ID,
+ ...
+}
+
+GlobalE2node-en-gNB-ID ::= SEQUENCE{
+ global-en-gNB-ID GlobalenGNB-ID,
+ en-gNB-CU-UP-ID GNB-CU-UP-ID OPTIONAL,
+ en-gNB-DU-ID GNB-DU-ID OPTIONAL,
+ ...
+}
+GlobalE2node-eNB-ID ::= SEQUENCE{
+ global-eNB-ID GlobalENB-ID,
+ ...
+}
+GlobalE2node-gNB-ID ::= SEQUENCE{
+ global-gNB-ID GlobalgNB-ID,
+ global-en-gNB-ID GlobalenGNB-ID OPTIONAL,
+ gNB-CU-UP-ID GNB-CU-UP-ID OPTIONAL,
+ gNB-DU-ID GNB-DU-ID OPTIONAL,
+ ...
+}
+GlobalE2node-ng-eNB-ID ::= SEQUENCE{
+ global-ng-eNB-ID GlobalngeNB-ID,
+ global-eNB-ID GlobalENB-ID OPTIONAL,
+ ngENB-DU-ID NGENB-DU-ID OPTIONAL,
+ ...
+}
+-- **************************************************************
+-- copied from 3GPP 36.423 (X2AP) IEs
+-- note: ie-Extensions removed
+-- **************************************************************
+
+GlobalENB-ID ::= SEQUENCE {
+ pLMN-Identity PLMN-Identity,
+ eNB-ID ENB-ID,
+ ...
+}
+-- **************************************************************
+-- copied from 3GPP 36.423 (X2AP) IEs
+-- Note: to avoid duplicate names with XnAP, GNB-ID renamed ENGNB-ID, GlobalGNB-ID renamed GlobalenGNB-ID
+-- **************************************************************
+GlobalenGNB-ID ::= SEQUENCE {
+ pLMN-Identity PLMN-Identity,
+ gNB-ID ENGNB-ID,
+ ...
+}
+-- **************************************************************
+-- copied from 3GPP 38.423 (XnAP) IEs
+-- note: choice-extension removed
+-- **************************************************************
+GlobalgNB-ID ::= SEQUENCE {
+ plmn-id PLMN-Identity,
+ gnb-id GNB-ID-Choice,
+ ...
+}
+
+
+-- **************************************************************
+-- copied from 3GPP 38.423 (XnAP) IEs
+-- note: choice-extension removed
+-- **************************************************************
+GlobalngeNB-ID ::= SEQUENCE {
+ plmn-id PLMN-Identity,
+ enb-id ENB-ID-Choice,
+ ...
+}
+
+-- **************************************************************
+-- [NEW for E2AP v02.00] copied from 3GPP 38.423 (XnAP) IEs
+-- Note: extension field removed
+-- **************************************************************
+
+GlobalNG-RANNode-ID ::= CHOICE {
+ gNB GlobalgNB-ID,
+ ng-eNB GlobalngeNB-ID,
+ ...
+}
+
+GlobalRIC-ID ::= SEQUENCE{
+ pLMN-Identity PLMN-Identity,
+ ric-ID BIT STRING (SIZE (20)),
+ ...
+}
+
+-- **************************************************************
+-- copied from 3GPP 37.483 (E1AP) IEs
+-- **************************************************************
+GNB-CU-UP-ID::= INTEGER (0..68719476735)
+
+-- **************************************************************
+-- copied from 3GPP 38.473 (F1AP) IEs
+-- **************************************************************
+GNB-DU-ID::= INTEGER (0..68719476735)
+
+-- **************************************************************
+-- copied from 3GPP 38.423 (XnAP) IEs
+-- note: choice-extension removed
+-- **************************************************************
+GNB-ID-Choice ::= CHOICE {
+ gnb-ID BIT STRING (SIZE(22..32)),
+ ...
+}
+-- H
+-- I
+-- J
+-- K
+-- L
+-- M
+
+-- **************************************************************
+-- [New for E2AP v02.00] copied from 3GPP 36.413 (S1AP) IEs
+-- **************************************************************
+MMEname ::= PrintableString (SIZE (1..150,...))
+
+-- N
+
+-- **************************************************************
+-- copied from 3GPP 37.473 (W1AP) IEs
+-- **************************************************************
+NGENB-DU-ID ::= INTEGER (0..68719476735)
+
+
+-- O
+-- P
+-- **************************************************************
+-- copied from 3GPP 36.423 (X2AP) IEs
+-- **************************************************************
+PLMN-Identity ::= OCTET STRING (SIZE(3))
+
+-- Q
+-- R
+-- **************************************************************
+-- Following IE defined in E2SM
+-- **************************************************************
+RANfunctionDefinition ::= OCTET STRING
+
+RANfunctionID ::= INTEGER (0..4095)
+
+RANfunctionOID ::= PrintableString(SIZE(1..1000,...))
+
+RANfunctionRevision ::= INTEGER (0..4095)
+
+-- **************************************************************
+-- Following IE defined in E2SM
+-- **************************************************************
+RICactionDefinition ::= OCTET STRING
+
+-- new in E2AP-v03.00
+RICactionExecutionOrder ::= INTEGER (0..255, ...)
+
+RICactionID ::= INTEGER (0..255)
+
+RICactionType ::= ENUMERATED{
+ report,
+ insert,
+ policy,
+ ...
+}
+
+-- **************************************************************
+-- Following IE defined in E2SM
+-- **************************************************************
+RICcallProcessID ::= OCTET STRING
+
+RICcontrolAckRequest ::= ENUMERATED{
+ noAck,
+ ack,
+ ...
+}
+
+-- **************************************************************
+-- Following IE defined in E2SM
+-- **************************************************************
+RICcontrolHeader ::= OCTET STRING
+
+-- **************************************************************
+-- Following IE defined in E2SM
+-- **************************************************************
+RICcontrolMessage ::= OCTET STRING
+
+-- **************************************************************
+-- Following IE defined in E2SM
+-- **************************************************************
+RICcontrolOutcome ::= OCTET STRING
+
+-- **************************************************************
+-- Following IE defined in E2SM
+-- **************************************************************
+RICeventTriggerDefinition ::= OCTET STRING
+
+-- **************************************************************
+-- Following IE defined in E2SM
+-- **************************************************************
+RICindicationHeader ::= OCTET STRING
+
+-- **************************************************************
+-- Following IE defined in E2SM
+-- **************************************************************
+RICindicationMessage ::= OCTET STRING
+
+RICindicationSN ::= INTEGER (0..65535)
+
+RICindicationType ::= ENUMERATED{
+ report,
+ insert,
+ ...
+}
+
+RICrequestID ::= SEQUENCE {
+ ricRequestorID INTEGER (0..65535),
+ ricInstanceID INTEGER (0..65535),
+ ...
+}
+
+RICsubscriptionTime ::= OCTET STRING (SIZE(8))
+
+RICsubsequentAction ::=SEQUENCE{
+ ricSubsequentActionType RICsubsequentActionType,
+ ricTimeToWait RICtimeToWait,
+ ...
+}
+
+RICsubsequentActionType ::= ENUMERATED{
+ continue,
+ wait,
+ ...
+}
+
+-- **************************************************************
+-- Following IE defined in E2SM
+-- **************************************************************
+RICqueryHeader ::= OCTET STRING
+
+-- **************************************************************
+-- Following IE defined in E2SM
+-- **************************************************************
+RICqueryDefinition ::= OCTET STRING
+
+-- **************************************************************
+-- Following IE defined in E2SM
+-- **************************************************************
+RICqueryOutcome ::= OCTET STRING
+
+
+RICtimeToWait ::= ENUMERATED{
+ w1ms,
+ w2ms,
+ w5ms,
+ w10ms,
+ w20ms,
+ w30ms,
+ w40ms,
+ w50ms,
+ w100ms,
+ w200ms,
+ w500ms,
+ w1s,
+ w2s,
+ w5s,
+ w10s,
+ w20s,
+ w60s,
+ ...
+}
+-- S
+-- T
+-- **************************************************************
+-- copied from 3GPP 38.413 (NGAP) IEs
+-- **************************************************************
+TimeToWait ::= ENUMERATED {v1s, v2s, v5s, v10s, v20s, v60s, ...}
+
+
+TNLinformation ::= SEQUENCE{
+ tnlAddress BIT STRING (SIZE(1..160,...)),
+ tnlPort BIT STRING (SIZE(16)) OPTIONAL,
+ ...
+}
+
+TNLusage ::= ENUMERATED{ric-service, support-function, both, ...}
+
+TransactionID ::= INTEGER (0..255,...)
+
+-- **************************************************************
+-- copied from 3GPP 38.413 (NGAP) IEs
+-- **************************************************************
+TypeOfError ::= ENUMERATED {
+ not-understood,
+ missing,
+ ...
+}
+
+-- U
+-- V
+-- W
+-- X
+-- Y
+-- Z
+
+END
+-- ASN1STOP
diff --git a/epan/dissectors/asn1/e2ap/E2AP-PDU-Contents.asn b/epan/dissectors/asn1/e2ap/E2AP-PDU-Contents.asn
new file mode 100644
index 00000000..bd3b3f8e
--- /dev/null
+++ b/epan/dissectors/asn1/e2ap/E2AP-PDU-Contents.asn
@@ -0,0 +1,1412 @@
+-- ASN1START
+-- **************************************************************
+--
+-- PDU definitions for E2AP
+-- Derived from 3GPP 38.413 (NGAP)
+--
+-- **************************************************************
+
+E2AP-PDU-Contents {
+iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version2 (2) e2ap(1) e2ap-PDU-Contents (1) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+-- **************************************************************
+--
+-- IE parameter types from other modules.
+--
+-- **************************************************************
+
+IMPORTS
+ Cause,
+ CriticalityDiagnostics,
+ E2nodeComponentConfiguration,
+ E2nodeComponentConfigurationAck,
+ E2nodeComponentID,
+ E2nodeComponentInterfaceType,
+ GlobalE2node-ID,
+ GlobalRIC-ID,
+ RANfunctionDefinition,
+ RANfunctionID,
+ RANfunctionOID,
+ RANfunctionRevision,
+ RICactionDefinition,
+ RICactionExecutionOrder,
+ RICactionID,
+ RICactionType,
+ RICcallProcessID,
+ RICcontrolAckRequest,
+ RICcontrolHeader,
+ RICcontrolMessage,
+ RICcontrolOutcome,
+ RICeventTriggerDefinition,
+ RICindicationHeader,
+ RICindicationMessage,
+ RICindicationSN,
+ RICindicationType,
+ RICrequestID,
+ RICsubsequentAction,
+ RICsubscriptionTime,
+ RICqueryHeader,
+ RICqueryDefinition,
+ RICqueryOutcome,
+ TimeToWait,
+ TNLinformation,
+ TNLusage,
+ TransactionID
+FROM E2AP-IEs
+
+ ProtocolIE-Container{},
+ ProtocolIE-ContainerList{},
+ ProtocolIE-SingleContainer{},
+ E2AP-PROTOCOL-IES,
+ E2AP-PROTOCOL-IES-PAIR
+FROM E2AP-Containers
+
+ id-Cause,
+ id-CriticalityDiagnostics,
+ id-E2connectionSetup,
+ id-E2connectionSetupFailed,
+ id-E2connectionSetupFailed-Item,
+ id-E2connectionFailed-Item,
+ id-E2connectionUpdate-Item,
+ id-E2connectionUpdateAdd,
+ id-E2connectionUpdateModify,
+ id-E2connectionUpdateRemove,
+ id-E2connectionUpdateRemove-Item,
+ id-E2nodeComponentConfigAddition,
+ id-E2nodeComponentConfigAddition-Item,
+ id-E2nodeComponentConfigAdditionAck,
+ id-E2nodeComponentConfigAdditionAck-Item,
+ id-E2nodeComponentConfigRemoval,
+ id-E2nodeComponentConfigRemoval-Item,
+ id-E2nodeComponentConfigRemovalAck,
+ id-E2nodeComponentConfigRemovalAck-Item,
+ id-E2nodeComponentConfigUpdate,
+ id-E2nodeComponentConfigUpdate-Item,
+ id-E2nodeComponentConfigUpdateAck,
+ id-E2nodeComponentConfigUpdateAck-Item,
+ id-E2nodeTNLassociationRemoval,
+ id-E2nodeTNLassociationRemoval-Item,
+ id-GlobalE2node-ID,
+ id-GlobalRIC-ID,
+ id-RANfunctionID,
+ id-RANfunctionID-Item,
+ id-RANfunctionIEcause-Item,
+ id-RANfunction-Item,
+ id-RANfunctionsAccepted,
+ id-RANfunctionsAdded,
+ id-RANfunctionsDeleted,
+ id-RANfunctionsModified,
+ id-RANfunctionsRejected,
+ id-RICaction-Admitted-Item,
+ id-RICactionID,
+ id-RICaction-NotAdmitted-Item,
+ id-RICactions-Admitted,
+ id-RICactions-NotAdmitted,
+ id-RICaction-ToBeSetup-Item,
+ id-RICactionsToBeRemovedForModification-List,
+ id-RICaction-ToBeRemovedForModification-Item,
+ id-RICactionsToBeModifiedForModification-List,
+ id-RICaction-ToBeModifiedForModification-Item,
+ id-RICactionsToBeAddedForModification-List,
+ id-RICaction-ToBeAddedForModification-Item,
+ id-RICactionsRemovedForModification-List,
+ id-RICaction-RemovedForModification-Item,
+ id-RICactionsFailedToBeRemovedForModification-List,
+ id-RICaction-FailedToBeRemovedForModification-Item,
+ id-RICactionsModifiedForModification-List,
+ id-RICaction-ModifiedForModification-Item,
+ id-RICactionsFailedToBeModifiedForModification-List,
+ id-RICaction-FailedToBeModifiedForModification-Item,
+ id-RICactionsAddedForModification-List,
+ id-RICaction-AddedForModification-Item,
+ id-RICactionsFailedToBeAddedForModification-List,
+ id-RICaction-FailedToBeAddedForModification-Item,
+ id-RICactionsRequiredToBeModified-List,
+ id-RICaction-RequiredToBeModified-Item,
+ id-RICactionsRequiredToBeRemoved-List,
+ id-RICaction-RequiredToBeRemoved-Item,
+ id-RICactionsConfirmedForModification-List,
+ id-RICaction-ConfirmedForModification-Item,
+ id-RICactionsRefusedToBeModified-List,
+ id-RICaction-RefusedToBeModified-Item,
+ id-RICactionsConfirmedForRemoval-List,
+ id-RICaction-ConfirmedForRemoval-Item,
+ id-RICactionsRefusedToBeRemoved-List,
+ id-RICaction-RefusedToBeRemoved-Item,
+ id-RICcallProcessID,
+ id-RICcontrolAckRequest,
+ id-RICcontrolHeader,
+ id-RICcontrolMessage,
+ id-RICcontrolOutcome,
+ id-RICeventTriggerDefinitionToBeModified,
+ id-RICindicationHeader,
+ id-RICindicationMessage,
+ id-RICindicationSN,
+ id-RICindicationType,
+ id-RICrequestID,
+ id-RICserviceQuery,
+ id-RICsubscriptionDetails,
+ id-RICsubscriptionToBeRemoved,
+ id-RICsubscription-withCause-Item,
+ id-RICsubscriptionStartTime,
+ id-RICsubscriptionEndTime,
+ id-RICqueryHeader,
+ id-RICqueryDefinition,
+ id-RICqueryOutcome,
+ id-TimeToWait,
+ id-TNLinformation,
+ id-TransactionID,
+
+ maxofE2nodeComponents,
+ maxofRANfunctionID,
+ maxofRICactionID,
+ maxofRICrequestID,
+ maxofTNLA
+FROM E2AP-Constants;
+
+
+-- **************************************************************
+--
+-- MESSAGES FOR RIC FUNCTIONAL PROCEDURES
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- RIC Subscription Elementary Procedure
+--
+-- **************************************************************
+-- **************************************************************
+--
+-- RIC SUBSCRIPTION REQUEST
+--
+-- **************************************************************
+RICsubscriptionRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{RICsubscriptionRequest-IEs}},
+ ...
+}
+
+RICsubscriptionRequest-IEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory}|
+ { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory}|
+ { ID id-RICsubscriptionDetails CRITICALITY reject TYPE RICsubscriptionDetails PRESENCE mandatory},
+ ...,
+ { ID id-RICsubscriptionStartTime CRITICALITY reject TYPE RICsubscriptionTime PRESENCE optional}|
+ { ID id-RICsubscriptionEndTime CRITICALITY reject TYPE RICsubscriptionTime PRESENCE optional}
+}
+
+
+RICsubscriptionDetails ::= SEQUENCE {
+ ricEventTriggerDefinition RICeventTriggerDefinition,
+ ricAction-ToBeSetup-List RICactions-ToBeSetup-List,
+ ...
+}
+
+RICactions-ToBeSetup-List ::= SEQUENCE (SIZE(1..maxofRICactionID)) OF ProtocolIE-SingleContainer { {RICaction-ToBeSetup-ItemIEs} }
+
+RICaction-ToBeSetup-ItemIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICaction-ToBeSetup-Item CRITICALITY ignore TYPE RICaction-ToBeSetup-Item PRESENCE mandatory },
+ ...
+}
+
+RICaction-ToBeSetup-Item ::= SEQUENCE {
+ ricActionID RICactionID,
+ ricActionType RICactionType,
+ ricActionDefinition RICactionDefinition OPTIONAL,
+ ricSubsequentAction RICsubsequentAction OPTIONAL,
+ ...,
+ ricActionExecutionOrder RICactionExecutionOrder OPTIONAL -- New in E2APv03.00
+
+}
+
+-- **************************************************************
+--
+-- RIC SUBSCRIPTION RESPONSE
+--
+-- **************************************************************
+RICsubscriptionResponse ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container{{RICsubscriptionResponse-IEs}},
+ ...
+}
+
+RICsubscriptionResponse-IEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory } |
+ { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory } |
+ { ID id-RICactions-Admitted CRITICALITY reject TYPE RICaction-Admitted-List PRESENCE mandatory } |
+ { ID id-RICactions-NotAdmitted CRITICALITY reject TYPE RICaction-NotAdmitted-List PRESENCE optional },
+ ...
+}
+
+
+
+RICaction-Admitted-List ::= SEQUENCE (SIZE(1..maxofRICactionID)) OF ProtocolIE-SingleContainer{{RICaction-Admitted-ItemIEs}}
+
+RICaction-Admitted-ItemIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICaction-Admitted-Item CRITICALITY ignore TYPE RICaction-Admitted-Item PRESENCE mandatory },
+ ...
+}
+
+RICaction-Admitted-Item ::= SEQUENCE {
+ ricActionID RICactionID,
+ ...
+}
+
+RICaction-NotAdmitted-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer { {RICaction-NotAdmitted-ItemIEs} }
+
+RICaction-NotAdmitted-ItemIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICaction-NotAdmitted-Item CRITICALITY ignore TYPE RICaction-NotAdmitted-Item PRESENCE mandatory },
+ ...
+}
+
+RICaction-NotAdmitted-Item ::= SEQUENCE {
+ ricActionID RICactionID,
+ cause Cause,
+ ...
+}
+
+-- **************************************************************
+--
+-- RIC SUBSCRIPTION FAILURE
+--
+-- **************************************************************
+RICsubscriptionFailure ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{RICsubscriptionFailure-IEs}},
+ ...
+}
+
+RICsubscriptionFailure-IEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }|
+ { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }|
+ { ID id-Cause CRITICALITY reject TYPE Cause PRESENCE mandatory }|
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- RIC Subscription Delete Elementary Procedure
+--
+-- **************************************************************
+-- **************************************************************
+--
+-- RIC SUBSCRIPTION DELETE REQUEST
+--
+-- **************************************************************
+RICsubscriptionDeleteRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{RICsubscriptionDeleteRequest-IEs}},
+ ...
+}
+
+RICsubscriptionDeleteRequest-IEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }|
+ { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory },
+ ...
+}
+
+-- **************************************************************
+--
+-- RIC SUBSCRIPTION DELETE RESPONSE
+--
+-- **************************************************************
+RICsubscriptionDeleteResponse ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{RICsubscriptionDeleteResponse-IEs}},
+ ...
+}
+
+RICsubscriptionDeleteResponse-IEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }|
+ { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory },
+ ...
+}
+-- **************************************************************
+--
+-- RIC SUBSCRIPTION DELETE FAILURE
+--
+-- **************************************************************
+RICsubscriptionDeleteFailure ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{RICsubscriptionDeleteFailure-IEs}},
+ ...
+}
+
+RICsubscriptionDeleteFailure-IEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }|
+ { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }|
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }|
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- RIC Subscription Delete Required Elementary Procedure
+--
+-- **************************************************************
+-- **************************************************************
+--
+-- RIC SUBSCRIPTION DELETE REQUIRED
+--
+-- **************************************************************
+
+RICsubscriptionDeleteRequired ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{RICsubscriptionDeleteRequired-IEs}},
+ ...
+}
+
+RICsubscriptionDeleteRequired-IEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICsubscriptionToBeRemoved CRITICALITY ignore TYPE RICsubscription-List-withCause PRESENCE mandatory },
+ ...
+}
+
+RICsubscription-List-withCause ::= SEQUENCE (SIZE(1..maxofRICrequestID)) OF ProtocolIE-SingleContainer { {RICsubscription-withCause-ItemIEs} }
+
+RICsubscription-withCause-ItemIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICsubscription-withCause-Item CRITICALITY ignore TYPE RICsubscription-withCause-Item PRESENCE mandatory },
+ ...
+}
+
+RICsubscription-withCause-Item ::= SEQUENCE {
+ ricRequestID RICrequestID,
+ ranFunctionID RANfunctionID,
+ cause Cause,
+ ...
+}
+
+-- **************************************************************
+--
+-- RIC Subscription Modification Elementary Procedure
+--
+-- **************************************************************
+-- **************************************************************
+--
+-- RIC SUBSCRIPTION MODIFICATION REQUEST
+--
+-- **************************************************************
+RICsubscriptionModificationRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{RICsubscriptionModificationRequest-IEs}},
+ ...
+}
+
+RICsubscriptionModificationRequest-IEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory}|
+ { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory}|
+ { ID id-RICeventTriggerDefinitionToBeModified CRITICALITY ignore TYPE RICeventTriggerDefinition PRESENCE optional}|
+ { ID id-RICactionsToBeRemovedForModification-List CRITICALITY ignore TYPE RICactions-ToBeRemovedForModification-List PRESENCE optional}|
+ { ID id-RICactionsToBeModifiedForModification-List CRITICALITY ignore TYPE RICactions-ToBeModifiedForModification-List PRESENCE optional}|
+ { ID id-RICactionsToBeAddedForModification-List CRITICALITY ignore TYPE RICactions-ToBeAddedForModification-List PRESENCE optional},
+ ...
+}
+
+RICactions-ToBeRemovedForModification-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer {{RICaction-ToBeRemovedForModification-ItemIEs} }
+
+RICaction-ToBeRemovedForModification-ItemIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICaction-ToBeRemovedForModification-Item CRITICALITY ignore TYPE RICaction-ToBeRemovedForModification-Item PRESENCE mandatory },
+ ...
+}
+
+RICaction-ToBeRemovedForModification-Item ::= SEQUENCE {
+ ricActionID RICactionID,
+ ...
+}
+
+RICactions-ToBeModifiedForModification-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer {{RICaction-ToBeModifiedForModification-ItemIEs} }
+
+RICaction-ToBeModifiedForModification-ItemIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICaction-ToBeModifiedForModification-Item CRITICALITY ignore TYPE RICaction-ToBeModifiedForModification-Item PRESENCE mandatory },
+ ...
+}
+
+RICaction-ToBeModifiedForModification-Item ::= SEQUENCE {
+ ricActionID RICactionID,
+ ricActionDefinition RICactionDefinition OPTIONAL,
+ ricActionExecutionOrder RICactionExecutionOrder OPTIONAL,
+ ricSubsequentAction RICsubsequentAction OPTIONAL,
+ ...
+}
+
+
+RICactions-ToBeAddedForModification-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer {{RICaction-ToBeAddedForModification-ItemIEs} }
+
+RICaction-ToBeAddedForModification-ItemIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICaction-ToBeAddedForModification-Item CRITICALITY ignore TYPE RICaction-ToBeAddedForModification-Item PRESENCE mandatory },
+ ...
+}
+
+RICaction-ToBeAddedForModification-Item ::= SEQUENCE {
+ ricActionID RICactionID,
+ ricActionType RICactionType,
+ ricActionDefinition RICactionDefinition,
+ ricActionExecutionOrder RICactionExecutionOrder,
+ ricSubsequentAction RICsubsequentAction OPTIONAL,
+ ...
+}
+-- **************************************************************
+--
+-- RIC SUBSCRIPTION MODIFICATION RESPONSE
+--
+-- **************************************************************
+RICsubscriptionModificationResponse ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{RICsubscriptionModificationResponse-IEs}},
+ ...
+}
+
+RICsubscriptionModificationResponse-IEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory}|
+ { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory}|
+ { ID id-RICactionsRemovedForModification-List CRITICALITY ignore TYPE RICactions-RemovedForModification-List PRESENCE optional}|
+ { ID id-RICactionsFailedToBeRemovedForModification-List CRITICALITY ignore TYPE RICactions-FailedToBeRemovedForModification-List PRESENCE optional}|
+ { ID id-RICactionsModifiedForModification-List CRITICALITY ignore TYPE RICactions-ModifiedForModification-List PRESENCE optional}|
+ { ID id-RICactionsFailedToBeModifiedForModification-List CRITICALITY ignore TYPE RICactions-FailedToBeModifiedForModification-List PRESENCE optional}|
+ { ID id-RICactionsAddedForModification-List CRITICALITY ignore TYPE RICactions-AddedForModification-List PRESENCE optional}|
+ { ID id-RICactionsFailedToBeAddedForModification-List CRITICALITY ignore TYPE RICactions-FailedToBeAddedForModification-List PRESENCE optional},
+ ...
+}
+
+RICactions-RemovedForModification-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer {{RICaction-RemovedForModification-ItemIEs} }
+
+RICaction-RemovedForModification-ItemIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICaction-RemovedForModification-Item CRITICALITY ignore TYPE RICaction-RemovedForModification-Item PRESENCE mandatory },
+ ...
+}
+
+RICaction-RemovedForModification-Item ::= SEQUENCE {
+ ricActionID RICactionID,
+ ...
+}
+RICactions-FailedToBeRemovedForModification-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer {{RICaction-FailedToBeRemovedForModification-ItemIEs} }
+
+RICaction-FailedToBeRemovedForModification-ItemIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICaction-FailedToBeRemovedForModification-Item CRITICALITY ignore TYPE RICaction-FailedToBeRemovedForModification-Item PRESENCE mandatory },
+ ...
+}
+
+RICaction-FailedToBeRemovedForModification-Item ::= SEQUENCE {
+ ricActionID RICactionID,
+ cause Cause,
+ ...
+}
+
+RICactions-ModifiedForModification-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer {{RICaction-ModifiedForModification-ItemIEs} }
+
+RICaction-ModifiedForModification-ItemIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICaction-ModifiedForModification-Item CRITICALITY ignore TYPE RICaction-ModifiedForModification-Item PRESENCE mandatory },
+ ...
+}
+
+RICaction-ModifiedForModification-Item ::= SEQUENCE {
+ ricActionID RICactionID,
+ ...
+}
+
+RICactions-FailedToBeModifiedForModification-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer {{RICaction-FailedToBeModifiedForModification-ItemIEs} }
+
+RICaction-FailedToBeModifiedForModification-ItemIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICaction-FailedToBeModifiedForModification-Item CRITICALITY ignore TYPE RICaction-FailedToBeModifiedForModification-Item PRESENCE mandatory },
+ ...
+}
+
+RICaction-FailedToBeModifiedForModification-Item ::= SEQUENCE {
+ ricActionID RICactionID,
+ cause Cause,
+ ...
+}
+
+RICactions-AddedForModification-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer {{RICaction-AddedForModification-ItemIEs} }
+
+RICaction-AddedForModification-ItemIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICaction-AddedForModification-Item CRITICALITY ignore TYPE RICaction-AddedForModification-Item PRESENCE mandatory },
+ ...
+}
+
+RICaction-AddedForModification-Item ::= SEQUENCE {
+ ricActionID RICactionID,
+ ...
+}
+
+RICactions-FailedToBeAddedForModification-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer {{RICaction-FailedToBeAddedForModification-ItemIEs} }
+
+RICaction-FailedToBeAddedForModification-ItemIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICaction-FailedToBeAddedForModification-Item CRITICALITY ignore TYPE RICaction-FailedToBeAddedForModification-Item PRESENCE mandatory },
+ ...
+}
+
+RICaction-FailedToBeAddedForModification-Item ::= SEQUENCE {
+ ricActionID RICactionID,
+ cause Cause,
+ ...
+}
+
+-- **************************************************************
+--
+-- RIC SUBSCRIPTION MODIFICATION FAILURE
+--
+-- **************************************************************
+RICsubscriptionModificationFailure ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{RICsubscriptionModificationFailure-IEs}},
+ ...
+}
+
+RICsubscriptionModificationFailure-IEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory}|
+ { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory}|
+ { ID id-Cause CRITICALITY reject TYPE Cause PRESENCE mandatory}|
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional},
+ ...
+}
+
+-- **************************************************************
+--
+-- RIC Subscription Modification Required Elementary Procedure
+--
+-- **************************************************************
+-- **************************************************************
+--
+-- RIC SUBSCRIPTION MODIFICATION REQUIRED
+--
+-- **************************************************************
+RICsubscriptionModificationRequired ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{RICsubscriptionModificationRequired-IEs}},
+ ...
+}
+
+RICsubscriptionModificationRequired-IEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory}|
+ { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory}|
+ { ID id-RICactionsRequiredToBeModified-List CRITICALITY ignore TYPE RICactions-RequiredToBeModified-List PRESENCE optional}|
+ { ID id-RICactionsRequiredToBeRemoved-List CRITICALITY ignore TYPE RICactions-RequiredToBeRemoved-List PRESENCE optional},
+ ...
+}
+
+RICactions-RequiredToBeModified-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer {{RICaction-RequiredToBeModified-ItemIEs} }
+
+RICaction-RequiredToBeModified-ItemIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICaction-RequiredToBeModified-Item CRITICALITY ignore TYPE RICaction-RequiredToBeModified-Item PRESENCE mandatory },
+ ...
+}
+
+RICaction-RequiredToBeModified-Item ::= SEQUENCE {
+ ricActionID RICactionID,
+ ricTimeToWait RICtimeToWait,
+ ...
+}
+
+RICactions-RequiredToBeRemoved-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer {{RICaction-RequiredToBeRemoved-ItemIEs} }
+
+RICaction-RequiredToBeRemoved-ItemIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICaction-RequiredToBeRemoved-Item CRITICALITY ignore TYPE RICaction-RequiredToBeRemoved-Item PRESENCE mandatory },
+ ...
+}
+
+RICaction-RequiredToBeRemoved-Item ::= SEQUENCE {
+ ricActionID RICactionID,
+ cause Cause,
+ ...
+}
+
+-- **************************************************************
+--
+-- RIC SUBSCRIPTION MODIFICATION CONFIRM
+--
+-- **************************************************************
+RICsubscriptionModificationConfirm ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{RICsubscriptionModificationConfirm-IEs}},
+ ...
+}
+
+RICsubscriptionModificationConfirm-IEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory}|
+ { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory}|
+ { ID id-RICactionsConfirmedForModification-List CRITICALITY ignore TYPE RICactions-ConfirmedForModification-List PRESENCE optional}|
+ { ID id-RICactionsRefusedToBeModified-List CRITICALITY ignore TYPE RICactions-RefusedToBeModified-List PRESENCE optional}|
+ { ID id-RICactionsConfirmedForRemoval-List CRITICALITY ignore TYPE RICactions-ConfirmedForRemoval-List PRESENCE optional}|
+ { ID id-RICactionsRefusedToBeRemoved-List CRITICALITY ignore TYPE RICactions-RefusedToBeRemoved-List PRESENCE optional},
+ ...
+}
+
+RICactions-ConfirmedForModification-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer {{RICaction-ConfirmedForModification-ItemIEs} }
+
+RICaction-ConfirmedForModification-ItemIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICaction-ConfirmedForModification-Item CRITICALITY ignore TYPE RICaction-ConfirmedForModification-Item PRESENCE mandatory },
+ ...
+}
+
+RICaction-ConfirmedForModification-Item ::= SEQUENCE {
+ ricActionID RICactionID,
+ ...
+}
+RICactions-RefusedToBeModified-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer {{RICaction-RefusedToBeModified-ItemIEs} }
+
+RICaction-RefusedToBeModified-ItemIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICaction-RefusedToBeModified-Item CRITICALITY ignore TYPE RICaction-RefusedToBeModified-Item PRESENCE mandatory },
+ ...
+}
+
+RICaction-RefusedToBeModified-Item ::= SEQUENCE {
+ ricActionID RICactionID,
+ cause Cause,
+ ...
+}
+
+RICactions-ConfirmedForRemoval-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer {{RICaction-ConfirmedForRemoval-ItemIEs} }
+
+RICaction-ConfirmedForRemoval-ItemIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICaction-ConfirmedForRemoval-Item CRITICALITY ignore TYPE RICaction-ConfirmedForRemoval-Item PRESENCE mandatory },
+ ...
+}
+
+RICaction-ConfirmedForRemoval-Item ::= SEQUENCE {
+ ricActionID RICactionID,
+ ...
+}
+
+RICactions-RefusedToBeRemoved-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer {{RICaction-RefusedToBeRemoved-ItemIEs} }
+
+RICaction-RefusedToBeRemoved-ItemIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICaction-RefusedToBeRemoved-Item CRITICALITY ignore TYPE RICaction-RefusedToBeRemoved-Item PRESENCE mandatory },
+ ...
+}
+
+RICaction-RefusedToBeRemoved-Item ::= SEQUENCE {
+ ricActionID RICactionID,
+ cause Cause,
+ ...
+}
+
+-- **************************************************************
+--
+-- RIC SUBSCRIPTION MODIFICATION REFUSE
+--
+-- **************************************************************
+RICsubscriptionModificationRefuse ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{RICsubscriptionModificationRefuse-IEs}},
+ ...
+}
+
+
+RICsubscriptionModificationRefuse-IEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory}|
+ { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory}|
+ { ID id-Cause CRITICALITY reject TYPE Cause PRESENCE mandatory}|
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional},
+ ...
+}
+
+
+-- **************************************************************
+--
+-- RIC Indication Elementary Procedure
+--
+-- **************************************************************
+-- **************************************************************
+--
+-- RIC INDICATION
+--
+-- **************************************************************
+RICindication ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{RICindication-IEs}},
+ ...
+}
+
+RICindication-IEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }|
+ { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }|
+ { ID id-RICactionID CRITICALITY reject TYPE RICactionID PRESENCE mandatory }|
+ { ID id-RICindicationSN CRITICALITY reject TYPE RICindicationSN PRESENCE optional }|
+ { ID id-RICindicationType CRITICALITY reject TYPE RICindicationType PRESENCE mandatory }|
+ { ID id-RICindicationHeader CRITICALITY reject TYPE RICindicationHeader PRESENCE mandatory }|
+ { ID id-RICindicationMessage CRITICALITY reject TYPE RICindicationMessage PRESENCE mandatory }|
+ { ID id-RICcallProcessID CRITICALITY reject TYPE RICcallProcessID PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- RIC Control Elementary Procedure
+--
+-- **************************************************************
+-- **************************************************************
+--
+-- RIC CONTROL REQUEST
+--
+-- **************************************************************
+RICcontrolRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{RICcontrolRequest-IEs}},
+ ...
+}
+
+RICcontrolRequest-IEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }|
+ { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }|
+ { ID id-RICcallProcessID CRITICALITY reject TYPE RICcallProcessID PRESENCE optional }|
+ { ID id-RICcontrolHeader CRITICALITY reject TYPE RICcontrolHeader PRESENCE mandatory }|
+ { ID id-RICcontrolMessage CRITICALITY reject TYPE RICcontrolMessage PRESENCE mandatory }|
+ { ID id-RICcontrolAckRequest CRITICALITY reject TYPE RICcontrolAckRequest PRESENCE optional },
+ ...
+}
+-- **************************************************************
+--
+-- RIC CONTROL ACKNOWLEDGE
+--
+-- **************************************************************
+RICcontrolAcknowledge ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{RICcontrolAcknowledge-IEs}},
+ ...
+}
+
+RICcontrolAcknowledge-IEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }|
+ { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }|
+ { ID id-RICcallProcessID CRITICALITY reject TYPE RICcallProcessID PRESENCE optional }|
+ { ID id-RICcontrolOutcome CRITICALITY reject TYPE RICcontrolOutcome PRESENCE optional },
+ ...
+}
+-- **************************************************************
+--
+-- RIC CONTROL FAILURE
+--
+-- **************************************************************
+RICcontrolFailure ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{RICcontrolFailure-IEs}},
+ ...
+}
+
+RICcontrolFailure-IEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }|
+ { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }|
+ { ID id-RICcallProcessID CRITICALITY reject TYPE RICcallProcessID PRESENCE optional }|
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }|
+ { ID id-RICcontrolOutcome CRITICALITY reject TYPE RICcontrolOutcome PRESENCE optional },
+ ...,
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }
+}
+
+-- **************************************************************
+--
+-- RIC QUERY Elementary Procedure
+--
+-- **************************************************************
+-- **************************************************************
+--
+-- RIC QUERY REQUEST
+--
+-- **************************************************************
+RICQueryRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{RICQueryRequest-IEs}},
+ ...
+}
+
+RICQueryRequest-IEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }|
+ { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }|
+ { ID id-RICqueryHeader CRITICALITY reject TYPE RICqueryHeader PRESENCE mandatory }|
+ { ID id-RICqueryDefinition CRITICALITY reject TYPE RICqueryDefinition PRESENCE mandatory },
+ ...
+}
+
+-- **************************************************************
+--
+-- RIC QUERY RESPONSE
+--
+-- **************************************************************
+RICQueryResponse ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{RICQueryResponse-IEs}},
+ ...
+}
+
+RICQueryResponse-IEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }|
+ { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }|
+ { ID id-RICqueryOutcome CRITICALITY reject TYPE RICqueryOutcome PRESENCE mandatory },
+ ...
+}
+-- **************************************************************
+--
+-- RIC QUERY FAILURE
+--
+-- **************************************************************
+RICQueryFailure ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{RICQueryFailure-IEs}},
+ ...
+}
+
+RICQueryFailure-IEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }|
+ { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }|
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }|
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- MESSAGES FOR GLOBAL PROCEDURES
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Error Indication Elementary Procedure
+--
+-- **************************************************************
+-- **************************************************************
+--
+-- ERROR INDICATION
+--
+-- **************************************************************
+ErrorIndication ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{ErrorIndication-IEs}},
+ ...
+}
+
+ErrorIndication-IEs E2AP-PROTOCOL-IES ::= {
+ { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE optional }|
+ { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE optional }|
+ { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE optional }|
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE optional }|
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- E2 Setup Elementary Procedure
+--
+-- **************************************************************
+-- **************************************************************
+--
+-- E2 SETUP REQUEST
+--
+-- **************************************************************
+
+E2setupRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {E2setupRequestIEs} },
+ ...
+}
+
+E2setupRequestIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }|
+ { ID id-GlobalE2node-ID CRITICALITY reject TYPE GlobalE2node-ID PRESENCE mandatory }|
+ { ID id-RANfunctionsAdded CRITICALITY reject TYPE RANfunctions-List PRESENCE mandatory }|
+ { ID id-E2nodeComponentConfigAddition CRITICALITY reject TYPE E2nodeComponentConfigAddition-List PRESENCE mandatory },
+ ...
+}
+
+-- **************************************************************
+--
+-- E2 SETUP RESPONSE
+--
+-- **************************************************************
+
+E2setupResponse ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {E2setupResponseIEs} },
+ ...
+}
+
+E2setupResponseIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }|
+ { ID id-GlobalRIC-ID CRITICALITY reject TYPE GlobalRIC-ID PRESENCE mandatory }|
+ { ID id-RANfunctionsAccepted CRITICALITY reject TYPE RANfunctionsID-List PRESENCE optional }|
+ { ID id-RANfunctionsRejected CRITICALITY reject TYPE RANfunctionsIDcause-List PRESENCE optional }|
+ { ID id-E2nodeComponentConfigAdditionAck CRITICALITY reject TYPE E2nodeComponentConfigAdditionAck-List PRESENCE mandatory },
+ ...
+}
+
+-- **************************************************************
+--
+-- E2 SETUP FAILURE
+--
+-- **************************************************************
+
+E2setupFailure ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {E2setupFailureIEs} },
+ ...
+}
+
+E2setupFailureIEs E2AP-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 }|
+ { ID id-TNLinformation CRITICALITY ignore TYPE TNLinformation PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- E2 Connection Update Elementary Procedure
+--
+-- **************************************************************
+-- **************************************************************
+--
+-- E2 CONNECTION UPDATE
+--
+-- **************************************************************
+E2connectionUpdate ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{E2connectionUpdate-IEs}},
+ ...
+}
+
+E2connectionUpdate-IEs E2AP-PROTOCOL-IES ::= {
+ { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }|
+ { ID id-E2connectionUpdateAdd CRITICALITY reject TYPE E2connectionUpdate-List PRESENCE optional }|
+ { ID id-E2connectionUpdateRemove CRITICALITY reject TYPE E2connectionUpdateRemove-List PRESENCE optional }|
+ { ID id-E2connectionUpdateModify CRITICALITY reject TYPE E2connectionUpdate-List PRESENCE optional },
+ ...
+}
+
+E2connectionUpdate-List ::= SEQUENCE (SIZE(1..maxofTNLA)) OF ProtocolIE-SingleContainer { {E2connectionUpdate-ItemIEs} }
+
+E2connectionUpdate-ItemIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-E2connectionUpdate-Item CRITICALITY ignore TYPE E2connectionUpdate-Item PRESENCE mandatory },
+ ...
+}
+
+E2connectionUpdate-Item ::= SEQUENCE {
+ tnlInformation TNLinformation,
+ tnlUsage TNLusage,
+ ...
+}
+
+E2connectionUpdateRemove-List ::= SEQUENCE (SIZE(1..maxofTNLA)) OF ProtocolIE-SingleContainer { {E2connectionUpdateRemove-ItemIEs} }
+
+E2connectionUpdateRemove-ItemIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-E2connectionUpdateRemove-Item CRITICALITY ignore TYPE E2connectionUpdateRemove-Item PRESENCE mandatory },
+ ...
+}
+
+E2connectionUpdateRemove-Item ::= SEQUENCE {
+ tnlInformation TNLinformation,
+ ...
+}
+
+
+
+-- **************************************************************
+--
+-- E2 CONNECTION UPDATE ACKNOWLEDGE
+--
+-- **************************************************************
+E2connectionUpdateAcknowledge ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{E2connectionUpdateAck-IEs}},
+ ...
+}
+
+E2connectionUpdateAck-IEs E2AP-PROTOCOL-IES ::= {
+ { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }|
+ { ID id-E2connectionSetup CRITICALITY reject TYPE E2connectionUpdate-List PRESENCE optional }|
+ { ID id-E2connectionSetupFailed CRITICALITY reject TYPE E2connectionSetupFailed-List PRESENCE optional },
+ ...
+}
+
+E2connectionSetupFailed-List ::= SEQUENCE (SIZE(1..maxofTNLA)) OF ProtocolIE-SingleContainer { {E2connectionSetupFailed-ItemIEs} }
+
+E2connectionSetupFailed-ItemIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-E2connectionSetupFailed-Item CRITICALITY ignore TYPE E2connectionSetupFailed-Item PRESENCE mandatory },
+ ...
+}
+
+E2connectionSetupFailed-Item ::= SEQUENCE {
+ tnlInformation TNLinformation,
+ cause Cause,
+ ...
+}
+
+-- **************************************************************
+--
+-- E2 CONNECTION UPDATE FAILURE
+--
+-- **************************************************************
+E2connectionUpdateFailure ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{E2connectionUpdateFailure-IEs}},
+ ...
+}
+
+E2connectionUpdateFailure-IEs E2AP-PROTOCOL-IES ::= {
+ { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }|
+ { ID id-Cause CRITICALITY reject TYPE Cause PRESENCE optional }|
+ { ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional }|
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- E2 Node Configuration Update Elementary Procedure
+--
+-- **************************************************************
+-- **************************************************************
+--
+-- E2 NODE CONFIGURATION UPDATE
+--
+-- **************************************************************
+E2nodeConfigurationUpdate ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{E2nodeConfigurationUpdate-IEs}},
+ ...
+}
+
+E2nodeConfigurationUpdate-IEs E2AP-PROTOCOL-IES ::= {
+ { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }|
+ { ID id-GlobalE2node-ID CRITICALITY reject TYPE GlobalE2node-ID PRESENCE optional }|
+ { ID id-E2nodeComponentConfigAddition CRITICALITY reject TYPE E2nodeComponentConfigAddition-List PRESENCE optional }|
+ { ID id-E2nodeComponentConfigUpdate CRITICALITY reject TYPE E2nodeComponentConfigUpdate-List PRESENCE optional }|
+ { ID id-E2nodeComponentConfigRemoval CRITICALITY reject TYPE E2nodeComponentConfigRemoval-List PRESENCE optional }|
+ { ID id-E2nodeTNLassociationRemoval CRITICALITY reject TYPE E2nodeTNLassociationRemoval-List PRESENCE optional },
+ ...
+}
+
+E2nodeComponentConfigAddition-List ::= SEQUENCE (SIZE(1..maxofE2nodeComponents)) OF ProtocolIE-SingleContainer { {E2nodeComponentConfigAddition-ItemIEs} }
+
+E2nodeComponentConfigAddition-ItemIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-E2nodeComponentConfigAddition-Item CRITICALITY reject TYPE E2nodeComponentConfigAddition-Item PRESENCE mandatory },
+ ...
+}
+
+E2nodeComponentConfigAddition-Item ::= SEQUENCE {
+ e2nodeComponentInterfaceType E2nodeComponentInterfaceType,
+ e2nodeComponentID E2nodeComponentID,
+ e2nodeComponentConfiguration E2nodeComponentConfiguration,
+ ...
+}
+
+E2nodeComponentConfigUpdate-List ::= SEQUENCE (SIZE(1..maxofE2nodeComponents)) OF ProtocolIE-SingleContainer { {E2nodeComponentConfigUpdate-ItemIEs} }
+
+E2nodeComponentConfigUpdate-ItemIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-E2nodeComponentConfigUpdate-Item CRITICALITY reject TYPE E2nodeComponentConfigUpdate-Item PRESENCE mandatory },
+ ...
+}
+
+E2nodeComponentConfigUpdate-Item ::= SEQUENCE {
+ e2nodeComponentInterfaceType E2nodeComponentInterfaceType,
+ e2nodeComponentID E2nodeComponentID,
+ e2nodeComponentConfiguration E2nodeComponentConfiguration,
+ ...
+}
+
+E2nodeComponentConfigRemoval-List ::= SEQUENCE (SIZE(1..maxofE2nodeComponents)) OF ProtocolIE-SingleContainer { {E2nodeComponentConfigRemoval-ItemIEs} }
+
+E2nodeComponentConfigRemoval-ItemIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-E2nodeComponentConfigRemoval-Item CRITICALITY reject TYPE E2nodeComponentConfigRemoval-Item PRESENCE mandatory },
+ ...
+}
+
+E2nodeComponentConfigRemoval-Item ::= SEQUENCE {
+ e2nodeComponentInterfaceType E2nodeComponentInterfaceType,
+ e2nodeComponentID E2nodeComponentID,
+ ...
+}
+
+E2nodeTNLassociationRemoval-List ::= SEQUENCE (SIZE(1..maxofTNLA)) OF ProtocolIE-SingleContainer { {E2nodeTNLassociationRemoval-ItemIEs} }
+
+E2nodeTNLassociationRemoval-ItemIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-E2nodeTNLassociationRemoval-Item CRITICALITY reject TYPE E2nodeTNLassociationRemoval-Item PRESENCE mandatory },
+ ...
+}
+
+E2nodeTNLassociationRemoval-Item ::= SEQUENCE {
+ tnlInformation TNLinformation,
+ tnlInformationRIC TNLinformation,
+ ...
+}
+
+-- **************************************************************
+--
+-- E2 NODE CONFIGURATION UPDATE ACKNOWLEDGE
+--
+-- **************************************************************
+E2nodeConfigurationUpdateAcknowledge ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{E2nodeConfigurationUpdateAcknowledge-IEs}},
+ ...
+}
+
+E2nodeConfigurationUpdateAcknowledge-IEs E2AP-PROTOCOL-IES ::= {
+ { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }|
+ { ID id-E2nodeComponentConfigAdditionAck CRITICALITY reject TYPE E2nodeComponentConfigAdditionAck-List PRESENCE optional }|
+ { ID id-E2nodeComponentConfigUpdateAck CRITICALITY reject TYPE E2nodeComponentConfigUpdateAck-List PRESENCE optional }|
+ { ID id-E2nodeComponentConfigRemovalAck CRITICALITY reject TYPE E2nodeComponentConfigRemovalAck-List PRESENCE optional },
+ ...
+}
+
+E2nodeComponentConfigAdditionAck-List ::= SEQUENCE (SIZE(1..maxofE2nodeComponents)) OF ProtocolIE-SingleContainer { {E2nodeComponentConfigAdditionAck-ItemIEs} }
+
+E2nodeComponentConfigAdditionAck-ItemIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-E2nodeComponentConfigAdditionAck-Item CRITICALITY reject TYPE E2nodeComponentConfigAdditionAck-Item PRESENCE mandatory },
+ ...
+}
+
+E2nodeComponentConfigAdditionAck-Item ::= SEQUENCE {
+ e2nodeComponentInterfaceType E2nodeComponentInterfaceType,
+ e2nodeComponentID E2nodeComponentID,
+ e2nodeComponentConfigurationAck E2nodeComponentConfigurationAck,
+ ...
+}
+
+E2nodeComponentConfigUpdateAck-List ::= SEQUENCE (SIZE(1..maxofE2nodeComponents)) OF ProtocolIE-SingleContainer { {E2nodeComponentConfigUpdateAck-ItemIEs} }
+
+E2nodeComponentConfigUpdateAck-ItemIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-E2nodeComponentConfigUpdateAck-Item CRITICALITY reject TYPE E2nodeComponentConfigUpdateAck-Item PRESENCE mandatory },
+ ...
+}
+
+E2nodeComponentConfigUpdateAck-Item ::= SEQUENCE {
+ e2nodeComponentInterfaceType E2nodeComponentInterfaceType,
+ e2nodeComponentID E2nodeComponentID,
+ e2nodeComponentConfigurationAck E2nodeComponentConfigurationAck,
+ ...
+}
+
+E2nodeComponentConfigRemovalAck-List ::= SEQUENCE (SIZE(1..maxofE2nodeComponents)) OF ProtocolIE-SingleContainer { {E2nodeComponentConfigRemovalAck-ItemIEs} }
+
+E2nodeComponentConfigRemovalAck-ItemIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-E2nodeComponentConfigRemovalAck-Item CRITICALITY reject TYPE E2nodeComponentConfigRemovalAck-Item PRESENCE mandatory },
+ ...
+}
+
+E2nodeComponentConfigRemovalAck-Item ::= SEQUENCE {
+ e2nodeComponentInterfaceType E2nodeComponentInterfaceType,
+ e2nodeComponentID E2nodeComponentID,
+ e2nodeComponentConfigurationAck E2nodeComponentConfigurationAck,
+ ...
+}
+
+-- **************************************************************
+--
+-- E2 NODE CONFIGURATION UPDATE FAILURE
+--
+-- **************************************************************
+E2nodeConfigurationUpdateFailure ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{E2nodeConfigurationUpdateFailure-IEs}},
+ ...
+}
+
+E2nodeConfigurationUpdateFailure-IEs E2AP-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 },
+ ...
+}
+
+-- **************************************************************
+--
+-- Reset Elementary Procedure
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- RESET REQUEST
+--
+-- **************************************************************
+
+ResetRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {ResetRequestIEs} },
+ ...
+}
+
+ResetRequestIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }|
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory },
+ ...
+}
+
+-- **************************************************************
+--
+-- RESET RESPONSE
+--
+-- **************************************************************
+
+ResetResponse ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {ResetResponseIEs} },
+ ...
+}
+
+ResetResponseIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }|
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- RIC Service Update Elementary Procedure
+--
+-- **************************************************************
+-- **************************************************************
+--
+-- RIC SERVICE UPDATE
+--
+-- **************************************************************
+RICserviceUpdate ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{RICserviceUpdate-IEs}},
+ ...
+}
+
+RICserviceUpdate-IEs E2AP-PROTOCOL-IES ::= {
+ { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }|
+ { ID id-RANfunctionsAdded CRITICALITY reject TYPE RANfunctions-List PRESENCE optional }|
+ { ID id-RANfunctionsModified CRITICALITY reject TYPE RANfunctions-List PRESENCE optional }|
+ { ID id-RANfunctionsDeleted CRITICALITY reject TYPE RANfunctionsID-List PRESENCE optional },
+ ...
+}
+
+RANfunctions-List ::= SEQUENCE (SIZE(1..maxofRANfunctionID)) OF ProtocolIE-SingleContainer { {RANfunction-ItemIEs} }
+
+RANfunction-ItemIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RANfunction-Item CRITICALITY ignore TYPE RANfunction-Item PRESENCE mandatory },
+ ...
+}
+
+
+RANfunction-Item ::= SEQUENCE {
+ ranFunctionID RANfunctionID,
+ ranFunctionDefinition RANfunctionDefinition,
+ ranFunctionRevision RANfunctionRevision,
+ ranFunctionOID RANfunctionOID,
+ ...
+}
+
+RANfunctionsID-List ::= SEQUENCE (SIZE(1..maxofRANfunctionID)) OF ProtocolIE-SingleContainer{{RANfunctionID-ItemIEs}}
+
+RANfunctionID-ItemIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RANfunctionID-Item CRITICALITY ignore TYPE RANfunctionID-Item PRESENCE mandatory },
+ ...
+}
+
+RANfunctionID-Item ::= SEQUENCE {
+ ranFunctionID RANfunctionID,
+ ranFunctionRevision RANfunctionRevision,
+ ...
+}
+
+-- **************************************************************
+--
+-- RIC SERVICE UPDATE ACKNOWLEDGE
+--
+-- **************************************************************
+RICserviceUpdateAcknowledge ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{RICserviceUpdateAcknowledge-IEs}},
+ ...
+}
+
+RICserviceUpdateAcknowledge-IEs E2AP-PROTOCOL-IES ::= {
+ { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }|
+ { ID id-RANfunctionsAccepted CRITICALITY reject TYPE RANfunctionsID-List PRESENCE optional }|
+ { ID id-RANfunctionsRejected CRITICALITY reject TYPE RANfunctionsIDcause-List PRESENCE optional },
+ ...
+}
+
+RANfunctionsIDcause-List ::= SEQUENCE (SIZE(1..maxofRANfunctionID)) OF ProtocolIE-SingleContainer { {RANfunctionIDcause-ItemIEs} }
+
+RANfunctionIDcause-ItemIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-RANfunctionIEcause-Item CRITICALITY ignore TYPE RANfunctionIDcause-Item PRESENCE mandatory },
+ ...
+}
+
+
+RANfunctionIDcause-Item ::= SEQUENCE {
+ ranFunctionID RANfunctionID,
+ cause Cause,
+ ...
+}
+
+
+-- **************************************************************
+--
+-- RIC SERVICE UPDATE FAILURE
+--
+-- **************************************************************
+RICserviceUpdateFailure ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{RICserviceUpdateFailure-IEs}},
+ ...
+}
+
+RICserviceUpdateFailure-IEs E2AP-PROTOCOL-IES ::= {
+ { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }|
+ { ID id-Cause CRITICALITY reject TYPE Cause PRESENCE mandatory }|
+ { ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional }|
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- RIC Service Query Elementary Procedure
+--
+-- **************************************************************
+-- **************************************************************
+--
+-- RIC SERVICE QUERY
+--
+-- **************************************************************
+RICserviceQuery ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container {{RICserviceQuery-IEs}},
+ ...
+}
+
+RICserviceQuery-IEs E2AP-PROTOCOL-IES ::= {
+ { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }|
+ { ID id-RANfunctionsAccepted CRITICALITY reject TYPE RANfunctionsID-List PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- E2 Removal Elementary Procedure
+--
+-- **************************************************************
+-- **************************************************************
+--
+-- E2 REMOVAL REQUEST
+--
+-- **************************************************************
+
+E2RemovalRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {E2RemovalRequestIEs} },
+ ...
+}
+
+E2RemovalRequestIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory },
+ ...
+}
+
+-- **************************************************************
+--
+-- E2 REMOVAL RESPONSE
+--
+-- **************************************************************
+
+E2RemovalResponse ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {E2RemovalResponseIEs} },
+ ...
+}
+
+E2RemovalResponseIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }|
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- E2 REMOVAL FAILURE
+--
+-- **************************************************************
+
+E2RemovalFailure ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {E2RemovalFailureIEs} },
+ ...
+}
+
+E2RemovalFailureIEs E2AP-PROTOCOL-IES ::= {
+ { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }|
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }|
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+END
+-- ASN1STOP
diff --git a/epan/dissectors/asn1/e2ap/E2AP-PDU-Descriptions.asn b/epan/dissectors/asn1/e2ap/E2AP-PDU-Descriptions.asn
new file mode 100644
index 00000000..3a1a3035
--- /dev/null
+++ b/epan/dissectors/asn1/e2ap/E2AP-PDU-Descriptions.asn
@@ -0,0 +1,304 @@
+-- ASN1START
+-- **************************************************************
+--
+-- Elementary Procedure definitions
+-- Derived from 3GPP 38.413 v15.4.0 NGAP
+-- **************************************************************
+
+E2AP-PDU-Descriptions {
+iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version2 (2) e2ap(1) e2ap-PDU-Descriptions (0) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+-- **************************************************************
+--
+-- IE parameter types from other modules.
+--
+-- **************************************************************
+
+IMPORTS
+ Criticality,
+ ProcedureCode
+FROM E2AP-CommonDataTypes
+
+
+
+ E2connectionUpdate,
+ E2connectionUpdateAcknowledge,
+ E2connectionUpdateFailure,
+ E2nodeConfigurationUpdate,
+ E2nodeConfigurationUpdateAcknowledge,
+ E2nodeConfigurationUpdateFailure,
+ E2RemovalRequest,
+ E2RemovalResponse,
+ E2RemovalFailure,
+ E2setupFailure,
+ E2setupRequest,
+ E2setupResponse,
+ ErrorIndication,
+ ResetRequest,
+ ResetResponse,
+ RICcontrolAcknowledge,
+ RICcontrolFailure,
+ RICcontrolRequest,
+ RICindication,
+ RICserviceQuery,
+ RICserviceUpdate,
+ RICserviceUpdateAcknowledge,
+ RICserviceUpdateFailure,
+ RICsubscriptionFailure,
+ RICsubscriptionRequest,
+ RICsubscriptionResponse,
+ RICsubscriptionDeleteFailure,
+ RICsubscriptionDeleteRequest,
+ RICsubscriptionDeleteResponse,
+ RICsubscriptionDeleteRequired,
+ RICsubscriptionModificationRequest,
+ RICsubscriptionModificationResponse,
+ RICsubscriptionModificationFailure,
+ RICsubscriptionModificationRequired,
+ RICsubscriptionModificationConfirm,
+ RICsubscriptionModificationRefuse,
+ RICqueryRequest,
+ RICqueryResponse,
+ RICqueryFailure
+FROM E2AP-PDU-Contents
+
+ id-E2connectionUpdate,
+ id-E2nodeConfigurationUpdate,
+ id-E2removal,
+ id-E2setup,
+ id-ErrorIndication,
+ id-Reset,
+ id-RICcontrol,
+ id-RICindication,
+ id-RICserviceQuery,
+ id-RICserviceUpdate,
+ id-RICsubscription,
+ id-RICsubscriptionDelete,
+ id-RICsubscriptionDeleteRequired,
+ id-RICsubscriptionModification,
+ id-RICsubscriptionModificationRequired,
+ id-RICquery
+FROM E2AP-Constants;
+
+-- **************************************************************
+--
+-- Interface Elementary Procedure Class
+--
+-- **************************************************************
+
+E2AP-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
+--
+-- **************************************************************
+
+E2AP-PDU ::= CHOICE {
+ initiatingMessage InitiatingMessage,
+ successfulOutcome SuccessfulOutcome,
+ unsuccessfulOutcome UnsuccessfulOutcome,
+ ...
+}
+
+InitiatingMessage ::= SEQUENCE {
+ procedureCode E2AP-ELEMENTARY-PROCEDURE.&procedureCode ({E2AP-ELEMENTARY-PROCEDURES}),
+ criticality E2AP-ELEMENTARY-PROCEDURE.&criticality ({E2AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
+ value E2AP-ELEMENTARY-PROCEDURE.&InitiatingMessage ({E2AP-ELEMENTARY-PROCEDURES}{@procedureCode})
+}
+
+SuccessfulOutcome ::= SEQUENCE {
+ procedureCode E2AP-ELEMENTARY-PROCEDURE.&procedureCode ({E2AP-ELEMENTARY-PROCEDURES}),
+ criticality E2AP-ELEMENTARY-PROCEDURE.&criticality ({E2AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
+ value E2AP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({E2AP-ELEMENTARY-PROCEDURES}{@procedureCode})
+}
+
+UnsuccessfulOutcome ::= SEQUENCE {
+ procedureCode E2AP-ELEMENTARY-PROCEDURE.&procedureCode ({E2AP-ELEMENTARY-PROCEDURES}),
+ criticality E2AP-ELEMENTARY-PROCEDURE.&criticality ({E2AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
+ value E2AP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({E2AP-ELEMENTARY-PROCEDURES}{@procedureCode})
+}
+
+-- **************************************************************
+--
+-- Interface Elementary Procedure List
+--
+-- **************************************************************
+
+E2AP-ELEMENTARY-PROCEDURES E2AP-ELEMENTARY-PROCEDURE ::= {
+ E2AP-ELEMENTARY-PROCEDURES-CLASS-1 |
+ E2AP-ELEMENTARY-PROCEDURES-CLASS-2,
+ ...
+}
+
+E2AP-ELEMENTARY-PROCEDURES-CLASS-1 E2AP-ELEMENTARY-PROCEDURE ::= {
+ ricSubscription |
+ ricSubscriptionDelete |
+ ricSubscriptionModification |
+ ricSubscriptionModificationRequired |
+ ricQuery |
+ ricServiceUpdate |
+ ricControl |
+ e2setup |
+ e2nodeConfigurationUpdate |
+ e2connectionUpdate |
+ reset |
+ e2removal,
+ ...
+}
+
+E2AP-ELEMENTARY-PROCEDURES-CLASS-2 E2AP-ELEMENTARY-PROCEDURE ::= {
+ ricIndication |
+ ricServiceQuery |
+ errorIndication |
+ ricSubscriptionDeleteRequired,
+ ...
+}
+
+-- **************************************************************
+--
+-- Interface Elementary Procedures
+--
+-- **************************************************************
+
+-- New for v01.01
+e2connectionUpdate E2AP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE E2connectionUpdate
+ SUCCESSFUL OUTCOME E2connectionUpdateAcknowledge
+ UNSUCCESSFUL OUTCOME E2connectionUpdateFailure
+ PROCEDURE CODE id-E2connectionUpdate
+ CRITICALITY reject
+}
+
+e2nodeConfigurationUpdate E2AP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE E2nodeConfigurationUpdate
+ SUCCESSFUL OUTCOME E2nodeConfigurationUpdateAcknowledge
+ UNSUCCESSFUL OUTCOME E2nodeConfigurationUpdateFailure
+ PROCEDURE CODE id-E2nodeConfigurationUpdate
+ CRITICALITY reject
+}
+
+-- New for v02.01
+e2removal E2AP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE E2RemovalRequest
+ SUCCESSFUL OUTCOME E2RemovalResponse
+ UNSUCCESSFUL OUTCOME E2RemovalFailure
+ PROCEDURE CODE id-E2removal
+ CRITICALITY reject
+}
+
+e2setup E2AP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE E2setupRequest
+ SUCCESSFUL OUTCOME E2setupResponse
+ UNSUCCESSFUL OUTCOME E2setupFailure
+ PROCEDURE CODE id-E2setup
+ CRITICALITY reject
+}
+
+errorIndication E2AP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE ErrorIndication
+ PROCEDURE CODE id-ErrorIndication
+ CRITICALITY ignore
+}
+
+reset E2AP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE ResetRequest
+ SUCCESSFUL OUTCOME ResetResponse
+ PROCEDURE CODE id-Reset
+ CRITICALITY reject
+}
+
+ricControl E2AP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE RICcontrolRequest
+ SUCCESSFUL OUTCOME RICcontrolAcknowledge
+ UNSUCCESSFUL OUTCOME RICcontrolFailure
+ PROCEDURE CODE id-RICcontrol
+ CRITICALITY reject
+}
+
+ricIndication E2AP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE RICindication
+ PROCEDURE CODE id-RICindication
+ CRITICALITY ignore
+}
+
+ricServiceQuery E2AP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE RICserviceQuery
+ PROCEDURE CODE id-RICserviceQuery
+ CRITICALITY ignore
+}
+
+ricServiceUpdate E2AP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE RICserviceUpdate
+ SUCCESSFUL OUTCOME RICserviceUpdateAcknowledge
+ UNSUCCESSFUL OUTCOME RICserviceUpdateFailure
+ PROCEDURE CODE id-RICserviceUpdate
+ CRITICALITY reject
+}
+
+ricSubscription E2AP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE RICsubscriptionRequest
+ SUCCESSFUL OUTCOME RICsubscriptionResponse
+ UNSUCCESSFUL OUTCOME RICsubscriptionFailure
+ PROCEDURE CODE id-RICsubscription
+ CRITICALITY reject
+}
+
+ricSubscriptionDelete E2AP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE RICsubscriptionDeleteRequest
+ SUCCESSFUL OUTCOME RICsubscriptionDeleteResponse
+ UNSUCCESSFUL OUTCOME RICsubscriptionDeleteFailure
+ PROCEDURE CODE id-RICsubscriptionDelete
+ CRITICALITY reject
+}
+
+ricSubscriptionDeleteRequired E2AP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE RICsubscriptionDeleteRequired
+ PROCEDURE CODE id-RICsubscriptionDeleteRequired
+ CRITICALITY ignore
+}
+
+ricSubscriptionModification E2AP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE RICsubscriptionModificationRequest
+ SUCCESSFUL OUTCOME RICsubscriptionModificationResponse
+ UNSUCCESSFUL OUTCOME RICsubscriptionModificationFailure
+ PROCEDURE CODE id-RICsubscriptionModification
+ CRITICALITY reject
+}
+
+ricSubscriptionModificationRequired E2AP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE RICsubscriptionModificationRequired
+ SUCCESSFUL OUTCOME RICsubscriptionModificationConfirm
+ UNSUCCESSFUL OUTCOME RICsubscriptionModificationRefuse
+ PROCEDURE CODE id-RICsubscriptionModificationRequired
+ CRITICALITY reject
+}
+
+ricQuery E2AP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE RICQueryRequest
+ SUCCESSFUL OUTCOME RICQueryResponse
+ UNSUCCESSFUL OUTCOME RICQueryFailure
+ PROCEDURE CODE id-RICquery
+ CRITICALITY reject
+}
+
+END
+-- ASN1STOP
diff --git a/epan/dissectors/asn1/e2ap/e2ap.cnf b/epan/dissectors/asn1/e2ap/e2ap.cnf
new file mode 100644
index 00000000..dc37391d
--- /dev/null
+++ b/epan/dissectors/asn1/e2ap/e2ap.cnf
@@ -0,0 +1,917 @@
+# e2ap.cnf
+# e2ap conformation file
+
+#.OPT
+PER
+ALIGNED
+#.END
+
+#.USE_VALS_EXT
+ProcedureCode
+ProtocolIE-ID
+NI-ProtocolIE-ID
+
+#.EXPORTS ONLY_VALS WS_DLL
+
+#.EXPORTS
+
+#.PDU
+E2AP-PDU
+
+E2SM-KPM-EventTriggerDefinition
+E2SM-KPM-ActionDefinition
+E2SM-KPM-IndicationHeader
+E2SM-KPM-IndicationMessage
+E2SM-KPM-RANfunction-Description
+
+E2SM-RC-EventTrigger
+E2SM-RC-ActionDefinition
+E2SM-RC-RANFunctionDefinition
+E2SM-RC-IndicationMessage
+E2SM-RC-IndicationHeader
+E2SM-RC-CallProcessID
+E2SM-RC-ControlHeader
+E2SM-RC-ControlMessage
+E2SM-RC-ControlOutcome
+# New for v3
+# E2SM-RC-QueryOutcome
+# E2SM-RC-QueryDefinition
+# E2SM-RC-QueryHeader
+
+
+E2SM-NI-EventTriggerDefinition
+E2SM-NI-ActionDefinition
+E2SM-NI-RANfunction-Description
+E2SM-NI-IndicationMessage
+E2SM-NI-IndicationHeader
+E2SM-NI-CallProcessID
+E2SM-NI-ControlHeader
+E2SM-NI-ControlMessage
+E2SM-NI-ControlOutcome
+
+
+#.MAKE_ENUM
+ProcedureCode
+ProtocolIE-ID
+
+
+#.NO_EMIT
+
+#.OMIT_ASSIGNMENT
+# Get rid of unused code warnings
+ProtocolIE-FieldPair
+ProtocolIE-ContainerList
+ProtocolIE-ContainerPair
+ProtocolIE-ContainerPairList
+Presence
+FreqBandNrItem
+IndexToRFSP
+EN-GNB-ID
+SubscriberProfileIDforRFP
+QoSID
+GroupID
+CoreCPID
+
+#.END
+
+
+#.TYPE_ATTR
+#E2SM-KPM-IndicationMessage DISPLAY=BASE_DEC STRINGS=VALS(e2ap_E2SM_KPM_IndicationMessage_vals)
+#E2SM-KPM-IndicationHeader DISPLAY=BASE_DEC STRINGS=VALS(e2ap_E2SM_KPM_IndicationHeader_vals)
+
+#.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
+
+#GlobalGNB-ID/gNB-ID globalGNB-ID_gNB-ID
+
+
+#.FIELD_ATTR
+#GlobalGNB-ID/gNB-ID ABBREV=globalGNB_ID.gNB_ID
+
+#.FN_BODY ProtocolIE-ID VAL_PTR=&e2ap_data->protocol_ie_id
+ struct e2ap_private_data *e2ap_data = e2ap_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(e2ap_data->protocol_ie_id, &e2ap_ProtocolIE_ID_vals_ext, "unknown (%d)"));
+ }
+#.END
+
+
+# TODO: probably not worth it
+# #.FN_BODY E2AP-PDU VAL_PTR=&value
+# guint32 value;
+# %(DEFAULT_BODY)s
+# col_append_fstr(actx->pinfo->cinfo, COL_INFO, " (%%s)", val_to_str(value, e2ap_E2AP_PDU_vals, "Unknown"));
+
+
+
+#.FN_PARS ProtocolIE-Field/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolIEFieldValue
+# Currently not used
+# FN_PARS ProtocolIE-FieldPair/firstValue FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolIEFieldPairFirstValue
+# FN_PARS ProtocolIE-FieldPair/secondValue FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolIEFieldPairSecondValue
+
+
+#.FN_BODY ProcedureCode VAL_PTR = &e2ap_data->procedure_code
+ struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo);
+%(DEFAULT_BODY)s
+ //col_append_fstr(actx->pinfo->cinfo, COL_INFO, "%%s", val_to_str(e2ap_data->procedure_code, e2ap_ProcedureCode_vals, "Unknown"));
+#.END
+
+
+
+#.FN_PARS InitiatingMessage/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_InitiatingMessageValue
+#.FN_HDR InitiatingMessage/value
+ struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo);
+ e2ap_data->message_type = INITIATING_MESSAGE;
+#.FN_PARS SuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_SuccessfulOutcomeValue
+#.FN_HDR SuccessfulOutcome/value
+ struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo);
+ e2ap_data->message_type = SUCCESSFUL_OUTCOME;
+#.FN_PARS UnsuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_UnsuccessfulOutcomeValue
+#.FN_HDR UnsuccessfulOutcome/value
+ struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo);
+ e2ap_data->message_type = UNSUCCESSFUL_OUTCOME;
+
+#--- Parameterization is not supported in asn2wrs ---
+
+#ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, e2ap-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, e2ap-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
+
+#PduSessionResource-IE-ContainerList { e2ap-PROTOCOL-IES : IEsSetParam } ::= ProtocolIE-ContainerList { 1, maxnoofPduSessionResources, {IEsSetParam} }
+# FN_BODY PduSessionResource-IE-ContainerList
+# asn1_stack_frame_push(%(ACTX)s, "ProtocolIE-ContainerList");
+# asn1_param_push_integer(%(ACTX)s, 1);
+# asn1_param_push_integer(%(ACTX)s, maxnoofE_RABs);
+# %(DEFAULT_BODY)s
+# asn1_stack_frame_pop(%(ACTX)s, "ProtocolIE-ContainerList");
+# END
+
+# PduSessionResource-IE-ContainerPairList { e2ap-PROTOCOL-IES-PAIR : IEsSetParam } ::= ProtocolIE-ContainerPairList { 1, maxnoofPduSessionResources, {IEsSetParam} }
+# Currently not used
+# FN_BODY SAEB-IE-ContainerPairList
+# asn1_stack_frame_push(%(ACTX)s, "ProtocolIE-ContainerPairList");
+# asn1_param_push_integer(%(ACTX)s, 1);
+# asn1_param_push_integer(%(ACTX)s, maxnoofE_RABs);
+#%(DEFAULT_BODY)s
+# asn1_stack_frame_pop(%(ACTX)s, "ProtocolIE-ContainerPairList");
+# END
+
+# Currently not used
+# ProtocolError-IE-ContainerList { e2ap-PROTOCOL-IES : IEsSetParam } ::= ProtocolIE-ContainerList { 1, maxnoofPduSessionResources, {IEsSetParam} }
+# FN_BODY ProtocolError-IE-ContainerList
+# asn1_stack_frame_push(%(ACTX)s, "ProtocolIE-ContainerList");
+# asn1_param_push_integer(%(ACTX)s, 1);
+# asn1_param_push_integer(%(ACTX)s, maxnoofE_RABs);
+#%(DEFAULT_BODY)s
+# asn1_stack_frame_pop(%(ACTX)s, "ProtocolIE-ContainerList");
+# END
+
+# .FN_HDR PrivateIE-ID
+# struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo);
+# e2ap_data->obj_id = NULL;
+
+# FN_BODY PrivateIE-ID/global FN_VARIANT = _str VAL_PTR = &e2ap_data->obj_id
+# struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo);
+# %(DEFAULT_BODY)s
+
+# FN_BODY PrivateIE-Field/value
+# struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo);
+# if (e2ap_data->obj_id) {
+# offset = call_per_oid_callback(e2ap_data->obj_id, tvb, actx->pinfo, tree, offset, actx, hf_index);
+# } else {
+# %(DEFAULT_BODY)s
+# }
+
+
+
+
+# #.FN_BODY E2AP-Message VAL_PTR = &parameter_tvb
+# tvbuff_t *parameter_tvb;
+# proto_tree *subtree;
+#%(DEFAULT_BODY)s
+# if (!parameter_tvb)
+# return offset;
+
+# subtree = proto_item_add_subtree(actx->created_item, ett_e2ap_e2ap_Message);
+# col_set_fence(actx->pinfo->cinfo, COL_INFO);
+# call_dissector(e2ap_handle, parameter_tvb, actx->pinfo, subtree);
+
+#.FN_BODY E2SM-KPM-IndicationHeader-Format1/colletStartTime
+ int ts_offset = offset;
+ %(DEFAULT_BODY)s
+ /* Add as a generated field the timestamp decoded */
+ const char *time_str = tvb_ntp_fmt_ts_sec(tvb, (ts_offset+7)/8);
+ proto_item *ti = proto_tree_add_string(tree, hf_e2ap_timestamp_string, tvb, (ts_offset+7)/8, 4, time_str);
+ proto_item_set_generated(ti);
+
+
+# ################################################################################
+# Calling in-depth definitions of E2AP OCTET STRING fields.
+
+#.FN_BODY RANfunctionDefinition VAL_PTR = &parameter_tvb
+ tvbuff_t *parameter_tvb;
+
+ /* We know that the next thing is a RANFunction-Name, but it's wrapped up in a sequence,
+ so can't silently/hiddenly call ranFunctionName here... */
+
+ %(DEFAULT_BODY)s
+
+ /* Looking for shortName string near beginning of tvb */
+ gboolean found = FALSE;
+ /* For each RAN function name.. */
+ for (int n=KPM_RANFUNCTIONS; n<MAX_RANFUNCTIONS && !found; n++) {
+ guint32 tvb_len = tvb_captured_length(parameter_tvb);
+ guint name_len = (gint)strlen(g_ran_function_name_table[n]);
+ /* For each of several byte positions.. */
+ for (int m=0; (m<30) && ((m+name_len+1))<tvb_len; m++) {
+ /* Have we found a match on the name? */
+ if (tvb_strneql(parameter_tvb, m, g_ran_function_name_table[n], name_len) == 0) {
+ /* TODO: we don't yet know the OID (hopefully won't make a difference for this message though...),
+ so for now just call with the first/only available dissector for this RAN Function name */
+ if (g_ran_functions_available_dissectors[n].num_available_dissectors) {
+ g_ran_functions_available_dissectors[n].ran_function_dissectors[0]->functions.ran_function_definition_dissector(parameter_tvb, actx->pinfo, tree, NULL);
+ found = TRUE;
+ break;
+ }
+ }
+ }
+ }
+ if (!found) {
+ proto_item *ti = proto_tree_add_item(tree, hf_e2ap_ran_function_name_not_recognised, tvb, 0, 0, ENC_NA);
+ expert_add_info_format(actx->pinfo, ti, &ei_e2ap_ran_function_names_no_match,
+ "ShortName does not match any known Service Model");
+ }
+
+#.FN_BODY RANfunction-Name/ranFunction-ShortName VAL_PTR=&value_tvb
+ tvbuff_t *value_tvb;
+%(DEFAULT_BODY)s
+ if (!actx->pinfo->fd->visited) {
+ /* N.B. too early to work out exact dissector, as don't have OID yet */
+ e2ap_store_ran_function_mapping(actx->pinfo, tree, value_tvb,
+ tvb_get_string_enc(wmem_packet_scope(), value_tvb, 0, tvb_captured_length(value_tvb), ENC_ASCII));
+ }
+
+
+#.FN_BODY RANfunction-Name/ranFunction-E2SM-OID VAL_PTR = &parameter_tvb
+ tvbuff_t *parameter_tvb;
+ %(DEFAULT_BODY)s
+ e2ap_update_ran_function_mapping(actx->pinfo, tree, parameter_tvb,
+ tvb_get_string_enc(actx->pinfo->pool, parameter_tvb, 0,
+ tvb_captured_length(parameter_tvb), ENC_ASCII));
+
+
+#.FN_BODY RICcontrolHeader VAL_PTR = &parameter_tvb
+ tvbuff_t *parameter_tvb;
+ %(DEFAULT_BODY)s
+ ran_function_dissector_t* dissector = lookup_ranfunction_dissector(actx->pinfo, tree, parameter_tvb);
+ if (dissector) {
+ if (dissector->functions.ric_control_header_dissector) {
+ dissector->functions.ric_control_header_dissector(parameter_tvb, actx->pinfo, tree, NULL);
+ }
+ }
+
+#.FN_BODY RICcontrolMessage VAL_PTR = &parameter_tvb
+ tvbuff_t *parameter_tvb;
+ %(DEFAULT_BODY)s
+ ran_function_dissector_t* dissector = lookup_ranfunction_dissector(actx->pinfo, tree, parameter_tvb);
+ if (dissector) {
+ if (dissector->functions.ric_control_message_dissector) {
+ dissector->functions.ric_control_message_dissector(parameter_tvb, actx->pinfo, tree, NULL);
+ }
+ }
+
+#.FN_BODY RICcontrolOutcome VAL_PTR = &parameter_tvb
+ tvbuff_t *parameter_tvb;
+ %(DEFAULT_BODY)s
+ ran_function_dissector_t* dissector = lookup_ranfunction_dissector(actx->pinfo, tree, parameter_tvb);
+ if (dissector) {
+ if (dissector->functions.ric_control_outcome_dissector) {
+ dissector->functions.ric_control_outcome_dissector(parameter_tvb, actx->pinfo, tree, NULL);
+ }
+ }
+
+#.FN_BODY RICqueryOutcome VAL_PTR = &parameter_tvb
+ tvbuff_t *parameter_tvb;
+ %(DEFAULT_BODY)s
+ ran_function_dissector_t* dissector = lookup_ranfunction_dissector(actx->pinfo, tree, parameter_tvb);
+ if (dissector) {
+ if (dissector->functions.ric_query_outcome_dissector) {
+ dissector->functions.ric_query_outcome_dissector(parameter_tvb, actx->pinfo, tree, NULL);
+ }
+ }
+
+#.FN_BODY RICqueryDefinition VAL_PTR = &parameter_tvb
+ tvbuff_t *parameter_tvb;
+ %(DEFAULT_BODY)s
+ ran_function_dissector_t* dissector = lookup_ranfunction_dissector(actx->pinfo, tree, parameter_tvb);
+ if (dissector) {
+ if (dissector->functions.ric_query_definition_dissector) {
+ dissector->functions.ric_query_definition_dissector(parameter_tvb, actx->pinfo, tree, NULL);
+ }
+ }
+
+#.FN_BODY RICqueryHeader VAL_PTR = &parameter_tvb
+ tvbuff_t *parameter_tvb;
+ %(DEFAULT_BODY)s
+ ran_function_dissector_t* dissector = lookup_ranfunction_dissector(actx->pinfo, tree, parameter_tvb);
+ if (dissector) {
+ if (dissector->functions.ric_query_header_dissector) {
+ dissector->functions.ric_query_header_dissector(parameter_tvb, actx->pinfo, tree, NULL);
+ }
+ }
+
+
+
+#.FN_BODY RICeventTriggerDefinition VAL_PTR = &parameter_tvb
+ tvbuff_t *parameter_tvb;
+ %(DEFAULT_BODY)s
+ ran_function_dissector_t* dissector = lookup_ranfunction_dissector(actx->pinfo, tree, parameter_tvb);
+ if (dissector) {
+ if (dissector->functions.ran_event_trigger_dissector) {
+ dissector->functions.ran_event_trigger_dissector(parameter_tvb, actx->pinfo, tree, NULL);
+ }
+ }
+
+#.FN_BODY RICactionDefinition VAL_PTR = &parameter_tvb
+ tvbuff_t *parameter_tvb;
+ %(DEFAULT_BODY)s
+ ran_function_dissector_t* dissector = lookup_ranfunction_dissector(actx->pinfo, tree, parameter_tvb);
+ if (dissector) {
+ if (dissector->functions.ran_action_definition_dissector) {
+ dissector->functions.ran_action_definition_dissector(parameter_tvb, actx->pinfo, tree, NULL);
+ }
+ }
+
+#.FN_BODY RICindicationHeader VAL_PTR = &parameter_tvb
+ tvbuff_t *parameter_tvb;
+ %(DEFAULT_BODY)s
+ ran_function_dissector_t* dissector = lookup_ranfunction_dissector(actx->pinfo, tree, parameter_tvb);
+ if (dissector) {
+ if (dissector->functions.ran_indication_header_dissector) {
+ dissector->functions.ran_indication_header_dissector(parameter_tvb, actx->pinfo, tree, NULL);
+ }
+ }
+
+#.FN_BODY RICindicationMessage VAL_PTR = &parameter_tvb
+ tvbuff_t *parameter_tvb;
+ %(DEFAULT_BODY)s
+ ran_function_dissector_t* dissector = lookup_ranfunction_dissector(actx->pinfo, tree, parameter_tvb);
+ if (dissector) {
+ if (dissector->functions.ran_indication_message_dissector) {
+ dissector->functions.ran_indication_message_dissector(parameter_tvb, actx->pinfo, tree, NULL);
+ }
+ }
+
+#.FN_BODY RICcallProcessID VAL_PTR = &parameter_tvb
+ tvbuff_t *parameter_tvb;
+ %(DEFAULT_BODY)s
+ ran_function_dissector_t* dissector = lookup_ranfunction_dissector(actx->pinfo, tree, parameter_tvb);
+ if (dissector) {
+ if (dissector->functions.ran_callprocessid_dissector) {
+ dissector->functions.ran_callprocessid_dissector(parameter_tvb, actx->pinfo, tree, NULL);
+ }
+ }
+# ################################################################################
+
+
+
+#.ASSIGN_VALUE_TO_TYPE # e2ap does not have constants assigned to types, they are pure INTEGER
+# ProcedureCode
+
+id-E2setup ProcedureCode
+id-ErrorIndication ProcedureCode
+id-Reset ProcedureCode
+id-RICcontrol ProcedureCode
+id-RICindication ProcedureCode
+id-RICserviceQuery ProcedureCode
+id-RICserviceUpdate ProcedureCode
+id-RICsubscription ProcedureCode
+id-RICsubscriptionDelete ProcedureCode
+id-E2nodeConfigurationUpdate ProcedureCode
+id-E2connectionUpdate ProcedureCode
+id-RICsubscriptionDeleteRequired ProcedureCode
+id-E2removal ProcedureCode
+# New for v3
+id-RICsubscriptionModification ProcedureCode
+id-RICsubscriptionModificationRequired ProcedureCode
+id-RICquery ProcedureCode
+
+
+
+# ProtocolIE-ID
+id-Cause ProtocolIE-ID
+id-CriticalityDiagnostics ProtocolIE-ID
+id-GlobalE2node-ID ProtocolIE-ID
+id-GlobalRIC-ID ProtocolIE-ID
+id-RANfunctionID ProtocolIE-ID
+id-RANfunctionID-Item ProtocolIE-ID
+id-RANfunctionIEcause-Item ProtocolIE-ID
+id-RANfunction-Item ProtocolIE-ID
+id-RANfunctionsAccepted ProtocolIE-ID
+id-RANfunctionsAdded ProtocolIE-ID
+id-RANfunctionsDeleted ProtocolIE-ID
+id-RANfunctionsModified ProtocolIE-ID
+id-RANfunctionsRejected ProtocolIE-ID
+id-RICaction-Admitted-Item ProtocolIE-ID
+id-RICactionID ProtocolIE-ID
+id-RICaction-NotAdmitted-Item ProtocolIE-ID
+id-RICactions-Admitted ProtocolIE-ID
+id-RICactions-NotAdmitted ProtocolIE-ID
+id-RICaction-ToBeSetup-Item ProtocolIE-ID
+id-RICcallProcessID ProtocolIE-ID
+id-RICcontrolAckRequest ProtocolIE-ID
+id-RICcontrolHeader ProtocolIE-ID
+id-RICcontrolMessage ProtocolIE-ID
+id-RICcontrolStatus ProtocolIE-ID
+id-RICindicationHeader ProtocolIE-ID
+id-RICindicationMessage ProtocolIE-ID
+id-RICindicationSN ProtocolIE-ID
+id-RICindicationType ProtocolIE-ID
+id-RICrequestID ProtocolIE-ID
+id-RICsubscriptionDetails ProtocolIE-ID
+id-TimeToWait ProtocolIE-ID
+id-RICcontrolOutcome ProtocolIE-ID
+
+id-E2nodeComponentConfigUpdate ProtocolIE-ID
+id-E2nodeComponentConfigUpdate-Item ProtocolIE-ID
+id-E2nodeComponentConfigUpdateAck ProtocolIE-ID
+id-E2nodeComponentConfigUpdateAck-Item ProtocolIE-ID
+id-E2connectionSetup ProtocolIE-ID
+id-E2connectionSetupFailed ProtocolIE-ID
+id-E2connectionSetupFailed-Item ProtocolIE-ID
+id-E2connectionFailed-Item ProtocolIE-ID
+id-E2connectionUpdate-Item ProtocolIE-ID
+id-E2connectionUpdateAdd ProtocolIE-ID
+id-E2connectionUpdateModify ProtocolIE-ID
+id-E2connectionUpdateRemove ProtocolIE-ID
+id-E2connectionUpdateRemove-Item ProtocolIE-ID
+id-TNLinformation ProtocolIE-ID
+id-TransactionID ProtocolIE-ID
+
+id-E2nodeComponentConfigAddition ProtocolIE-ID
+id-E2nodeComponentConfigAddition-Item ProtocolIE-ID
+id-E2nodeComponentConfigAdditionAck ProtocolIE-ID
+id-E2nodeComponentConfigAdditionAck-Item ProtocolIE-ID
+id-E2nodeComponentConfigRemoval ProtocolIE-ID
+id-E2nodeComponentConfigRemoval-Item ProtocolIE-ID
+id-E2nodeComponentConfigRemovalAck ProtocolIE-ID
+id-E2nodeComponentConfigRemovalAck-Item ProtocolIE-ID
+id-E2nodeTNLassociationRemoval ProtocolIE-ID
+id-E2nodeTNLassociationRemoval-Item ProtocolIE-ID
+id-RICsubscriptionToBeRemoved ProtocolIE-ID
+id-RICsubscription-withCause-Item ProtocolIE-ID
+# New for v3
+id-RICsubscriptionStartTime ProtocolIE-ID
+id-RICsubscriptionEndTime ProtocolIE-ID
+id-RICeventTriggerDefinitionToBeModified ProtocolIE-ID
+id-RICactionsToBeRemovedForModification-List ProtocolIE-ID
+id-RICaction-ToBeRemovedForModification-Item ProtocolIE-ID
+id-RICactionsToBeModifiedForModification-List ProtocolIE-ID
+id-RICaction-ToBeModifiedForModification-Item ProtocolIE-ID
+id-RICactionsToBeAddedForModification-List ProtocolIE-ID
+id-RICaction-ToBeAddedForModification-Item ProtocolIE-ID
+id-RICactionsRemovedForModification-List ProtocolIE-ID
+id-RICaction-RemovedForModification-Item ProtocolIE-ID
+id-RICactionsFailedToBeRemovedForModification-List ProtocolIE-ID
+id-RICaction-FailedToBeRemovedForModification-Item ProtocolIE-ID
+id-RICactionsModifiedForModification-List ProtocolIE-ID
+id-RICaction-ModifiedForModification-Item ProtocolIE-ID
+id-RICactionsFailedToBeModifiedForModification-List ProtocolIE-ID
+id-RICaction-FailedToBeModifiedForModification-Item ProtocolIE-ID
+id-RICactionsAddedForModification-List ProtocolIE-ID
+id-RICaction-AddedForModification-Item ProtocolIE-ID
+id-RICactionsFailedToBeAddedForModification-List ProtocolIE-ID
+id-RICaction-FailedToBeAddedForModification-Item ProtocolIE-ID
+id-RICactionsRequiredToBeModified-List ProtocolIE-ID
+id-RICaction-RequiredToBeModified-Item ProtocolIE-ID
+id-RICactionsRequiredToBeRemoved-List ProtocolIE-ID
+id-RICaction-RequiredToBeRemoved-Item ProtocolIE-ID
+id-RICactionsConfirmedForModification-List ProtocolIE-ID
+id-RICaction-ConfirmedForModification-Item ProtocolIE-ID
+id-RICactionsRefusedToBeModified-List ProtocolIE-ID
+id-RICaction-RefusedToBeModified-Item ProtocolIE-ID
+id-RICactionsConfirmedForRemoval-List ProtocolIE-ID
+id-RICaction-ConfirmedForRemoval-Item ProtocolIE-ID
+id-RICactionsRefusedToBeRemoved-List ProtocolIE-ID
+id-RICaction-RefusedToBeRemoved-Item ProtocolIE-ID
+id-RICqueryHeader ProtocolIE-ID
+id-RICqueryDefinition ProtocolIE-ID
+id-RICqueryOutcome ProtocolIE-ID
+#.END
+
+
+#.REGISTER
+
+#E2AP-PROTOCOL-IES
+
+Cause N e2ap.ies id-Cause
+CriticalityDiagnostics N e2ap.ies id-CriticalityDiagnostics
+GlobalE2node-ID N e2ap.ies id-GlobalE2node-ID
+GlobalRIC-ID N e2ap.ies id-GlobalRIC-ID
+RANfunctionID N e2ap.ies id-RANfunctionID
+RANfunctionID-Item N e2ap.ies id-RANfunctionID-Item
+RANfunctionIDcause-Item N e2ap.ies id-RANfunctionIEcause-Item
+RANfunction-Item N e2ap.ies id-RANfunction-Item
+RANfunctionsID-List N e2ap.ies id-RANfunctionsAccepted
+RANfunctions-List N e2ap.ies id-RANfunctionsAdded
+RANfunctionsID-List N e2ap.ies id-RANfunctionsDeleted
+RANfunctions-List N e2ap.ies id-RANfunctionsModified
+RANfunctionsIDcause-List N e2ap.ies id-RANfunctionsRejected
+RICaction-Admitted-Item N e2ap.ies id-RICaction-Admitted-Item
+RICactionID N e2ap.ies id-RICactionID
+RICaction-NotAdmitted-Item N e2ap.ies id-RICaction-NotAdmitted-Item
+RICaction-Admitted-List N e2ap.ies id-RICactions-Admitted
+RICaction-ToBeSetup-Item N e2ap.ies id-RICaction-ToBeSetup-Item
+RICcallProcessID N e2ap.ies id-RICcallProcessID
+RICaction-NotAdmitted-List N e2ap.ies id-RICactions-NotAdmitted
+RICcontrolAckRequest N e2ap.ies id-RICcontrolAckRequest
+RICcontrolHeader N e2ap.ies id-RICcontrolHeader
+RICcontrolMessage N e2ap.ies id-RICcontrolMessage
+RICcontrolOutcome N e2ap.ies id-RICcontrolOutcome
+#RICcontrolStatus N e2ap.ies id-RICcontrolStatus
+RICindicationHeader N e2ap.ies id-RICindicationHeader
+RICindicationMessage N e2ap.ies id-RICindicationMessage
+RICindicationSN N e2ap.ies id-RICindicationSN
+RICindicationType N e2ap.ies id-RICindicationType
+RICrequestID N e2ap.ies id-RICrequestID
+RICsubscriptionDetails N e2ap.ies id-RICsubscriptionDetails
+#RICcontrolHeader N e2ap.ies id-RICcontrolHeader
+#RICcontrolMessage N e2ap.ies id-RICcontrolMessage
+
+TimeToWait N e2ap.ies id-TimeToWait
+#RICcontrolOutcome N e2ap.ies id-RICcontrolOutcome
+
+E2nodeComponentConfigUpdate-List N e2ap.ies id-E2nodeComponentConfigUpdate
+E2nodeComponentConfigUpdate-Item N e2ap.ies id-E2nodeComponentConfigUpdate-Item
+E2nodeComponentConfigUpdateAck-List N e2ap.ies id-E2nodeComponentConfigUpdateAck
+E2nodeComponentConfigUpdateAck-Item N e2ap.ies id-E2nodeComponentConfigUpdateAck-Item
+E2connectionUpdate-List N e2ap.ies id-E2connectionSetup
+E2connectionSetupFailed-List N e2ap.ies id-E2connectionSetupFailed
+E2connectionSetupFailed-Item N e2ap.ies id-E2connectionSetupFailed-Item
+#E2connectionSetupFailed-Item N e2ap.ies id-E2connectionFailed-Item
+E2connectionUpdate-Item N e2ap.ies id-E2connectionUpdate-Item
+E2connectionUpdate-List N e2ap.ies id-E2connectionUpdateAdd
+E2connectionUpdate-List N e2ap.ies id-E2connectionUpdateModify
+E2connectionUpdateRemove-List N e2ap.ies id-E2connectionUpdateRemove
+E2connectionUpdateRemove-Item N e2ap.ies id-E2connectionUpdateRemove-Item
+TNLinformation N e2ap.ies id-TNLinformation
+TransactionID N e2ap.ies id-TransactionID
+
+E2nodeComponentConfigAddition-List N e2ap.ies id-E2nodeComponentConfigAddition
+E2nodeComponentConfigAddition-Item N e2ap.ies id-E2nodeComponentConfigAddition-Item
+E2nodeComponentConfigAdditionAck-List N e2ap.ies id-E2nodeComponentConfigAdditionAck
+E2nodeComponentConfigAdditionAck-Item N e2ap.ies id-E2nodeComponentConfigAdditionAck-Item
+E2nodeComponentConfigRemoval-List N e2ap.ies id-E2nodeComponentConfigRemoval
+E2nodeComponentConfigRemoval-Item N e2ap.ies id-E2nodeComponentConfigRemoval-Item
+E2nodeComponentConfigRemovalAck-List N e2ap.ies id-E2nodeComponentConfigRemovalAck
+E2nodeComponentConfigRemovalAck-Item N e2ap.ies id-E2nodeComponentConfigRemovalAck-Item
+E2nodeTNLassociationRemoval-List N e2ap.ies id-E2nodeTNLassociationRemoval
+E2nodeTNLassociationRemoval-Item N e2ap.ies id-E2nodeTNLassociationRemoval-Item
+RICsubscription-List-withCause N e2ap.ies id-RICsubscriptionToBeRemoved
+RICsubscription-withCause-Item N e2ap.ies id-RICsubscription-withCause-Item
+
+# New for v3
+RICsubscriptionTime N e2ap.ies id-RICsubscriptionStartTime
+RICsubscriptionTime N e2ap.ies id-RICsubscriptionEndTime
+RICeventTriggerDefinition N e2ap.ies id-RICeventTriggerDefinitionToBeModified
+RICactions-ToBeRemovedForModification-List N e2ap.ies id-RICactionsToBeRemovedForModification-List
+RICaction-ToBeRemovedForModification-Item N e2ap.ies id-RICaction-ToBeRemovedForModification-Item
+RICactions-ToBeModifiedForModification-List N e2ap.ies id-RICactionsToBeModifiedForModification-List
+RICaction-ToBeModifiedForModification-Item N e2ap.ies id-RICaction-ToBeModifiedForModification-Item
+RICactions-ToBeAddedForModification-List N e2ap.ies id-RICactionsToBeAddedForModification-List
+RICaction-ToBeAddedForModification-Item N e2ap.ies id-RICaction-ToBeAddedForModification-Item
+RICactions-RemovedForModification-List N e2ap.ies id-RICactionsRemovedForModification-List
+RICaction-RemovedForModification-Item N e2ap.ies id-RICaction-RemovedForModification-Item
+RICactions-FailedToBeRemovedForModification-List N e2ap.ies id-RICactionsFailedToBeRemovedForModification-List
+RICaction-FailedToBeRemovedForModification-Item N e2ap.ies id-RICaction-FailedToBeRemovedForModification-Item
+RICactions-ModifiedForModification-List N e2ap.ies id-RICactionsModifiedForModification-List
+RICaction-ModifiedForModification-Item N e2ap.ies id-RICaction-ModifiedForModification-Item
+RICactions-FailedToBeModifiedForModification-List N e2ap.ies id-RICactionsFailedToBeModifiedForModification-List
+RICaction-FailedToBeModifiedForModification-Item N e2ap.ies id-RICaction-FailedToBeModifiedForModification-Item
+RICactions-AddedForModification-List N e2ap.ies id-RICactionsAddedForModification-List
+RICaction-AddedForModification-Item N e2ap.ies id-RICaction-AddedForModification-Item
+RICactions-FailedToBeAddedForModification-List N e2ap.ies id-RICactionsFailedToBeAddedForModification-List
+RICaction-FailedToBeAddedForModification-Item N e2ap.ies id-RICaction-FailedToBeAddedForModification-Item
+RICactions-RequiredToBeModified-List N e2ap.ies id-RICactionsRequiredToBeModified-List
+RICaction-RequiredToBeModified-Item N e2ap.ies id-RICaction-RequiredToBeModified-Item
+RICactions-RequiredToBeRemoved-List N e2ap.ies id-RICactionsRequiredToBeRemoved-List
+RICaction-RequiredToBeRemoved-Item N e2ap.ies id-RICaction-RequiredToBeRemoved-Item
+RICactions-ConfirmedForModification-List N e2ap.ies id-RICactionsConfirmedForModification-List
+RICaction-ConfirmedForModification-Item N e2ap.ies id-RICaction-ConfirmedForModification-Item
+RICactions-RefusedToBeModified-List N e2ap.ies id-RICactionsRefusedToBeModified-List
+RICaction-RefusedToBeModified-Item N e2ap.ies id-RICaction-RefusedToBeModified-Item
+RICactions-ConfirmedForRemoval-List N e2ap.ies id-RICactionsConfirmedForRemoval-List
+RICaction-ConfirmedForRemoval-Item N e2ap.ies id-RICaction-ConfirmedForRemoval-Item
+RICactions-RefusedToBeRemoved-List N e2ap.ies id-RICactionsRefusedToBeRemoved-List
+RICaction-RefusedToBeRemoved-Item N e2ap.ies id-RICaction-RefusedToBeRemoved-Item
+RICqueryHeader N e2ap.ies id-RICqueryHeader
+RICqueryDefinition N e2ap.ies id-RICqueryDefinition
+RICqueryOutcome N e2ap.ies id-RICqueryOutcome
+
+#e2ap-PROTOCOL-EXTENSION
+
+#E2AP-ELEMENTARY-PROCEDURE
+
+E2connectionUpdate N e2ap.proc.imsg id-E2connectionUpdate
+E2connectionUpdateAcknowledge N e2ap.proc.sout id-E2connectionUpdate
+E2connectionUpdateFailure N e2ap.proc.uout id-E2connectionUpdate
+
+E2nodeConfigurationUpdate N e2ap.proc.imsg id-E2nodeConfigurationUpdate
+E2nodeConfigurationUpdateAcknowledge N e2ap.proc.sout id-E2nodeConfigurationUpdate
+E2nodeConfigurationUpdateFailure N e2ap.proc.uout id-E2nodeConfigurationUpdate
+
+E2setupFailure N e2ap.proc.uout id-E2setup
+E2setupRequest N e2ap.proc.imsg id-E2setup
+E2setupResponse N e2ap.proc.sout id-E2setup
+
+ErrorIndication N e2ap.proc.imsg id-ErrorIndication
+
+ResetRequest N e2ap.proc.imsg id-Reset
+ResetResponse N e2ap.proc.sout id-Reset
+
+RICcontrolAcknowledge N e2ap.proc.sout id-RICcontrol
+RICcontrolFailure N e2ap.proc.uout id-RICcontrol
+RICcontrolRequest N e2ap.proc.imsg id-RICcontrol
+
+RICindication N e2ap.proc.imsg id-RICindication
+
+RICserviceQuery N e2ap.proc.imsg id-RICserviceQuery
+
+RICserviceUpdate N e2ap.proc.imsg id-RICserviceUpdate
+RICserviceUpdateAcknowledge N e2ap.proc.sout id-RICserviceUpdate
+RICserviceUpdateFailure N e2ap.proc.uout id-RICserviceUpdate
+
+RICsubscriptionFailure N e2ap.proc.uout id-RICsubscription
+RICsubscriptionRequest N e2ap.proc.imsg id-RICsubscription
+RICsubscriptionResponse N e2ap.proc.sout id-RICsubscription
+
+RICsubscriptionDeleteFailure N e2ap.proc.uout id-RICsubscriptionDelete
+RICsubscriptionDeleteRequest N e2ap.proc.imsg id-RICsubscriptionDelete
+RICsubscriptionDeleteResponse N e2ap.proc.sout id-RICsubscriptionDelete
+
+RICsubscriptionDeleteRequired N e2ap.proc.sout id-RICsubscriptionDeleteRequired
+
+E2RemovalFailure N e2ap.proc.uout id-E2removal
+E2RemovalRequest N e2ap.proc.imsg id-E2removal
+E2RemovalResponse N e2ap.proc.sout id-E2removal
+
+RICsubscriptionModificationFailure N e2ap.proc.uout id-RICsubscriptionModification
+RICsubscriptionModificationRequest N e2ap.proc.imsg id-RICsubscriptionModification
+RICsubscriptionModificationResponse N e2ap.proc.sout id-RICsubscriptionModification
+
+RICsubscriptionModificationRefuse N e2ap.proc.uout id-RICsubscriptionModificationRequired
+RICsubscriptionModificationRequired N e2ap.proc.imsg id-RICsubscriptionModificationRequired
+RICsubscriptionModificationConfirm N e2ap.proc.sout id-RICsubscriptionModificationRequired
+
+RICQueryFailure N e2ap.proc.uout id-RICquery
+RICQueryRequest N e2ap.proc.imsg id-RICquery
+RICQueryResponse N e2ap.proc.sout id-RICquery
+
+
+
+#.FN_BODY RANfunctionID VAL_PTR=&value
+ guint32 value;
+%(DEFAULT_BODY)s
+ /* Store value in packet-private data */
+ struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo);
+ e2ap_data->ran_function_id = value;
+
+
+#.FN_BODY GlobalgNB-ID/gnb-id
+ int start_offset = offset;
+%(DEFAULT_BODY)s
+ /* Store value in packet-private data */
+ struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo);
+ /* Limit length, but really can't be > 5 bytes.. */
+ e2ap_data->gnb_id_len = MIN((offset-start_offset)/8, MAX_GNB_ID_BYTES);
+ tvb_memcpy(tvb, &e2ap_data->gnb_id_bytes, start_offset/8, e2ap_data->gnb_id_len);
+ update_conversation_from_gnb_id(actx);
+
+
+
+#.FN_BODY TNLinformation/tnlAddress VAL_PTR=&value_tvb
+ tvbuff_t *value_tvb;
+%(DEFAULT_BODY)s
+ if (tvb_captured_length(value_tvb)==4) {
+ proto_item_append_text(tree, " (%%s", tvb_ip_to_str(actx->pinfo->pool, value_tvb, 0));
+ }
+ else {
+ proto_item_append_text(tree, " (%%s", tvb_ip6_to_str(actx->pinfo->pool, value_tvb, 0));
+ }
+
+#.FN_BODY TNLinformation/tnlPort
+ proto_item_append_text(tree, ":%%u)", tvb_get_ntohs(tvb, offset/8));
+%(DEFAULT_BODY)s
+
+
+#.FN_BODY E2nodeComponentConfiguration/e2nodeComponentRequestPart VAL_PTR=&value_tvb
+ tvbuff_t *value_tvb;
+%(DEFAULT_BODY)s
+ struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo);
+ if (e2ap_data->component_configuration_dissector) {
+ col_append_str(actx->pinfo->cinfo, COL_PROTOCOL, "|");
+ col_set_fence(actx->pinfo->cinfo, COL_PROTOCOL);
+ col_set_writable(actx->pinfo->cinfo, COL_INFO, FALSE);
+ call_dissector(e2ap_data->component_configuration_dissector, value_tvb, actx->pinfo, tree);
+ col_set_writable(actx->pinfo->cinfo, COL_INFO, TRUE);
+ }
+
+#.FN_BODY E2nodeComponentConfiguration/e2nodeComponentResponsePart VAL_PTR=&value_tvb
+ tvbuff_t *value_tvb;
+%(DEFAULT_BODY)s
+ struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo);
+ if (e2ap_data->component_configuration_dissector) {
+ col_set_writable(actx->pinfo->cinfo, COL_INFO, FALSE);
+ call_dissector(e2ap_data->component_configuration_dissector, value_tvb, actx->pinfo, tree);
+ col_set_writable(actx->pinfo->cinfo, COL_INFO, TRUE);
+ }
+
+
+#.FN_BODY E2nodeComponentID/e2nodeComponentInterfaceTypeNG
+%(DEFAULT_BODY)s
+ /* Store value in packet-private data */
+ struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo);
+ e2ap_data->component_configuration_dissector = find_dissector("ngap");
+
+#.FN_BODY E2nodeComponentID/e2nodeComponentInterfaceTypeXn
+%(DEFAULT_BODY)s
+ /* Store value in packet-private data */
+ struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo);
+ e2ap_data->component_configuration_dissector = find_dissector("xnap");
+
+#.FN_BODY E2nodeComponentID/e2nodeComponentInterfaceTypeE1
+%(DEFAULT_BODY)s
+ /* Store value in packet-private data */
+ struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo);
+ e2ap_data->component_configuration_dissector = find_dissector("e1ap");
+
+#.FN_BODY E2nodeComponentID/e2nodeComponentInterfaceTypeF1
+%(DEFAULT_BODY)s
+ /* Store value in packet-private data */
+ struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo);
+ e2ap_data->component_configuration_dissector = find_dissector("f1ap");
+
+# There is not yet a dissector for W1AP..
+
+#.FN_BODY E2nodeComponentID/e2nodeComponentInterfaceTypeS1
+%(DEFAULT_BODY)s
+ /* Store value in packet-private data */
+ struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo);
+ e2ap_data->component_configuration_dissector = find_dissector("s1ap");
+
+#.FN_BODY E2nodeComponentID/e2nodeComponentInterfaceTypeX2
+%(DEFAULT_BODY)s
+ /* Store value in packet-private data */
+ struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo);
+ e2ap_data->component_configuration_dissector = find_dissector("x2ap");
+
+
+
+#.FN_HDR E2connectionUpdate
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2connectionUpdate");
+
+#.FN_HDR E2connectionUpdateAcknowledge
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2connectionUpdateAcknowledge");
+
+#.FN_HDR E2connectionUpdateFailure
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2connectionUpdateFailure");
+
+
+#.FN_HDR E2nodeConfigurationUpdate
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2nodeConfigurationUpdate");
+
+#.FN_HDR E2nodeConfigurationUpdateAcknowledge
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2nodeConfigurationUpdateAcknowledge");
+
+#.FN_HDR E2nodeConfigurationUpdateFailure
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2nodeConfigurationUpdateFailure");
+
+
+#.FN_HDR E2setupFailure
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2setupFailure");
+
+#.FN_HDR E2setupRequest
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2setupRequest");
+
+#.FN_HDR E2setupResponse
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2setupResponse");
+
+
+#.FN_HDR ErrorIndication
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ErrorIndication");
+
+
+#.FN_HDR ResetRequest
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ResetRequest");
+
+#.FN_HDR ResetResponse
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ResetResponse");
+
+
+#.FN_HDR RICcontrolAcknowledge
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICcontrolAcknowledge");
+
+#.FN_HDR RICcontrolFailure
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICcontrolFailure");
+
+#.FN_HDR RICcontrolRequest
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICcontrolRequest");
+
+
+#.FN_HDR RICindication
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICindication");
+
+
+#.FN_HDR RICserviceQuery
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICserviceQuery");
+
+
+#.FN_HDR RICserviceUpdate
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICserviceUpdate");
+
+#.FN_HDR RICserviceUpdateAcknowledge
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICserviceUpdateAcknowledge");
+
+#.FN_HDR RICserviceUpdateFailure
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICserviceUpdateFailure");
+
+
+
+#.FN_HDR RICsubscriptionFailure
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionFailure");
+
+#.FN_HDR RICsubscriptionRequest
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionRequest");
+
+#.FN_HDR RICsubscriptionResponse
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionResponse");
+
+
+
+#.FN_HDR RICsubscriptionDeleteFailure
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionDeleteFailure");
+
+#.FN_HDR RICsubscriptionDeleteRequest
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionDeleteRequest");
+
+#.FN_HDR RICsubscriptionDeleteResponse
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionDeleteResponse");
+
+#.FN_HDR RICsubscriptionDeleteRequired
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionDeleteRequired");
+
+
+#
+# Editor modelines - https://www.wireshark.org/tools/modelines.html
+#
+# Local variables:
+# c-basic-offset: 2
+# tab-width: 8
+# indent-tabs-mode: nil
+# End:
+#
+# vi: set shiftwidth=2 tabstop=8 expandtab:
+# :indentSize=2:tabSize=8:noTabs=true:
+#
diff --git a/epan/dissectors/asn1/e2ap/e2sm-kpm-v3.00.asn b/epan/dissectors/asn1/e2ap/e2sm-kpm-v3.00.asn
new file mode 100644
index 00000000..388c18f0
--- /dev/null
+++ b/epan/dissectors/asn1/e2ap/e2sm-kpm-v3.00.asn
@@ -0,0 +1,448 @@
+-- ASN1START
+-- **************************************************************
+-- E2SM-KPM Information Element Definitions
+-- **************************************************************
+
+E2SM-KPM-IEs {
+iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) oran(53148) e2(1) version3(3) e2sm(2) e2sm-KPMMON-IEs (2)}
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+-- **************************************************************
+-- IEs
+-- **************************************************************
+
+IMPORTS
+ CGI,
+ FiveQI,
+ PLMNIdentity,
+ QCI,
+ QosFlowIdentifier,
+ RANfunction-Name,
+ RIC-Format-Type,
+ RIC-Style-Name,
+ RIC-Style-Type,
+ S-NSSAI,
+ UEID
+FROM E2SM-COMMON-IEs;
+
+TimeStamp ::= OCTET STRING (SIZE(8))
+
+BinIndex ::= INTEGER (1.. 65535, ...)
+
+BinRangeValue ::= CHOICE {
+ valueInt INTEGER,
+ valueReal REAL,
+ ...
+}
+
+GranularityPeriod ::= INTEGER (1.. 4294967295)
+
+-- LogicalOR ::= ENUMERATED {true, ...}
+
+MeasurementType ::= CHOICE {
+ measName MeasurementTypeName,
+ measID MeasurementTypeID,
+ ...
+}
+
+MeasurementTypeName ::= PrintableString(SIZE(1.. 150, ...))
+
+MeasurementTypeID ::= INTEGER (1.. 65536, ...)
+
+MeasurementLabel ::= SEQUENCE {
+ noLabel ENUMERATED {true, ...} OPTIONAL,
+ plmnID PLMNIdentity OPTIONAL,
+ sliceID S-NSSAI OPTIONAL,
+ fiveQI FiveQI OPTIONAL,
+ qFI QosFlowIdentifier OPTIONAL,
+ qCI QCI OPTIONAL,
+ qCImax QCI OPTIONAL,
+ qCImin QCI OPTIONAL,
+ aRPmax INTEGER (1.. 15, ...) OPTIONAL,
+ aRPmin INTEGER (1.. 15, ...) OPTIONAL,
+ bitrateRange INTEGER (1.. 65535, ...) OPTIONAL,
+ layerMU-MIMO INTEGER (1.. 65535, ...) OPTIONAL,
+ sUM ENUMERATED {true, ...} OPTIONAL,
+ distBinX INTEGER (1.. 65535, ...) OPTIONAL,
+ distBinY INTEGER (1.. 65535, ...) OPTIONAL,
+ distBinZ INTEGER (1.. 65535, ...) OPTIONAL,
+ preLabelOverride ENUMERATED {true, ...} OPTIONAL,
+ startEndInd ENUMERATED {start, end, ...} OPTIONAL,
+ min ENUMERATED {true, ...} OPTIONAL,
+ max ENUMERATED {true, ...} OPTIONAL,
+ avg ENUMERATED {true, ...} OPTIONAL,
+ ...,
+ ssbIndex INTEGER (1.. 65535, ...) OPTIONAL,
+ nonGoB-BFmode-Index INTEGER (1.. 65535, ...) OPTIONAL,
+ mIMO-mode-Index INTEGER (1.. 2, ...) OPTIONAL
+}
+
+TestCondInfo ::= SEQUENCE{
+ testType TestCond-Type,
+ testExpr TestCond-Expression OPTIONAL,
+ testValue TestCond-Value OPTIONAL,
+ ...
+}
+
+TestCond-Type ::= CHOICE{
+ gBR ENUMERATED {true, ...},
+ aMBR ENUMERATED {true, ...},
+ isStat ENUMERATED {true, ...},
+ isCatM ENUMERATED {true, ...},
+ rSRP ENUMERATED {true, ...},
+ rSRQ ENUMERATED {true, ...},
+ ...,
+ ul-rSRP ENUMERATED {true, ...},
+ cQI ENUMERATED {true, ...},
+ fiveQI ENUMERATED {true, ...},
+ qCI ENUMERATED {true, ...},
+ sNSSAI ENUMERATED {true, ...}
+}
+
+TestCond-Expression ::= ENUMERATED {
+equal,
+greaterthan,
+lessthan,
+contains,
+present,
+...
+}
+
+TestCond-Value ::= CHOICE{
+ valueInt INTEGER,
+ valueEnum INTEGER,
+ valueBool BOOLEAN,
+ valueBitS BIT STRING,
+ valueOctS OCTET STRING,
+ valuePrtS PrintableString,
+ ...,
+ valueReal REAL
+}
+
+-- **************************************************************
+-- Lists
+-- **************************************************************
+
+maxnoofCells INTEGER ::= 16384
+-- maxnoofRICStyles INTEGER ::= 63
+maxnoofMeasurementInfo INTEGER ::= 65535
+maxnoofLabelInfo INTEGER ::= 2147483647
+maxnoofMeasurementRecord INTEGER ::= 65535
+maxnoofMeasurementValue INTEGER ::= 2147483647
+maxnoofConditionInfo INTEGER ::= 32768
+-- maxnoofUEID INTEGER ::= 65535
+maxnoofConditionInfoPerSub INTEGER ::= 32768
+maxnoofUEIDPerSub INTEGER ::= 65535
+maxnoofUEMeasReport INTEGER ::= 65535
+maxnoofBin INTEGER ::= 65535
+
+BinRangeDefinition ::= SEQUENCE {
+binRangeListX BinRangeList,
+binRangeListY BinRangeList OPTIONAL -- This IE shall not be present for a distribution measurement type that doesn't use Distribution Bin Y --,
+binRangeListZ BinRangeList OPTIONAL -- This IE shall not be present for a distribution measurement type that doesn't use Distribution Bin Z --,
+...
+}
+
+BinRangeList ::= SEQUENCE (SIZE(1..maxnoofBin)) OF BinRangeItem
+
+BinRangeItem ::= SEQUENCE {
+ binIndex BinIndex,
+ startValue BinRangeValue,
+ endValue BinRangeValue,
+ ...
+}
+
+DistMeasurementBinRangeList ::= SEQUENCE (SIZE(1..maxnoofMeasurementInfo)) OF DistMeasurementBinRangeItem
+
+DistMeasurementBinRangeItem ::= SEQUENCE {
+ measType MeasurementType,
+ binRangeDef BinRangeDefinition,
+ ...
+}
+
+MeasurementInfoList ::= SEQUENCE (SIZE(1..maxnoofMeasurementInfo)) OF MeasurementInfoItem
+
+MeasurementInfoItem ::= SEQUENCE {
+ measType MeasurementType,
+ labelInfoList LabelInfoList,
+ ...
+}
+
+LabelInfoList ::= SEQUENCE (SIZE(1..maxnoofLabelInfo)) OF LabelInfoItem
+
+LabelInfoItem ::= SEQUENCE {
+ measLabel MeasurementLabel,
+ ...
+}
+
+MeasurementData ::= SEQUENCE (SIZE(1..maxnoofMeasurementRecord)) OF MeasurementDataItem
+
+MeasurementDataItem ::= SEQUENCE {
+measRecord MeasurementRecord,
+incompleteFlag ENUMERATED {true, ...} OPTIONAL,
+...
+}
+
+MeasurementRecord ::= SEQUENCE (SIZE(1..maxnoofMeasurementValue)) OF MeasurementRecordItem
+
+MeasurementRecordItem ::= CHOICE {
+ integer INTEGER (0.. 4294967295),
+ real REAL,
+ noValue NULL,
+ ...
+}
+
+MeasurementInfo-Action-List ::= SEQUENCE (SIZE(1..maxnoofMeasurementInfo)) OF MeasurementInfo-Action-Item
+
+MeasurementInfo-Action-Item ::= SEQUENCE {
+ measName MeasurementTypeName,
+ measID MeasurementTypeID OPTIONAL,
+ ...,
+ binRangeDef BinRangeDefinition OPTIONAL
+}
+
+MeasurementCondList ::= SEQUENCE (SIZE(1..maxnoofMeasurementInfo)) OF MeasurementCondItem
+
+MeasurementCondItem ::= SEQUENCE {
+ measType MeasurementType,
+ matchingCond MatchingCondList,
+ ...,
+ binRangeDef BinRangeDefinition OPTIONAL
+}
+
+MeasurementCondUEidList ::= SEQUENCE (SIZE(1..maxnoofMeasurementInfo)) OF MeasurementCondUEidItem
+
+MeasurementCondUEidItem ::= SEQUENCE {
+ measType MeasurementType,
+ matchingCond MatchingCondList,
+ matchingUEidList MatchingUEidList OPTIONAL,
+ ...,
+ matchingUEidPerGP MatchingUEidPerGP OPTIONAL
+}
+
+MatchingCondList ::= SEQUENCE (SIZE(1..maxnoofConditionInfo)) OF MatchingCondItem
+
+MatchingCondItem ::= SEQUENCE {
+matchingCondChoice MatchingCondItem-Choice,
+logicalOR LogicalOR OPTIONAL,
+...
+}
+
+MatchingCondItem-Choice ::= CHOICE{
+ measLabel MeasurementLabel,
+ testCondInfo TestCondInfo,
+ ...
+}
+
+MatchingUEidList ::= SEQUENCE (SIZE(1..maxnoofUEID)) OF MatchingUEidItem
+
+MatchingUEidItem ::= SEQUENCE{
+ ueID UEID,
+ ...
+}
+
+MatchingUEidPerGP ::= SEQUENCE (SIZE(1..maxnoofMeasurementRecord)) OF MatchingUEidPerGP-Item
+
+MatchingUEidPerGP-Item ::= SEQUENCE{
+ matchedPerGP CHOICE{
+ noUEmatched ENUMERATED {true, ...},
+ oneOrMoreUEmatched MatchingUEidList-PerGP,
+ ...
+ },
+ ...
+}
+
+MatchingUEidList-PerGP ::= SEQUENCE (SIZE(1..maxnoofUEID)) OF MatchingUEidItem-PerGP
+
+MatchingUEidItem-PerGP ::= SEQUENCE{
+ ueID UEID,
+ ...
+}
+
+
+MatchingUeCondPerSubList ::= SEQUENCE (SIZE(1..maxnoofConditionInfoPerSub)) OF MatchingUeCondPerSubItem
+
+MatchingUeCondPerSubItem ::= SEQUENCE{
+ testCondInfo TestCondInfo,
+ ...,
+ logicalOR LogicalOR OPTIONAL
+}
+
+MatchingUEidPerSubList ::= SEQUENCE (SIZE(2..maxnoofUEIDPerSub)) OF MatchingUEidPerSubItem
+
+MatchingUEidPerSubItem ::= SEQUENCE{
+ ueID UEID,
+ ...
+}
+
+UEMeasurementReportList ::= SEQUENCE (SIZE(1..maxnoofUEMeasReport)) OF UEMeasurementReportItem
+
+UEMeasurementReportItem ::= SEQUENCE{
+ ueID UEID,
+ measReport E2SM-KPM-IndicationMessage-Format1,
+ ...
+}
+
+
+
+-- **************************************************************
+-- E2SM-KPM Service Model IEs
+-- **************************************************************
+
+-- **************************************************************
+-- Event Trigger Definition OCTET STRING contents
+-- **************************************************************
+
+E2SM-KPM-EventTriggerDefinition ::= SEQUENCE{
+ eventDefinition-formats CHOICE{
+ eventDefinition-Format1 E2SM-KPM-EventTriggerDefinition-Format1,
+ ...
+ },
+ ...
+}
+
+E2SM-KPM-EventTriggerDefinition-Format1 ::= SEQUENCE{
+ reportingPeriod INTEGER (1.. 4294967295),
+ ...
+}
+
+-- **************************************************************
+-- Action Definition OCTET STRING contents
+-- **************************************************************
+
+E2SM-KPM-ActionDefinition ::= SEQUENCE{
+ ric-Style-Type RIC-Style-Type,
+ actionDefinition-formats CHOICE{
+ actionDefinition-Format1 E2SM-KPM-ActionDefinition-Format1,
+ actionDefinition-Format2 E2SM-KPM-ActionDefinition-Format2,
+ actionDefinition-Format3 E2SM-KPM-ActionDefinition-Format3,
+ ...,
+ actionDefinition-Format4 E2SM-KPM-ActionDefinition-Format4,
+ actionDefinition-Format5 E2SM-KPM-ActionDefinition-Format5
+ },
+ ...
+}
+
+E2SM-KPM-ActionDefinition-Format1 ::= SEQUENCE {
+ measInfoList MeasurementInfoList,
+ granulPeriod GranularityPeriod,
+ cellGlobalID CGI OPTIONAL,
+ ...,
+ distMeasBinRangeInfo DistMeasurementBinRangeList OPTIONAL
+}
+
+E2SM-KPM-ActionDefinition-Format2 ::= SEQUENCE {
+ ueID UEID,
+ subscriptInfo E2SM-KPM-ActionDefinition-Format1,
+ ...
+}
+
+E2SM-KPM-ActionDefinition-Format3 ::= SEQUENCE {
+ measCondList MeasurementCondList,
+ granulPeriod GranularityPeriod,
+ cellGlobalID CGI OPTIONAL,
+ ...
+}
+
+E2SM-KPM-ActionDefinition-Format4 ::= SEQUENCE {
+ matchingUeCondList MatchingUeCondPerSubList,
+ subscriptionInfo E2SM-KPM-ActionDefinition-Format1,
+ ...
+}
+
+E2SM-KPM-ActionDefinition-Format5 ::= SEQUENCE {
+ matchingUEidList MatchingUEidPerSubList,
+ subscriptionInfo E2SM-KPM-ActionDefinition-Format1,
+ ...
+}
+
+
+-- **************************************************************
+-- Indication Header OCTET STRING contents
+-- **************************************************************
+
+E2SM-KPM-IndicationHeader ::= SEQUENCE{
+ indicationHeader-formats CHOICE{
+ indicationHeader-Format1 E2SM-KPM-IndicationHeader-Format1,
+ ...
+ },
+ ...
+}
+
+E2SM-KPM-IndicationHeader-Format1 ::= SEQUENCE{
+ colletStartTime TimeStamp,
+ fileFormatversion PrintableString (SIZE (0..15), ...) OPTIONAL,
+ senderName PrintableString (SIZE (0..400), ...) OPTIONAL,
+ senderType PrintableString (SIZE (0..8), ...) OPTIONAL,
+ vendorName PrintableString (SIZE (0..32), ...) OPTIONAL,
+ ...
+}
+
+-- **************************************************************
+-- Indication Message OCTET STRING contents
+-- **************************************************************
+
+E2SM-KPM-IndicationMessage ::= SEQUENCE{
+ indicationMessage-formats CHOICE{
+ indicationMessage-Format1 E2SM-KPM-IndicationMessage-Format1,
+ indicationMessage-Format2 E2SM-KPM-IndicationMessage-Format2,
+ ...,
+ indicationMessage-Format3 E2SM-KPM-IndicationMessage-Format3
+ },
+ ...
+}
+
+E2SM-KPM-IndicationMessage-Format1 ::= SEQUENCE {
+ measData MeasurementData,
+ measInfoList MeasurementInfoList OPTIONAL,
+ granulPeriod GranularityPeriod OPTIONAL,
+ ...
+}
+
+E2SM-KPM-IndicationMessage-Format2 ::= SEQUENCE {
+ measData MeasurementData,
+ measCondUEidList MeasurementCondUEidList,
+ granulPeriod GranularityPeriod OPTIONAL,
+ ...
+}
+
+E2SM-KPM-IndicationMessage-Format3 ::= SEQUENCE {
+ ueMeasReportList UEMeasurementReportList,
+ ...
+}
+
+
+-- ***************************************************************
+-- RAN Function Definition OCTET STRING contents
+-- ***************************************************************
+
+E2SM-KPM-RANfunction-Description ::= SEQUENCE{
+ ranFunction-Name RANfunction-Name,
+ ric-EventTriggerStyle-List SEQUENCE (SIZE(1..maxnoofRICStyles)) OF RIC-EventTriggerStyle-Item OPTIONAL,
+ ric-ReportStyle-List SEQUENCE (SIZE(1..maxnoofRICStyles)) OF RIC-ReportStyle-Item OPTIONAL,
+ ...
+}
+
+RIC-EventTriggerStyle-Item ::= SEQUENCE{
+ ric-EventTriggerStyle-Type RIC-Style-Type,
+ ric-EventTriggerStyle-Name RIC-Style-Name,
+ ric-EventTriggerFormat-Type RIC-Format-Type,
+ ...
+}
+
+RIC-ReportStyle-Item ::= SEQUENCE{
+ ric-ReportStyle-Type RIC-Style-Type,
+ ric-ReportStyle-Name RIC-Style-Name,
+ ric-ActionFormat-Type RIC-Format-Type,
+ measInfo-Action-List MeasurementInfo-Action-List,
+ ric-IndicationHeaderFormat-Type RIC-Format-Type,
+ ric-IndicationMessageFormat-Type RIC-Format-Type,
+ ...
+}
+
+END
+
+-- ASN1STOP
diff --git a/epan/dissectors/asn1/e2ap/e2sm-ni-v1.00.asn b/epan/dissectors/asn1/e2ap/e2sm-ni-v1.00.asn
new file mode 100644
index 00000000..52b04b1a
--- /dev/null
+++ b/epan/dissectors/asn1/e2ap/e2sm-ni-v1.00.asn
@@ -0,0 +1,486 @@
+-- ASN1START
+-- **************************************************************
+-- E2SM-NI
+-- Information Element Definitions
+--
+-- **************************************************************
+
+E2SM-NI-IEs {
+iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version1
+(1) e2sm(2) e2sm-NI-IEs (1)}
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+-- **************************************************************
+-- IEs
+-- **************************************************************
+
+
+-- **************************************************************
+--
+-- Lists
+--
+-- **************************************************************
+
+maxofInterfaceProtocolTests INTEGER ::= 15
+maxofRANueGroups INTEGER ::= 255
+maxofActionParameters INTEGER ::= 255
+maxofRANparameters INTEGER ::= 65535
+maxofNItypes INTEGER ::= 63
+maxofRICstyles INTEGER ::= 63
+
+-- **************************************************************
+-- E2SM-NI Service model IEs
+-- **************************************************************
+
+--
+-- Event Trigger Definition OCTET STRING contents
+--
+
+-- E2SM-NI-EventTriggerDefinition IE
+E2SM-NI-EventTriggerDefinition ::= CHOICE{
+ eventDefinition-Format1 E2SM-NI-EventTriggerDefinition-Format1,
+ ...
+}
+
+-- E2SM-NI-EventTriggerDefinition IE is used for Event Trigger Definition Format 1
+E2SM-NI-EventTriggerDefinition-Format1 ::= SEQUENCE{
+ interface-type NI-Type,
+ interface-ID NI-Identifier,
+ interfaceDirection NI-Direction,
+ interfaceMessageType NI-MessageType,
+ interfaceProtocolIE-List SEQUENCE (SIZE(1..maxofInterfaceProtocolTests)) OF NI-ProtocolIE-Item OPTIONAL,
+ ...
+}
+
+--
+-- Action Definition OCTET STRING contents
+--
+-- E2SM-NI-ActionDefinition IE
+ E2SM-NI-ActionDefinition ::= SEQUENCE{
+ ric-Style-Type RIC-Style-Type,
+ action-Definition-Format E2SM-NI-ActionDefinitionFormat,
+ ...
+}
+
+E2SM-NI-ActionDefinitionFormat ::= CHOICE{
+ actionDefinition-Format1 E2SM-NI-ActionDefinition-Format1,
+ actionDefinition-Format2 E2SM-NI-ActionDefinition-Format2,
+ ...
+}
+
+-- E2SM-NI-ActionDefinition IE is used for Action Format 1
+E2SM-NI-ActionDefinition-Format1 ::= SEQUENCE{
+ actionParameter-List SEQUENCE (SIZE(1..maxofActionParameters)) OF RANparameter-Item OPTIONAL,
+ ...
+}
+
+
+-- E2SM-NI-ActionDefinition IE is used for Action Format 2
+E2SM-NI-ActionDefinition-Format2 ::= SEQUENCE{
+ ranUEgroup-List SEQUENCE (SIZE(1..maxofRANueGroups)) OF RANueGroup-Item OPTIONAL,
+ ...
+}
+
+--
+-- Indication Header OCTET STRING contents
+--
+
+-- E2SM-NI-IndicationHeader IE
+E2SM-NI-IndicationHeader ::= CHOICE{
+ indicationHeader-Format1 E2SM-NI-IndicationHeader-Format1,
+ ...
+}
+
+-- E2SM-NI-IndicationHeader Format 1
+E2SM-NI-IndicationHeader-Format1 ::= SEQUENCE{
+ interface-type NI-Type,
+ interface-ID NI-Identifier,
+ interfaceDirection NI-Direction,
+ timestamp NI-TimeStamp OPTIONAL,
+ ...
+}
+
+--
+-- Indication Message OCTET STRING contents
+--
+
+-- E2SM-NI-IndicationMessage IE
+E2SM-NI-IndicationMessage ::= CHOICE{
+ indicationMessage-Format1 E2SM-NI-IndicationMessage-Format1,
+ ...
+}
+
+-- E2SM-NI-IndicationMessage IE
+E2SM-NI-IndicationMessage-Format1 ::= SEQUENCE{
+ interfaceMessage NI-Message,
+ ...
+}
+
+--
+-- Call Process ID
+--
+
+E2SM-NI-CallProcessID ::= CHOICE{
+ callProcessID-Format1 E2SM-NI-CallProcessID-Format1,
+ callProcessID-Format2 E2SM-NI-CallProcessID-Format2,
+ ...
+}
+-- E2SM-NI-callProcessID IE Format 1
+
+E2SM-NI-CallProcessID-Format1 ::= SEQUENCE{
+ callProcess-ID RANcallProcess-ID-number,
+ ...
+}
+
+E2SM-NI-CallProcessID-Format2 ::= SEQUENCE{
+ callProcess-ID RANcallProcess-ID-string,
+ ...
+}
+
+--
+-- Control Header OCTET STRING contents
+--
+
+-- E2SM-NI-ControlHeader IE
+E2SM-NI-ControlHeader ::= CHOICE{
+ controlHeader-Format1 E2SM-NI-ControlHeader-Format1,
+ ...
+}
+-- E2SM-NI-ControlHeader Format 1
+E2SM-NI-ControlHeader-Format1 ::= SEQUENCE{
+ interface-type NI-Type,
+ interface-ID NI-Identifier,
+ interface-Direction NI-Direction,
+ ric-Control-Message-Priority RIC-Control-Message-Priority OPTIONAL,
+ ...
+}
+
+
+--
+-- Control Message OCTET STRING contents
+--
+
+-- E2SM-NI-ControlHeader IE
+E2SM-NI-ControlMessage ::= CHOICE{
+ controlMessage-Format1 E2SM-NI-ControlMessage-Format1,
+ ...
+}
+
+-- E2SM-NI-ControlMessage Format 1
+E2SM-NI-ControlMessage-Format1 ::= SEQUENCE{
+ interfaceMessage NI-Message,
+ ...
+}
+
+--
+-- Control Outcome OCTET STRING contents
+--
+
+-- E2SM-NI-ControlOutcome IE
+E2SM-NI-ControlOutcome ::= CHOICE{
+ controlOutcome-Format1 E2SM-NI-ControlOutcome-Format1,
+ ...
+}
+
+-- E2SM-NI-ControlOutcome Format 1
+E2SM-NI-ControlOutcome-Format1 ::= SEQUENCE{
+ outcomeElement-List SEQUENCE (SIZE(1..maxofRANparameters)) OF RANparameter-Item OPTIONAL,
+ ...
+}
+
+--
+-- RAN Function Description OCTET STRING contents
+--
+
+-- E2SM-NI-RANfunction-Description
+E2SM-NI-RANfunction-Description ::= SEQUENCE{
+ ranFunction-Name RANfunction-Name,
+ ni-Type-List SEQUENCE (SIZE(1..maxofNItypes)) OF E2SM-NI-RANfunction-Item OPTIONAL,
+ ...
+}
+
+E2SM-NI-RANfunction-Item ::= SEQUENCE{
+ interface-type NI-Type,
+ ric-EventTriggerStyle-List SEQUENCE (SIZE(1..maxofRICstyles)) OF RIC-EventTriggerStyle-List OPTIONAL,
+ ric-ReportStyle-List SEQUENCE (SIZE(1..maxofRICstyles)) OF RIC-ReportStyle-List OPTIONAL,
+ ric-InsertStyle-List SEQUENCE (SIZE(1..maxofRICstyles)) OF RIC-InsertStyle-List OPTIONAL,
+ ric-ControlStyle-List SEQUENCE (SIZE(1..maxofRICstyles)) OF RIC-ControlStyle-List OPTIONAL,
+ ric-PolicyStyle-List SEQUENCE (SIZE(1..maxofRICstyles)) OF RIC-PolicyStyle-List OPTIONAL,
+ ...
+}
+
+--
+-- commmon IEs
+--
+
+-- A
+-- B
+-- C
+-- D
+-- E
+-- F
+-- G
+Global-eNB-ID ::= GlobalENB-ID
+Global-en-gNB-ID ::= GlobalenGNB-ID
+Global-gNB-DU-ID ::= SEQUENCE{
+ global-ng-RAN-ID Global-ng-RAN-ID,
+ gNB-DU-ID GNB-DU-ID
+}
+
+Global-gNB-CU-UP-ID ::= SEQUENCE{
+ global-ng-RAN-ID Global-ng-RAN-ID,
+ gNB-CU-UP-ID GNB-CU-UP-ID
+}
+
+Global-ng-RAN-ID ::= GlobalNG-RANNode-ID
+-- H
+-- I
+-- J
+-- K
+-- L
+-- M
+-- N
+NI-Direction ::= ENUMERATED{
+ incoming,
+ outgoing,
+ both,
+ ...
+}
+
+
+
+NI-Identifier ::= CHOICE{
+ global-eNB-ID Global-eNB-ID,
+ global-en-gNB-ID Global-en-gNB-ID,
+ global-ng-RAN-ID Global-ng-RAN-ID,
+ global-gNB-DU-ID Global-gNB-DU-ID,
+ global-gNB-CU-UP-ID Global-gNB-CU-UP-ID,
+ ...
+}
+
+
+
+NI-Message ::= OCTET STRING
+
+NI-MessageType::= CHOICE{
+ s1MessageType NI-MessageTypeS1,
+ x2MessageType NI-MessageTypeX2,
+ ngMessageType NI-MessageTypeNG,
+ xnMessageType NI-MessageTypeXn,
+ f1MessageType NI-MessageTypeF1,
+ e1MessageType NI-MessageTypeE1,
+ ...
+}
+
+NI-MessageTypeS1 ::= NI-MessageTypeApproach1
+NI-MessageTypeX2 ::= NI-MessageTypeApproach1
+NI-MessageTypeNG ::= NI-MessageTypeApproach1
+NI-MessageTypeXn ::= NI-MessageTypeApproach1
+NI-MessageTypeF1 ::= NI-MessageTypeApproach1
+NI-MessageTypeE1 ::= NI-MessageTypeApproach1
+
+NI-MessageTypeApproach1 ::= SEQUENCE {
+ procedureCode ProcedureCode,
+ typeOfMessage TypeOfMessage,
+ ...
+}
+
+TypeOfMessage ::= ENUMERATED { nothing, initiating-message, successful-outcome, unsuccessful-outcome }
+
+
+NI-ProtocolIE-Item ::= SEQUENCE{
+ interfaceProtocolIE-ID NI-ProtocolIE-ID,
+ interfaceProtocolIE-Test NI-ProtocolIE-Test,
+ interfaceProtocolIE-Value NI-ProtocolIE-Value,
+ ...
+}
+
+NI-ProtocolIE-ID ::= ProtocolIE-ID
+
+NI-ProtocolIE-Test ::= ENUMERATED{
+ equal,
+ greaterthan,
+ lessthan,
+ contains,
+ present,
+ ...
+}
+
+NI-ProtocolIE-Value ::= CHOICE{
+ valueInt INTEGER,
+ valueEnum INTEGER,
+ valueBool BOOLEAN,
+ valueBitS BIT STRING,
+ valueOctS OCTET STRING,
+ valuePrtS PrintableString,
+ ...
+}
+
+NI-TimeStamp ::= OCTET STRING (SIZE(8))
+
+NI-Type ::= ENUMERATED{
+ s1,
+ x2,
+ ng,
+ xn,
+ f1,
+ e1,
+ ...
+}
+
+-- O
+-- P
+-- Q
+-- R
+
+RANcallProcess-ID-number ::= INTEGER
+
+RANcallProcess-ID-string ::= PrintableString(SIZE(1..150,...))
+
+
+RANimperativePolicy ::= SEQUENCE{
+ ranImperativePolicy-List SEQUENCE (SIZE(1..maxofRANparameters)) OF RANparameter-Item OPTIONAL,
+ ...
+}
+
+RANparameter-Item ::= SEQUENCE {
+ ranParameter-ID RANparameter-ID,
+ ranParameter-Value RANparameter-Value,
+ ...
+}
+
+RANparameterDef-Item ::= SEQUENCE {
+ ranParameter-ID RANparameter-ID,
+ ranParameter-Name RANparameter-Name,
+ ranParameter-Type RANparameter-Type,
+ ...
+}
+
+RANparameter-ID ::= INTEGER (0..maxofRANparameters)
+
+RANparameter-Name ::= PrintableString(SIZE(1..150,...))
+
+RANparameter-Test-Condition ::= ENUMERATED{
+ equal,
+ greaterthan,
+ lessthan,
+ contains,
+ present,
+ ...
+}
+
+RANparameter-Type ::= ENUMERATED{
+ integer,
+ enumerated,
+ boolean,
+ bit-string,
+ octet-string,
+ printable-string,
+ ...
+}
+
+RANparameter-Value ::= CHOICE{
+ valueInt INTEGER,
+ valueEnum INTEGER,
+ valueBool BOOLEAN,
+ valueBitS BIT STRING,
+ valueOctS OCTET STRING,
+ valuePrtS PrintableString,
+ ...
+}
+
+
+RANueGroupID ::= INTEGER (0..maxofRANueGroups)
+
+RANueGroup-Item ::= SEQUENCE {
+ ranUEgroupID RANueGroupID,
+ ranUEgroupDefinition RANueGroupDefinition,
+ ranPolicy RANimperativePolicy,
+ ...
+}
+
+
+
+RANueGroupDefinition ::= SEQUENCE{
+ ranUEgroupDef-List SEQUENCE (SIZE(1..maxofRANparameters)) OF RANueGroupDef-Item OPTIONAL,
+ ...
+}
+
+
+RANueGroupDef-Item ::= SEQUENCE{
+ ranParameter-ID RANparameter-ID,
+ ranParameter-Test RANparameter-Test-Condition,
+ ranParameter-Value RANparameter-Value,
+ ...
+}
+
+RIC-Control-Message-Priority ::= INTEGER
+
+
+RIC-ControlStyle-List ::= SEQUENCE{
+ ric-ControlStyle-Type RIC-Style-Type,
+ ric-ControlStyle-Name RIC-Style-Name,
+ ric-ControlFormat-Type RIC-Format-Type,
+ ric-ControlHeaderFormat-Type RIC-Format-Type,
+ ric-ControlMessageFormat-Type RIC-Format-Type,
+ ric-CallProcessIDFormat-Type RIC-Format-Type,
+ ric-ControlOutcomeFormat-Type RIC-Format-Type,
+ ric-ControlOutcomeRanParaDef-List SEQUENCE (SIZE(1..maxofRANparameters)) OF RANparameterDef-Item,
+ ...
+}
+
+RIC-EventTriggerStyle-List ::= SEQUENCE{
+ ric-EventTriggerStyle-Type RIC-Style-Type,
+ ric-EventTriggerStyle-Name RIC-Style-Name,
+ ric-EventTriggerFormat-Type RIC-Format-Type,
+ ...
+}
+RIC-InsertStyle-List ::= SEQUENCE{
+ ric-InsertStyle-Type RIC-Style-Type,
+ ric-InsertStyle-Name RIC-Style-Name,
+ ric-InsertActionFormat-Type RIC-Format-Type,
+ ric-InsertRanParameterDef-List SEQUENCE (SIZE(1..maxofRANparameters)) OF RANparameterDef-Item,
+ ric-IndicationHeaderFormat-Type RIC-Format-Type,
+ ric-IndicationMessageFormat-Type RIC-Format-Type,
+ ric-CallProcessIDFormat-Type RIC-Format-Type,
+ ...
+}
+RIC-PolicyStyle-List ::= SEQUENCE{
+ ric-PolicyStyle-Type RIC-Style-Type,
+ ric-PolicyStyle-Name RIC-Style-Name,
+ ric-PolicyActionFormat-Type RIC-Format-Type,
+ ric-PolicyRanParameterDef-List SEQUENCE (SIZE(1..maxofRANparameters)) OF RANparameterDef-Item,
+ ...
+}
+
+RIC-ReportStyle-List ::= SEQUENCE{
+ ric-ReportStyle-Type RIC-Style-Type,
+ ric-ReportStyle-Name RIC-Style-Name,
+ ric-ReportActionFormat-Type RIC-Format-Type,
+ ric-ReportRanParameterDef-List SEQUENCE (SIZE(1..maxofRANparameters)) OF RANparameterDef-Item,
+ ric-IndicationHeaderFormat-Type RIC-Format-Type,
+ ric-IndicationMessageFormat-Type RIC-Format-Type,
+ ...
+}
+
+-- RIC-Format-Type ::= INTEGER
+
+-- RIC-Style-Type ::= INTEGER
+
+-- RIC-Style-Name ::= PrintableString(SIZE(1..150,...))
+
+
+-- S
+-- T
+-- U
+-- V
+-- W
+-- X
+-- Y
+-- Z
+
+END
+-- ASN1STOP
diff --git a/epan/dissectors/asn1/e2ap/e2sm-rc-v1.03.asn b/epan/dissectors/asn1/e2ap/e2sm-rc-v1.03.asn
new file mode 100644
index 00000000..0ec017c7
--- /dev/null
+++ b/epan/dissectors/asn1/e2ap/e2sm-rc-v1.03.asn
@@ -0,0 +1,1150 @@
+-- ASN1START
+-- **************************************************************
+-- E2SM-RC Information Element Definitions
+-- **************************************************************
+
+E2SM-RC-IEs {
+iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) oran(53148) e2(1) version1(1) e2sm(2) e2sm-RC-IEs (3)}
+
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+
+-- **************************************************************
+-- E2SM Common IEs
+-- **************************************************************
+
+IMPORTS
+ CGI,
+ E-UTRA-ARFCN,
+ EUTRA-CGI,
+ E-UTRA-PCI,
+ E-UTRA-TAC,
+ FiveGS-TAC,
+ InterfaceIdentifier,
+ InterfaceType,
+ Interface-MessageID,
+ NRFrequencyInfo,
+ -- NR-CGI,
+ NR-PCI,
+ RANfunction-Name,
+ RIC-Format-Type,
+ RIC-Style-Name,
+ RIC-Style-Type,
+ RRC-MessageID,
+ ServingCell-ARFCN,
+ ServingCell-PCI,
+ UEID
+FROM E2SM-COMMON-IEs;
+
+
+-- *****************************************************
+-- CONSTANTS
+-- *****************************************************
+
+maxnoofMessages INTEGER ::= 65535
+maxnoofE2InfoChanges INTEGER ::= 65535
+maxnoofUEInfoChanges INTEGER ::= 65535
+maxnoofRRCstate INTEGER ::= 8
+maxnoofParametersToReport INTEGER ::= 65535
+maxnoofPolicyConditions INTEGER ::= 65535
+maxnoofAssociatedRANParameters INTEGER ::= 65535
+maxnoofUEID INTEGER ::= 65535
+maxnoofCellID INTEGER ::= 65535
+maxnoofRANOutcomeParameters INTEGER ::= 255
+maxnoofParametersinStructure INTEGER ::= 65535
+maxnoofItemsinList INTEGER ::= 65535
+maxnoofUEInfo INTEGER ::= 65535
+maxnoofCellInfo INTEGER ::= 65535
+maxnoofUEeventInfo INTEGER ::= 65535
+maxnoofRANparamTest INTEGER ::= 255
+maxnoofNeighbourCell INTEGER ::= 65535
+maxnoofRICStyles INTEGER ::= 63
+maxnoofCallProcessTypes INTEGER ::= 65535
+maxnoofCallProcessBreakpoints INTEGER ::= 65535
+maxnoofInsertIndication INTEGER ::= 65535
+maxnoofControlAction INTEGER ::= 65535
+maxnoofPolicyAction INTEGER ::= 65535
+maxnoofInsertIndicationActions INTEGER ::= 63
+maxnoofMulCtrlActions INTEGER ::= 63
+
+
+-- *****************************************************
+-- IEs
+-- *****************************************************
+
+-- N.B.. copied from ric 2.01...
+-- copied from v16.2.0
+-- NR-CGI ::= SEQUENCE {
+-- pLMNIdentity PLMNIdentity,
+-- nRCellIdentity NRCellIdentity,
+-- ...
+-- }
+
+LogicalOR ::= ENUMERATED {true, false, ...}
+
+NeighborCell-List ::= SEQUENCE (SIZE(1..maxnoofNeighbourCell)) OF NeighborCell-Item
+
+NeighborCell-Item ::= CHOICE {
+ ranType-Choice-NR NeighborCell-Item-Choice-NR,
+ ranType-Choice-EUTRA NeighborCell-Item-Choice-E-UTRA,
+ ...
+}
+
+NeighborCell-Item-Choice-NR ::= SEQUENCE {
+ nR-CGI NR-CGI,
+ nR-PCI NR-PCI,
+ fiveGS-TAC FiveGS-TAC,
+ nR-mode-info ENUMERATED {fdd, tdd, ...},
+ nR-FreqInfo NRFrequencyInfo,
+ x2-Xn-established ENUMERATED {true, false, ...},
+ hO-validated ENUMERATED {true, false, ...},
+ version INTEGER (1..65535, ...),
+ ...
+}
+
+NeighborCell-Item-Choice-E-UTRA ::= SEQUENCE {
+ eUTRA-CGI EUTRA-CGI,
+ eUTRA-PCI E-UTRA-PCI,
+ eUTRA-ARFCN E-UTRA-ARFCN,
+ eUTRA-TAC E-UTRA-TAC,
+ x2-Xn-established ENUMERATED {true, false, ...},
+ hO-validated ENUMERATED {true, false, ...},
+ version INTEGER (1..65535, ...),
+ ...
+}
+
+NeighborRelation-Info ::= SEQUENCE {
+ servingCellPCI ServingCell-PCI,
+ servingCellARFCN ServingCell-ARFCN,
+ neighborCell-List NeighborCell-List,
+ ...
+}
+
+RRC-State ::= ENUMERATED {rrc-connected, rrc-inactive, rrc-idle, any, ...}
+
+
+-------------------------------
+-- Event Trigger related IEs
+-------------------------------
+
+EventTrigger-Cell-Info ::= SEQUENCE {
+cellInfo-List SEQUENCE (SIZE(1..maxnoofCellInfo)) OF EventTrigger-Cell-Info-Item,
+ ...
+}
+
+EventTrigger-Cell-Info-Item ::= SEQUENCE {
+ eventTriggerCellID RIC-EventTrigger-Cell-ID,
+ cellType CHOICE {
+ cellType-Choice-Individual EventTrigger-Cell-Info-Item-Choice-Individual,
+ cellType-Choice-Group EventTrigger-Cell-Info-Item-Choice-Group,
+ ...
+ },
+ logicalOR LogicalOR OPTIONAL,
+ ...
+}
+
+EventTrigger-Cell-Info-Item-Choice-Individual ::= SEQUENCE {
+ cellGlobalID CGI,
+ ...
+}
+
+EventTrigger-Cell-Info-Item-Choice-Group ::= SEQUENCE {
+ ranParameterTesting RANParameter-Testing,
+ ...
+}
+
+
+
+EventTrigger-UE-Info ::= SEQUENCE {
+ueInfo-List SEQUENCE (SIZE(1..maxnoofUEInfo)) OF EventTrigger-UE-Info-Item,
+...
+}
+
+EventTrigger-UE-Info-Item ::= SEQUENCE {
+ eventTriggerUEID RIC-EventTrigger-UE-ID,
+ ueType CHOICE {
+ ueType-Choice-Individual EventTrigger-UE-Info-Item-Choice-Individual,
+ ueType-Choice-Group EventTrigger-UE-Info-Item-Choice-Group,
+ ...
+ },
+ logicalOR LogicalOR OPTIONAL,
+ ...
+}
+
+EventTrigger-UE-Info-Item-Choice-Individual ::= SEQUENCE {
+ ueID UEID,
+ ranParameterTesting RANParameter-Testing OPTIONAL,
+ ...
+}
+
+EventTrigger-UE-Info-Item-Choice-Group ::= SEQUENCE {
+ ranParameterTesting RANParameter-Testing,
+ ...
+}
+
+
+
+EventTrigger-UEevent-Info ::= SEQUENCE {
+ueEvent-List SEQUENCE (SIZE(1..maxnoofUEeventInfo)) OF EventTrigger-UEevent-Info-Item,
+...
+}
+
+EventTrigger-UEevent-Info-Item ::= SEQUENCE {
+ ueEventID RIC-EventTrigger-UEevent-ID,
+ logicalOR LogicalOR OPTIONAL,
+ ...
+}
+
+
+-------------------------------
+-- RAN Parameter related IEs
+-------------------------------
+
+-- RANParameter-ID ::= INTEGER (1..2^32, ...)
+RANParameter-ID ::= INTEGER (1..4294967296, ...)
+
+RANParameter-Name ::= PrintableString (SIZE(1..150, ...))
+
+RANParameter-Definition ::= SEQUENCE {
+ ranParameter-Definition-Choice RANParameter-Definition-Choice,
+ ...
+}
+
+RANParameter-Definition-Choice ::= CHOICE {
+ choiceLIST RANParameter-Definition-Choice-LIST,
+ choiceSTRUCTURE RANParameter-Definition-Choice-STRUCTURE,
+ ...
+}
+
+RANParameter-Definition-Choice-LIST ::= SEQUENCE {
+ ranParameter-List SEQUENCE (SIZE(1..maxnoofItemsinList)) OF RANParameter-Definition-Choice-LIST-Item,
+ ...
+}
+
+RANParameter-Definition-Choice-LIST-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-name RANParameter-Name,
+ ranParameter-Definition RANParameter-Definition OPTIONAL,
+ ...
+}
+
+RANParameter-Definition-Choice-STRUCTURE ::= SEQUENCE {
+ ranParameter-STRUCTURE SEQUENCE (SIZE(1..maxnoofParametersinStructure)) OF RANParameter-Definition-Choice-STRUCTURE-Item,
+ ...
+}
+
+RANParameter-Definition-Choice-STRUCTURE-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-name RANParameter-Name,
+ ranParameter-Definition RANParameter-Definition OPTIONAL,
+ ...
+}
+
+RANParameter-Value ::= CHOICE {
+ valueBoolean BOOLEAN,
+ valueInt INTEGER,
+ valueReal REAL,
+ valueBitS BIT STRING,
+ valueOctS OCTET STRING,
+ valuePrintableString PrintableString,
+ ...
+}
+
+RANParameter-ValueType ::= CHOICE {
+ ranP-Choice-ElementTrue RANParameter-ValueType-Choice-ElementTrue,
+ ranP-Choice-ElementFalse RANParameter-ValueType-Choice-ElementFalse,
+ ranP-Choice-Structure RANParameter-ValueType-Choice-Structure,
+ ranP-Choice-List RANParameter-ValueType-Choice-List,
+ ...
+}
+
+
+
+RANParameter-ValueType-Choice-ElementTrue ::= SEQUENCE {
+ ranParameter-value RANParameter-Value,
+ ...
+}
+
+RANParameter-ValueType-Choice-ElementFalse ::= SEQUENCE {
+ ranParameter-value RANParameter-Value OPTIONAL,
+-- C-ifControl: This IE shall be present if it is part of a RIC Control Request message. Otherwise it is optional.
+ ...
+}
+
+RANParameter-ValueType-Choice-Structure ::= SEQUENCE {
+ ranParameter-Structure RANParameter-STRUCTURE,
+ ...
+}
+
+RANParameter-ValueType-Choice-List ::= SEQUENCE {
+ ranParameter-List RANParameter-LIST,
+ ...
+}
+
+
+RANParameter-STRUCTURE ::= SEQUENCE {
+ sequence-of-ranParameters SEQUENCE (SIZE(1..maxnoofParametersinStructure)) OF RANParameter-STRUCTURE-Item OPTIONAL,
+ ...
+}
+
+RANParameter-STRUCTURE-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-valueType RANParameter-ValueType,
+ ...
+}
+
+RANParameter-LIST ::= SEQUENCE {
+ list-of-ranParameter SEQUENCE (SIZE(1..maxnoofItemsinList)) OF RANParameter-STRUCTURE,
+ ...
+}
+
+
+RANParameter-Testing ::= SEQUENCE (SIZE(1..maxnoofRANparamTest)) OF RANParameter-Testing-Item
+
+RANParameter-TestingCondition ::= CHOICE {
+ ranP-Choice-comparison ENUMERATED {equal, difference, greaterthan, lessthan, contains, starts-with, ...},
+ ranP-Choice-presence ENUMERATED {present, configured, rollover, non-zero, ...},
+ ...
+}
+
+RANParameter-Testing-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-Type CHOICE {
+ ranP-Choice-List RANParameter-Testing-Item-Choice-List,
+ ranP-Choice-Structure RANParameter-Testing-Item-Choice-Structure,
+ ranP-Choice-ElementTrue RANParameter-Testing-Item-Choice-ElementTrue,
+ ranP-Choice-ElementFalse RANParameter-Testing-Item-Choice-ElementFalse,
+ ...
+ },
+ ...
+}
+
+RANParameter-Testing-Item-Choice-List ::= SEQUENCE {
+ ranParameter-List RANParameter-Testing-LIST,
+ ...
+}
+
+RANParameter-Testing-Item-Choice-Structure ::= SEQUENCE {
+ ranParameter-Structure RANParameter-Testing-STRUCTURE,
+ ...
+}
+
+RANParameter-Testing-Item-Choice-ElementTrue ::= SEQUENCE {
+ ranParameter-value RANParameter-Value,
+ ...
+}
+
+RANParameter-Testing-Item-Choice-ElementFalse ::= SEQUENCE {
+ ranParameter-TestCondition RANParameter-TestingCondition,
+ ranParameter-Value RANParameter-Value OPTIONAL,
+ logicalOR LogicalOR OPTIONAL,
+ ...
+}
+
+RANParameter-Testing-LIST ::= SEQUENCE (SIZE(1..maxnoofItemsinList)) OF RANParameter-Testing-Item
+
+RANParameter-Testing-STRUCTURE ::= SEQUENCE (SIZE(1..maxnoofParametersinStructure)) OF RANParameter-Testing-Item
+
+
+
+----------------------------
+-- RIC Service related IEs
+----------------------------
+
+RAN-CallProcess-ID ::= INTEGER (1..232, ...)
+
+RIC-CallProcessType-ID ::= INTEGER (1..65535, ...)
+
+RIC-CallProcessType-Name ::= PrintableString (SIZE(1..150, ...))
+
+RIC-CallProcessBreakpoint-ID ::= INTEGER (1..65535, ...)
+
+RIC-CallProcessBreakpoint-Name ::= PrintableString (SIZE(1..150, ...))
+
+RIC-ControlAction-ID ::= INTEGER (1..65535, ...)
+
+RIC-ControlAction-Name ::= PrintableString (SIZE(1..150, ...))
+
+RIC-EventTriggerCondition-ID ::= INTEGER (1..65535, ...)
+
+RIC-EventTrigger-UE-ID ::= INTEGER (1..65535, ...)
+
+RIC-EventTrigger-UEevent-ID ::= INTEGER (1..65535, ...)
+
+RIC-EventTrigger-Cell-ID ::= INTEGER (1..65535, ...)
+
+RIC-InsertIndication-ID ::= INTEGER (1..65535, ...)
+
+RIC-InsertIndication-Name ::= PrintableString (SIZE(1..150, ...))
+
+RIC-PolicyAction ::= SEQUENCE {
+ ric-PolicyAction-ID RIC-ControlAction-ID,
+ ranParameters-List SEQUENCE (SIZE(1..maxnoofAssociatedRANParameters)) OF RIC-PolicyAction-RANParameter-Item OPTIONAL,
+ ...,
+ ric-PolicyDecision ENUMERATED {accept, reject, ...} OPTIONAL
+}
+
+
+RIC-PolicyAction-RANParameter-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-valueType RANParameter-ValueType,
+ ...
+}
+
+
+-- **************************************************************
+-- E2SM-RC Service Model IEs
+-- **************************************************************
+
+
+-- ***************************************************
+-- Event Trigger OCTET STRING contents
+-- ***************************************************
+
+E2SM-RC-EventTrigger ::= SEQUENCE {
+ ric-eventTrigger-formats CHOICE {
+ eventTrigger-Format1 E2SM-RC-EventTrigger-Format1,
+ eventTrigger-Format2 E2SM-RC-EventTrigger-Format2,
+ eventTrigger-Format3 E2SM-RC-EventTrigger-Format3,
+ eventTrigger-Format4 E2SM-RC-EventTrigger-Format4,
+ eventTrigger-Format5 E2SM-RC-EventTrigger-Format5,
+ ...
+ },
+ ...
+}
+
+E2SM-RC-EventTrigger-Format1 ::= SEQUENCE {
+ message-List SEQUENCE (SIZE(1..maxnoofMessages)) OF E2SM-RC-EventTrigger-Format1-Item,
+ globalAssociatedUEInfo EventTrigger-UE-Info OPTIONAL,
+ ...
+}
+
+E2SM-RC-EventTrigger-Format1-Item ::= SEQUENCE {
+ ric-eventTriggerCondition-ID RIC-EventTriggerCondition-ID,
+ messageType MessageType-Choice,
+ messageDirection ENUMERATED {incoming, outgoing, ...} OPTIONAL,
+ associatedUEInfo EventTrigger-UE-Info OPTIONAL,
+ associatedUEEvent EventTrigger-UEevent-Info OPTIONAL,
+ logicalOR LogicalOR OPTIONAL,
+ ...
+}
+
+
+MessageType-Choice ::= CHOICE {
+ messageType-Choice-NI MessageType-Choice-NI,
+ messageType-Choice-RRC MessageType-Choice-RRC,
+ ...
+}
+
+
+MessageType-Choice-NI ::= SEQUENCE {
+ nI-Type InterfaceType,
+ nI-Identifier InterfaceIdentifier OPTIONAL,
+ nI-Message Interface-MessageID OPTIONAL,
+ ...
+}
+
+MessageType-Choice-RRC ::= SEQUENCE {
+ rRC-Message RRC-MessageID,
+ ...
+}
+
+
+E2SM-RC-EventTrigger-Format2 ::= SEQUENCE {
+ ric-callProcessType-ID RIC-CallProcessType-ID,
+ ric-callProcessBreakpoint-ID RIC-CallProcessBreakpoint-ID,
+ associatedE2NodeInfo RANParameter-Testing OPTIONAL,
+ associatedUEInfo EventTrigger-UE-Info OPTIONAL,
+ ...
+}
+
+
+E2SM-RC-EventTrigger-Format3 ::= SEQUENCE {
+ e2NodeInfoChange-List SEQUENCE (SIZE(1..maxnoofE2InfoChanges)) OF E2SM-RC-EventTrigger-Format3-Item,
+ ...
+}
+
+E2SM-RC-EventTrigger-Format3-Item ::= SEQUENCE {
+ ric-eventTriggerCondition-ID RIC-EventTriggerCondition-ID,
+ e2NodeInfoChange-ID INTEGER (1..512, ...),
+ associatedCellInfo EventTrigger-Cell-Info OPTIONAL,
+ logicalOR LogicalOR OPTIONAL,
+ ...
+}
+
+
+E2SM-RC-EventTrigger-Format4 ::= SEQUENCE {
+ uEInfoChange-List SEQUENCE (SIZE(1..maxnoofUEInfoChanges)) OF E2SM-RC-EventTrigger-Format4-Item,
+ ...
+}
+
+E2SM-RC-EventTrigger-Format4-Item ::= SEQUENCE {
+ ric-eventTriggerCondition-ID RIC-EventTriggerCondition-ID,
+ triggerType TriggerType-Choice,
+ associatedUEInfo EventTrigger-UE-Info OPTIONAL,
+ logicalOR LogicalOR OPTIONAL,
+ ...
+}
+
+
+TriggerType-Choice ::= CHOICE {
+ triggerType-Choice-RRCstate TriggerType-Choice-RRCstate,
+ triggerType-Choice-UEID TriggerType-Choice-UEID,
+ triggerType-Choice-L2state TriggerType-Choice-L2state,
+ ...
+}
+
+TriggerType-Choice-RRCstate ::= SEQUENCE {
+ rrcState-List SEQUENCE (SIZE(1..maxnoofRRCstate)) OF TriggerType-Choice-RRCstate-Item,
+ ...
+}
+
+TriggerType-Choice-RRCstate-Item ::= SEQUENCE {
+ stateChangedTo RRC-State,
+ logicalOR LogicalOR OPTIONAL,
+ ...
+}
+
+TriggerType-Choice-UEID ::= SEQUENCE {
+ ueIDchange-ID INTEGER (1..512, ...),
+ ...
+}
+
+TriggerType-Choice-L2state ::= SEQUENCE {
+ associatedL2variables RANParameter-Testing,
+ ...
+}
+
+
+E2SM-RC-EventTrigger-Format5 ::= SEQUENCE {
+ onDemand ENUMERATED {true, ...},
+ associatedUEInfo EventTrigger-UE-Info OPTIONAL,
+ associatedCellInfo EventTrigger-Cell-Info OPTIONAL,
+ ...
+}
+
+
+
+-- ***************************************************
+-- Action Definition OCTET STRING contents
+-- ***************************************************
+
+E2SM-RC-ActionDefinition ::= SEQUENCE {
+ ric-Style-Type RIC-Style-Type,
+ ric-actionDefinition-formats CHOICE {
+ actionDefinition-Format1 E2SM-RC-ActionDefinition-Format1,
+ actionDefinition-Format2 E2SM-RC-ActionDefinition-Format2,
+ actionDefinition-Format3 E2SM-RC-ActionDefinition-Format3,
+ ...,
+ actionDefinition-Format4 E2SM-RC-ActionDefinition-Format4
+
+ },
+ ...
+}
+
+E2SM-RC-ActionDefinition-Format1 ::= SEQUENCE {
+ ranP-ToBeReported-List SEQUENCE (SIZE(1..maxnoofParametersToReport)) OF E2SM-RC-ActionDefinition-Format1-Item,
+ ...
+}
+
+
+E2SM-RC-ActionDefinition-Format1-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ...,
+ ranParameter-Definition RANParameter-Definition OPTIONAL
+}
+
+
+E2SM-RC-ActionDefinition-Format2 ::= SEQUENCE {
+ ric-PolicyConditions-List SEQUENCE (SIZE(1..maxnoofPolicyConditions)) OF E2SM-RC-ActionDefinition-Format2-Item,
+ ...
+}
+
+E2SM-RC-ActionDefinition-Format2-Item ::= SEQUENCE {
+ ric-PolicyAction RIC-PolicyAction,
+ ric-PolicyConditionDefinition RANParameter-Testing OPTIONAL,
+ ...
+}
+
+E2SM-RC-ActionDefinition-Format3 ::= SEQUENCE {
+ ric-InsertIndication-ID RIC-InsertIndication-ID,
+ ranP-InsertIndication-List SEQUENCE (SIZE(1..maxnoofAssociatedRANParameters)) OF E2SM-RC-ActionDefinition-Format3-Item,
+ ueID UEID OPTIONAL,
+ ...
+}
+
+
+E2SM-RC-ActionDefinition-Format3-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ...,
+ ranParameter-Definition RANParameter-Definition OPTIONAL
+}
+
+E2SM-RC-ActionDefinition-Format4 ::= SEQUENCE {
+ ric-InsertStyle-List SEQUENCE (SIZE(1.. maxnoofRICStyles)) OF E2SM-RC-ActionDefinition-Format4-Style-Item,
+ ueID UEID OPTIONAL,
+ ...
+}
+
+E2SM-RC-ActionDefinition-Format4-Style-Item ::= SEQUENCE {
+ requested-Insert-Style-Type RIC-Style-Type,
+ ric-InsertIndication-List SEQUENCE (SIZE(1..maxnoofInsertIndicationActions)) OF E2SM-RC-ActionDefinition-Format4-Indication-Item,
+ ...
+}
+
+E2SM-RC-ActionDefinition-Format4-Indication-Item ::= SEQUENCE {
+ ric-InsertIndication-ID RIC-InsertIndication-ID,
+ ranP-InsertIndication-List SEQUENCE (SIZE(1..maxnoofAssociatedRANParameters)) OF E2SM-RC-ActionDefinition-Format4-RANP-Item,
+ ...
+}
+
+E2SM-RC-ActionDefinition-Format4-RANP-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ...,
+ ranParameter-Definition RANParameter-Definition OPTIONAL
+}
+
+
+-- ***************************************************
+-- Indication Header OCTET STRING contents
+-- ***************************************************
+
+E2SM-RC-IndicationHeader ::= SEQUENCE {
+ric-indicationHeader-formats CHOICE {
+ indicationHeader-Format1 E2SM-RC-IndicationHeader-Format1,
+ indicationHeader-Format2 E2SM-RC-IndicationHeader-Format2,
+ ...,
+ indicationHeader-Format3 E2SM-RC-IndicationHeader-Format3
+
+ },
+ ...
+}
+
+E2SM-RC-IndicationHeader-Format1 ::= SEQUENCE {
+ ric-eventTriggerCondition-ID RIC-EventTriggerCondition-ID OPTIONAL,
+ ...
+}
+
+E2SM-RC-IndicationHeader-Format2 ::= SEQUENCE {
+ ueID UEID,
+ ric-InsertStyle-Type RIC-Style-Type,
+ ric-InsertIndication-ID RIC-InsertIndication-ID,
+ ...
+}
+
+E2SM-RC-IndicationHeader-Format3 ::= SEQUENCE {
+ ric-eventTriggerCondition-ID RIC-EventTriggerCondition-ID OPTIONAL,
+ ueID UEID OPTIONAL,
+ ...
+}
+
+
+-- ***************************************************
+-- Indication Message OCTET STRING contents
+-- ***************************************************
+
+E2SM-RC-IndicationMessage ::= SEQUENCE {
+ric-indicationMessage-formats CHOICE {
+ indicationMessage-Format1 E2SM-RC-IndicationMessage-Format1,
+ indicationMessage-Format2 E2SM-RC-IndicationMessage-Format2,
+ indicationMessage-Format3 E2SM-RC-IndicationMessage-Format3,
+ indicationMessage-Format4 E2SM-RC-IndicationMessage-Format4,
+ indicationMessage-Format5 E2SM-RC-IndicationMessage-Format5,
+ ...,
+ indicationMessage-Format6 E2SM-RC-IndicationMessage-Format6
+
+ },
+ ...
+}
+
+E2SM-RC-IndicationMessage-Format1 ::= SEQUENCE {
+ ranP-Reported-List SEQUENCE (SIZE(1..maxnoofAssociatedRANParameters)) OF E2SM-RC-IndicationMessage-Format1-Item,
+ ...
+}
+
+E2SM-RC-IndicationMessage-Format1-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-valueType RANParameter-ValueType,
+ ...
+}
+
+
+E2SM-RC-IndicationMessage-Format2 ::= SEQUENCE {
+ ueParameter-List SEQUENCE (SIZE(1..maxnoofUEID)) OF E2SM-RC-IndicationMessage-Format2-Item,
+ ...
+}
+
+E2SM-RC-IndicationMessage-Format2-Item ::= SEQUENCE {
+ ueID UEID,
+ ranP-List SEQUENCE (SIZE(1..maxnoofAssociatedRANParameters)) OF E2SM-RC-IndicationMessage-Format2-RANParameter-Item,
+ ...
+}
+
+
+E2SM-RC-IndicationMessage-Format2-RANParameter-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-valueType RANParameter-ValueType,
+ ...
+}
+
+
+E2SM-RC-IndicationMessage-Format3 ::= SEQUENCE {
+ cellInfo-List SEQUENCE (SIZE(1..maxnoofCellID)) OF E2SM-RC-IndicationMessage-Format3-Item,
+ ...
+}
+
+E2SM-RC-IndicationMessage-Format3-Item ::= SEQUENCE {
+ cellGlobal-ID CGI,
+ cellContextInfo OCTET STRING OPTIONAL,
+ cellDeleted BOOLEAN OPTIONAL,
+ neighborRelation-Table NeighborRelation-Info OPTIONAL,
+ ...
+}
+
+E2SM-RC-IndicationMessage-Format4 ::= SEQUENCE {
+ ueInfo-List SEQUENCE (SIZE(0..maxnoofUEID)) OF E2SM-RC-IndicationMessage-Format4-ItemUE,
+ cellInfo-List SEQUENCE (SIZE(0..maxnoofCellID)) OF E2SM-RC-IndicationMessage-Format4-ItemCell,
+ ...
+}
+
+
+E2SM-RC-IndicationMessage-Format4-ItemUE ::= SEQUENCE {
+ ueID UEID,
+ ueContextInfo OCTET STRING OPTIONAL,
+ cellGlobal-ID CGI,
+ ...
+}
+
+
+E2SM-RC-IndicationMessage-Format4-ItemCell ::= SEQUENCE {
+ cellGlobal-ID CGI,
+ cellContextInfo OCTET STRING OPTIONAL,
+ neighborRelation-Table NeighborRelation-Info OPTIONAL,
+ ...
+}
+
+E2SM-RC-IndicationMessage-Format5 ::= SEQUENCE{
+ ranP-Requested-List SEQUENCE (SIZE(0..maxnoofAssociatedRANParameters)) OF E2SM-RC-IndicationMessage-Format5-Item,
+ ...
+}
+
+
+E2SM-RC-IndicationMessage-Format5-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-valueType RANParameter-ValueType,
+ ...
+}
+
+E2SM-RC-IndicationMessage-Format6 ::= SEQUENCE {
+ ric-InsertStyle-List SEQUENCE (SIZE(1.. maxnoofRICStyles)) OF E2SM-RC-IndicationMessage-Format6-Style-Item,
+ ...
+}
+
+E2SM-RC-IndicationMessage-Format6-Style-Item ::= SEQUENCE {
+ indicated-Insert-Style-Type RIC-Style-Type,
+ ric-InsertIndication-List SEQUENCE (SIZE(1..maxnoofInsertIndicationActions)) OF E2SM-RC-IndicationMessage-Format6-Indication-Item,
+ ...
+}
+
+E2SM-RC-IndicationMessage-Format6-Indication-Item ::= SEQUENCE {
+ ric-InsertIndication-ID RIC-InsertIndication-ID,
+ ranP-InsertIndication-List SEQUENCE (SIZE(0..maxnoofAssociatedRANParameters)) OF E2SM-RC-IndicationMessage-Format6-RANP-Item ,
+ ...
+}
+
+E2SM-RC-IndicationMessage-Format6-RANP-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-valueType RANParameter-ValueType,
+ ...
+}
+
+
+-- **************************************************
+-- Call Process ID OCTET STRING contents
+-- **************************************************
+
+E2SM-RC-CallProcessID ::= SEQUENCE {
+ric-callProcessID-formats CHOICE {
+ callProcessID-Format1 E2SM-RC-CallProcessID-Format1,
+ ...
+ },
+ ...
+}
+
+E2SM-RC-CallProcessID-Format1 ::= SEQUENCE {
+ ric-callProcess-ID RAN-CallProcess-ID,
+ ...
+}
+
+
+-- ***************************************************
+-- Control Header OCTET STRING contents
+-- ***************************************************
+
+E2SM-RC-ControlHeader ::= SEQUENCE {
+ ric-controlHeader-formats CHOICE {
+ controlHeader-Format1 E2SM-RC-ControlHeader-Format1,
+ ...,
+ controlHeader-Format2 E2SM-RC-ControlHeader-Format2
+ },
+ ...
+}
+
+E2SM-RC-ControlHeader-Format1 ::= SEQUENCE {
+ ueID UEID,
+ ric-Style-Type RIC-Style-Type,
+ ric-ControlAction-ID RIC-ControlAction-ID,
+ ric-ControlDecision ENUMERATED {accept, reject, ...} OPTIONAL,
+ ...
+}
+
+E2SM-RC-ControlHeader-Format2 ::= SEQUENCE {
+ ueID UEID OPTIONAL,
+ ric-ControlDecision ENUMERATED {accept, reject, ...} OPTIONAL,
+ ...
+}
+
+-- ***************************************************
+-- Control Message OCTET STRING contents
+-- ***************************************************
+
+E2SM-RC-ControlMessage ::= SEQUENCE {
+ ric-controlMessage-formats CHOICE {
+ controlMessage-Format1 E2SM-RC-ControlMessage-Format1,
+ ...,
+ controlMessage-Format2 E2SM-RC-ControlMessage-Format2
+
+ },
+ ...
+}
+
+E2SM-RC-ControlMessage-Format1 ::= SEQUENCE {
+ ranP-List SEQUENCE (SIZE(0..maxnoofAssociatedRANParameters)) OF E2SM-RC-ControlMessage-Format1-Item,
+ ...
+}
+
+
+E2SM-RC-ControlMessage-Format1-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-valueType RANParameter-ValueType,
+ ...
+}
+
+E2SM-RC-ControlMessage-Format2 ::= SEQUENCE {
+ ric-ControlStyle-List SEQUENCE (SIZE(1.. maxnoofRICStyles)) OF E2SM-RC-ControlMessage-Format2-Style-Item,
+ ...
+}
+
+E2SM-RC-ControlMessage-Format2-Style-Item ::= SEQUENCE {
+ indicated-Control-Style-Type RIC-Style-Type,
+ ric-ControlAction-List SEQUENCE (SIZE(1..maxnoofMulCtrlActions)) OF E2SM-RC-ControlMessage-Format2-ControlAction-Item,
+ ...
+}
+
+E2SM-RC-ControlMessage-Format2-ControlAction-Item ::= SEQUENCE {
+ ric-ControlAction-ID RIC-ControlAction-ID,
+ ranP-List E2SM-RC-ControlMessage-Format1,
+ ...
+}
+
+-- ****************************************************
+-- Control Outcome OCTET STRING contents
+-- ****************************************************
+
+E2SM-RC-ControlOutcome ::= SEQUENCE {
+ ric-controlOutcome-formats CHOICE {
+ controlOutcome-Format1 E2SM-RC-ControlOutcome-Format1,
+ ...,
+ controlOutcome-Format2 E2SM-RC-ControlOutcome-Format2,
+ controlOutcome-Format3 E2SM-RC-ControlOutcome-Format3 },
+ ...
+}
+
+E2SM-RC-ControlOutcome-Format1 ::= SEQUENCE {
+ ranP-List SEQUENCE (SIZE(0..maxnoofRANOutcomeParameters)) OF E2SM-RC-ControlOutcome-Format1-Item,
+ ...
+}
+
+
+E2SM-RC-ControlOutcome-Format1-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-value RANParameter-Value,
+ ...
+}
+
+E2SM-RC-ControlOutcome-Format2 ::= SEQUENCE {
+ ric-ControlStyle-List SEQUENCE (SIZE(1.. maxnoofRICStyles)) OF E2SM-RC-ControlOutcome-Format2-Style-Item,
+ ...
+}
+
+E2SM-RC-ControlOutcome-Format2-Style-Item ::= SEQUENCE {
+ indicated-Control-Style-Type RIC-Style-Type,
+ ric-ControlOutcome-List SEQUENCE (SIZE(1..maxnoofMulCtrlActions)) OF E2SM-RC-ControlOutcome-Format2-ControlOutcome-Item,
+ ...
+}
+
+E2SM-RC-ControlOutcome-Format2-ControlOutcome-Item ::= SEQUENCE {
+ ric-ControlAction-ID RIC-ControlAction-ID,
+ ranP-List SEQUENCE (SIZE(1..maxnoofAssociatedRANParameters)) OF E2SM-RC-ControlOutcome-Format2-RANP-Item,
+ ...
+}
+
+E2SM-RC-ControlOutcome-Format2-RANP-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-value RANParameter-Value,
+ ...
+}
+
+E2SM-RC-ControlOutcome-Format3 ::= SEQUENCE {
+ ranP-List SEQUENCE (SIZE(0..maxnoofRANOutcomeParameters)) OF E2SM-RC-ControlOutcome-Format3-Item,
+ ...
+}
+
+
+E2SM-RC-ControlOutcome-Format3-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-valueType RANParameter-ValueType,
+ ...
+}
+
+
+-- **************************************************************
+-- RAN Function Definition IEs
+-- **************************************************************
+
+E2SM-RC-RANFunctionDefinition ::= SEQUENCE{
+ ranFunction-Name RANfunction-Name,
+ ranFunctionDefinition-EventTrigger RANFunctionDefinition-EventTrigger OPTIONAL,
+ ranFunctionDefinition-Report RANFunctionDefinition-Report OPTIONAL,
+ ranFunctionDefinition-Insert RANFunctionDefinition-Insert OPTIONAL,
+ ranFunctionDefinition-Control RANFunctionDefinition-Control OPTIONAL,
+ ranFunctionDefinition-Policy RANFunctionDefinition-Policy OPTIONAL,
+ ...
+}
+
+-------------------------------
+-- Event Trigger
+-------------------------------
+RANFunctionDefinition-EventTrigger ::= SEQUENCE {
+ ric-EventTriggerStyle-List SEQUENCE (SIZE(1..maxnoofRICStyles)) OF RANFunctionDefinition-EventTrigger-Style-Item,
+ ran-L2Parameters-List SEQUENCE (SIZE(1..maxnoofAssociatedRANParameters)) OF L2Parameters-RANParameter-Item OPTIONAL,
+ ran-CallProcessTypes-List SEQUENCE (SIZE(1..maxnoofCallProcessTypes)) OF RANFunctionDefinition-EventTrigger-CallProcess-Item OPTIONAL,
+ ran-UEIdentificationParameters-List SEQUENCE (SIZE(1..maxnoofAssociatedRANParameters)) OF UEIdentification-RANParameter-Item OPTIONAL,
+ ran-CellIdentificationParameters-List SEQUENCE (SIZE(1..maxnoofAssociatedRANParameters)) OF CellIdentification-RANParameter-Item OPTIONAL,
+ ...
+}
+
+RANFunctionDefinition-EventTrigger-Style-Item ::= SEQUENCE {
+ ric-EventTriggerStyle-Type RIC-Style-Type,
+ ric-EventTriggerStyle-Name RIC-Style-Name,
+ ric-EventTriggerFormat-Type RIC-Format-Type,
+ ...
+}
+
+
+L2Parameters-RANParameter-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-name RANParameter-Name,
+ ...,
+ ranParameter-Definition RANParameter-Definition OPTIONAL
+}
+
+
+UEIdentification-RANParameter-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-name RANParameter-Name,
+ ...,
+ ranParameter-Definition RANParameter-Definition OPTIONAL
+}
+
+
+CellIdentification-RANParameter-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-name RANParameter-Name,
+ ...,
+ ranParameter-Definition RANParameter-Definition OPTIONAL
+}
+
+RANFunctionDefinition-EventTrigger-CallProcess-Item ::= SEQUENCE {
+ callProcessType-ID RIC-CallProcessType-ID,
+ callProcessType-Name RIC-CallProcessType-Name,
+ callProcessBreakpoints-List SEQUENCE (SIZE (1..maxnoofCallProcessBreakpoints)) OF RANFunctionDefinition-EventTrigger-Breakpoint-Item,
+ ...
+}
+
+
+RANFunctionDefinition-EventTrigger-Breakpoint-Item ::= SEQUENCE {
+ callProcessBreakpoint-ID RIC-CallProcessBreakpoint-ID,
+ callProcessBreakpoint-Name RIC-CallProcessBreakpoint-Name,
+ ran-CallProcessBreakpointParameters-List SEQUENCE (SIZE (1..maxnoofAssociatedRANParameters)) OF CallProcessBreakpoint-RANParameter-Item OPTIONAL,
+ ...
+}
+
+
+CallProcessBreakpoint-RANParameter-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-name RANParameter-Name,
+ ...,
+ ranParameter-Definition RANParameter-Definition OPTIONAL
+}
+
+-------------------------------
+-- Report
+-------------------------------
+
+RANFunctionDefinition-Report ::= SEQUENCE {
+ ric-ReportStyle-List SEQUENCE (SIZE(1..maxnoofRICStyles)) OF RANFunctionDefinition-Report-Item,
+ ...
+}
+
+
+RANFunctionDefinition-Report-Item ::= SEQUENCE {
+ ric-ReportStyle-Type RIC-Style-Type,
+ ric-ReportStyle-Name RIC-Style-Name,
+ ric-SupportedEventTriggerStyle-Type RIC-Style-Type,
+ ric-ReportActionFormat-Type RIC-Format-Type,
+ ric-IndicationHeaderFormat-Type RIC-Format-Type,
+ ric-IndicationMessageFormat-Type RIC-Format-Type,
+ ran-ReportParameters-List SEQUENCE (SIZE (1..maxnoofAssociatedRANParameters)) OF Report-RANParameter-Item OPTIONAL,
+ ...
+}
+
+
+Report-RANParameter-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-name RANParameter-Name,
+ ...,
+ ranParameter-Definition RANParameter-Definition OPTIONAL
+}
+
+-------------------------------
+-- Insert
+-------------------------------
+
+RANFunctionDefinition-Insert ::= SEQUENCE {
+ ric-InsertStyle-List SEQUENCE (SIZE(1..maxnoofRICStyles)) OF RANFunctionDefinition-Insert-Item,
+ ...
+}
+
+RANFunctionDefinition-Insert-Item ::= SEQUENCE {
+ ric-InsertStyle-Type RIC-Style-Type,
+ ric-InsertStyle-Name RIC-Style-Name,
+ ric-SupportedEventTriggerStyle-Type RIC-Style-Type,
+ ric-ActionDefinitionFormat-Type RIC-Format-Type,
+ ric-InsertIndication-List SEQUENCE (SIZE(1..maxnoofInsertIndication)) OF RANFunctionDefinition-Insert-Indication-Item OPTIONAL,
+ ric-IndicationHeaderFormat-Type RIC-Format-Type,
+ ric-IndicationMessageFormat-Type RIC-Format-Type,
+ ric-CallProcessIDFormat-Type RIC-Format-Type,
+ ...
+}
+
+
+RANFunctionDefinition-Insert-Indication-Item ::= SEQUENCE {
+ ric-InsertIndication-ID RIC-InsertIndication-ID,
+ ric-InsertIndication-Name RIC-InsertIndication-Name,
+ ran-InsertIndicationParameters-List SEQUENCE (SIZE (1..maxnoofAssociatedRANParameters)) OF InsertIndication-RANParameter-Item OPTIONAL,
+ ...
+}
+
+
+InsertIndication-RANParameter-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-name RANParameter-Name,
+ ...,
+ ranParameter-Definition RANParameter-Definition OPTIONAL
+}
+-------------------------------
+-- Control
+-------------------------------
+
+RANFunctionDefinition-Control ::= SEQUENCE {
+ ric-ControlStyle-List SEQUENCE (SIZE(1..maxnoofRICStyles)) OF RANFunctionDefinition-Control-Item,
+ ...
+}
+
+
+RANFunctionDefinition-Control-Item ::= SEQUENCE {
+ ric-ControlStyle-Type RIC-Style-Type,
+ ric-ControlStyle-Name RIC-Style-Name,
+ ric-ControlAction-List SEQUENCE (SIZE(1..maxnoofControlAction)) OF RANFunctionDefinition-Control-Action-Item OPTIONAL,
+ ric-ControlHeaderFormat-Type RIC-Format-Type,
+ ric-ControlMessageFormat-Type RIC-Format-Type,
+ ric-CallProcessIDFormat-Type RIC-Format-Type OPTIONAL,
+ ric-ControlOutcomeFormat-Type RIC-Format-Type,
+ ran-ControlOutcomeParameters-List SEQUENCE (SIZE(1..maxnoofRANOutcomeParameters)) OF ControlOutcome-RANParameter-Item OPTIONAL,
+ ...
+}
+
+ControlOutcome-RANParameter-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-name RANParameter-Name,
+ ...,
+ ranParameter-Definition RANParameter-Definition OPTIONAL
+}
+
+
+RANFunctionDefinition-Control-Action-Item ::= SEQUENCE {
+ ric-ControlAction-ID RIC-ControlAction-ID,
+ ric-ControlAction-Name RIC-ControlAction-Name,
+ ran-ControlActionParameters-List SEQUENCE (SIZE (1..maxnoofAssociatedRANParameters)) OF ControlAction-RANParameter-Item OPTIONAL,
+ ...
+}
+
+ControlAction-RANParameter-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-name RANParameter-Name,
+ ...,
+ ranParameter-Definition RANParameter-Definition OPTIONAL
+}
+
+-------------------------------
+-- Policy
+-------------------------------
+
+RANFunctionDefinition-Policy ::= SEQUENCE {
+ ric-PolicyStyle-List SEQUENCE (SIZE(1..maxnoofRICStyles)) OF RANFunctionDefinition-Policy-Item,
+ ...
+}
+
+RANFunctionDefinition-Policy-Item ::= SEQUENCE {
+ ric-PolicyStyle-Type RIC-Style-Type,
+ ric-PolicyStyle-Name RIC-Style-Name,
+ ric-SupportedEventTriggerStyle-Type RIC-Style-Type,
+ ric-PolicyAction-List SEQUENCE (SIZE(1..maxnoofPolicyAction)) OF RANFunctionDefinition-Policy-Action-Item OPTIONAL,
+ ...
+}
+
+
+RANFunctionDefinition-Policy-Action-Item ::= SEQUENCE {
+ ric-PolicyAction-ID RIC-ControlAction-ID,
+ ric-PolicyAction-Name RIC-ControlAction-Name,
+ ric-ActionDefinitionFormat-Type RIC-Format-Type,
+ ran-PolicyActionParameters-List SEQUENCE (SIZE (1..maxnoofAssociatedRANParameters)) OF PolicyAction-RANParameter-Item OPTIONAL,
+ ran-PolicyConditionParameters-List SEQUENCE (SIZE (1..maxnoofAssociatedRANParameters)) OF PolicyCondition-RANParameter-Item OPTIONAL,
+ ...
+}
+
+
+PolicyAction-RANParameter-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-name RANParameter-Name,
+ ...,
+ ranParameter-Definition RANParameter-Definition OPTIONAL
+}
+
+
+PolicyCondition-RANParameter-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-name RANParameter-Name,
+ ...,
+ ranParameter-Definition RANParameter-Definition OPTIONAL
+}
+
+
+
+END
+
+-- ASN1STOP
diff --git a/epan/dissectors/asn1/e2ap/e2sm-rc-v3.00.asn b/epan/dissectors/asn1/e2ap/e2sm-rc-v3.00.asn
new file mode 100644
index 00000000..760d65d7
--- /dev/null
+++ b/epan/dissectors/asn1/e2ap/e2sm-rc-v3.00.asn
@@ -0,0 +1,1332 @@
+-- ASN1START
+-- **************************************************************
+-- E2SM-RC Information Element Definitions
+-- **************************************************************
+
+E2SM-RC-IEs {
+iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) oran(53148) e2(1) version1(1) e2sm(2) e2sm-RC-IEs (3)}
+
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+
+-- **************************************************************
+-- E2SM Common IEs
+-- **************************************************************
+
+IMPORTS
+ CGI,
+ E-UTRA-ARFCN,
+ EUTRA-CGI,
+ E-UTRA-PCI,
+ E-UTRA-TAC,
+ FiveGS-TAC,
+ InterfaceIdentifier,
+ InterfaceType,
+ Interface-MessageID,
+ NRFrequencyInfo,
+ NR-CGI,
+ NR-PCI,
+ RANfunction-Name,
+ RIC-Format-Type,
+ RIC-Style-Name,
+ RIC-Style-Type,
+ RRC-MessageID,
+ ServingCell-ARFCN,
+ ServingCell-PCI,
+ UEID
+FROM E2SM-COMMON-IEs;
+
+
+-- *****************************************************
+-- CONSTANTS
+-- *****************************************************
+
+maxnoofMessages INTEGER ::= 65535
+maxnoofE2InfoChanges INTEGER ::= 65535
+maxnoofUEInfoChanges INTEGER ::= 65535
+maxnoofRRCstate INTEGER ::= 8
+maxnoofParametersToReport INTEGER ::= 65535
+maxnoofPolicyConditions INTEGER ::= 65535
+maxnoofAssociatedRANParameters INTEGER ::= 65535
+maxnoofUEID INTEGER ::= 65535
+maxnoofCellID INTEGER ::= 65535
+maxnoofRANOutcomeParameters INTEGER ::= 255
+maxnoofParametersinStructure INTEGER ::= 65535
+maxnoofItemsinList INTEGER ::= 65535
+maxnoofUEInfo INTEGER ::= 65535
+maxnoofCellInfo INTEGER ::= 65535
+maxnoofUEeventInfo INTEGER ::= 65535
+maxnoofRANparamTest INTEGER ::= 255
+maxnoofNeighbourCell INTEGER ::= 65535
+maxnoofRICStyles INTEGER ::= 63
+maxnoofCallProcessTypes INTEGER ::= 65535
+maxnoofCallProcessBreakpoints INTEGER ::= 65535
+maxnoofInsertIndication INTEGER ::= 65535
+maxnoofControlAction INTEGER ::= 65535
+maxnoofPolicyAction INTEGER ::= 65535
+maxnoofInsertIndicationActions INTEGER ::= 63
+maxnoofMulCtrlActions INTEGER ::= 63
+maxGroupDefinitionIdentifierParameters INTEGER ::= 255
+maxnoofAssociatedEntityFilters INTEGER ::= 255
+maxnoofFormatTypes INTEGER ::= 63
+
+
+-- *****************************************************
+-- IEs
+-- *****************************************************
+
+LogicalOR ::= ENUMERATED {true, false, ...}
+
+NeighborCell-List ::= SEQUENCE (SIZE(1..maxnoofNeighbourCell)) OF NeighborCell-Item
+
+NeighborCell-Item ::= CHOICE {
+ ranType-Choice-NR NeighborCell-Item-Choice-NR,
+ ranType-Choice-EUTRA NeighborCell-Item-Choice-E-UTRA,
+ ...
+}
+
+NeighborCell-Item-Choice-NR ::= SEQUENCE {
+ nR-CGI NR-CGI,
+ nR-PCI NR-PCI,
+ fiveGS-TAC FiveGS-TAC,
+ nR-mode-info ENUMERATED {fdd, tdd, ...},
+ nR-FreqInfo NRFrequencyInfo,
+ x2-Xn-established ENUMERATED {true, false, ...},
+ hO-validated ENUMERATED {true, false, ...},
+ version INTEGER (1..65535, ...),
+ ...
+}
+
+NeighborCell-Item-Choice-E-UTRA ::= SEQUENCE {
+ eUTRA-CGI EUTRA-CGI,
+ eUTRA-PCI E-UTRA-PCI,
+ eUTRA-ARFCN E-UTRA-ARFCN,
+ eUTRA-TAC E-UTRA-TAC,
+ x2-Xn-established ENUMERATED {true, false, ...},
+ hO-validated ENUMERATED {true, false, ...},
+ version INTEGER (1..65535, ...),
+ ...
+}
+
+NeighborRelation-Info ::= SEQUENCE {
+ servingCellPCI ServingCell-PCI,
+ servingCellARFCN ServingCell-ARFCN,
+ neighborCell-List NeighborCell-List,
+ ...
+}
+
+RRC-State ::= ENUMERATED {rrc-connected, rrc-inactive, rrc-idle, any, ...}
+
+
+-------------------------------
+-- Event Trigger related IEs
+-------------------------------
+
+EventTrigger-Cell-Info ::= SEQUENCE {
+cellInfo-List SEQUENCE (SIZE(1..maxnoofCellInfo)) OF EventTrigger-Cell-Info-Item,
+ ...
+}
+
+EventTrigger-Cell-Info-Item ::= SEQUENCE {
+ eventTriggerCellID RIC-EventTrigger-Cell-ID,
+ cellType CHOICE {
+ cellType-Choice-Individual EventTrigger-Cell-Info-Item-Choice-Individual,
+ cellType-Choice-Group EventTrigger-Cell-Info-Item-Choice-Group,
+ ...
+ },
+ logicalOR LogicalOR OPTIONAL,
+ ...
+}
+
+EventTrigger-Cell-Info-Item-Choice-Individual ::= SEQUENCE {
+ cellGlobalID CGI,
+ ...
+}
+
+EventTrigger-Cell-Info-Item-Choice-Group ::= SEQUENCE {
+ ranParameterTesting RANParameter-Testing,
+ ...
+}
+
+
+
+EventTrigger-UE-Info ::= SEQUENCE {
+ueInfo-List SEQUENCE (SIZE(1..maxnoofUEInfo)) OF EventTrigger-UE-Info-Item,
+...
+}
+
+EventTrigger-UE-Info-Item ::= SEQUENCE {
+ eventTriggerUEID RIC-EventTrigger-UE-ID,
+ ueType CHOICE {
+ ueType-Choice-Individual EventTrigger-UE-Info-Item-Choice-Individual,
+ ueType-Choice-Group EventTrigger-UE-Info-Item-Choice-Group,
+ ...
+ },
+ logicalOR LogicalOR OPTIONAL,
+ ...
+}
+
+EventTrigger-UE-Info-Item-Choice-Individual ::= SEQUENCE {
+ ueID UEID,
+ ranParameterTesting RANParameter-Testing OPTIONAL,
+ ...
+}
+
+EventTrigger-UE-Info-Item-Choice-Group ::= SEQUENCE {
+ ranParameterTesting RANParameter-Testing,
+ ...
+}
+
+
+
+EventTrigger-UEevent-Info ::= SEQUENCE {
+ueEvent-List SEQUENCE (SIZE(1..maxnoofUEeventInfo)) OF EventTrigger-UEevent-Info-Item,
+...
+}
+
+EventTrigger-UEevent-Info-Item ::= SEQUENCE {
+ ueEventID RIC-EventTrigger-UEevent-ID,
+ logicalOR LogicalOR OPTIONAL,
+ ...
+}
+
+
+-------------------------------
+-- RAN Parameter related IEs
+-------------------------------
+
+RANParameter-ID ::= INTEGER (1..4294967295, ...)
+
+RANParameter-Name ::= PrintableString (SIZE(1..150, ...))
+
+RANParameter-Definition ::= SEQUENCE {
+ ranParameter-Definition-Choice RANParameter-Definition-Choice,
+ ...
+}
+
+RANParameter-Definition-Choice ::= CHOICE {
+ choiceLIST RANParameter-Definition-Choice-LIST,
+ choiceSTRUCTURE RANParameter-Definition-Choice-STRUCTURE,
+ ...
+}
+
+RANParameter-Definition-Choice-LIST ::= SEQUENCE {
+ ranParameter-List SEQUENCE (SIZE(1..maxnoofItemsinList)) OF RANParameter-Definition-Choice-LIST-Item,
+ ...
+}
+
+RANParameter-Definition-Choice-LIST-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-name RANParameter-Name,
+ ranParameter-Definition RANParameter-Definition OPTIONAL,
+ ...
+}
+
+RANParameter-Definition-Choice-STRUCTURE ::= SEQUENCE {
+ ranParameter-STRUCTURE SEQUENCE (SIZE(1..maxnoofParametersinStructure)) OF RANParameter-Definition-Choice-STRUCTURE-Item,
+ ...
+}
+
+RANParameter-Definition-Choice-STRUCTURE-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-name RANParameter-Name,
+ ranParameter-Definition RANParameter-Definition OPTIONAL,
+ ...
+}
+
+RANParameter-Value ::= CHOICE {
+ valueBoolean BOOLEAN,
+ valueInt INTEGER,
+ valueReal REAL,
+ valueBitS BIT STRING,
+ valueOctS OCTET STRING,
+ valuePrintableString PrintableString,
+ ...
+}
+
+RANParameter-ValueType ::= CHOICE {
+ ranP-Choice-ElementTrue RANParameter-ValueType-Choice-ElementTrue,
+ ranP-Choice-ElementFalse RANParameter-ValueType-Choice-ElementFalse,
+ ranP-Choice-Structure RANParameter-ValueType-Choice-Structure,
+ ranP-Choice-List RANParameter-ValueType-Choice-List,
+ ...
+}
+
+
+
+RANParameter-ValueType-Choice-ElementTrue ::= SEQUENCE {
+ ranParameter-value RANParameter-Value,
+ ...
+}
+
+RANParameter-ValueType-Choice-ElementFalse ::= SEQUENCE {
+ ranParameter-value RANParameter-Value OPTIONAL,
+-- C-ifControl: This IE shall be present if it is part of a RIC Control Request message. Otherwise it is optional.
+ ...
+}
+
+RANParameter-ValueType-Choice-Structure ::= SEQUENCE {
+ ranParameter-Structure RANParameter-STRUCTURE,
+ ...
+}
+
+RANParameter-ValueType-Choice-List ::= SEQUENCE {
+ ranParameter-List RANParameter-LIST,
+ ...
+}
+
+
+RANParameter-STRUCTURE ::= SEQUENCE {
+ sequence-of-ranParameters SEQUENCE (SIZE(1..maxnoofParametersinStructure)) OF RANParameter-STRUCTURE-Item OPTIONAL,
+ ...
+}
+
+RANParameter-STRUCTURE-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-valueType RANParameter-ValueType,
+ ...
+}
+
+RANParameter-LIST ::= SEQUENCE {
+ list-of-ranParameter SEQUENCE (SIZE(1..maxnoofItemsinList)) OF RANParameter-STRUCTURE,
+ ...
+}
+
+
+RANParameter-Testing ::= SEQUENCE (SIZE(1..maxnoofRANparamTest)) OF RANParameter-Testing-Item
+
+RANParameter-TestingCondition ::= CHOICE {
+ ranP-Choice-comparison ENUMERATED {equal, difference, greaterthan, lessthan, contains, starts-with, ...},
+ ranP-Choice-presence ENUMERATED {present, configured, rollover, non-zero, ..., value-change},
+ ...
+}
+
+RANParameter-Testing-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-Type CHOICE {
+ ranP-Choice-List RANParameter-Testing-Item-Choice-List,
+ ranP-Choice-Structure RANParameter-Testing-Item-Choice-Structure,
+ ranP-Choice-ElementTrue RANParameter-Testing-Item-Choice-ElementTrue,
+ ranP-Choice-ElementFalse RANParameter-Testing-Item-Choice-ElementFalse,
+ ...
+ },
+ ...
+}
+
+RANParameter-Testing-Item-Choice-List ::= SEQUENCE {
+ ranParameter-List RANParameter-Testing-LIST,
+ ...
+}
+
+RANParameter-Testing-Item-Choice-Structure ::= SEQUENCE {
+ ranParameter-Structure RANParameter-Testing-STRUCTURE,
+ ...
+}
+
+RANParameter-Testing-Item-Choice-ElementTrue ::= SEQUENCE {
+ ranParameter-value RANParameter-Value,
+ ...
+}
+
+RANParameter-Testing-Item-Choice-ElementFalse ::= SEQUENCE {
+ ranParameter-TestCondition RANParameter-TestingCondition,
+ ranParameter-Value RANParameter-Value OPTIONAL,
+ logicalOR LogicalOR OPTIONAL,
+ ...
+}
+
+RANParameter-Testing-LIST ::= SEQUENCE (SIZE(1..maxnoofItemsinList)) OF RANParameter-Testing-Item
+
+RANParameter-Testing-STRUCTURE ::= SEQUENCE (SIZE(1..maxnoofParametersinStructure)) OF RANParameter-Testing-Item
+
+UE-Group-Definition ::= SEQUENCE {
+ ueGroupDefinitionIdentifier-LIST SEQUENCE (SIZE(1..maxGroupDefinitionIdentifierParameters)) OF UEGroupDefinitionIdentifier-Item,
+ ...
+}
+
+UEGroupDefinitionIdentifier-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-valueType RANParameter-ValueType,
+ logicalOR LogicalOR OPTIONAL,
+ ...
+}
+
+
+----------------------------
+-- RIC Service related IEs
+----------------------------
+
+RAN-CallProcess-ID ::= INTEGER (1..4294967295, ...)
+
+RIC-CallProcessType-ID ::= INTEGER (1..65535, ...)
+
+RIC-CallProcessType-Name ::= PrintableString (SIZE(1..150, ...))
+
+RIC-CallProcessBreakpoint-ID ::= INTEGER (1..65535, ...)
+
+RIC-CallProcessBreakpoint-Name ::= PrintableString (SIZE(1..150, ...))
+
+RIC-ControlAction-ID ::= INTEGER (1..65535, ...)
+
+RIC-ControlAction-Name ::= PrintableString (SIZE(1..150, ...))
+
+RIC-EventTriggerCondition-ID ::= INTEGER (1..65535, ...)
+
+RIC-EventTrigger-UE-ID ::= INTEGER (1..65535, ...)
+
+RIC-EventTrigger-UEevent-ID ::= INTEGER (1..65535, ...)
+
+RIC-EventTrigger-Cell-ID ::= INTEGER (1..65535, ...)
+
+RIC-InsertIndication-ID ::= INTEGER (1..65535, ...)
+
+RIC-InsertIndication-Name ::= PrintableString (SIZE(1..150, ...))
+
+UE-Group-ID ::= INTEGER (1..65535, ...)
+
+EntityFilter-ID ::= INTEGER (1..255, ...)
+
+
+RIC-PolicyAction ::= SEQUENCE {
+ ric-PolicyAction-ID RIC-ControlAction-ID,
+ ranParameters-List SEQUENCE (SIZE(1..maxnoofAssociatedRANParameters)) OF RIC-PolicyAction-RANParameter-Item OPTIONAL,
+ ...,
+ ric-PolicyDecision ENUMERATED {accept, reject, ...} OPTIONAL
+}
+
+
+RIC-PolicyAction-RANParameter-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-valueType RANParameter-ValueType,
+ ...
+}
+
+UE-Filter-ID ::= INTEGER (1..65535, ...)
+
+Associated-UE-Info ::= SEQUENCE {
+associatedUEInfo-List SEQUENCE (SIZE(1..maxnoofUEInfo)) OF Associated-UE-Info-Item,
+...
+}
+
+Associated-UE-Info-Item ::= SEQUENCE {
+ ueFilterID UE-Filter-ID,
+ ueType CHOICE {
+ ueType-Choice-Individual EventTrigger-UE-Info-Item-Choice-Individual,
+ ueType-Choice-Group EventTrigger-UE-Info-Item-Choice-Group,
+ ...
+ },
+ logicalOR LogicalOR OPTIONAL,
+ ...
+}
+
+
+-- **************************************************************
+-- E2SM-RC Service Model IEs
+-- **************************************************************
+
+
+-- ***************************************************
+-- Event Trigger OCTET STRING contents
+-- ***************************************************
+
+E2SM-RC-EventTrigger ::= SEQUENCE {
+ ric-eventTrigger-formats CHOICE {
+ eventTrigger-Format1 E2SM-RC-EventTrigger-Format1,
+ eventTrigger-Format2 E2SM-RC-EventTrigger-Format2,
+ eventTrigger-Format3 E2SM-RC-EventTrigger-Format3,
+ eventTrigger-Format4 E2SM-RC-EventTrigger-Format4,
+ eventTrigger-Format5 NULL,
+ ...
+ },
+ ...
+}
+
+E2SM-RC-EventTrigger-Format1 ::= SEQUENCE {
+ message-List SEQUENCE (SIZE(1..maxnoofMessages)) OF E2SM-RC-EventTrigger-Format1-Item,
+ globalAssociatedUEInfo EventTrigger-UE-Info OPTIONAL,
+ ...
+}
+
+E2SM-RC-EventTrigger-Format1-Item ::= SEQUENCE {
+ ric-eventTriggerCondition-ID RIC-EventTriggerCondition-ID,
+ messageType MessageType-Choice,
+ messageDirection ENUMERATED {incoming, outgoing, ...} OPTIONAL,
+ associatedUEInfo EventTrigger-UE-Info OPTIONAL,
+ associatedUEEvent EventTrigger-UEevent-Info OPTIONAL,
+ logicalOR LogicalOR OPTIONAL,
+ ...
+}
+
+
+MessageType-Choice ::= CHOICE {
+ messageType-Choice-NI MessageType-Choice-NI,
+ messageType-Choice-RRC MessageType-Choice-RRC,
+ ...
+}
+
+
+MessageType-Choice-NI ::= SEQUENCE {
+ nI-Type InterfaceType,
+ nI-Identifier InterfaceIdentifier OPTIONAL,
+ nI-Message Interface-MessageID OPTIONAL,
+ ...
+}
+
+MessageType-Choice-RRC ::= SEQUENCE {
+ rRC-Message RRC-MessageID,
+ ...
+}
+
+
+E2SM-RC-EventTrigger-Format2 ::= SEQUENCE {
+ ric-callProcessType-ID RIC-CallProcessType-ID,
+ ric-callProcessBreakpoint-ID RIC-CallProcessBreakpoint-ID,
+ associatedE2NodeInfo RANParameter-Testing OPTIONAL,
+ associatedUEInfo EventTrigger-UE-Info OPTIONAL,
+ ...
+}
+
+
+E2SM-RC-EventTrigger-Format3 ::= SEQUENCE {
+ e2NodeInfoChange-List SEQUENCE (SIZE(1..maxnoofE2InfoChanges)) OF E2SM-RC-EventTrigger-Format3-Item,
+ ...
+}
+
+E2SM-RC-EventTrigger-Format3-Item ::= SEQUENCE {
+ ric-eventTriggerCondition-ID RIC-EventTriggerCondition-ID,
+ e2NodeInfoChange-ID INTEGER (1..512, ...),
+ associatedCellInfo EventTrigger-Cell-Info OPTIONAL,
+ logicalOR LogicalOR OPTIONAL,
+ ...
+}
+
+
+E2SM-RC-EventTrigger-Format4 ::= SEQUENCE {
+ uEInfoChange-List SEQUENCE (SIZE(1..maxnoofUEInfoChanges)) OF E2SM-RC-EventTrigger-Format4-Item,
+ ...
+}
+
+E2SM-RC-EventTrigger-Format4-Item ::= SEQUENCE {
+ ric-eventTriggerCondition-ID RIC-EventTriggerCondition-ID,
+ triggerType TriggerType-Choice,
+ associatedUEInfo EventTrigger-UE-Info OPTIONAL,
+ logicalOR LogicalOR OPTIONAL,
+ ...
+}
+
+
+TriggerType-Choice ::= CHOICE {
+ triggerType-Choice-RRCstate TriggerType-Choice-RRCstate,
+ triggerType-Choice-UEID TriggerType-Choice-UEID,
+ triggerType-Choice-L2state TriggerType-Choice-L2state,
+ ...,
+ triggerType-Choice-UEcontext TriggerType-Choice-UEcontext,
+ triggerType-Choice-L2MACschChg TriggerType-Choice-L2MACschChg
+}
+
+TriggerType-Choice-RRCstate ::= SEQUENCE {
+ rrcState-List SEQUENCE (SIZE(1..maxnoofRRCstate)) OF TriggerType-Choice-RRCstate-Item,
+ ...
+}
+
+TriggerType-Choice-RRCstate-Item ::= SEQUENCE {
+ stateChangedTo RRC-State,
+ logicalOR LogicalOR OPTIONAL,
+ ...
+}
+
+TriggerType-Choice-UEID ::= SEQUENCE {
+ ueIDchange-ID INTEGER (1..512, ...),
+ ...
+}
+
+TriggerType-Choice-L2state ::= SEQUENCE {
+ associatedL2variables RANParameter-Testing,
+ ...
+}
+
+TriggerType-Choice-UEcontext ::= SEQUENCE {
+ associatedUECtxtVariables RANParameter-Testing,
+ ...
+}
+
+TriggerType-Choice-L2MACschChg ::= SEQUENCE {
+ l2MACschChgType L2MACschChgType-Choice,
+ ...
+}
+
+L2MACschChgType-Choice ::= CHOICE {
+ triggerType-Choice-MIMOandBFconfig TriggerType-Choice-MIMOandBFconfig,
+ ...
+}
+
+TriggerType-Choice-MIMOandBFconfig ::= SEQUENCE {
+ mIMOtransModeState ENUMERATED {enabled, disabled, ...},
+ ...
+}
+
+
+
+-- ***************************************************
+-- Action Definition OCTET STRING contents
+-- ***************************************************
+
+E2SM-RC-ActionDefinition ::= SEQUENCE {
+ ric-Style-Type RIC-Style-Type,
+ ric-actionDefinition-formats CHOICE {
+ actionDefinition-Format1 E2SM-RC-ActionDefinition-Format1,
+ actionDefinition-Format2 E2SM-RC-ActionDefinition-Format2,
+ actionDefinition-Format3 E2SM-RC-ActionDefinition-Format3,
+ ...,
+ actionDefinition-Format4 E2SM-RC-ActionDefinition-Format4
+
+ },
+ ...
+}
+
+E2SM-RC-ActionDefinition-Format1 ::= SEQUENCE {
+ ranP-ToBeReported-List SEQUENCE (SIZE(1..maxnoofParametersToReport)) OF E2SM-RC-ActionDefinition-Format1-Item,
+ ...
+}
+
+
+E2SM-RC-ActionDefinition-Format1-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ...,
+ ranParameter-Definition RANParameter-Definition OPTIONAL
+}
+
+
+E2SM-RC-ActionDefinition-Format2 ::= SEQUENCE {
+ ric-PolicyConditions-List SEQUENCE (SIZE(1..maxnoofPolicyConditions)) OF E2SM-RC-ActionDefinition-Format2-Item,
+ ...
+}
+
+E2SM-RC-ActionDefinition-Format2-Item ::= SEQUENCE {
+ ric-PolicyAction RIC-PolicyAction,
+ ric-PolicyConditionDefinition RANParameter-Testing OPTIONAL,
+ ...
+}
+
+E2SM-RC-ActionDefinition-Format3 ::= SEQUENCE {
+ ric-InsertIndication-ID RIC-InsertIndication-ID,
+ ranP-InsertIndication-List SEQUENCE (SIZE(1..maxnoofAssociatedRANParameters)) OF E2SM-RC-ActionDefinition-Format3-Item,
+ ueID UEID OPTIONAL,
+ ...
+}
+
+
+E2SM-RC-ActionDefinition-Format3-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ...,
+ ranParameter-Definition RANParameter-Definition OPTIONAL
+}
+
+E2SM-RC-ActionDefinition-Format4 ::= SEQUENCE {
+ ric-InsertStyle-List SEQUENCE (SIZE(1.. maxnoofRICStyles)) OF E2SM-RC-ActionDefinition-Format4-Style-Item,
+ ueID UEID OPTIONAL,
+ ...
+}
+
+E2SM-RC-ActionDefinition-Format4-Style-Item ::= SEQUENCE {
+ requested-Insert-Style-Type RIC-Style-Type,
+ ric-InsertIndication-List SEQUENCE (SIZE(1..maxnoofInsertIndicationActions)) OF E2SM-RC-ActionDefinition-Format4-Indication-Item,
+ ...
+}
+
+E2SM-RC-ActionDefinition-Format4-Indication-Item ::= SEQUENCE {
+ ric-InsertIndication-ID RIC-InsertIndication-ID,
+ ranP-InsertIndication-List SEQUENCE (SIZE(1..maxnoofAssociatedRANParameters)) OF E2SM-RC-ActionDefinition-Format4-RANP-Item,
+ ...
+}
+
+E2SM-RC-ActionDefinition-Format4-RANP-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ...,
+ ranParameter-Definition RANParameter-Definition OPTIONAL
+}
+
+
+-- ***************************************************
+-- Indication Header OCTET STRING contents
+-- ***************************************************
+
+E2SM-RC-IndicationHeader ::= SEQUENCE {
+ric-indicationHeader-formats CHOICE {
+ indicationHeader-Format1 E2SM-RC-IndicationHeader-Format1,
+ indicationHeader-Format2 E2SM-RC-IndicationHeader-Format2,
+ ...,
+ indicationHeader-Format3 E2SM-RC-IndicationHeader-Format3
+
+ },
+ ...
+}
+
+E2SM-RC-IndicationHeader-Format1 ::= SEQUENCE {
+ ric-eventTriggerCondition-ID RIC-EventTriggerCondition-ID OPTIONAL,
+ ...
+}
+
+E2SM-RC-IndicationHeader-Format2 ::= SEQUENCE {
+ ueID UEID,
+ ric-InsertStyle-Type RIC-Style-Type,
+ ric-InsertIndication-ID RIC-InsertIndication-ID,
+ ...
+}
+
+E2SM-RC-IndicationHeader-Format3 ::= SEQUENCE {
+ ric-eventTriggerCondition-ID RIC-EventTriggerCondition-ID OPTIONAL,
+ ueID UEID OPTIONAL,
+ ...
+}
+
+
+-- ***************************************************
+-- Indication Message OCTET STRING contents
+-- ***************************************************
+
+E2SM-RC-IndicationMessage ::= SEQUENCE {
+ric-indicationMessage-formats CHOICE {
+ indicationMessage-Format1 E2SM-RC-IndicationMessage-Format1,
+ indicationMessage-Format2 E2SM-RC-IndicationMessage-Format2,
+ indicationMessage-Format3 E2SM-RC-IndicationMessage-Format3,
+ indicationMessage-Format4 NULL,
+ indicationMessage-Format5 E2SM-RC-IndicationMessage-Format5,
+ ...,
+ indicationMessage-Format6 E2SM-RC-IndicationMessage-Format6
+
+ },
+ ...
+}
+
+E2SM-RC-IndicationMessage-Format1 ::= SEQUENCE {
+ ranP-Reported-List SEQUENCE (SIZE(1..maxnoofAssociatedRANParameters)) OF E2SM-RC-IndicationMessage-Format1-Item,
+ ...
+}
+
+E2SM-RC-IndicationMessage-Format1-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-valueType RANParameter-ValueType,
+ ...
+}
+
+
+E2SM-RC-IndicationMessage-Format2 ::= SEQUENCE {
+ ueParameter-List SEQUENCE (SIZE(1..maxnoofUEID)) OF E2SM-RC-IndicationMessage-Format2-Item,
+ ...
+}
+
+E2SM-RC-IndicationMessage-Format2-Item ::= SEQUENCE {
+ ueID UEID,
+ ranP-List SEQUENCE (SIZE(1..maxnoofAssociatedRANParameters)) OF E2SM-RC-IndicationMessage-Format2-RANParameter-Item,
+ ...
+}
+
+
+E2SM-RC-IndicationMessage-Format2-RANParameter-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-valueType RANParameter-ValueType,
+ ...
+}
+
+
+E2SM-RC-IndicationMessage-Format3 ::= SEQUENCE {
+ cellInfo-List SEQUENCE (SIZE(1..maxnoofCellID)) OF E2SM-RC-IndicationMessage-Format3-Item,
+ ...
+}
+
+E2SM-RC-IndicationMessage-Format3-Item ::= SEQUENCE {
+ cellGlobal-ID CGI,
+ cellContextInfo OCTET STRING OPTIONAL,
+ cellDeleted BOOLEAN OPTIONAL,
+ neighborRelation-Table NeighborRelation-Info OPTIONAL,
+ ...
+}
+
+
+E2SM-RC-IndicationMessage-Format5 ::= SEQUENCE{
+ ranP-Requested-List SEQUENCE (SIZE(0..maxnoofAssociatedRANParameters)) OF E2SM-RC-IndicationMessage-Format5-Item,
+ ...
+}
+
+
+E2SM-RC-IndicationMessage-Format5-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-valueType RANParameter-ValueType,
+ ...
+}
+
+E2SM-RC-IndicationMessage-Format6 ::= SEQUENCE {
+ ric-InsertStyle-List SEQUENCE (SIZE(1.. maxnoofRICStyles)) OF E2SM-RC-IndicationMessage-Format6-Style-Item,
+ ...
+}
+
+E2SM-RC-IndicationMessage-Format6-Style-Item ::= SEQUENCE {
+ indicated-Insert-Style-Type RIC-Style-Type,
+ ric-InsertIndication-List SEQUENCE (SIZE(1..maxnoofInsertIndicationActions)) OF E2SM-RC-IndicationMessage-Format6-Indication-Item,
+ ...
+}
+
+E2SM-RC-IndicationMessage-Format6-Indication-Item ::= SEQUENCE {
+ ric-InsertIndication-ID RIC-InsertIndication-ID,
+ ranP-InsertIndication-List SEQUENCE (SIZE(0..maxnoofAssociatedRANParameters)) OF E2SM-RC-IndicationMessage-Format6-RANP-Item ,
+ ...
+}
+
+E2SM-RC-IndicationMessage-Format6-RANP-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-valueType RANParameter-ValueType,
+ ...
+}
+
+
+-- **************************************************
+-- Call Process ID OCTET STRING contents
+-- **************************************************
+
+E2SM-RC-CallProcessID ::= SEQUENCE {
+ric-callProcessID-formats CHOICE {
+ callProcessID-Format1 E2SM-RC-CallProcessID-Format1,
+ ...
+ },
+ ...
+}
+
+E2SM-RC-CallProcessID-Format1 ::= SEQUENCE {
+ ric-callProcess-ID RAN-CallProcess-ID,
+ ...
+}
+
+
+-- ***************************************************
+-- Control Header OCTET STRING contents
+-- ***************************************************
+
+E2SM-RC-ControlHeader ::= SEQUENCE {
+ ric-controlHeader-formats CHOICE {
+ controlHeader-Format1 E2SM-RC-ControlHeader-Format1,
+ ...,
+ controlHeader-Format2 E2SM-RC-ControlHeader-Format2,
+ controlHeader-Format3 E2SM-RC-ControlHeader-Format3
+ },
+ ...
+}
+
+E2SM-RC-ControlHeader-Format1 ::= SEQUENCE {
+ ueID UEID,
+ ric-Style-Type RIC-Style-Type,
+ ric-ControlAction-ID RIC-ControlAction-ID,
+ ric-ControlDecision ENUMERATED {accept, reject, ...} OPTIONAL,
+ ...
+}
+
+E2SM-RC-ControlHeader-Format2 ::= SEQUENCE {
+ ueID UEID OPTIONAL,
+ ric-ControlDecision ENUMERATED {accept, reject, ...} OPTIONAL,
+ ...
+}
+
+E2SM-RC-ControlHeader-Format3 ::= SEQUENCE {
+ ue-Group-ID UE-Group-ID,
+ ue-Group-Definition UE-Group-Definition,
+ ric-Style-Type RIC-Style-Type,
+ ric-ControlAction-ID RIC-ControlAction-ID,
+ ...
+}
+
+-- ***************************************************
+-- Control Message OCTET STRING contents
+-- ***************************************************
+
+E2SM-RC-ControlMessage ::= SEQUENCE {
+ ric-controlMessage-formats CHOICE {
+ controlMessage-Format1 E2SM-RC-ControlMessage-Format1,
+ ...,
+ controlMessage-Format2 E2SM-RC-ControlMessage-Format2,
+ controlMessage-Format3 E2SM-RC-ControlMessage-Format3
+ },
+ ...
+}
+
+E2SM-RC-ControlMessage-Format1 ::= SEQUENCE {
+ ranP-List SEQUENCE (SIZE(0..maxnoofAssociatedRANParameters)) OF E2SM-RC-ControlMessage-Format1-Item,
+ ...
+}
+
+
+E2SM-RC-ControlMessage-Format1-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-valueType RANParameter-ValueType,
+ ...
+}
+
+E2SM-RC-ControlMessage-Format2 ::= SEQUENCE {
+ ric-ControlStyle-List SEQUENCE (SIZE(1.. maxnoofRICStyles)) OF E2SM-RC-ControlMessage-Format2-Style-Item,
+ ...
+}
+
+E2SM-RC-ControlMessage-Format2-Style-Item ::= SEQUENCE {
+ indicated-Control-Style-Type RIC-Style-Type,
+ ric-ControlAction-List SEQUENCE (SIZE(1..maxnoofMulCtrlActions)) OF E2SM-RC-ControlMessage-Format2-ControlAction-Item,
+ ...
+}
+
+E2SM-RC-ControlMessage-Format2-ControlAction-Item ::= SEQUENCE {
+ ric-ControlAction-ID RIC-ControlAction-ID,
+ ranP-List E2SM-RC-ControlMessage-Format1,
+ ...
+}
+
+E2SM-RC-ControlMessage-Format3 ::= SEQUENCE {
+ listOfEntityFilters SEQUENCE (SIZE(0..maxnoofAssociatedEntityFilters)) OF E2SM-RC-EntityFilter OPTIONAL,
+ entityAgnosticControlRanP-List SEQUENCE (SIZE(0..maxnoofAssociatedRANParameters)) OF EntityAgnostic-ranP-ControlParameters OPTIONAL,
+ ...
+}
+
+E2SM-RC-EntityFilter ::= SEQUENCE {
+ entityFilter-ID EntityFilter-ID,
+ entityFilter-Definition RANParameter-Testing,
+ entitySpecificControlRanP-List SEQUENCE (SIZE(1..maxnoofAssociatedRANParameters)) OF EntitySpecific-ranP-ControlParameters,
+ ...
+}
+
+EntityAgnostic-ranP-ControlParameters ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-valueType RANParameter-ValueType,
+ ...
+}
+
+EntitySpecific-ranP-ControlParameters ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-valueType RANParameter-ValueType,
+ ...
+}
+
+
+-- ****************************************************
+-- Control Outcome OCTET STRING contents
+-- ****************************************************
+
+E2SM-RC-ControlOutcome ::= SEQUENCE {
+ ric-controlOutcome-formats CHOICE {
+ controlOutcome-Format1 E2SM-RC-ControlOutcome-Format1,
+ ...,
+ controlOutcome-Format2 E2SM-RC-ControlOutcome-Format2,
+ controlOutcome-Format3 E2SM-RC-ControlOutcome-Format3 },
+ ...
+}
+
+E2SM-RC-ControlOutcome-Format1 ::= SEQUENCE {
+ ranP-List SEQUENCE (SIZE(0..maxnoofRANOutcomeParameters)) OF E2SM-RC-ControlOutcome-Format1-Item,
+ ...
+}
+
+
+E2SM-RC-ControlOutcome-Format1-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-value RANParameter-Value,
+ ...
+}
+
+E2SM-RC-ControlOutcome-Format2 ::= SEQUENCE {
+ ric-ControlStyle-List SEQUENCE (SIZE(1.. maxnoofRICStyles)) OF E2SM-RC-ControlOutcome-Format2-Style-Item,
+ ...
+}
+
+E2SM-RC-ControlOutcome-Format2-Style-Item ::= SEQUENCE {
+ indicated-Control-Style-Type RIC-Style-Type,
+ ric-ControlOutcome-List SEQUENCE (SIZE(1..maxnoofMulCtrlActions)) OF E2SM-RC-ControlOutcome-Format2-ControlOutcome-Item,
+ ...
+}
+
+E2SM-RC-ControlOutcome-Format2-ControlOutcome-Item ::= SEQUENCE {
+ ric-ControlAction-ID RIC-ControlAction-ID,
+ ranP-List SEQUENCE (SIZE(1..maxnoofAssociatedRANParameters)) OF E2SM-RC-ControlOutcome-Format2-RANP-Item,
+ ...
+}
+
+E2SM-RC-ControlOutcome-Format2-RANP-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-value RANParameter-Value,
+ ...
+}
+
+E2SM-RC-ControlOutcome-Format3 ::= SEQUENCE {
+ ranP-List SEQUENCE (SIZE(0..maxnoofRANOutcomeParameters)) OF E2SM-RC-ControlOutcome-Format3-Item,
+ ...
+}
+
+
+E2SM-RC-ControlOutcome-Format3-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-valueType RANParameter-ValueType,
+ ...
+}
+
+-- ***************************************************
+-- Query Header OCTET STRING contents
+-- ***************************************************
+
+E2SM-RC-QueryHeader ::= SEQUENCE {
+ ric-queryHeader-formats CHOICE {
+ queryHeader-Format1 E2SM-RC-QueryHeader-Format1,
+ ...
+ },
+ ...
+}
+
+E2SM-RC-QueryHeader-Format1 ::= SEQUENCE {
+ ric-Style-Type RIC-Style-Type,
+ associatedE2NodeInfo RANParameter-Testing OPTIONAL,
+ associatedUEInfo Associated-UE-Info OPTIONAL,
+ ...
+}
+
+-- ***************************************************
+-- Query Definition OCTET STRING contents
+-- ***************************************************
+
+E2SM-RC-QueryDefinition ::= SEQUENCE {
+ ric-queryDefinition-formats CHOICE {
+ queryRequest-Format1 E2SM-RC-QueryDefinition-Format1,
+ ...
+ },
+ ...
+}
+
+E2SM-RC-QueryDefinition-Format1 ::= SEQUENCE {
+ ranP-List SEQUENCE (SIZE(1..maxnoofAssociatedRANParameters)) OF E2SM-RC-QueryDefinition-Format1-Item,
+ ...
+}
+
+E2SM-RC-QueryDefinition-Format1-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-Definition RANParameter-Definition OPTIONAL,
+ ...
+}
+
+-- ***************************************************
+-- Query Outcome OCTET STRING contents
+-- ***************************************************
+
+E2SM-RC-QueryOutcome ::= SEQUENCE {
+ ric-queryOutcome-formats CHOICE {
+ queryOutcome-Format1 E2SM-RC-QueryOutcome-Format1,
+ queryOutcome-Format2 E2SM-RC-QueryOutcome-Format2,
+ ...
+ },
+ ...
+}
+
+E2SM-RC-QueryOutcome-Format1 ::= SEQUENCE {
+ cellInfo-List SEQUENCE (SIZE(1..maxnoofCellID)) OF E2SM-RC-QueryOutcome-Format1-ItemCell,
+ ...
+}
+
+E2SM-RC-QueryOutcome-Format1-ItemCell ::= SEQUENCE {
+ cellGlobal-ID CGI,
+ ranP-List SEQUENCE (SIZE(0..maxnoofAssociatedRANParameters)) OF E2SM-RC-QueryOutcome-Format1-ItemParameters,
+ neighborRelation-Table NeighborRelation-Info OPTIONAL,
+ ...
+}
+
+E2SM-RC-QueryOutcome-Format1-ItemParameters ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-valueType RANParameter-ValueType OPTIONAL,
+ ...
+}
+E2SM-RC-QueryOutcome-Format2 ::= SEQUENCE {
+ ueInfo-List SEQUENCE (SIZE(0..maxnoofUEID)) OF E2SM-RC-QueryOutcome-Format2-ItemUE,
+ ...
+}
+
+E2SM-RC-QueryOutcome-Format2-ItemUE::= SEQUENCE {
+ ueID UEID,
+ ranP-List SEQUENCE (SIZE(0..maxnoofAssociatedRANParameters)) OF E2SM-RC-QueryOutcome-Format2-ItemParameters,
+ ueFilterID UE-Filter-ID OPTIONAL, ...
+}
+
+E2SM-RC-QueryOutcome-Format2-ItemParameters ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-valueType RANParameter-ValueType OPTIONAL,
+ ...
+}
+
+-- **************************************************************
+-- RAN Function Definition IEs
+-- **************************************************************
+
+E2SM-RC-RANFunctionDefinition ::= SEQUENCE{
+ ranFunction-Name RANfunction-Name,
+ ranFunctionDefinition-EventTrigger RANFunctionDefinition-EventTrigger OPTIONAL,
+ ranFunctionDefinition-Report RANFunctionDefinition-Report OPTIONAL,
+ ranFunctionDefinition-Insert RANFunctionDefinition-Insert OPTIONAL,
+ ranFunctionDefinition-Control RANFunctionDefinition-Control OPTIONAL,
+ ranFunctionDefinition-Policy RANFunctionDefinition-Policy OPTIONAL,
+ ...,
+ ranFunctionDefinition-Query RANFunctionDefinition-Query OPTIONAL
+}
+
+-------------------------------
+-- Event Trigger
+-------------------------------
+RANFunctionDefinition-EventTrigger ::= SEQUENCE {
+ ric-EventTriggerStyle-List SEQUENCE (SIZE(1..maxnoofRICStyles)) OF RANFunctionDefinition-EventTrigger-Style-Item,
+ ran-L2Parameters-List SEQUENCE (SIZE(1..maxnoofAssociatedRANParameters)) OF L2Parameters-RANParameter-Item OPTIONAL,
+ ran-CallProcessTypes-List SEQUENCE (SIZE(1..maxnoofCallProcessTypes)) OF RANFunctionDefinition-EventTrigger-CallProcess-Item OPTIONAL,
+ ran-UEIdentificationParameters-List SEQUENCE (SIZE(1..maxnoofAssociatedRANParameters)) OF UEIdentification-RANParameter-Item OPTIONAL,
+ ran-CellIdentificationParameters-List SEQUENCE (SIZE(1..maxnoofAssociatedRANParameters)) OF CellIdentification-RANParameter-Item OPTIONAL,
+ ...
+}
+
+RANFunctionDefinition-EventTrigger-Style-Item ::= SEQUENCE {
+ ric-EventTriggerStyle-Type RIC-Style-Type,
+ ric-EventTriggerStyle-Name RIC-Style-Name,
+ ric-EventTriggerFormat-Type RIC-Format-Type,
+ ...
+}
+
+
+L2Parameters-RANParameter-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-name RANParameter-Name,
+ ...,
+ ranParameter-Definition RANParameter-Definition OPTIONAL
+}
+
+
+UEIdentification-RANParameter-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-name RANParameter-Name,
+ ...,
+ ranParameter-Definition RANParameter-Definition OPTIONAL
+}
+
+
+CellIdentification-RANParameter-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-name RANParameter-Name,
+ ...,
+ ranParameter-Definition RANParameter-Definition OPTIONAL
+}
+
+RANFunctionDefinition-EventTrigger-CallProcess-Item ::= SEQUENCE {
+ callProcessType-ID RIC-CallProcessType-ID,
+ callProcessType-Name RIC-CallProcessType-Name,
+ callProcessBreakpoints-List SEQUENCE (SIZE (1..maxnoofCallProcessBreakpoints)) OF RANFunctionDefinition-EventTrigger-Breakpoint-Item,
+ ...
+}
+
+
+RANFunctionDefinition-EventTrigger-Breakpoint-Item ::= SEQUENCE {
+ callProcessBreakpoint-ID RIC-CallProcessBreakpoint-ID,
+ callProcessBreakpoint-Name RIC-CallProcessBreakpoint-Name,
+ ran-CallProcessBreakpointParameters-List SEQUENCE (SIZE (1..maxnoofAssociatedRANParameters)) OF CallProcessBreakpoint-RANParameter-Item OPTIONAL,
+ ...
+}
+
+
+CallProcessBreakpoint-RANParameter-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-name RANParameter-Name,
+ ...,
+ ranParameter-Definition RANParameter-Definition OPTIONAL
+}
+
+-------------------------------
+-- Report
+-------------------------------
+
+RANFunctionDefinition-Report ::= SEQUENCE {
+ ric-ReportStyle-List SEQUENCE (SIZE(1..maxnoofRICStyles)) OF RANFunctionDefinition-Report-Item,
+ ...
+}
+
+
+RANFunctionDefinition-Report-Item ::= SEQUENCE {
+ ric-ReportStyle-Type RIC-Style-Type,
+ ric-ReportStyle-Name RIC-Style-Name,
+ ric-SupportedEventTriggerStyle-Type RIC-Style-Type,
+ ric-ReportActionFormat-Type RIC-Format-Type,
+ ric-IndicationHeaderFormat-Type RIC-Format-Type,
+ ric-IndicationMessageFormat-Type RIC-Format-Type,
+ ran-ReportParameters-List SEQUENCE (SIZE (1..maxnoofAssociatedRANParameters)) OF Report-RANParameter-Item OPTIONAL,
+ ...
+}
+
+
+Report-RANParameter-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-name RANParameter-Name,
+ ...,
+ ranParameter-Definition RANParameter-Definition OPTIONAL
+}
+
+-------------------------------
+-- Insert
+-------------------------------
+
+RANFunctionDefinition-Insert ::= SEQUENCE {
+ ric-InsertStyle-List SEQUENCE (SIZE(1..maxnoofRICStyles)) OF RANFunctionDefinition-Insert-Item,
+ ...
+}
+
+RANFunctionDefinition-Insert-Item ::= SEQUENCE {
+ ric-InsertStyle-Type RIC-Style-Type,
+ ric-InsertStyle-Name RIC-Style-Name,
+ ric-SupportedEventTriggerStyle-Type RIC-Style-Type,
+ ric-ActionDefinitionFormat-Type RIC-Format-Type,
+ ric-InsertIndication-List SEQUENCE (SIZE(1..maxnoofInsertIndication)) OF RANFunctionDefinition-Insert-Indication-Item OPTIONAL,
+ ric-IndicationHeaderFormat-Type RIC-Format-Type,
+ ric-IndicationMessageFormat-Type RIC-Format-Type,
+ ric-CallProcessIDFormat-Type RIC-Format-Type,
+ ...
+}
+
+
+RANFunctionDefinition-Insert-Indication-Item ::= SEQUENCE {
+ ric-InsertIndication-ID RIC-InsertIndication-ID,
+ ric-InsertIndication-Name RIC-InsertIndication-Name,
+ ran-InsertIndicationParameters-List SEQUENCE (SIZE (1..maxnoofAssociatedRANParameters)) OF InsertIndication-RANParameter-Item OPTIONAL,
+ ...
+}
+
+
+InsertIndication-RANParameter-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-name RANParameter-Name,
+ ...,
+ ranParameter-Definition RANParameter-Definition OPTIONAL
+}
+-------------------------------
+-- Control
+-------------------------------
+
+RANFunctionDefinition-Control ::= SEQUENCE {
+ ric-ControlStyle-List SEQUENCE (SIZE(1..maxnoofRICStyles)) OF RANFunctionDefinition-Control-Item,
+ ...
+}
+
+
+RANFunctionDefinition-Control-Item ::= SEQUENCE {
+ ric-ControlStyle-Type RIC-Style-Type,
+ ric-ControlStyle-Name RIC-Style-Name,
+ ric-ControlAction-List SEQUENCE (SIZE(1..maxnoofControlAction)) OF RANFunctionDefinition-Control-Action-Item OPTIONAL,
+ ric-ControlHeaderFormat-Type RIC-Format-Type,
+ ric-ControlMessageFormat-Type RIC-Format-Type,
+ ric-CallProcessIDFormat-Type RIC-Format-Type OPTIONAL,
+ ric-ControlOutcomeFormat-Type RIC-Format-Type,
+ ran-ControlOutcomeParameters-List SEQUENCE (SIZE(1..maxnoofRANOutcomeParameters)) OF ControlOutcome-RANParameter-Item OPTIONAL,
+ ...
+}
+
+ControlOutcome-RANParameter-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-name RANParameter-Name,
+ ...,
+ ranParameter-Definition RANParameter-Definition OPTIONAL
+}
+
+
+RANFunctionDefinition-Control-Action-Item ::= SEQUENCE {
+ ric-ControlAction-ID RIC-ControlAction-ID,
+ ric-ControlAction-Name RIC-ControlAction-Name,
+ ran-ControlActionParameters-List SEQUENCE (SIZE (1..maxnoofAssociatedRANParameters)) OF ControlAction-RANParameter-Item OPTIONAL,
+ ...,
+ ueGroup-ControlAction-Supported ENUMERATED {true, false, ...}
+}
+
+ControlAction-RANParameter-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-name RANParameter-Name,
+ ...,
+ ranParameter-Definition RANParameter-Definition OPTIONAL,
+ listOfAdditionalSupportedFormats-UEGroupControl ListOfAdditionalSupportedFormats-UEGroupControl OPTIONAL
+}
+
+ListOfAdditionalSupportedFormats-UEGroupControl ::= SEQUENCE (SIZE(0..maxnoofFormatTypes)) OF AdditionalSupportedFormat-UEGroupControl
+
+AdditionalSupportedFormat-UEGroupControl ::= SEQUENCE {
+ ric-ControlHeaderFormat-Type RIC-Format-Type,
+ ric-ControlMessageFormat-Type RIC-Format-Type,
+ ...
+}
+
+-------------------------------
+-- Policy
+-------------------------------
+
+RANFunctionDefinition-Policy ::= SEQUENCE {
+ ric-PolicyStyle-List SEQUENCE (SIZE(1..maxnoofRICStyles)) OF RANFunctionDefinition-Policy-Item,
+ ...
+}
+
+RANFunctionDefinition-Policy-Item ::= SEQUENCE {
+ ric-PolicyStyle-Type RIC-Style-Type,
+ ric-PolicyStyle-Name RIC-Style-Name,
+ ric-SupportedEventTriggerStyle-Type RIC-Style-Type,
+ ric-PolicyAction-List SEQUENCE (SIZE(1..maxnoofPolicyAction)) OF RANFunctionDefinition-Policy-Action-Item OPTIONAL,
+ ...
+}
+
+
+RANFunctionDefinition-Policy-Action-Item ::= SEQUENCE {
+ ric-PolicyAction-ID RIC-ControlAction-ID,
+ ric-PolicyAction-Name RIC-ControlAction-Name,
+ ric-ActionDefinitionFormat-Type RIC-Format-Type,
+ ran-PolicyActionParameters-List SEQUENCE (SIZE (1..maxnoofAssociatedRANParameters)) OF PolicyAction-RANParameter-Item OPTIONAL,
+ ran-PolicyConditionParameters-List SEQUENCE (SIZE (1..maxnoofAssociatedRANParameters)) OF PolicyCondition-RANParameter-Item OPTIONAL,
+ ...
+}
+
+
+PolicyAction-RANParameter-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-name RANParameter-Name,
+ ...,
+ ranParameter-Definition RANParameter-Definition OPTIONAL
+}
+
+
+PolicyCondition-RANParameter-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-name RANParameter-Name,
+ ...,
+ ranParameter-Definition RANParameter-Definition OPTIONAL
+}
+
+-------------------------------
+-- Query
+-------------------------------
+
+RANFunctionDefinition-Query ::= SEQUENCE {
+ ric-QueryStyle-List SEQUENCE (SIZE(1..maxnoofRICStyles)) OF RANFunctionDefinition-Query-Item,
+ ...
+}
+
+
+RANFunctionDefinition-Query-Item ::= SEQUENCE {
+ ric-QueryStyle-Type RIC-Style-Type,
+ ric-QueryStyle-Name RIC-Style-Name,
+ ric-QueryHeaderFormat-Type RIC-Format-Type,
+ ric-QueryDefinitionFormat-Type RIC-Format-Type,
+ ric-QueryOutcomeFormat-Type RIC-Format-Type,
+ ran-QueryParameters-List SEQUENCE (SIZE (1..maxnoofAssociatedRANParameters)) OF Query-RANParameter-Item OPTIONAL,
+ ...
+}
+
+
+Query-RANParameter-Item ::= SEQUENCE {
+ ranParameter-ID RANParameter-ID,
+ ranParameter-name RANParameter-Name,
+ ranParameter-Definition RANParameter-Definition OPTIONAL,
+ ...
+}
+
+
+END
+
+-- ASN1STOP
diff --git a/epan/dissectors/asn1/e2ap/e2sm-v3.01.asn b/epan/dissectors/asn1/e2ap/e2sm-v3.01.asn
new file mode 100644
index 00000000..1bd6896c
--- /dev/null
+++ b/epan/dissectors/asn1/e2ap/e2sm-v3.01.asn
@@ -0,0 +1,573 @@
+-- ASN1START
+-- **************************************************************
+-- E2SM
+-- Information Element Definitions
+--
+-- **************************************************************
+
+E2SM-COMMON-IEs {
+iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version1 (1) e2sm(2) e2sm-COMMON-IEs (0)}
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+-- --------------------------------------------------
+-- Constants
+-- --------------------------------------------------
+
+maxE1APid INTEGER ::= 65535
+maxF1APid INTEGER ::= 4
+
+-- IEs derived from 3GPP 36.423 (X2AP)
+maxEARFCN INTEGER ::= 65535
+
+-- IEs derived from 3GPP 38.473 (F1AP)
+maxNRARFCN INTEGER ::= 3279165
+maxnoofNrCellBands INTEGER ::= 32
+
+
+-- --------------------------------------------------
+-- E2SM Commmon IEs
+-- --------------------------------------------------
+
+CGI ::= CHOICE {
+ nR-CGI NR-CGI,
+ eUTRA-CGI EUTRA-CGI,
+ ...
+}
+
+CoreCPID ::= CHOICE {
+ fiveGC GUAMI,
+ ePC GUMMEI,
+ ...
+}
+
+InterfaceIdentifier ::= CHOICE {
+ nG InterfaceID-NG,
+ xN InterfaceID-Xn,
+ f1 InterfaceID-F1,
+ e1 InterfaceID-E1,
+ s1 InterfaceID-S1,
+ x2 InterfaceID-X2,
+ w1 InterfaceID-W1,
+ ...
+}
+
+InterfaceID-NG ::= SEQUENCE {
+ guami GUAMI,
+ ...
+}
+
+InterfaceID-Xn ::= SEQUENCE {
+ global-NG-RAN-ID GlobalNGRANNodeID,
+ ...
+}
+
+InterfaceID-F1 ::= SEQUENCE {
+ globalGNB-ID GlobalGNB-ID,
+ gNB-DU-ID GNB-DU-ID,
+ ...
+}
+
+InterfaceID-E1 ::= SEQUENCE {
+ globalGNB-ID GlobalGNB-ID,
+ gNB-CU-UP-ID GNB-CU-UP-ID,
+ ...
+}
+
+InterfaceID-S1 ::= SEQUENCE {
+ gUMMEI GUMMEI,
+ ...
+}
+
+InterfaceID-X2 ::= SEQUENCE {
+ nodeType CHOICE {
+ global-eNB-ID GlobalENB-ID,
+ global-en-gNB-ID GlobalenGNB-ID,
+ ...
+ },
+ ...
+}
+
+InterfaceID-W1 ::= SEQUENCE {
+ global-ng-eNB-ID GlobalNgENB-ID,
+ ng-eNB-DU-ID NGENB-DU-ID,
+ ...
+}
+
+Interface-MessageID ::= SEQUENCE {
+ interfaceProcedureID INTEGER,
+ messageType ENUMERATED {initiatingMessage, successfulOutcome, unsuccessfulOutcome, ...},
+ ...
+}
+
+InterfaceType ::= ENUMERATED {nG, xn, f1, e1, s1, x2, w1, ...}
+
+GroupID ::= CHOICE {
+ fiveGC FiveQI,
+ ePC QCI,
+ ...
+}
+
+QoSID ::= CHOICE {
+ fiveGC FiveQI,
+ ePC QCI,
+ ...
+}
+
+RANfunction-Name ::= SEQUENCE{
+ ranFunction-ShortName PrintableString(SIZE(1..150,...)),
+ ranFunction-E2SM-OID PrintableString(SIZE(1..1000,...)),
+ ranFunction-Description PrintableString(SIZE(1..150,...)),
+ ranFunction-Instance INTEGER OPTIONAL,
+ ...
+}
+
+RIC-Format-Type ::= INTEGER
+
+RIC-Style-Type ::= INTEGER
+
+RIC-Style-Name ::= PrintableString(SIZE(1..150,...))
+
+
+RRC-MessageID ::= SEQUENCE {
+ rrcType CHOICE {
+ lTE RRCclass-LTE,
+ nR RRCclass-NR,
+ ...
+ },
+ messageID INTEGER,
+ ...
+}
+
+RRCclass-LTE ::= ENUMERATED {bCCH-BCH, bCCH-BCH-MBMS, bCCH-DL-SCH, bCCH-DL-SCH-BR, bCCH-DL-SCH-MBMS, mCCH, pCCH, dL-CCCH, dL-DCCH, uL-CCCH, uL-DCCH, sC-MCCH, ...}
+
+RRCclass-NR ::= ENUMERATED {bCCH-BCH, bCCH-DL-SCH, dL-CCCH, dL-DCCH, pCCH, uL-CCCH, uL-CCCH1, uL-DCCH, ...}
+
+ServingCell-ARFCN ::= CHOICE {
+ nR NR-ARFCN,
+ eUTRA E-UTRA-ARFCN,
+ ...
+}
+
+ServingCell-PCI ::= CHOICE {
+ nR NR-PCI,
+ eUTRA E-UTRA-PCI,
+ ...
+}
+
+
+UEID ::= CHOICE{
+ gNB-UEID UEID-GNB,
+ gNB-DU-UEID UEID-GNB-DU,
+ gNB-CU-UP-UEID UEID-GNB-CU-UP,
+ ng-eNB-UEID UEID-NG-ENB,
+ ng-eNB-DU-UEID UEID-NG-ENB-DU,
+ en-gNB-UEID UEID-EN-GNB,
+ eNB-UEID UEID-ENB,
+ ...
+}
+
+UEID-GNB ::= SEQUENCE{
+ amf-UE-NGAP-ID AMF-UE-NGAP-ID,
+ guami GUAMI,
+ gNB-CU-UE-F1AP-ID-List UEID-GNB-CU-F1AP-ID-List OPTIONAL,
+-- C-ifCUDUseparated: This IE shall be present in messages from E2 Node to NearRT-RIC for a CU-DU separated gNB, whereas from NearRT-RIC to E2 Node messages, this IE may not be included. More than 1 F1AP ID shall be reported by E2 Node only when NR-DC is established.
+ gNB-CU-CP-UE-E1AP-ID-List UEID-GNB-CU-CP-E1AP-ID-List OPTIONAL,
+-- C-ifCPUPseparated: This IE shall be present in messages from E2 Node to NearRT-RIC for a CP-UP separated gNB, whereas from NearRT-RIC to E2 Node messages, this IE may not be included.
+ ran-UEID RANUEID OPTIONAL,
+ m-NG-RAN-UE-XnAP-ID NG-RANnodeUEXnAPID OPTIONAL,
+-- C-ifDCSetup: This IE shall be present in messages from E2 Node to NearRT-RIC if DC is established, whereas from NearRT-RIC to E2 Node messages, this IE may not be included. To be reported by both MN and SN.
+ globalGNB-ID GlobalGNB-ID OPTIONAL,
+-- This IE shall not be used. This IE is replaced with globalNG-RANNode-ID.
+ ...,
+ globalNG-RANNode-ID GlobalNGRANNodeID OPTIONAL
+-- C-ifDCSetup: This IE shall be present in messages from E2 Node to NearRT-RIC if DC is established, whereas from NearRT-RIC to E2 Node messages, this IE may not be included. To be reported only by SN.
+}
+
+UEID-GNB-CU-CP-E1AP-ID-List ::= SEQUENCE (SIZE(1..maxE1APid)) OF UEID-GNB-CU-CP-E1AP-ID-Item
+
+UEID-GNB-CU-CP-E1AP-ID-Item ::= SEQUENCE{
+ gNB-CU-CP-UE-E1AP-ID GNB-CU-CP-UE-E1AP-ID,
+ ...
+}
+
+UEID-GNB-CU-F1AP-ID-List ::= SEQUENCE (SIZE(1..maxF1APid)) OF UEID-GNB-CU-CP-F1AP-ID-Item
+
+UEID-GNB-CU-CP-F1AP-ID-Item ::= SEQUENCE{
+ gNB-CU-UE-F1AP-ID GNB-CU-UE-F1AP-ID,
+ ...
+}
+
+UEID-GNB-DU ::= SEQUENCE{
+ gNB-CU-UE-F1AP-ID GNB-CU-UE-F1AP-ID,
+ ran-UEID RANUEID OPTIONAL,
+ ...
+}
+
+UEID-GNB-CU-UP ::= SEQUENCE{
+ gNB-CU-CP-UE-E1AP-ID GNB-CU-CP-UE-E1AP-ID,
+ ran-UEID RANUEID OPTIONAL,
+ ...
+}
+
+UEID-NG-ENB ::= SEQUENCE{
+ amf-UE-NGAP-ID AMF-UE-NGAP-ID,
+ guami GUAMI,
+ ng-eNB-CU-UE-W1AP-ID NGENB-CU-UE-W1AP-ID OPTIONAL,
+-- C-ifCUDUseperated: This IE shall be present in messages from E2 Node to NearRT-RIC for a CU-DU seperated ng-eNB, whereas from NearRT-RIC to E2 Node messages, this IE may not be included.
+ m-NG-RAN-UE-XnAP-ID NG-RANnodeUEXnAPID OPTIONAL,
+-- C-ifDCSetup: This IE shall be present in messages from E2 Node to NearRT-RIC if DC is established, whereas from NearRT-RIC to E2 Node messages, this IE may not be included. To be reported by both MN and SN.
+ globalNgENB-ID GlobalNgENB-ID OPTIONAL,
+-- This IE shall not be used. This IE is replaced with globalNG-RANNode-ID.
+ ...,
+ globalNG-RANNode-ID GlobalNGRANNodeID OPTIONAL
+-- C-ifDCSetup: This IE shall be present in messages from E2 Node to NearRT-RIC if DC is established, whereas from NearRT-RIC to E2 Node messages, this IE may not be included. To be reported only by SN.
+}
+
+
+UEID-NG-ENB-DU ::= SEQUENCE{
+ ng-eNB-CU-UE-W1AP-ID NGENB-CU-UE-W1AP-ID,
+ ...
+}
+
+UEID-EN-GNB ::= SEQUENCE{
+ m-eNB-UE-X2AP-ID ENB-UE-X2AP-ID,
+ m-eNB-UE-X2AP-ID-Extension ENB-UE-X2AP-ID-Extension OPTIONAL,
+ globalENB-ID GlobalENB-ID,
+ gNB-CU-UE-F1AP-ID GNB-CU-UE-F1AP-ID OPTIONAL,
+-- C-ifCUDUseperated: This IE shall be present in messages from E2 Node to NearRT-RIC for a CU-DU seperated en-gNB, whereas from NearRT-RIC to E2 Node messages, this IE may not be included.
+ gNB-CU-CP-UE-E1AP-ID-List UEID-GNB-CU-CP-E1AP-ID-List OPTIONAL,
+-- C-ifCPUPseparated: This IE shall be present in messages from E2 Node to NearRT-RIC for a CP-UP separated en-gNB, whereas from NearRT-RIC to E2 Node messages, this IE may not be included.
+ ran-UEID RANUEID OPTIONAL,
+ ...
+}
+
+UEID-ENB ::= SEQUENCE{
+ mME-UE-S1AP-ID MME-UE-S1AP-ID,
+ gUMMEI GUMMEI,
+ m-eNB-UE-X2AP-ID ENB-UE-X2AP-ID OPTIONAL,
+-- This IE shall be present in messages from E2 Node to NearRT-RIC if DC is established, whereas from NearRT-RIC to E2 Node messages, this IE may not be included. To be reported by MeNB and SeNB.
+ m-eNB-UE-X2AP-ID-Extension ENB-UE-X2AP-ID-Extension OPTIONAL,
+ globalENB-ID GlobalENB-ID OPTIONAL,
+-- This IE shall be present in messages from E2 Node to NearRT-RIC if DC is established, whereas from NearRT-RIC to E2 Node messages, this IE may not be included. To be reported only by SeNB.
+ ...
+}
+
+-- **************************************************************
+-- 3GPP derived IEs
+-- **************************************************************
+-- NOTE:
+-- - Extension fields removed and replaced with "..."
+-- - IE names modified across all extracts to use "PLMNIdentity"
+
+-- **************************************************************
+-- IEs derived from 3GPP 36.413 (S1AP)
+-- **************************************************************
+-- **************************************************************
+
+-- copied from v16.5.0
+-- ENB-ID ::= CHOICE {
+-- macro-eNB-ID BIT STRING (SIZE (20)),
+-- home-eNB-ID BIT STRING (SIZE (28)),
+-- ... ,
+-- short-Macro-eNB-ID BIT STRING (SIZE(18)),
+-- long-Macro-eNB-ID BIT STRING (SIZE(21))
+-- }
+
+-- copied from v16.5.0
+-- GlobalENB-ID ::= SEQUENCE {
+-- pLMNIdentity PLMNIdentity,
+-- eNB-ID ENB-ID,
+-- ...
+-- }
+
+
+-- copied from v16.5.0
+GUMMEI ::= SEQUENCE {
+ pLMN-Identity PLMNIdentity,
+ mME-Group-ID MME-Group-ID,
+ mME-Code MME-Code,
+ ...
+}
+
+-- copied from v16.5.0
+MME-Group-ID ::= OCTET STRING (SIZE (2))
+
+-- copied from v16.5.0
+MME-Code ::= OCTET STRING (SIZE (1))
+
+-- copied from v16.5.0
+MME-UE-S1AP-ID ::= INTEGER (0..4294967295)
+
+-- copied from v16.5.0
+QCI ::= INTEGER (0..255)
+
+-- copied from v16.5.0
+SubscriberProfileIDforRFP ::= INTEGER (1..256)
+
+
+
+
+-- **************************************************************
+-- IEs derived from 3GPP 36.423 (X2AP)
+-- **************************************************************
+-- Extension fields removed.
+-- Note: to avoid duplicate names with NGAP, XnAP, etc.:
+-- GNB-ID renamed ENGNB-ID,
+-- GlobalGNB-ID renamed GlobalenGNB-ID,
+-- UE-X2AP-ID renamed ENB-UE-X2AP-ID
+-- UE-X2AP-ID-Extension renamed ENB-UE-X2AP-ID-Extension
+-- **************************************************************
+
+-- copied from v16.5.0
+EN-GNB-ID ::= CHOICE {
+ en-gNB-ID BIT STRING (SIZE (22..32)),
+ ...
+}
+
+-- copied from v16.5.0
+ENB-UE-X2AP-ID ::= INTEGER (0..4095)
+
+-- copied from v16.5.0
+ENB-UE-X2AP-ID-Extension ::= INTEGER (0..4095, ...)
+
+-- copied from v16.5.0
+E-UTRA-ARFCN ::= INTEGER (0..maxEARFCN)
+
+-- copied from v16.5.0
+E-UTRA-PCI ::= INTEGER (0..503, ...)
+
+-- copied from v16.5.0
+E-UTRA-TAC ::= OCTET STRING (SIZE(2))
+
+-- copied from v16.5.0
+-- GlobalenGNB-ID ::= SEQUENCE {
+-- pLMN-Identity PLMNIdentity,
+-- en-gNB-ID EN-GNB-ID,
+-- ...
+-- }
+
+
+
+
+
+-- **************************************************************
+-- IEs derived from 3GPP 37.473 (W1AP)
+-- **************************************************************
+
+-- copied from v16.3.0
+NGENB-CU-UE-W1AP-ID ::= INTEGER (0..4294967295)
+
+-- copied from v16.3.0
+-- NGENB-DU-ID ::= INTEGER (0..68719476735)
+
+
+
+
+
+-- **************************************************************
+-- IEs derived from 3GPP 38.413 (NGAP)
+-- Extension fields removed and replaced with ...
+-- **************************************************************
+
+-- copied from v16.2.0
+AMFPointer ::= BIT STRING (SIZE(6))
+
+-- copied from v16.2.0
+AMFRegionID ::= BIT STRING (SIZE(8))
+
+-- copied from v16.2.0
+AMFSetID ::= BIT STRING (SIZE(10))
+
+-- copied from v16.2.0
+AMF-UE-NGAP-ID ::= INTEGER (0..1099511627775)
+
+-- copied from v16.2.0
+EUTRACellIdentity ::= BIT STRING (SIZE(28))
+
+-- copied from v16.2.0
+EUTRA-CGI ::= SEQUENCE {
+ pLMNIdentity PLMNIdentity,
+ eUTRACellIdentity EUTRACellIdentity,
+ ...
+}
+
+-- copied from v16.2.0
+FiveQI ::= INTEGER (0..255, ...)
+
+-- copied from v16.2.0
+GlobalGNB-ID ::= SEQUENCE {
+ pLMNIdentity PLMNIdentity,
+ gNB-ID GNB-ID,
+ ...
+}
+
+-- copied from v16.2.0
+GlobalNgENB-ID ::= SEQUENCE {
+ pLMNIdentity PLMNIdentity,
+ ngENB-ID NgENB-ID,
+ ...
+}
+
+
+-- copied from v16.2.0
+GNB-ID ::= CHOICE {
+ gNB-ID BIT STRING (SIZE(22..32)),
+ ...
+}
+
+-- copied from v16.2.0
+GUAMI ::= SEQUENCE {
+ pLMNIdentity PLMNIdentity,
+ aMFRegionID AMFRegionID,
+ aMFSetID AMFSetID,
+ aMFPointer AMFPointer,
+ ...
+}
+
+-- copied from v16.2.0
+IndexToRFSP ::= INTEGER (1..256, ...)
+
+-- copied from v16.2.0
+NgENB-ID ::= CHOICE {
+ macroNgENB-ID BIT STRING (SIZE(20)),
+ shortMacroNgENB-ID BIT STRING (SIZE(18)),
+ longMacroNgENB-ID BIT STRING (SIZE(21)),
+ ...
+}
+
+-- copied from v16.2.0
+NRCellIdentity ::= BIT STRING (SIZE(36))
+
+-- copied from v16.2.0
+NR-CGI ::= SEQUENCE {
+ pLMNIdentity PLMNIdentity,
+ nRCellIdentity NRCellIdentity,
+ ...
+}
+
+-- copied from v16.2.0
+PLMNIdentity ::= OCTET STRING (SIZE(3))
+
+-- copied from v16.2.0
+QosFlowIdentifier ::= INTEGER (0..63, ...)
+
+-- copied from v16.2.0
+SD ::= OCTET STRING (SIZE(3))
+
+-- copied from v16.2.0
+S-NSSAI ::= SEQUENCE {
+ sST SST,
+ sD SD OPTIONAL,
+ ...
+}
+
+-- copied from v16.2.0
+SST ::= OCTET STRING (SIZE(1))
+
+
+
+
+
+-- **************************************************************
+-- IEs derived from 3GPP 38.423 (XnAP)
+-- **************************************************************
+
+-- copied from v16.2.0
+NG-RANnodeUEXnAPID ::= INTEGER (0.. 4294967295)
+
+GlobalNGRANNodeID ::= CHOICE {
+ gNB GlobalGNB-ID,
+ ng-eNB GlobalNgENB-ID,
+ ...
+}
+
+
+
+
+-- **************************************************************
+-- IEs derived from 3GPP 37.483 (E1AP)
+-- **************************************************************
+
+-- copied from v17.1.0
+GNB-CU-CP-UE-E1AP-ID ::= INTEGER (0..4294967295)
+
+-- copied from v17.1.0
+-- GNB-CU-UP-ID ::= INTEGER (0..68719476735)
+
+
+
+
+
+
+-- **************************************************************
+-- IEs derived from 3GPP 38.473 (F1AP)
+-- **************************************************************
+
+-- copied from v16.5.0
+FiveGS-TAC ::= OCTET STRING (SIZE(3))
+
+-- copied from v16.5.0
+FreqBandNrItem ::= SEQUENCE {
+ freqBandIndicatorNr INTEGER (1..1024, ...),
+ ...
+}
+
+
+-- copied from v16.5.0
+GNB-CU-UE-F1AP-ID ::= INTEGER (0..4294967295)
+
+-- copied from v16.5.0
+-- GNB-DU-ID ::= INTEGER (0..68719476735)
+
+-- copied from v16.5.0
+NR-PCI ::= INTEGER (0..1007)
+
+-- copied from v16.5.0
+NR-ARFCN ::= SEQUENCE {
+ nRARFCN INTEGER (0..maxNRARFCN),
+ ...
+}
+-- copied from v16.5.0
+NRFrequencyBand-List ::= SEQUENCE (SIZE(1..maxnoofNrCellBands)) OF NRFrequencyBandItem
+
+-- copied from v16.5.0
+NRFrequencyBandItem ::= SEQUENCE {
+ freqBandIndicatorNr INTEGER (1..1024,...),
+ supportedSULBandList SupportedSULBandList,
+ ...
+}
+
+-- copied from v16.5.0
+NRFrequencyInfo ::= SEQUENCE {
+ nrARFCN NR-ARFCN,
+ frequencyBand-List NRFrequencyBand-List,
+ frequencyShift7p5khz NRFrequencyShift7p5khz OPTIONAL,
+ ...
+}
+
+-- copied from v16.5.0
+NRFrequencyShift7p5khz ::= ENUMERATED {false, true, ...}
+
+
+-- copied from v16.5.0
+RANUEID ::= OCTET STRING (SIZE (8))
+
+
+-- copied from v16.5.0
+SupportedSULBandList ::= SEQUENCE (SIZE(0..maxnoofNrCellBands)) OF SupportedSULFreqBandItem
+
+-- copied from v16.5.0
+SupportedSULFreqBandItem ::= SEQUENCE {
+ freqBandIndicatorNr INTEGER (1..1024,...),
+ ...
+}
+
+
+
+
+
+END
+-- ASN1STOP
diff --git a/epan/dissectors/asn1/e2ap/packet-e2ap-template.c b/epan/dissectors/asn1/e2ap/packet-e2ap-template.c
new file mode 100644
index 00000000..709469f6
--- /dev/null
+++ b/epan/dissectors/asn1/e2ap/packet-e2ap-template.c
@@ -0,0 +1,833 @@
+/* packet-e2ap.c
+ * Routines for E2APApplication Protocol (e2ap) packet dissection
+ * Copyright 2021, Martin Mathieson
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ *
+ * References: ORAN-WG3.E2AP-v03.00, ORAN-WG3.E2SM-KPM-v03.00, ORAN-WG3.E2SM-RC.03.00
+ */
+
+#include "config.h"
+
+#include <epan/packet.h>
+#include <epan/strutil.h>
+#include <epan/asn1.h>
+#include <epan/prefs.h>
+#include <epan/sctpppids.h>
+#include <epan/expert.h>
+#include <epan/proto_data.h>
+#include <epan/conversation.h>
+#include <epan/to_str.h>
+#include <epan/oids.h>
+
+#include "packet-e2ap.h"
+#include "packet-per.h"
+#include "packet-ntp.h"
+
+#define PNAME "E2 Application Protocol"
+#define PSNAME "E2AP"
+#define PFNAME "e2ap"
+
+/* Dissector will use SCTP PPID 70, 71 or 72 or SCTP port 37464. */
+#define SCTP_PORT_E2AP 37464
+
+void proto_register_e2ap(void);
+void proto_reg_handoff_e2ap(void);
+
+static dissector_handle_t e2ap_handle;
+
+#include "packet-e2ap-val.h"
+
+/* Initialize the protocol and registered fields */
+static int proto_e2ap = -1;
+#include "packet-e2ap-hf.c"
+
+static int hf_e2ap_unmapped_ran_function_id = -1;
+static int hf_e2ap_ran_function_name_not_recognised = -1;
+static int hf_e2ap_ran_function_setup_frame = -1;
+
+static int hf_e2ap_dissector_version= -1;
+static int hf_e2ap_frame_version = -1;
+
+static int hf_e2ap_timestamp_string = -1;
+
+
+/* Initialize the subtree pointers */
+static gint ett_e2ap = -1;
+
+static expert_field ei_e2ap_ran_function_names_no_match = EI_INIT;
+static expert_field ei_e2ap_ran_function_id_not_mapped = EI_INIT;
+static expert_field ei_e2ap_ran_function_dissector_mismatch = EI_INIT;
+static expert_field ei_e2ap_ran_function_max_dissectors_registered = EI_INIT;
+
+#include "packet-e2ap-ett.c"
+
+
+/* Forward declarations */
+static int dissect_e2ap_RANfunction_Name(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
+static int dissect_E2SM_KPM_EventTriggerDefinition_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_E2SM_KPM_ActionDefinition_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_E2SM_KPM_IndicationHeader_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_E2SM_KPM_IndicationMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_E2SM_KPM_RANfunction_Description_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+
+static int dissect_E2SM_RC_EventTrigger_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_E2SM_RC_ActionDefinition_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_E2SM_RC_RANFunctionDefinition_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_E2SM_RC_IndicationMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_E2SM_RC_IndicationHeader_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_E2SM_RC_CallProcessID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_E2SM_RC_ControlHeader_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_E2SM_RC_ControlMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_E2SM_RC_ControlOutcome_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+//static int dissect_E2SM_RC_QueryOutcome_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+//static int dissect_E2SM_RC_QueryDefinition_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+//static int dissect_E2SM_RC_QueryHeader_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+
+static int dissect_E2SM_NI_EventTriggerDefinition_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_E2SM_NI_ActionDefinition_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_E2SM_NI_RANfunction_Description_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_E2SM_NI_IndicationMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_E2SM_NI_IndicationHeader_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_E2SM_NI_CallProcessID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_E2SM_NI_ControlHeader_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_E2SM_NI_ControlMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_E2SM_NI_ControlOutcome_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+
+enum {
+ INITIATING_MESSAGE,
+ SUCCESSFUL_OUTCOME,
+ UNSUCCESSFUL_OUTCOME
+};
+
+typedef struct _e2ap_ctx_t {
+ guint32 message_type;
+ guint32 ProcedureCode;
+ guint32 ProtocolIE_ID;
+ guint32 ProtocolExtensionID;
+} e2ap_ctx_t;
+
+
+/* Temporary private info to remember while dissecting frame */
+struct e2ap_private_data {
+ guint32 procedure_code;
+ guint32 protocol_ie_id;
+ guint32 protocol_extension_id;
+ guint32 message_type;
+ guint32 ran_ue_e2ap_id;
+
+ guint32 ran_function_id;
+ guint32 gnb_id_len;
+#define MAX_GNB_ID_BYTES 6
+ guint8 gnb_id_bytes[MAX_GNB_ID_BYTES];
+ dissector_handle_t component_configuration_dissector;
+};
+
+/* Lookup temporary private info */
+static struct e2ap_private_data*
+e2ap_get_private_data(packet_info *pinfo)
+{
+ struct e2ap_private_data *e2ap_data = (struct e2ap_private_data*)p_get_proto_data(pinfo->pool, pinfo, proto_e2ap, 0);
+ if (!e2ap_data) {
+ e2ap_data = wmem_new0(pinfo->pool, struct e2ap_private_data);
+ p_add_proto_data(pinfo->pool, pinfo, proto_e2ap, 0, e2ap_data);
+ }
+ return e2ap_data;
+}
+
+/****************************************************************************************************************/
+/* We learn which set of RAN functions pointers corresponds to a given ranFunctionID when we see E2SetupRequest */
+/* TODO: unfortunately, it seems that different versions of these protocols are not backward-compatible, so */
+/* it would be good to show where (going by OID) the dissector isn't at the same version as the message.. */
+/* An alternative would be to have multiple versions of each protocol and have them register in tables... */
+
+/* Static table mapping from string -> ran_function */
+static const char* g_ran_function_name_table[MAX_RANFUNCTIONS] =
+{
+ "ORAN-E2SM-KPM",
+ "ORAN-E2SM-RC",
+ "ORAN-E2SM-NI"
+};
+
+
+
+/* Per-conversation mapping: ranFunctionId -> ran_function+dissector */
+typedef struct {
+ guint32 setup_frame;
+ guint32 ran_function_id;
+ ran_function_t ran_function;
+ char oid[MAX_OID_LEN]; // i.e., OID from setupRequest
+ ran_function_dissector_t *dissector;
+} ran_function_id_mapping_t;
+
+typedef struct {
+#define MAX_RANFUNCTION_ENTRIES 8
+ guint32 num_entries;
+ ran_function_id_mapping_t entries[MAX_RANFUNCTION_ENTRIES];
+} ran_functionid_table_t;
+
+static const char *ran_function_to_str(ran_function_t ran_function)
+{
+ switch (ran_function) {
+ case KPM_RANFUNCTIONS:
+ return "KPM";
+ case RC_RANFUNCTIONS:
+ return "RC";
+ case NI_RANFUNCTIONS:
+ return "NI";
+ default:
+ return "Unknown";
+ }
+}
+
+/* Table of RAN Function tables, indexed by gnbId (bytes) */
+typedef struct {
+#define MAX_GNBS 6
+ guint32 num_gnbs;
+ struct {
+ guint8 id_value[MAX_GNB_ID_BYTES];
+ guint32 id_len;
+ ran_functionid_table_t *ran_function_table;
+ } gnb[MAX_GNBS];
+} gnb_ran_functions_t;
+
+static gnb_ran_functions_t s_gnb_ran_functions_table;
+
+
+/* Table of available dissectors for each RAN function */
+typedef struct {
+ guint32 num_available_dissectors;
+#define MAX_DISSECTORS_PER_RAN_FUNCTION 3
+ ran_function_dissector_t* ran_function_dissectors[MAX_DISSECTORS_PER_RAN_FUNCTION];
+} ran_function_available_dissectors_t;
+
+/* Available dissectors should be set here */
+static ran_function_available_dissectors_t g_ran_functions_available_dissectors[MAX_RANFUNCTIONS];
+
+/* Will be called from outside this file by separate dissectors */
+void register_e2ap_ran_function_dissector(ran_function_t ran_function, ran_function_dissector_t *dissector)
+{
+ if ((ran_function >= MIN_RANFUNCTIONS) && (ran_function <= MAX_RANFUNCTIONS)) {
+ ran_function_available_dissectors_t *available_dissectors = &g_ran_functions_available_dissectors[ran_function];
+ if (available_dissectors->num_available_dissectors < MAX_DISSECTORS_PER_RAN_FUNCTION) {
+ available_dissectors->ran_function_dissectors[available_dissectors->num_available_dissectors++] = dissector;
+ }
+ }
+}
+
+
+/* Get RANfunctionID table from conversation data - create new if necessary */
+static ran_functionid_table_t* get_ran_functionid_table(packet_info *pinfo)
+{
+ conversation_t *p_conv;
+ ran_functionid_table_t *p_conv_data = NULL;
+
+ /* Lookup conversation */
+ p_conv = find_conversation(pinfo->num, &pinfo->net_dst, &pinfo->net_src,
+ conversation_pt_to_endpoint_type(pinfo->ptype),
+ pinfo->destport, pinfo->srcport, 0);
+ if (!p_conv) {
+ /* None, so create new data and set */
+ p_conv = conversation_new(pinfo->num, &pinfo->net_dst, &pinfo->net_src,
+ conversation_pt_to_endpoint_type(pinfo->ptype),
+ pinfo->destport, pinfo->srcport, 0);
+ p_conv_data = (ran_functionid_table_t*)wmem_new0(wmem_file_scope(), ran_functionid_table_t);
+ conversation_add_proto_data(p_conv, proto_e2ap, p_conv_data);
+ }
+ else {
+ /* Will return existing conversation data */
+ p_conv_data = (ran_functionid_table_t*)conversation_get_proto_data(p_conv, proto_e2ap);
+ }
+
+ return p_conv_data;
+}
+
+
+/* Store new RANfunctionID -> Service Model mapping in table */
+void e2ap_store_ran_function_mapping(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, const char *name)
+{
+ struct e2ap_private_data *e2ap_data = e2ap_get_private_data(pinfo);
+ ran_functionid_table_t *table = get_ran_functionid_table(pinfo);
+
+ if (!name) {
+ return;
+ }
+ /* Stop if already reached table limit */
+ if (table->num_entries == MAX_RANFUNCTION_ENTRIES) {
+ proto_tree_add_expert_format(tree, pinfo, &ei_e2ap_ran_function_max_dissectors_registered,
+ tvb, 0, 0,
+ "Dissector wants to register for %s, but max (%u) already reached",
+ name, MAX_RANFUNCTION_ENTRIES);
+ return;
+ }
+
+ guint32 ran_function_id = e2ap_data->ran_function_id;
+
+ ran_function_t ran_function = MAX_RANFUNCTIONS; /* i.e. invalid */
+ ran_function_dissector_t *ran_function_dissector = NULL;
+
+ /* Check known RAN function names */
+ for (int n=MIN_RANFUNCTIONS; n < MAX_RANFUNCTIONS; n++) {
+ if (strcmp(name, g_ran_function_name_table[n]) == 0) {
+ ran_function = n;
+
+ /* Don't know OID yet, so for now, just choose first/only one */
+ /* TODO: is latest one likely to be more compatible? First fields (at least) come from E2SM.. */
+ if (g_ran_functions_available_dissectors[table->entries[n].ran_function].num_available_dissectors) {
+ ran_function_dissector = g_ran_functions_available_dissectors[table->entries[n].ran_function].ran_function_dissectors[0];
+ }
+ break;
+ }
+ }
+
+ /* Nothing to do if no matches */
+ if (ran_function == MAX_RANFUNCTIONS) {
+ return;
+ }
+
+ /* If ID already mapped, can stop here */
+ for (guint n=0; n < table->num_entries; n++) {
+ if (table->entries[n].ran_function_id == ran_function_id) {
+ return;
+ }
+ }
+
+ /* OK, store this new entry */
+ guint idx = table->num_entries++;
+ table->entries[idx].setup_frame = pinfo->num;
+ table->entries[idx].ran_function_id = ran_function_id;
+ table->entries[idx].ran_function = ran_function;
+ table->entries[idx].dissector = ran_function_dissector;
+
+ /* When add first entry, also want to set up table from gnbId -> table */
+ if (idx == 0) {
+ guint id_len = e2ap_data->gnb_id_len;
+ guint8 *id_value = &e2ap_data->gnb_id_bytes[0];
+
+ gboolean found = FALSE;
+ for (guint n=0; n<s_gnb_ran_functions_table.num_gnbs; n++) {
+ if ((s_gnb_ran_functions_table.gnb[n].id_len = id_len) &&
+ (memcmp(s_gnb_ran_functions_table.gnb[n].id_value, id_value, id_len) == 0)) {
+ /* Already have an entry for this gnb. */
+ found = TRUE;
+ break;
+ }
+ }
+
+ if (!found) {
+ /* Add entry (if room for 1 more) */
+ guint32 new_idx = s_gnb_ran_functions_table.num_gnbs;
+ if (new_idx < MAX_GNBS-1) {
+ s_gnb_ran_functions_table.gnb[new_idx].id_len = id_len;
+ memcpy(s_gnb_ran_functions_table.gnb[new_idx].id_value, id_value, id_len);
+ s_gnb_ran_functions_table.gnb[new_idx].ran_function_table = table;
+
+ s_gnb_ran_functions_table.num_gnbs++;
+ }
+ }
+ }
+}
+
+/* Look for Service Model function pointers, based on current RANFunctionID from frame */
+static ran_function_dissector_t* lookup_ranfunction_dissector(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb)
+{
+ /* Get ranFunctionID from this frame */
+ struct e2ap_private_data *e2ap_data = e2ap_get_private_data(pinfo);
+ guint ran_function_id = e2ap_data->ran_function_id;
+
+ /* Get ranFunction table corresponding to this frame's conversation */
+ ran_functionid_table_t *table = get_ran_functionid_table(pinfo);
+ if (!table) {
+ /* There is no ran function table associated with this frame's conversation info */
+ return NULL;
+ }
+
+ /* Find the entry in this table corresponding to ran_function_id */
+ for (guint n=0; n < table->num_entries; n++) {
+ if (ran_function_id == table->entries[n].ran_function_id) {
+ if (tree) {
+ /* Point back at the setup frame where this ranfunction was mapped */
+ proto_item *ti = proto_tree_add_uint(tree, hf_e2ap_ran_function_setup_frame,
+ tvb, 0, 0, table->entries[n].setup_frame);
+ /* Show that mapping */
+ proto_item_append_text(ti, " (%u -> %s)", table->entries[n].ran_function_id, ran_function_to_str(table->entries[n].ran_function));
+ proto_item_set_generated(ti);
+
+ /* Also take the chance to compare signalled and available dissector */
+ char *frame_version = oid_resolved_from_string(pinfo->pool, table->entries[n].oid);
+ ti = proto_tree_add_string(tree, hf_e2ap_frame_version, tvb, 0, 0, frame_version);
+ proto_item_set_generated(ti);
+
+ char *dissector_version = oid_resolved_from_string(pinfo->pool, table->entries[n].dissector->oid);
+ ti = proto_tree_add_string(tree, hf_e2ap_dissector_version, tvb, 0, 0, dissector_version);
+ proto_item_set_generated(ti);
+
+ if (strcmp(frame_version, dissector_version) != 0) {
+ /* Expert info for version mismatch! */
+ expert_add_info_format(pinfo, ti, &ei_e2ap_ran_function_dissector_mismatch,
+ "Dissector version mismatch - frame is %s but dissector is %s",
+ frame_version, dissector_version);
+ }
+ }
+
+ /* Return the dissector */
+ return table->entries[n].dissector;
+ }
+ }
+
+ if (tree) {
+ /* No match found.. */
+ proto_item *ti = proto_tree_add_item(tree, hf_e2ap_unmapped_ran_function_id, tvb, 0, 0, ENC_NA);
+ expert_add_info_format(pinfo, ti, &ei_e2ap_ran_function_id_not_mapped,
+ "Service Model not mapped for FunctionID %u", ran_function_id);
+ }
+
+ return NULL;
+}
+
+/* Return the oid associated with this frame's conversation */
+static char* lookup_ranfunction_oid(packet_info *pinfo)
+{
+ /* Get ranFunctionID from this frame */
+ struct e2ap_private_data *e2ap_data = e2ap_get_private_data(pinfo);
+ guint ran_function_id = e2ap_data->ran_function_id;
+
+ /* Get ranFunction table corresponding to this frame's conversation */
+ ran_functionid_table_t *table = get_ran_functionid_table(pinfo);
+ if (!table) {
+ /* There is no ran function table associated with this frame's conversation info */
+ return NULL;
+ }
+
+ /* Find the entry in this table corresponding to ran_function_id */
+ for (guint n=0; n < table->num_entries; n++) {
+ if (ran_function_id == table->entries[n].ran_function_id) {
+ return (char*)(table->entries[n].oid);
+ }
+ }
+
+ /* Not found */
+ return NULL;
+}
+
+
+/* We now know the OID - can we set a dissector that is an exact match from what has been signalled? */
+static void update_dissector_using_oid(packet_info *pinfo, ran_function_t ran_function)
+{
+ char *frame_oid = lookup_ranfunction_oid(pinfo);
+ if (frame_oid == NULL) {
+ /* TODO: error? */
+ return;
+ }
+
+ gboolean found = FALSE;
+
+ /* Look at available dissectors for this RAN function */
+ ran_function_available_dissectors_t *available = &g_ran_functions_available_dissectors[ran_function];
+ if (!available->num_available_dissectors) {
+ /* Oops - none available at all! */
+ return;
+ }
+
+ // Get mapping in use
+ struct e2ap_private_data *e2ap_data = e2ap_get_private_data(pinfo);
+ guint ran_function_id = e2ap_data->ran_function_id;
+ ran_function_id_mapping_t *mapping = NULL;
+ ran_functionid_table_t *table = get_ran_functionid_table(pinfo);
+ /* Find the entry in this table corresponding to ran_function_id */
+ for (guint n=0; n < table->num_entries; n++) {
+ if (ran_function_id == table->entries[n].ran_function_id) {
+ mapping = &(table->entries[n]);
+ }
+ }
+
+ if (!mapping) {
+ return;
+ }
+
+ /* Set dissector pointer in ran_function_id_mapping_t */
+ for (guint32 n=0; n < available->num_available_dissectors; n++) {
+ /* If exact match, set it */
+ if (strcmp(frame_oid, available->ran_function_dissectors[n]->oid) == 0) {
+ mapping->dissector = available->ran_function_dissectors[n];
+ found = TRUE;
+ break;
+ }
+ }
+
+ /* If not exact match, just set to first one available (TODO: closest above better?) */
+ if (!found) {
+ mapping->dissector = available->ran_function_dissectors[0];
+ }
+}
+
+
+/* Update RANfunctionID -> Service Model mapping in table (now that we know OID) */
+void e2ap_update_ran_function_mapping(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, const char *oid)
+{
+ /* Copy OID into table entry (so may be used to choose and be compared with chosen available dissector */
+ struct e2ap_private_data *e2ap_data = e2ap_get_private_data(pinfo);
+ ran_functionid_table_t *table = get_ran_functionid_table(pinfo);
+ ran_function_t ran_function = MAX_RANFUNCTIONS;
+ for (guint n=0; n < table->num_entries; n++) {
+ if (e2ap_data->ran_function_id == table->entries[n].ran_function_id) {
+ ran_function = table->entries[n].ran_function;
+ g_strlcpy(table->entries[n].oid, oid, MAX_OID_LEN);
+ }
+ }
+
+ /* Look up version from oid and show as generated field */
+ char *version = oid_resolved_from_string(pinfo->pool, oid);
+ proto_item *ti = proto_tree_add_string(tree, hf_e2ap_frame_version, tvb, 0, 0, version);
+ proto_item_set_generated(ti);
+
+ /* Can now pick most appropriate dissector for this RAN Function name, based upon this OID and the available dissectors */
+ if (ran_function < MAX_RANFUNCTIONS) {
+ if (pinfo->fd->visited) {
+ update_dissector_using_oid(pinfo, ran_function);
+ }
+ }
+}
+
+/* This will get used for E2nodeConfigurationUpdate, where we have a gnb-id but haven't seen E2setupRequest */
+static void update_conversation_from_gnb_id(asn1_ctx_t *actx)
+{
+ packet_info *pinfo = actx->pinfo;
+ struct e2ap_private_data *e2ap_data = e2ap_get_private_data(pinfo);
+
+ /* Look for conversation data */
+ conversation_t *p_conv;
+ ran_functionid_table_t *p_conv_data = NULL;
+
+ /* Lookup conversation */
+ p_conv = find_conversation(pinfo->num, &pinfo->net_dst, &pinfo->net_src,
+ conversation_pt_to_endpoint_type(pinfo->ptype),
+ pinfo->destport, pinfo->srcport, 0);
+
+ if (!p_conv) {
+ /* None, so create new data and set */
+ p_conv = conversation_new(pinfo->num, &pinfo->net_dst, &pinfo->net_src,
+ conversation_pt_to_endpoint_type(pinfo->ptype),
+ pinfo->destport, pinfo->srcport, 0);
+ p_conv_data = (ran_functionid_table_t*)wmem_new0(wmem_file_scope(), ran_functionid_table_t);
+ conversation_add_proto_data(p_conv, proto_e2ap, p_conv_data);
+
+ /* Look to see if we already know about the mappings in effect on this gNB */
+ guint id_len = e2ap_data->gnb_id_len;
+ guint8 *id_value = &e2ap_data->gnb_id_bytes[0];
+
+ for (guint n=0; n<s_gnb_ran_functions_table.num_gnbs; n++) {
+ if ((s_gnb_ran_functions_table.gnb[n].id_len = id_len) &&
+ (memcmp(s_gnb_ran_functions_table.gnb[n].id_value, id_value, id_len) == 0)) {
+
+ /* Have an entry for this gnb. Set direct pointer to existing data (used by original conversation). */
+ /* N.B. This means that no further updates for the gNB are expected on different conversations.. */
+ p_conv_data = s_gnb_ran_functions_table.gnb[n].ran_function_table;
+ conversation_add_proto_data(p_conv, proto_e2ap, p_conv_data);
+
+ /* TODO: may want to try to add a generated field to pass back to E2setupRequest where RAN function mappings were first seen? */
+ break;
+ }
+ }
+ }
+}
+
+
+/* Dissector tables */
+static dissector_table_t e2ap_ies_dissector_table;
+
+//static dissector_table_t e2ap_ies_p1_dissector_table;
+//static dissector_table_t e2ap_ies_p2_dissector_table;
+static dissector_table_t e2ap_extension_dissector_table;
+static dissector_table_t e2ap_proc_imsg_dissector_table;
+static dissector_table_t e2ap_proc_sout_dissector_table;
+static dissector_table_t e2ap_proc_uout_dissector_table;
+static dissector_table_t e2ap_n2_ie_type_dissector_table;
+
+static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
+
+/* Currently not used
+static int dissect_ProtocolIEFieldPairFirstValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
+static int dissect_ProtocolIEFieldPairSecondValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
+*/
+
+
+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 *);
+
+
+#include "packet-e2ap-fn.c"
+
+static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
+{
+ e2ap_ctx_t e2ap_ctx;
+ struct e2ap_private_data *e2ap_data = e2ap_get_private_data(pinfo);
+
+ e2ap_ctx.message_type = e2ap_data->message_type;
+ e2ap_ctx.ProcedureCode = e2ap_data->procedure_code;
+ e2ap_ctx.ProtocolIE_ID = e2ap_data->protocol_ie_id;
+ e2ap_ctx.ProtocolExtensionID = e2ap_data->protocol_extension_id;
+
+ return (dissector_try_uint_new(e2ap_ies_dissector_table, e2ap_data->protocol_ie_id, tvb, pinfo, tree, FALSE, &e2ap_ctx)) ? tvb_captured_length(tvb) : 0;
+}
+
+
+
+/* Currently not used
+static int dissect_ProtocolIEFieldPairFirstValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ struct e2ap_private_data *e2ap_data = e2ap_get_private_data(pinfo);
+
+ return (dissector_try_uint(e2ap_ies_p1_dissector_table, e2ap_data->protocol_ie_id, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
+}
+
+static int dissect_ProtocolIEFieldPairSecondValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ struct e2ap_private_data *e2ap_data = e2ap_get_private_data(pinfo);
+
+ return (dissector_try_uint(e2ap_ies_p2_dissector_table, e2ap_data->protocol_ie_id, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
+}
+*/
+
+
+static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
+{
+ struct e2ap_private_data *e2ap_data = e2ap_get_private_data(pinfo);
+
+ return (dissector_try_uint_new(e2ap_proc_imsg_dissector_table, e2ap_data->procedure_code, tvb, pinfo, tree, TRUE, data)) ? tvb_captured_length(tvb) : 0;
+}
+
+static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
+{
+ struct e2ap_private_data *e2ap_data = e2ap_get_private_data(pinfo);
+
+ return (dissector_try_uint_new(e2ap_proc_sout_dissector_table, e2ap_data->procedure_code, tvb, pinfo, tree, TRUE, data)) ? tvb_captured_length(tvb) : 0;
+}
+
+static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
+{
+ struct e2ap_private_data *e2ap_data = e2ap_get_private_data(pinfo);
+
+ return (dissector_try_uint_new(e2ap_proc_uout_dissector_table, e2ap_data->procedure_code, tvb, pinfo, tree, TRUE, data)) ? tvb_captured_length(tvb) : 0;
+}
+
+
+static int
+dissect_e2ap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
+{
+ proto_item *e2ap_item = NULL;
+ proto_tree *e2ap_tree = NULL;
+
+ /* make entry in the Protocol column on summary display */
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "E2AP");
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ /* create the e2ap protocol tree */
+ e2ap_item = proto_tree_add_item(tree, proto_e2ap, tvb, 0, -1, ENC_NA);
+ e2ap_tree = proto_item_add_subtree(e2ap_item, ett_e2ap);
+
+ return dissect_E2AP_PDU_PDU(tvb, pinfo, e2ap_tree, NULL);
+}
+
+
+static void e2ap_init_protocol(void)
+{
+ s_gnb_ran_functions_table.num_gnbs = 0;
+}
+
+
+/*--- proto_reg_handoff_e2ap ---------------------------------------*/
+void
+proto_reg_handoff_e2ap(void)
+{
+ dissector_add_uint_with_preference("sctp.port", SCTP_PORT_E2AP, e2ap_handle);
+ dissector_add_uint("sctp.ppi", E2_CP_PROTOCOL_ID, e2ap_handle);
+ dissector_add_uint("sctp.ppi", E2_UP_PROTOCOL_ID, e2ap_handle);
+ dissector_add_uint("sctp.ppi", E2_DU_PROTOCOL_ID, e2ap_handle);
+
+#include "packet-e2ap-dis-tab.c"
+
+ /********************************/
+ /* Known OIDs for RAN providers */
+
+ /* KPM */
+ oid_add_from_string("KPM v1", "1.3.6.1.4.1.53148.1.1.2.2");
+ oid_add_from_string("KPM v2", "1.3.6.1.4.1.53148.1.2.2.2");
+ oid_add_from_string("KPM v3", "1.2.6.1.4.1.53148.1.3.2.2");
+
+ /* RC */
+ // TODO: appears to be the same??? Asking for clarification from ORAN..
+ oid_add_from_string("RC v1", "1.3.6.1.4.1.53148.1.1.2.3");
+ //oid_add_from_string("RC v3", "1.3.6.1.4.1.53148.1.1.2.3");
+ //oid_add_from_string("RC v4", "1.3.6.1.4.1.53148.1.1.2.3");
+
+ /* NI */
+ oid_add_from_string("NI v1", "1.3.6.1.4.1.53148.1.1.2.1");
+
+ /********************************/
+ /* Register 'built-in' dissectors */
+
+ static ran_function_dissector_t kpm_v3 =
+ { "ORAN-E2SM-KPM", "1.2.6.1.4.1.53148.1.3.2.2", 3, 0,
+ { dissect_E2SM_KPM_RANfunction_Description_PDU,
+
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+
+ dissect_E2SM_KPM_ActionDefinition_PDU,
+ dissect_E2SM_KPM_IndicationMessage_PDU,
+ dissect_E2SM_KPM_IndicationHeader_PDU,
+ NULL, /* no dissect_E2SM_KPM_CallProcessID_PDU */
+ dissect_E2SM_KPM_EventTriggerDefinition_PDU
+ }
+ };
+
+ static ran_function_dissector_t rc_v1 =
+ { "ORAN-E2SM-RC", "1.3.6.1.4.1.53148.1.1.2.3", 1, 3,
+ { dissect_E2SM_RC_RANFunctionDefinition_PDU,
+
+ dissect_E2SM_RC_ControlHeader_PDU,
+ dissect_E2SM_RC_ControlMessage_PDU,
+ dissect_E2SM_RC_ControlOutcome_PDU,
+ /* new for v3 */
+ NULL, //dissect_E2SM_RC_QueryOutcome_PDU,
+ NULL, //dissect_E2SM_RC_QueryDefinition_PDU,
+ NULL, //dissect_E2SM_RC_QueryHeader_PDU,
+
+ dissect_E2SM_RC_ActionDefinition_PDU,
+ dissect_E2SM_RC_IndicationMessage_PDU,
+ dissect_E2SM_RC_IndicationHeader_PDU,
+ dissect_E2SM_RC_CallProcessID_PDU,
+ dissect_E2SM_RC_EventTrigger_PDU
+ }
+ };
+
+ static ran_function_dissector_t ni_v1 =
+ { "ORAN-E2SM-NI", "1.3.6.1.4.1.53148.1.1.2.1", 1, 0,
+ { dissect_E2SM_NI_RANfunction_Description_PDU,
+
+ dissect_E2SM_NI_ControlHeader_PDU,
+ dissect_E2SM_NI_ControlMessage_PDU,
+ dissect_E2SM_NI_ControlOutcome_PDU,
+ NULL,
+ NULL,
+ NULL,
+
+ dissect_E2SM_NI_ActionDefinition_PDU,
+ dissect_E2SM_NI_IndicationMessage_PDU,
+ dissect_E2SM_NI_IndicationHeader_PDU,
+ dissect_E2SM_NI_CallProcessID_PDU,
+ dissect_E2SM_NI_EventTriggerDefinition_PDU
+ }
+ };
+
+ /* Register available dissectors. TODO: break these out into separate
+ * ASN.1 protocols that register themselves, or leave one of each here? */
+ register_e2ap_ran_function_dissector(KPM_RANFUNCTIONS, &kpm_v3);
+ register_e2ap_ran_function_dissector(RC_RANFUNCTIONS, &rc_v1);
+ register_e2ap_ran_function_dissector(NI_RANFUNCTIONS, &ni_v1);
+}
+
+
+
+/*--- proto_register_e2ap -------------------------------------------*/
+void proto_register_e2ap(void) {
+
+ /* List of fields */
+
+ static hf_register_info hf[] = {
+#include "packet-e2ap-hfarr.c"
+ { &hf_e2ap_unmapped_ran_function_id,
+ { "Unmapped RANfunctionID", "e2ap.unmapped-ran-function-id",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_e2ap_ran_function_name_not_recognised,
+ { "RANfunction name not recognised", "e2ap.ran-function-name-not-recognised",
+ FT_NONE, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_e2ap_ran_function_setup_frame,
+ { "RANfunction setup frame", "e2ap.setup-frame",
+ FT_FRAMENUM, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_e2ap_dissector_version,
+ { "Version (dissector)", "e2ap.version.dissector",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_e2ap_frame_version,
+ { "Version (frame)", "e2ap.version.frame",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_e2ap_timestamp_string,
+ { "Timestamp string", "e2ap.timestamp-string",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+ };
+
+ /* List of subtrees */
+ static gint *ett[] = {
+ &ett_e2ap,
+#include "packet-e2ap-ettarr.c"
+ };
+
+ static ei_register_info ei[] = {
+ { &ei_e2ap_ran_function_names_no_match, { "e2ap.ran-function-names-no-match", PI_PROTOCOL, PI_WARN, "RAN Function name doesn't match known service models", EXPFILL }},
+ { &ei_e2ap_ran_function_id_not_mapped, { "e2ap.ran-function-id-not-known", PI_PROTOCOL, PI_WARN, "Service Model not known for RANFunctionID", EXPFILL }},
+ { &ei_e2ap_ran_function_dissector_mismatch, { "e2ap.ran-function-dissector-version-mismatch", PI_PROTOCOL, PI_WARN, "Available dissector does not match signalled", EXPFILL }},
+ { &ei_e2ap_ran_function_max_dissectors_registered, { "e2ap.ran-function-max-dissectors-registered", PI_PROTOCOL, PI_WARN, "Available dissector does not match signalled", EXPFILL }},
+
+ };
+
+ expert_module_t* expert_e2ap;
+
+ /* Register protocol */
+ proto_e2ap = proto_register_protocol(PNAME, PSNAME, PFNAME);
+ /* Register fields and subtrees */
+ proto_register_field_array(proto_e2ap, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+
+ /* Register dissector */
+ e2ap_handle = register_dissector("e2ap", dissect_e2ap, proto_e2ap);
+
+ expert_e2ap = expert_register_protocol(proto_e2ap);
+ expert_register_field_array(expert_e2ap, ei, array_length(ei));
+
+ /* Register dissector tables */
+ e2ap_ies_dissector_table = register_dissector_table("e2ap.ies", "E2AP-PROTOCOL-IES", proto_e2ap, FT_UINT32, BASE_DEC);
+
+ // e2ap_ies_p1_dissector_table = register_dissector_table("e2ap.ies.pair.first", "E2AP-PROTOCOL-IES-PAIR FirstValue", proto_e2ap, FT_UINT32, BASE_DEC);
+ // e2ap_ies_p2_dissector_table = register_dissector_table("e2ap.ies.pair.second", "E2AP-PROTOCOL-IES-PAIR SecondValue", proto_e2ap, FT_UINT32, BASE_DEC);
+ e2ap_extension_dissector_table = register_dissector_table("e2ap.extension", "E2AP-PROTOCOL-EXTENSION", proto_e2ap, FT_UINT32, BASE_DEC);
+ e2ap_proc_imsg_dissector_table = register_dissector_table("e2ap.proc.imsg", "E2AP-ELEMENTARY-PROCEDURE InitiatingMessage", proto_e2ap, FT_UINT32, BASE_DEC);
+ e2ap_proc_sout_dissector_table = register_dissector_table("e2ap.proc.sout", "E2AP-ELEMENTARY-PROCEDURE SuccessfulOutcome", proto_e2ap, FT_UINT32, BASE_DEC);
+ e2ap_proc_uout_dissector_table = register_dissector_table("e2ap.proc.uout", "E2AP-ELEMENTARY-PROCEDURE UnsuccessfulOutcome", proto_e2ap, FT_UINT32, BASE_DEC);
+ e2ap_n2_ie_type_dissector_table = register_dissector_table("e2ap.n2_ie_type", "E2AP N2 IE Type", proto_e2ap, FT_STRING, STRING_CASE_SENSITIVE);
+
+ register_init_routine(&e2ap_init_protocol);
+}
+
+/*
+ * 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:
+ */