diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:34:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:34:10 +0000 |
commit | e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc (patch) | |
tree | 68cb5ef9081156392f1dd62a00c6ccc1451b93df /epan/dissectors/asn1/e2ap | |
parent | Initial commit. (diff) | |
download | wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.tar.xz wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.zip |
Adding upstream version 4.2.2.upstream/4.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'epan/dissectors/asn1/e2ap')
-rw-r--r-- | epan/dissectors/asn1/e2ap/CMakeLists.txt | 47 | ||||
-rw-r--r-- | epan/dissectors/asn1/e2ap/E2AP-CommonDataTypes.asn | 27 | ||||
-rw-r--r-- | epan/dissectors/asn1/e2ap/E2AP-Constants.asn | 165 | ||||
-rw-r--r-- | epan/dissectors/asn1/e2ap/E2AP-Containers.asn | 130 | ||||
-rw-r--r-- | epan/dissectors/asn1/e2ap/E2AP-IEs.asn | 530 | ||||
-rw-r--r-- | epan/dissectors/asn1/e2ap/E2AP-PDU-Contents.asn | 1412 | ||||
-rw-r--r-- | epan/dissectors/asn1/e2ap/E2AP-PDU-Descriptions.asn | 304 | ||||
-rw-r--r-- | epan/dissectors/asn1/e2ap/e2ap.cnf | 917 | ||||
-rw-r--r-- | epan/dissectors/asn1/e2ap/e2sm-kpm-v3.00.asn | 448 | ||||
-rw-r--r-- | epan/dissectors/asn1/e2ap/e2sm-ni-v1.00.asn | 486 | ||||
-rw-r--r-- | epan/dissectors/asn1/e2ap/e2sm-rc-v1.03.asn | 1150 | ||||
-rw-r--r-- | epan/dissectors/asn1/e2ap/e2sm-rc-v3.00.asn | 1332 | ||||
-rw-r--r-- | epan/dissectors/asn1/e2ap/e2sm-v3.01.asn | 573 | ||||
-rw-r--r-- | epan/dissectors/asn1/e2ap/packet-e2ap-template.c | 833 |
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 = ¶meter_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 = ¶meter_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 = ¶meter_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 = ¶meter_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 = ¶meter_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 = ¶meter_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 = ¶meter_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 = ¶meter_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 = ¶meter_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 = ¶meter_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 = ¶meter_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 = ¶meter_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 = ¶meter_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 = ¶meter_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: + */ |