diff --git a/epan/dissectors/asn1/e2ap/CMakeLists.txt b/epan/dissectors/asn1/e2ap/CMakeLists.txt index b82a03b844..e43937c0b8 100644 --- a/epan/dissectors/asn1/e2ap/CMakeLists.txt +++ b/epan/dissectors/asn1/e2ap/CMakeLists.txt @@ -25,7 +25,9 @@ set( ASN_FILE_LIST E2AP-IEs.asn E2AP-PDU-Contents.asn E2AP-PDU-Descriptions.asn - e2sm-kpm-v1.asn + e2sm-v2.01.asn + e2sm-ric-v1.02.asn + e2sm-kpm-v2.02.asn ) set( EXTRA_DIST diff --git a/epan/dissectors/asn1/e2ap/E2AP-CommonDataTypes.asn b/epan/dissectors/asn1/e2ap/E2AP-CommonDataTypes.asn index 3901fab690..7f3e526256 100644 --- a/epan/dissectors/asn1/e2ap/E2AP-CommonDataTypes.asn +++ b/epan/dissectors/asn1/e2ap/E2AP-CommonDataTypes.asn @@ -2,12 +2,12 @@ -- ************************************************************** -- -- Common definitions --- Derived from 3GPP 38.413 v15.4.0 +-- Derived from 3GPP 38.413 (NGAP) -- -- ************************************************************** E2AP-CommonDataTypes { -iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version1 (1) e2ap(1) e2ap-CommonDataTypes (3) } +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 ::= diff --git a/epan/dissectors/asn1/e2ap/E2AP-Constants.asn b/epan/dissectors/asn1/e2ap/E2AP-Constants.asn index 4947634a83..dec0bcc100 100644 --- a/epan/dissectors/asn1/e2ap/E2AP-Constants.asn +++ b/epan/dissectors/asn1/e2ap/E2AP-Constants.asn @@ -6,15 +6,15 @@ -- ************************************************************** E2AP-Constants { -iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version1 (1) e2ap(1) e2ap-Constants (4) } +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 + ProcedureCode, + ProtocolIE-ID FROM E2AP-CommonDataTypes; -- ************************************************************** @@ -31,6 +31,10 @@ 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 -- ************************************************************** -- @@ -47,8 +51,12 @@ maxProtocolIEs INTEGER ::= 65535 -- -- ************************************************************** maxnoofErrors INTEGER ::= 256 +maxofE2nodeComponents INTEGER ::= 1024 maxofRANfunctionID INTEGER ::= 256 maxofRICactionID INTEGER ::= 16 +maxofTNLA INTEGER ::= 32 +maxofRICrequestID INTEGER ::= 4294967295 + -- ************************************************************** -- @@ -87,7 +95,33 @@ 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 END -- ASN1STOP diff --git a/epan/dissectors/asn1/e2ap/E2AP-Containers.asn b/epan/dissectors/asn1/e2ap/E2AP-Containers.asn index b07d354ff8..11bf4dacd2 100644 --- a/epan/dissectors/asn1/e2ap/E2AP-Containers.asn +++ b/epan/dissectors/asn1/e2ap/E2AP-Containers.asn @@ -3,11 +3,11 @@ -- -- Container definitions -- --- derived from 3GPP 38.413 v15.4.0 +-- derived from 3GPP 38.413 (NGAP) -- ************************************************************** E2AP-Containers { -iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version1 (1) e2ap(1) e2ap-Containers (5) } +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 ::= @@ -21,14 +21,12 @@ BEGIN IMPORTS -Criticality, -Presence, -PrivateIE-ID, -ProtocolExtensionID, -ProtocolIE-ID + Criticality, + Presence, + ProtocolIE-ID FROM E2AP-CommonDataTypes -maxProtocolIEs + maxProtocolIEs FROM E2AP-Constants; -- ************************************************************** @@ -38,16 +36,16 @@ FROM E2AP-Constants; -- ************************************************************** E2AP-PROTOCOL-IES ::= CLASS { -&id ProtocolIE-ID UNIQUE, -&criticality Criticality, -&Value, -&presence Presence + &id ProtocolIE-ID UNIQUE, + &criticality Criticality, + &Value, + &presence Presence } WITH SYNTAX { -ID &id -CRITICALITY &criticality -TYPE &Value -PRESENCE &presence + ID &id + CRITICALITY &criticality + TYPE &Value + PRESENCE &presence } -- ************************************************************** @@ -57,20 +55,20 @@ PRESENCE &presence -- ************************************************************** E2AP-PROTOCOL-IES-PAIR ::= CLASS { -&id ProtocolIE-ID UNIQUE, -&firstCriticality Criticality, -&FirstValue, -&secondCriticality Criticality, -&SecondValue, -&presence Presence + &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 + ID &id + FIRST CRITICALITY &firstCriticality + FIRST TYPE &FirstValue + SECOND CRITICALITY &secondCriticality + SECOND TYPE &SecondValue + PRESENCE &presence } @@ -83,16 +81,16 @@ PRESENCE &presence -- ************************************************************** ProtocolIE-Container {E2AP-PROTOCOL-IES : IEsSetParam} ::= -SEQUENCE (SIZE (0..maxProtocolIEs)) OF -ProtocolIE-Field {{IEsSetParam}} + SEQUENCE (SIZE (0..maxProtocolIEs)) OF + ProtocolIE-Field {{IEsSetParam}} ProtocolIE-SingleContainer {E2AP-PROTOCOL-IES : IEsSetParam} ::= -ProtocolIE-Field {{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}) + id E2AP-PROTOCOL-IES.&id ({IEsSetParam}), + criticality E2AP-PROTOCOL-IES.&criticality ({IEsSetParam}{@id}), + value E2AP-PROTOCOL-IES.&Value ({IEsSetParam}{@id}) } -- ************************************************************** @@ -102,15 +100,15 @@ value E2AP-PROTOCOL-IES.&Value ({IEsSetParam}{@id}) -- ************************************************************** ProtocolIE-ContainerPair {E2AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= -SEQUENCE (SIZE (0..maxProtocolIEs)) OF -ProtocolIE-FieldPair {{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}) + 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}) } -- ************************************************************** @@ -120,12 +118,12 @@ secondValue E2AP-PROTOCOL-IES-PAIR.&SecondValue ({IEsSetParam}{@id}) -- ************************************************************** ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, E2AP-PROTOCOL-IES : IEsSetParam} ::= -SEQUENCE (SIZE (lowerBound..upperBound)) OF -ProtocolIE-SingleContainer {{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}} + SEQUENCE (SIZE (lowerBound..upperBound)) OF + ProtocolIE-ContainerPair {{IEsSetParam}} END diff --git a/epan/dissectors/asn1/e2ap/E2AP-IEs.asn b/epan/dissectors/asn1/e2ap/E2AP-IEs.asn index 8e046bfaee..511c7d61dd 100644 --- a/epan/dissectors/asn1/e2ap/E2AP-IEs.asn +++ b/epan/dissectors/asn1/e2ap/E2AP-IEs.asn @@ -6,221 +6,315 @@ -- ************************************************************** E2AP-IEs { -iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version1 (1) e2ap(1) e2ap-IEs (2)} +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 + Criticality, + Presence, + ProcedureCode, + ProtocolIE-ID, + TriggeringMessage FROM E2AP-CommonDataTypes -maxnoofErrors, -maxProtocolIEs + 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 CauseRIC, -ricService CauseRICservice, -transport CauseTransport, -protocol CauseProtocol, -misc CauseMisc, -... + 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, -... + control-processing-overload, + hardware-failure, + om-intervention, + unspecified, + ... } -CauseRIC ::= ENUMERATED { -ran-function-id-Invalid, -action-not-supported, -excessive-actions, -duplicate-action, -duplicate-event, -function-resource-limit, -request-id-unknown, -inconsistent-action-subsequent-action-sequence, -control-message-invalid, -call-process-id-invalid, -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, + ... } CauseRICservice ::= ENUMERATED{ -function-not-required, -excessive-functions, -ric-resource-limit, -... + ran-function-not-supported, + excessive-functions, + ric-resource-limit, + ... } CauseTransport ::= ENUMERATED { -unspecified, -transport-resource-unavailable, -... + unspecified, + transport-resource-unavailable, + ... } -- ************************************************************** --- copied from 3GPP 38.413 NGAP IEs v15.5.0 +-- 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, -... + 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, -... + iECriticality Criticality, + iE-ID ProtocolIE-ID, + typeOfError TypeOfError, + ... } -- D -- E --- ************************************************************** --- copied from 3GPP X2AP IEs v15.4.0 --- 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)) +-- 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, + ... } --- ************************************************************** --- copied from 3GPP 38.423 v15.5.0 XnAP IEs --- ************************************************************** -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)), -... + +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-CP-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 X2AP IEs v15.4.0 +-- 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 +-- ************************************************************** +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)), -... + 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, -... + 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-gNB-ID GlobalenGNB-ID, -... + 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, -... + global-eNB-ID GlobalENB-ID, + ... } GlobalE2node-gNB-ID ::= SEQUENCE{ -global-gNB-ID GlobalgNB-ID, -gNB-CU-UP-ID GNB-CU-UP-ID OPTIONAL, -gNB-DU-ID GNB-DU-ID OPTIONAL, -... + 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-ng-eNB-ID GlobalngeNB-ID, + global-eNB-ID GlobalENB-ID OPTIONAL, + ngENB-DU-ID NGENB-DU-ID OPTIONAL, + ... } -- ************************************************************** --- copied from 3GPP X2AP IEs v15.4.0 +-- copied from 3GPP 36.423 (X2AP) IEs -- note: ie-Extensions removed -- ************************************************************** GlobalENB-ID ::= SEQUENCE { -pLMN-Identity PLMN-Identity, -eNB-ID ENB-ID, -... + pLMN-Identity PLMN-Identity, + eNB-ID ENB-ID, + ... } -- ************************************************************** --- copied from 3GPP X2AP IEs v15.4.0 +-- 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, -... + pLMN-Identity PLMN-Identity, + gNB-ID ENGNB-ID, + ... } -- ************************************************************** --- copied from 3GPP 38.423 v15.5.0 XnAP IEs +-- copied from 3GPP 38.423 (XnAP) IEs -- ************************************************************** GlobalgNB-ID ::= SEQUENCE { -plmn-id PLMN-Identity, -gnb-id GNB-ID-Choice, -... + plmn-id PLMN-Identity, + gnb-id GNB-ID-Choice, + ... } -- ************************************************************** --- copied from 3GPP 38.423 v15.5.0 XnAP IEs +-- copied from 3GPP 38.423 (XnAP) IEs -- ************************************************************** GlobalngeNB-ID ::= SEQUENCE { -plmn-id PLMN-Identity, -enb-id ENB-ID-Choice, -... + 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)), -... + pLMN-Identity PLMN-Identity, + ric-ID BIT STRING (SIZE (20)), + ... } -- ************************************************************** --- copied from 3GPP 38.463 v15.5.0 E1AP IEs +-- copied from 3GPP 38.463 (E1AP) IEs -- ************************************************************** GNB-CU-UP-ID::= INTEGER (0..68719476735) GNB-DU-ID::= INTEGER (0..68719476735) -- ************************************************************** --- copied from 3GPP 38.423 v15.5.0 XnAP IEs +-- copied from 3GPP 38.423 (XnAP) IEs -- ************************************************************** GNB-ID-Choice ::= CHOICE { -gnb-ID BIT STRING (SIZE(22..32)), -... + gnb-ID BIT STRING (SIZE(22..32)), + ... } -- H -- I @@ -228,11 +322,24 @@ gnb-ID BIT STRING (SIZE(22..32)), -- 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 X2AP IEs v15.4.0 +-- copied from 3GPP 36.423 (X2AP) IEs -- ************************************************************** PLMN-Identity ::= OCTET STRING (SIZE(3)) @@ -245,6 +352,8 @@ RANfunctionDefinition ::= OCTET STRING RANfunctionID ::= INTEGER (0..4095) +RANfunctionOID ::= PrintableString(SIZE(1..1000,...)) + RANfunctionRevision ::= INTEGER (0..4095) -- ************************************************************** @@ -255,10 +364,10 @@ RICactionDefinition ::= OCTET STRING RICactionID ::= INTEGER (0..255) RICactionType ::= ENUMERATED{ -report, -insert, -policy, -... + report, + insert, + policy, + ... } -- ************************************************************** @@ -267,10 +376,9 @@ policy, RICcallProcessID ::= OCTET STRING RICcontrolAckRequest ::= ENUMERATED{ -noAck, -ack, -nAck, -... + noAck, + ack, + ... } -- ************************************************************** @@ -288,13 +396,6 @@ RICcontrolMessage ::= OCTET STRING -- ************************************************************** RICcontrolOutcome ::= OCTET STRING -RICcontrolStatus ::= ENUMERATED{ -success, -rejected, -failed, -... -} - -- ************************************************************** -- Following IE defined in E2SM -- ************************************************************** @@ -313,64 +414,74 @@ RICindicationMessage ::= OCTET STRING RICindicationSN ::= INTEGER (0..65535) RICindicationType ::= ENUMERATED{ -report, -insert, -... + report, + insert, + ... } RICrequestID ::= SEQUENCE { -ricRequestorID INTEGER (0..65535), -ricInstanceID INTEGER (0..65535), -... + ricRequestorID INTEGER (0..65535), + ricInstanceID INTEGER (0..65535), + ... } RICsubsequentAction ::=SEQUENCE{ -ricSubsequentActionType RICsubsequentActionType, -ricTimeToWait RICtimeToWait, -... + ricSubsequentActionType RICsubsequentActionType, + ricTimeToWait RICtimeToWait, + ... } RICsubsequentActionType ::= ENUMERATED{ -continue, -wait, -... + continue, + wait, + ... } RICtimeToWait ::= ENUMERATED{ -zero, -w1ms, -w2ms, -w5ms, -w10ms, -w20ms, -w30ms, -w40ms, -w50ms, -w100ms, -w200ms, -w500ms, -w1s, -w2s, -w5s, -w10s, -w20s, -w60s, -... + 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 v15.5.0 +-- 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 v15.5.0 +-- copied from 3GPP 38.413 (NGAP) IEs -- ************************************************************** TypeOfError ::= ENUMERATED { -not-understood, -missing, -... + not-understood, + missing, + ... } -- U diff --git a/epan/dissectors/asn1/e2ap/E2AP-PDU-Contents.asn b/epan/dissectors/asn1/e2ap/E2AP-PDU-Contents.asn index 4323ac054a..0b878a81f3 100644 --- a/epan/dissectors/asn1/e2ap/E2AP-PDU-Contents.asn +++ b/epan/dissectors/asn1/e2ap/E2AP-PDU-Contents.asn @@ -2,12 +2,12 @@ -- ************************************************************** -- -- PDU definitions for E2AP --- Derived from 3GPP 38.413 v15.4.0 NGAP +-- 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) version1 (1) e2ap(1) e2ap-PDU-Contents (1) } +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 ::= @@ -20,77 +20,114 @@ BEGIN -- ************************************************************** IMPORTS -Cause, -CriticalityDiagnostics, -GlobalE2node-ID, -GlobalRIC-ID, -RANfunctionDefinition, -RANfunctionID, -RANfunctionRevision, -RICactionDefinition, -RICactionID, -RICactionType, -RICcallProcessID, -RICcontrolAckRequest, -RICcontrolHeader, -RICcontrolMessage, -RICcontrolOutcome, -RICcontrolStatus, -RICeventTriggerDefinition, -RICindicationHeader, -RICindicationMessage, -RICindicationSN, -RICindicationType, -RICrequestID, -RICsubsequentAction, -TimeToWait + Cause, + CriticalityDiagnostics, + E2nodeComponentConfiguration, + E2nodeComponentConfigurationAck, + E2nodeComponentID, + E2nodeComponentInterfaceType, + GlobalE2node-ID, + GlobalRIC-ID, + RANfunctionDefinition, + RANfunctionID, + RANfunctionOID, + RANfunctionRevision, + RICactionDefinition, + RICactionID, + RICactionType, + RICcallProcessID, + RICcontrolAckRequest, + RICcontrolHeader, + RICcontrolMessage, + RICcontrolOutcome, + RICeventTriggerDefinition, + RICindicationHeader, + RICindicationMessage, + RICindicationSN, + RICindicationType, + RICrequestID, + RICsubsequentAction, + TimeToWait, + TNLinformation, + TNLusage, + TransactionID FROM E2AP-IEs -ProtocolIE-Container{}, -ProtocolIE-ContainerList{}, -ProtocolIE-SingleContainer{}, -E2AP-PROTOCOL-IES, -E2AP-PROTOCOL-IES-PAIR + ProtocolIE-Container{}, + ProtocolIE-ContainerList{}, + ProtocolIE-SingleContainer{}, + E2AP-PROTOCOL-IES, + E2AP-PROTOCOL-IES-PAIR FROM E2AP-Containers -id-Cause, -id-CriticalityDiagnostics, -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-RICcallProcessID, -id-RICcontrolAckRequest, -id-RICcontrolHeader, -id-RICcontrolMessage, -id-RICcontrolOutcome, -id-RICcontrolStatus, -id-RICindicationHeader, -id-RICindicationMessage, -id-RICindicationSN, -id-RICindicationType, -id-RICrequestID, -id-RICserviceQuery, -id-RICsubscriptionDetails, -id-TimeToWait, + 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-RICcallProcessID, + id-RICcontrolAckRequest, + id-RICcontrolHeader, + id-RICcontrolMessage, + id-RICcontrolOutcome, + id-RICindicationHeader, + id-RICindicationMessage, + id-RICindicationSN, + id-RICindicationType, + id-RICrequestID, + id-RICserviceQuery, + id-RICsubscriptionDetails, + id-RICsubscriptionToBeRemoved, + id-RICsubscription-withCause-Item, + id-TimeToWait, + id-TNLinformation, + id-TransactionID, -maxofRANfunctionID, -maxofRICactionID + maxofE2nodeComponents, + maxofRANfunctionID, + maxofRICactionID, + maxofRICrequestID, + maxofTNLA FROM E2AP-Constants; + -- ************************************************************** -- -- MESSAGES FOR NEAR-RT RIC FUNCTIONAL PROCEDURES @@ -108,37 +145,37 @@ FROM E2AP-Constants; -- -- ************************************************************** RICsubscriptionRequest ::= SEQUENCE { -protocolIEs ProtocolIE-Container {{RICsubscriptionRequest-IEs}}, -... + 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-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}, + ... } RICsubscriptionDetails ::= SEQUENCE { -ricEventTriggerDefinition RICeventTriggerDefinition, -ricAction-ToBeSetup-List RICactions-ToBeSetup-List, -... + 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 }, -... + { 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, -... + ricActionID RICactionID, + ricActionType RICactionType, + ricActionDefinition RICactionDefinition OPTIONAL, + ricSubsequentAction RICsubsequentAction OPTIONAL, + ... } -- ************************************************************** @@ -147,16 +184,16 @@ ricSubsequentAction RICsubsequentAction OPTIONAL, -- -- ************************************************************** RICsubscriptionResponse ::= SEQUENCE { -protocolIEs ProtocolIE-Container{{RICsubscriptionResponse-IEs}}, -... + 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 }, -... + { 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 }, + ... } @@ -164,26 +201,26 @@ RICsubscriptionResponse-IEs E2AP-PROTOCOL-IES ::= { 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 }, -... + { ID id-RICaction-Admitted-Item CRITICALITY ignore TYPE RICaction-Admitted-Item PRESENCE mandatory }, + ... } RICaction-Admitted-Item ::= SEQUENCE { -ricActionID RICactionID, -... + 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 }, -... + { ID id-RICaction-NotAdmitted-Item CRITICALITY ignore TYPE RICaction-NotAdmitted-Item PRESENCE mandatory }, + ... } RICaction-NotAdmitted-Item ::= SEQUENCE { -ricActionID RICactionID, -cause Cause, -... + ricActionID RICactionID, + cause Cause, + ... } -- ************************************************************** @@ -192,16 +229,16 @@ cause Cause, -- -- ************************************************************** RICsubscriptionFailure ::= SEQUENCE { -protocolIEs ProtocolIE-Container {{RICsubscriptionFailure-IEs}}, -... + 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-RICactions-NotAdmitted CRITICALITY reject TYPE RICaction-NotAdmitted-List PRESENCE mandatory }| -{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, -... + { 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 }, + ... } -- ************************************************************** @@ -215,14 +252,14 @@ RICsubscriptionFailure-IEs E2AP-PROTOCOL-IES ::= { -- -- ************************************************************** RICsubscriptionDeleteRequest ::= SEQUENCE { -protocolIEs ProtocolIE-Container {{RICsubscriptionDeleteRequest-IEs}}, -... + 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 }, -... + { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }| + { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }, + ... } -- ************************************************************** @@ -231,14 +268,14 @@ RICsubscriptionDeleteRequest-IEs E2AP-PROTOCOL-IES ::= { -- -- ************************************************************** RICsubscriptionDeleteResponse ::= SEQUENCE { -protocolIEs ProtocolIE-Container {{RICsubscriptionDeleteResponse-IEs}}, -... + 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 }, -... + { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }| + { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }, + ... } -- ************************************************************** -- @@ -246,16 +283,51 @@ RICsubscriptionDeleteResponse-IEs E2AP-PROTOCOL-IES ::= { -- -- ************************************************************** RICsubscriptionDeleteFailure ::= SEQUENCE { -protocolIEs ProtocolIE-Container {{RICsubscriptionDeleteFailure-IEs}}, -... + 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 }, -... + { 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, + ... } -- ************************************************************** @@ -269,20 +341,20 @@ RICsubscriptionDeleteFailure-IEs E2AP-PROTOCOL-IES ::= { -- -- ************************************************************** RICindication ::= SEQUENCE { -protocolIEs ProtocolIE-Container {{RICindication-IEs}}, -... + 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 }, -... + { 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 }, + ... } -- ************************************************************** @@ -296,18 +368,18 @@ RICindication-IEs E2AP-PROTOCOL-IES ::= { -- -- ************************************************************** RICcontrolRequest ::= SEQUENCE { -protocolIEs ProtocolIE-Container {{RICcontrolRequest-IEs}}, -... + 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 }, -... + { 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 }, + ... } -- ************************************************************** -- @@ -315,17 +387,16 @@ RICcontrolRequest-IEs E2AP-PROTOCOL-IES ::= { -- -- ************************************************************** RICcontrolAcknowledge ::= SEQUENCE { -protocolIEs ProtocolIE-Container {{RICcontrolAcknowledge-IEs}}, -... + 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-RICcontrolStatus CRITICALITY reject TYPE RICcontrolStatus PRESENCE mandatory } | -{ ID id-RICcontrolOutcome CRITICALITY reject TYPE RICcontrolOutcome PRESENCE optional }, -... + { 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 }, + ... } -- ************************************************************** -- @@ -333,17 +404,17 @@ RICcontrolAcknowledge-IEs E2AP-PROTOCOL-IES ::= { -- -- ************************************************************** RICcontrolFailure ::= SEQUENCE { -protocolIEs ProtocolIE-Container {{RICcontrolFailure-IEs}}, -... + 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-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 }, + ... } -- ************************************************************** @@ -363,16 +434,17 @@ RICcontrolFailure-IEs E2AP-PROTOCOL-IES ::= { -- -- ************************************************************** ErrorIndication ::= SEQUENCE { -protocolIEs ProtocolIE-Container {{ErrorIndication-IEs}}, -... + protocolIEs ProtocolIE-Container {{ErrorIndication-IEs}}, + ... } ErrorIndication-IEs E2AP-PROTOCOL-IES ::= { -{ 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 }, -... + { 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 }, + ... } -- ************************************************************** @@ -387,14 +459,16 @@ ErrorIndication-IEs E2AP-PROTOCOL-IES ::= { -- ************************************************************** E2setupRequest ::= SEQUENCE { -protocolIEs ProtocolIE-Container { {E2setupRequestIEs} }, -... + protocolIEs ProtocolIE-Container { {E2setupRequestIEs} }, + ... } E2setupRequestIEs E2AP-PROTOCOL-IES ::= { -{ ID id-GlobalE2node-ID CRITICALITY reject TYPE GlobalE2node-ID PRESENCE mandatory }| -{ ID id-RANfunctionsAdded CRITICALITY reject TYPE RANfunctions-List PRESENCE optional }, -... + { 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 }, + ... } -- ************************************************************** @@ -404,15 +478,17 @@ E2setupRequestIEs E2AP-PROTOCOL-IES ::= { -- ************************************************************** E2setupResponse ::= SEQUENCE { -protocolIEs ProtocolIE-Container { {E2setupResponseIEs} }, -... + protocolIEs ProtocolIE-Container { {E2setupResponseIEs} }, + ... } E2setupResponseIEs E2AP-PROTOCOL-IES ::= { -{ 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-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 }, + ... } -- ************************************************************** @@ -422,15 +498,272 @@ E2setupResponseIEs E2AP-PROTOCOL-IES ::= { -- ************************************************************** E2setupFailure ::= SEQUENCE { -protocolIEs ProtocolIE-Container { {E2setupFailureIEs} }, -... + protocolIEs ProtocolIE-Container { {E2setupFailureIEs} }, + ... } E2setupFailureIEs E2AP-PROTOCOL-IES ::= { -{ ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| -{ ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional }| -{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, -... + { 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 }, + ... } -- ************************************************************** @@ -446,13 +779,14 @@ E2setupFailureIEs E2AP-PROTOCOL-IES ::= { -- ************************************************************** ResetRequest ::= SEQUENCE { -protocolIEs ProtocolIE-Container { {ResetRequestIEs} }, -... + protocolIEs ProtocolIE-Container { {ResetRequestIEs} }, + ... } ResetRequestIEs E2AP-PROTOCOL-IES ::= { -{ ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }, -... + { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }, + ... } -- ************************************************************** @@ -462,13 +796,14 @@ ResetRequestIEs E2AP-PROTOCOL-IES ::= { -- ************************************************************** ResetResponse ::= SEQUENCE { -protocolIEs ProtocolIE-Container { {ResetResponseIEs} }, -... + protocolIEs ProtocolIE-Container { {ResetResponseIEs} }, + ... } ResetResponseIEs E2AP-PROTOCOL-IES ::= { -{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, -... + { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... } -- ************************************************************** @@ -482,45 +817,45 @@ ResetResponseIEs E2AP-PROTOCOL-IES ::= { -- -- ************************************************************** RICserviceUpdate ::= SEQUENCE { -protocolIEs ProtocolIE-Container {{RICserviceUpdate-IEs}}, -... + protocolIEs ProtocolIE-Container {{RICserviceUpdate-IEs}}, + ... } RICserviceUpdate-IEs E2AP-PROTOCOL-IES ::= { -{ 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 }, -... + { 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(0..maxofRANfunctionID)) OF ProtocolIE-SingleContainer { {RANfunction-ItemIEs} } --- TODO (dodgy). also note that NGAP doesn't do this... ---RANfunctions-List ::= SEQUENCE (SIZE(0..maxofRANfunctionID)) OF RANfunction-ItemIEs +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 }, -... + { ID id-RANfunction-Item CRITICALITY ignore TYPE RANfunction-Item PRESENCE mandatory }, + ... } RANfunction-Item ::= SEQUENCE { -ranFunctionID RANfunctionID, -ranFunctionDefinition RANfunctionDefinition, -ranFunctionRevision RANfunctionRevision, -... + ranFunctionID RANfunctionID, + ranFunctionDefinition RANfunctionDefinition, + ranFunctionRevision RANfunctionRevision, + ranFunctionOID RANfunctionOID, + ... } -RANfunctionsID-List ::= SEQUENCE (SIZE(0..maxofRANfunctionID)) OF ProtocolIE-SingleContainer{{RANfunctionID-ItemIEs}} +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 }, -... + { ID id-RANfunctionID-Item CRITICALITY ignore TYPE RANfunctionID-Item PRESENCE mandatory }, + ... } RANfunctionID-Item ::= SEQUENCE { -ranFunctionID RANfunctionID, -ranFunctionRevision RANfunctionRevision, -... + ranFunctionID RANfunctionID, + ranFunctionRevision RANfunctionRevision, + ... } -- ************************************************************** @@ -529,28 +864,29 @@ ranFunctionRevision RANfunctionRevision, -- -- ************************************************************** RICserviceUpdateAcknowledge ::= SEQUENCE { -protocolIEs ProtocolIE-Container {{RICserviceUpdateAcknowledge-IEs}}, -... + protocolIEs ProtocolIE-Container {{RICserviceUpdateAcknowledge-IEs}}, + ... } RICserviceUpdateAcknowledge-IEs E2AP-PROTOCOL-IES ::= { -{ ID id-RANfunctionsAccepted CRITICALITY reject TYPE RANfunctionsID-List PRESENCE optional }| -{ ID id-RANfunctionsRejected CRITICALITY reject TYPE RANfunctionsIDcause-List PRESENCE optional }, -... + { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }| + { ID id-RANfunctionsAccepted CRITICALITY reject TYPE RANfunctionsID-List PRESENCE mandatory }| + { ID id-RANfunctionsRejected CRITICALITY reject TYPE RANfunctionsIDcause-List PRESENCE optional }, + ... } -RANfunctionsIDcause-List ::= SEQUENCE (SIZE(0..maxofRANfunctionID)) OF ProtocolIE-SingleContainer { {RANfunctionIDcause-ItemIEs} } +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 }, -... + { ID id-RANfunctionIEcause-Item CRITICALITY ignore TYPE RANfunctionIDcause-Item PRESENCE mandatory }, + ... } RANfunctionIDcause-Item ::= SEQUENCE { -ranFunctionID RANfunctionID, -cause Cause, -... + ranFunctionID RANfunctionID, + cause Cause, + ... } @@ -560,15 +896,16 @@ cause Cause, -- -- ************************************************************** RICserviceUpdateFailure ::= SEQUENCE { -protocolIEs ProtocolIE-Container {{RICserviceUpdateFailure-IEs}}, -... + protocolIEs ProtocolIE-Container {{RICserviceUpdateFailure-IEs}}, + ... } RICserviceUpdateFailure-IEs E2AP-PROTOCOL-IES ::= { -{ ID id-RANfunctionsRejected CRITICALITY ignore TYPE RANfunctionsIDcause-List PRESENCE optional }| -{ ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional }| -{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, -... + { 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 }, + ... } -- ************************************************************** @@ -582,13 +919,70 @@ RICserviceUpdateFailure-IEs E2AP-PROTOCOL-IES ::= { -- -- ************************************************************** RICserviceQuery ::= SEQUENCE { -protocolIEs ProtocolIE-Container {{RICserviceQuery-IEs}}, -... + protocolIEs ProtocolIE-Container {{RICserviceQuery-IEs}}, + ... } RICserviceQuery-IEs E2AP-PROTOCOL-IES ::= { -{ ID id-RANfunctionsAccepted CRITICALITY reject TYPE RANfunctionsID-List PRESENCE optional }, -... + { 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 diff --git a/epan/dissectors/asn1/e2ap/E2AP-PDU-Descriptions.asn b/epan/dissectors/asn1/e2ap/E2AP-PDU-Descriptions.asn index a545df82f7..c89b3a6cfc 100644 --- a/epan/dissectors/asn1/e2ap/E2AP-PDU-Descriptions.asn +++ b/epan/dissectors/asn1/e2ap/E2AP-PDU-Descriptions.asn @@ -6,7 +6,7 @@ -- ************************************************************** E2AP-PDU-Descriptions { -iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version1 (1) e2ap(1) e2ap-PDU-Descriptions (0) } +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 ::= @@ -19,43 +19,57 @@ BEGIN -- ************************************************************** IMPORTS -Criticality, -ProcedureCode + Criticality, + ProcedureCode FROM E2AP-CommonDataTypes -E2setupFailure, -E2setupRequest, -E2setupResponse, -ErrorIndication, -ResetRequest, -ResetResponse, -RICcontrolAcknowledge, -RICcontrolFailure, -RICcontrolRequest, -RICindication, -RICserviceQuery, -RICserviceUpdate, -RICserviceUpdateAcknowledge, -RICserviceUpdateFailure, -RICsubscriptionFailure, -RICsubscriptionRequest, -RICsubscriptionResponse, -RICsubscriptionDeleteFailure, -RICsubscriptionDeleteRequest, -RICsubscriptionDeleteResponse + E2connectionUpdate, + E2connectionUpdateAcknowledge, + E2connectionUpdateFailure, + E2nodeConfigurationUpdate, + E2nodeConfigurationUpdateAcknowledge, + E2nodeConfigurationUpdateFailure, + E2setupFailure, + E2setupRequest, + E2setupResponse, + ErrorIndication, + ResetRequest, + ResetResponse, + RICcontrolAcknowledge, + RICcontrolFailure, + RICcontrolRequest, + RICindication, + RICserviceQuery, + RICserviceUpdate, + RICserviceUpdateAcknowledge, + RICserviceUpdateFailure, + RICsubscriptionFailure, + RICsubscriptionRequest, + RICsubscriptionResponse, + RICsubscriptionDeleteFailure, + RICsubscriptionDeleteRequest, + RICsubscriptionDeleteResponse, + RICsubscriptionDeleteRequired, + E2RemovalFailure, + E2RemovalRequest, + E2RemovalResponse FROM E2AP-PDU-Contents -id-E2setup, -id-ErrorIndication, -id-Reset, -id-RICcontrol, -id-RICindication, -id-RICserviceQuery, -id-RICserviceUpdate, -id-RICsubscription, -id-RICsubscriptionDelete + id-E2connectionUpdate, + id-E2nodeConfigurationUpdate, + id-E2setup, + id-ErrorIndication, + id-Reset, + id-RICcontrol, + id-RICindication, + id-RICserviceQuery, + id-RICserviceUpdate, + id-RICsubscription, + id-RICsubscriptionDelete, + id-RICsubscriptionDeleteRequired, + id-E2removal FROM E2AP-Constants; -- ************************************************************** @@ -65,19 +79,19 @@ FROM E2AP-Constants; -- ************************************************************** E2AP-ELEMENTARY-PROCEDURE ::= CLASS { -&InitiatingMessage , -&SuccessfulOutcome OPTIONAL , -&UnsuccessfulOutcome OPTIONAL , -&procedureCode ProcedureCode UNIQUE , -&criticality Criticality DEFAULT ignore + &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] + INITIATING MESSAGE &InitiatingMessage + [SUCCESSFUL OUTCOME &SuccessfulOutcome] + [UNSUCCESSFUL OUTCOME &UnsuccessfulOutcome] + PROCEDURE CODE &procedureCode + [CRITICALITY &criticality] } -- ************************************************************** @@ -87,28 +101,28 @@ PROCEDURE CODE &procedureCode -- ************************************************************** E2AP-PDU ::= CHOICE { -initiatingMessage InitiatingMessage, -successfulOutcome SuccessfulOutcome, -unsuccessfulOutcome UnsuccessfulOutcome, -... + 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}) + 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}) + 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}) + 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}) } -- ************************************************************** @@ -118,26 +132,30 @@ value E2AP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({E2AP-ELEMENTARY-PROCEDU -- ************************************************************** E2AP-ELEMENTARY-PROCEDURES E2AP-ELEMENTARY-PROCEDURE ::= { -E2AP-ELEMENTARY-PROCEDURES-CLASS-1 | -E2AP-ELEMENTARY-PROCEDURES-CLASS-2, -... + E2AP-ELEMENTARY-PROCEDURES-CLASS-1 | + E2AP-ELEMENTARY-PROCEDURES-CLASS-2, + ... } E2AP-ELEMENTARY-PROCEDURES-CLASS-1 E2AP-ELEMENTARY-PROCEDURE ::= { -ricSubscription | -ricSubscriptionDelete | -ricServiceUpdate | -ricControl | -e2setup | -reset, -... + ricSubscription | + ricSubscriptionDelete | + ricServiceUpdate | + ricControl | + e2setup | + e2nodeConfigurationUpdate | + e2connectionUpdate | + reset | + e2removal, + ... } E2AP-ELEMENTARY-PROCEDURES-CLASS-2 E2AP-ELEMENTARY-PROCEDURE ::= { -ricIndication | -ricServiceQuery | -errorIndication, -... + ricIndication | + ricServiceQuery | + errorIndication | + ricSubscriptionDeleteRequired, + ... } -- ************************************************************** @@ -146,71 +164,102 @@ errorIndication, -- -- ************************************************************** +-- 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 + 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 + 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 + 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 + 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 + INITIATING MESSAGE RICindication + PROCEDURE CODE id-RICindication + CRITICALITY ignore } ricServiceQuery E2AP-ELEMENTARY-PROCEDURE ::= { -INITIATING MESSAGE RICserviceQuery -PROCEDURE CODE id-RICserviceQuery -CRITICALITY ignore + 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 + 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 + 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 + 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 +} END -- ASN1STOP diff --git a/epan/dissectors/asn1/e2ap/e2ap.cnf b/epan/dissectors/asn1/e2ap/e2ap.cnf index db95eff625..9dd61c037a 100644 --- a/epan/dissectors/asn1/e2ap/e2ap.cnf +++ b/epan/dissectors/asn1/e2ap/e2ap.cnf @@ -17,18 +17,26 @@ ProtocolIE-ID #.PDU E2AP-PDU -E2SM-KPM-ActionDefinition -E2SM-KPM-RANfunction-Description E2SM-KPM-EventTriggerDefinition +E2SM-KPM-ActionDefinition E2SM-KPM-IndicationHeader -RANcallProcess-ID-string -E2SM-KPM-IndicationMessage-Format1 +E2SM-KPM-IndicationMessage +E2SM-KPM-RANfunction-Description +#E2SM-KPM-CallProcessID (no such function) + +E2SM-RC-EventTrigger +E2SM-RC-ActionDefinition +E2SM-RC-RANFunctionDefinition +E2SM-RC-IndicationMessage +E2SM-RC-IndicationHeader +E2SM-RC-CallProcessID #.MAKE_ENUM ProcedureCode ProtocolIE-ID + #.NO_EMIT #.OMIT_ASSIGNMENT @@ -38,20 +46,46 @@ ProtocolIE-ContainerList ProtocolIE-ContainerPair ProtocolIE-ContainerPairList Presence - -# KPM items. Don't know which E2AP OCTET STRING is supposed to use this... -GNB-DU-Name - -E2SM-KPM-IndicationMessage +E2SM-RC-ControlOutcome +E2SM-RC-ControlOutcome-Format3 +E2SM-RC-ControlOutcome-Format2 +E2SM-RC-ControlOutcome-Format1 +E2SM-RC-ControlOutcome-Format3-Item +E2SM-RC-ControlOutcome-Format2-Style-Item +E2SM-RC-ControlOutcome-Format1-Item +E2SM-RC-ControlMessage +E2SM-RC-ControlHeader +FreqBandNrItem +S-NSSAI +IndexToRFSP +EN-GNB-ID +SST +SD +SubscriberProfileIDforRFP +QoSID +GroupID +CoreCPID +E2RemovalFailure +E2RemovalResponse +E2RemovalRequest +E2SM-RC-ControlOutcome-Format2-ControlOutcome-Item +E2SM-RC-ControlMessage-Format2 +E2SM-RC-ControlHeader-Format2 +E2SM-RC-ControlHeader-Format1 +E2SM-RC-ControlOutcome-Format2-RANP-Item +E2SM-RC-ControlMessage-Format2-Style-Item +E2SM-RC-ControlMessage-Format2-ControlAction-Item +E2SM-RC-ControlMessage-Format1 +E2SM-RC-ControlMessage-Format1-Item #.END #.TYPE_ATTR -E2SM-KPM-IndicationMessage DISPLAY=BASE_DEC STRINGS=VALS(e2ap_E2SM_KPM_IndicationMessage_vals) +#E2SM-KPM-IndicationMessage DISPLAY=BASE_DEC STRINGS=VALS(e2ap_E2SM_KPM_IndicationMessage_vals) #.TYPE_ATTR -E2SM-KPM-IndicationHeader DISPLAY=BASE_DEC STRINGS=VALS(e2ap_E2SM_KPM_IndicationHeader_vals) +#E2SM-KPM-IndicationHeader DISPLAY=BASE_DEC STRINGS=VALS(e2ap_E2SM_KPM_IndicationHeader_vals) #.TYPE_RENAME @@ -97,7 +131,6 @@ SuccessfulOutcome/value successfulOutcome_value # 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 @@ -215,38 +248,73 @@ SuccessfulOutcome/value successfulOutcome_value -# Calling in-depth KPM definitions of E2AP OCTET STRING fields. - -#.FN_BODY RICactionDefinition VAL_PTR = ¶meter_tvb - tvbuff_t *parameter_tvb; - %(DEFAULT_BODY)s - dissect_E2SM_KPM_ActionDefinition_PDU(parameter_tvb, actx->pinfo, tree, NULL); - -#.FN_BODY RICeventTriggerDefinition VAL_PTR = ¶meter_tvb - tvbuff_t *parameter_tvb; - %(DEFAULT_BODY)s - dissect_E2SM_KPM_EventTriggerDefinition_PDU(parameter_tvb, actx->pinfo, tree, NULL); - -#.FN_BODY RICindicationHeader VAL_PTR = ¶meter_tvb - tvbuff_t *parameter_tvb; - %(DEFAULT_BODY)s - dissect_E2SM_KPM_IndicationHeader_PDU(parameter_tvb, actx->pinfo, tree, NULL); - -#.FN_BODY RICindicationMessage VAL_PTR = ¶meter_tvb - tvbuff_t *parameter_tvb; - %(DEFAULT_BODY)s - /* It is believed that this is an error in the ASN in V1 of the spec... */ - dissect_E2SM_KPM_IndicationMessage_Format1_PDU(parameter_tvb, actx->pinfo, tree, NULL); +# ################################################################################ +# Calling in-depth definitions of E2AP OCTET STRING fields. #.FN_BODY RANfunctionDefinition VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb; %(DEFAULT_BODY)s - dissect_E2SM_KPM_RANfunction_Description_PDU(parameter_tvb, actx->pinfo, tree, NULL); + /* Looking for shortName string near beginning of tvb */ + gboolean found = FALSE; + for (int n=KPM_RANFUNCTIONS; npinfo, 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 RICeventTriggerDefinition VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb; + %(DEFAULT_BODY)s + ran_function_pointers_t* functions = lookup_ranfunction_pointers(actx->pinfo, tree, parameter_tvb); + if (functions && functions->ran_event_trigger_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_pointers_t* functions = lookup_ranfunction_pointers(actx->pinfo, tree, parameter_tvb); + if (functions && functions->ran_action_definition_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_pointers_t* functions = lookup_ranfunction_pointers(actx->pinfo, tree, parameter_tvb); + if (functions && functions->ran_indication_header_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_pointers_t* functions = lookup_ranfunction_pointers(actx->pinfo, tree, parameter_tvb); + if (functions && functions->ran_indication_message_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 - dissect_RANcallProcess_ID_string_PDU(parameter_tvb, actx->pinfo, tree, NULL); + ran_function_pointers_t* functions = lookup_ranfunction_pointers(actx->pinfo, tree, parameter_tvb); + if (functions && functions->ran_callprocessid_dissector) { + functions->ran_callprocessid_dissector(parameter_tvb, actx->pinfo, tree, NULL); + } +# ################################################################################ @@ -262,8 +330,9 @@ id-RICserviceQuery ProcedureCode id-RICserviceUpdate ProcedureCode id-RICsubscription ProcedureCode id-RICsubscriptionDelete ProcedureCode -#id-E2nodeConfigurationUpdate ProcedureCode -#id-E2connectionUpdate ProcedureCode +id-E2nodeConfigurationUpdate ProcedureCode +id-E2connectionUpdate ProcedureCode +id-RICsubscriptionDeleteRequired ProcedureCode @@ -278,7 +347,6 @@ 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 @@ -289,36 +357,48 @@ 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-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-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 + #.END @@ -328,7 +408,6 @@ id-RICcontrolOutcome ProtocolIE-ID 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 @@ -343,7 +422,7 @@ 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-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 @@ -351,7 +430,7 @@ 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 +#RICcontrolStatus N e2ap.ies id-RICcontrolStatus RICindicationHeader N e2ap.ies id-RICindicationHeader RICindicationMessage N e2ap.ies id-RICindicationMessage RICindicationSN N e2ap.ies id-RICindicationSN @@ -359,60 +438,50 @@ RICindicationType N e2ap.ies id-RICindicationType RICrequestID N e2ap.ies id-RICrequestID RICsubscriptionDetails N e2ap.ies id-RICsubscriptionDetails TimeToWait N e2ap.ies id-TimeToWait -#TNLinformation N e2ap.ies id-TNLinformation -#TransactionID N e2ap.ies id-TransactionID +#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 -# TODO: V2? -#Cause N e2ap.ies id-Cause -#CriticalityDiagnostics N e2ap.ies id-CriticalityDiagnostics -#E2nodeComponentConfigUpdate N e2ap.ies id-E2nodeComponentConfigUpdate -#E2nodeComponentConfigUpdateAck N e2ap.ies id-E2nodeComponentConfigUpdateAck -#E2nodeComponentID N e2ap.ies id-E2nodeComponentID -#E2nodeComponentType N e2ap.ies id-E2nodeComponentType -#GlobalE2node-ID N e2ap.ies id-GlobalE2node-ID -#GlobalRIC-ID N e2ap.ies id-GlobalRIC-ID -#RANfunctionDefinition N e2ap.ies id-RANfunctionDefinition -#RANfunctionID N e2ap.ies id-RANfunctionID -#RANfunctionOID N e2ap.ies id-RANfunctionOID -#RANfunctionRevision N e2ap.ies id-RANfunctionRevision -#RICactionDefinition N e2ap.ies id-RICactionDefinition -#RICactionID N e2ap.ies id-RICactionID -#RICactionType N e2ap.ies id-RICactionType -#RICcallProcessID N e2ap.ies id-RICcallProcessID -#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 -#RICeventTriggerDefinition N e2ap.ies id-RICeventTriggerDefinition -#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 -#RICsubsequentAction N e2ap.ies id-RICsubsequentAction -#TimeToWait N e2ap.ies id-TimeToWait -#TNLinformation N e2ap.ies id-TNLinformation -#TNLusage N e2ap.ies id-TNLusage -#TransactionID N e2ap.ies id-TransactionID - #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 +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 +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 @@ -443,6 +512,46 @@ RICsubscriptionDeleteFailure N e2ap.proc.uout id-RICsubscriptionDele RICsubscriptionDeleteRequest N e2ap.proc.imsg id-RICsubscriptionDelete RICsubscriptionDeleteResponse N e2ap.proc.sout id-RICsubscriptionDelete +RICsubscriptionDeleteRequired N e2ap.proc.sout id-RICsubscriptionDeleteRequired + + + +#.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 RANfunction-Name/ranFunction-ShortName + gint start_offset = offset; +%(DEFAULT_BODY)s + /* TODO: is there a nicer/reliable way to get PrintableString here (VAL_PTR won't get assigned..) */ + struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); + ran_functionid_table_t *table = get_ran_functionid_table(actx->pinfo); + store_ran_function_mapping(actx->pinfo, table, e2ap_data->ran_function_id, tvb_get_ptr(tvb, (start_offset+15)/8, (offset-start_offset)/8)); + + + +#.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 @@ -454,26 +563,28 @@ RICsubscriptionDeleteResponse N e2ap.proc.sout id-RICsubscriptionDele #.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"); @@ -481,10 +592,10 @@ RICsubscriptionDeleteResponse N e2ap.proc.sout id-RICsubscriptionDele #.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"); @@ -513,10 +624,8 @@ RICsubscriptionDeleteResponse N e2ap.proc.sout id-RICsubscriptionDele #.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"); # diff --git a/epan/dissectors/asn1/e2ap/e2sm-kpm-v1.asn b/epan/dissectors/asn1/e2ap/e2sm-kpm-v1.asn deleted file mode 100644 index 8e20c77f7f..0000000000 --- a/epan/dissectors/asn1/e2ap/e2sm-kpm-v1.asn +++ /dev/null @@ -1,426 +0,0 @@ --- ASN1START --- ************************************************************** --- E2SM-KPM --- Information Element Definitions --- --- ************************************************************** - - -E2SM-KPM-IEs { -iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version1 (1) e2sm(2) e2sm-KPMMON-IEs (2)} - -DEFINITIONS AUTOMATIC TAGS ::= - -BEGIN - --- ************************************************************** --- IEs --- ************************************************************** - --- ************************************************************** - -GlobalKPMnode-ID ::= CHOICE{ - gNB GlobalKPMnode-gNB-ID, - en-gNB GlobalKPMnode-en-gNB-ID, - ng-eNB GlobalKPMnode-ng-eNB-ID, - eNB GlobalKPMnode-eNB-ID, - ... -} - --- ************************************************************** - -GlobalKPMnode-gNB-ID ::= SEQUENCE{ - global-gNB-ID GlobalgNB-ID, - gNB-CU-UP-ID GNB-CU-UP-ID OPTIONAL, - gNB-DU-ID GNB-DU-ID OPTIONAL, - ... -} - ---GlobalgNB-ID ::= SEQUENCE { --- plmn-id PLMN-Identity, --- gnb-id GNB-ID-Choice, --- ... ---} - --- GNB-CU-UP-ID ::= INTEGER (0..68719476735) --- GNB-DU-ID ::= INTEGER (0..68719476735) - --- GNB-ID-Choice ::= CHOICE { --- gnb-ID BIT STRING (SIZE(22..32)), --- ... ---} - --- ************************************************************** - -GlobalKPMnode-en-gNB-ID ::= SEQUENCE{ - global-gNB-ID GlobalenGNB-ID, - ... -} - ---GlobalenGNB-ID ::= SEQUENCE { --- pLMN-Identity PLMN-Identity, --- gNB-ID ENGNB-ID, --- ... ---} - ---ENGNB-ID ::= CHOICE { --- gNB-ID BIT STRING (SIZE (22..32)), --- ... ---} - --- ************************************************************** - -GlobalKPMnode-ng-eNB-ID ::= SEQUENCE{ - global-ng-eNB-ID GlobalngeNB-ID, - ... -} - ---GlobalngeNB-ID ::= SEQUENCE { --- plmn-id PLMN-Identity, --- enb-id ENB-ID-Choice, --- ... ---} - ---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)), --- ... ---} - --- ************************************************************** - -GlobalKPMnode-eNB-ID ::= SEQUENCE{ - global-eNB-ID GlobalENB-ID, - ... -} - ---GlobalENB-ID ::= SEQUENCE { --- pLMN-Identity PLMN-Identity, --- eNB-ID ENB-ID, --- ... ---} - ---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)) ---} - - -NRCGI ::= SEQUENCE { - pLMN-Identity PLMN-Identity, - nRCellIdentity NRCellIdentity -} - ---PLMN-Identity ::= OCTET STRING (SIZE(3)) - -NRCellIdentity ::= BIT STRING (SIZE(36)) - -SNSSAI ::= SEQUENCE { - sST OCTET STRING (SIZE(1)), - sD OCTET STRING (SIZE(3)) OPTIONAL -} - --- ************************************************************** --- --- Lists --- --- ************************************************************** - -maxofMessageProtocolTests INTEGER ::= 15 -maxofRICstyles INTEGER ::= 63 -maxnoofQCI INTEGER ::= 256 -maxnoofQoSFlows INTEGER ::= 64 -maxnoofSliceItems INTEGER ::= 1024 -maxnoofContainerListItems INTEGER ::= 3 -maxCellingNBDU INTEGER ::= 512 -maxofContainers INTEGER ::= 8 -maxPLMN INTEGER ::= 12 -- Maximum number of PLMNs broadcast and reported by UE at establisghment - -RIC-Style-Type ::= INTEGER - -RIC-Style-Name ::= PrintableString(SIZE(1..150,...)) - -RIC-Format-Type ::= INTEGER - - --- ************************************************************** --- E2SM-KPM Service model IEs --- ************************************************************** - --- ************************************************************** --- Event Trigger Definition OCTET STRING contents --- ************************************************************** - --- E2SM-KPM-EventTriggerDefinition IE -E2SM-KPM-EventTriggerDefinition ::= CHOICE{ - eventDefinition-Format1 E2SM-KPM-EventTriggerDefinition-Format1, - ... -} - --- E2SM-KPM-EventTriggerDefinition IE is used for Event Trigger Definition Format 1 -E2SM-KPM-EventTriggerDefinition-Format1 ::= SEQUENCE{ - policyTest-List SEQUENCE (SIZE(1..maxofMessageProtocolTests)) OF Trigger-ConditionIE-Item OPTIONAL, - ... -} - --- ************************************************************** --- Action Definition OCTET STRING contents --- ************************************************************** - --- E2SM-KPM-ActionDefinition IE -E2SM-KPM-ActionDefinition ::= SEQUENCE{ - ric-Style-Type RIC-Style-Type, - ... -} - --- ************************************************************** --- Indication Header OCTET STRING contents --- ************************************************************** - --- E2SM-KPM-IndicationHeader IE -E2SM-KPM-IndicationHeader ::= CHOICE{ - indicationHeader-Format1 E2SM-KPM-IndicationHeader-Format1, - ... -} - --- E2SM-KPM-IndicationHeader Format 1 -E2SM-KPM-IndicationHeader-Format1 ::= SEQUENCE{ - id-GlobalKPMnode-ID GlobalKPMnode-ID OPTIONAL, - nRCGI NRCGI OPTIONAL, - pLMN-Identity PLMN-Identity OPTIONAL, - sliceID SNSSAI OPTIONAL, - fiveQI INTEGER (0..255) OPTIONAL, - qci INTEGER (0..255) OPTIONAL, - ... -} - --- ************************************************************** --- Indication Message OCTET STRING contents --- ************************************************************** - --- E2SM-KPM-IndicationMessage IE -E2SM-KPM-IndicationMessage ::= CHOICE{ - ric-Style-Type RIC-Style-Type, - indicationMessage-Format1 E2SM-KPM-IndicationMessage-Format1, - ... -} - --- E2SM-KPM-IndicationMessage-Format 1 IE -E2SM-KPM-IndicationMessage-Format1 ::= SEQUENCE{ - pm-Containers SEQUENCE (SIZE(1..maxCellingNBDU)) OF PM-Containers-List, - ... -} - -PM-Containers-List ::= SEQUENCE{ - performanceContainer PF-Container OPTIONAL, - theRANContainer RAN-Container OPTIONAL, - ... -} - --- *************************************************************** --- RAN Function Description OCTET STRING contents --- *************************************************************** - --- E2SM-KPM-RANfunction-Description -E2SM-KPM-RANfunction-Description ::= SEQUENCE{ - ranFunction-Name RANfunction-Name, - e2SM-KPM-RANfunction-Item SEQUENCE{ - ric-EventTriggerStyle-List SEQUENCE (SIZE(1..maxofRICstyles)) OF RIC-EventTriggerStyle-List OPTIONAL, - ric-ReportStyle-List SEQUENCE (SIZE(1..maxofRICstyles)) OF RIC-ReportStyle-List OPTIONAL, - ... - }, - ... -} - - --- *************************************************************** --- commmon IEs --- *************************************************************** - -NI-Type ::= ENUMERATED{ - x2-u, - xn-u, - f1-u, - ... -} - -RAN-Container ::= OCTET STRING - -Trigger-ConditionIE-Item ::= SEQUENCE{ - report-Period-IE RT-Period-IE, - ... -} - -RT-Period-IE ::= ENUMERATED{ ms10, ms20, ms32, ms40, ms60, ms64, ms70, ms80, ms128, ms160, ms256, ms320, ms512, ms640, ms1024, ms1280, ms2048, ms2560, ms5120, ms10240, ...} - -RANcallProcess-ID-string ::= PrintableString(SIZE(1..150,...)) - -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-EventTriggerStyle-List ::= SEQUENCE{ - ric-EventTriggerStyle-Type RIC-Style-Type, - ric-EventTriggerStyle-Name RIC-Style-Name, - ric-EventTriggerFormat-Type RIC-Format-Type, - ... -} - -RIC-ReportStyle-List ::= SEQUENCE{ - ric-ReportStyle-Type RIC-Style-Type, - ric-ReportStyle-Name RIC-Style-Name, - ric-IndicationHeaderFormat-Type RIC-Format-Type, - ric-IndicationMessageFormat-Type RIC-Format-Type, - ... -} - -PF-Container ::= CHOICE { - oDU ODU-PF-Container, - oCU-CP OCUCP-PF-Container, - oCU-UP OCUUP-PF-Container -} - -GNB-CU-CP-Name ::= PrintableString(SIZE(1..150,...)) - -GNB-DU-Name ::= PrintableString(SIZE(1..150,...)) - -GNB-CU-UP-Name ::= PrintableString(SIZE(1..150,...)) - - --- ************************************************************** --- O-DU Container IEs --- ************************************************************** - - -ODU-PF-Container ::= SEQUENCE{ - cellResourceReportList SEQUENCE (SIZE(1..maxCellingNBDU)) OF CellResourceReportListItem, - ... -} - -CellResourceReportListItem ::= SEQUENCE{ - nRCGI NRCGI, - dl-TotalofAvailablePRBs INTEGER (0..273) OPTIONAL, - ul-TotalofAvailablePRBs INTEGER (0..273) OPTIONAL, - servedPlmnPerCellList SEQUENCE (SIZE(1..maxPLMN)) OF ServedPlmnPerCellListItem, - ... -} - -ServedPlmnPerCellListItem ::= SEQUENCE{ - pLMN-Identity PLMN-Identity, - du-PM-5GC FGC-DU-PM-Container OPTIONAL, - du-PM-EPC EPC-DU-PM-Container OPTIONAL, - ... -} - -FGC-DU-PM-Container ::= SEQUENCE{ - slicePerPlmnPerCellList SEQUENCE (SIZE(1..maxnoofSliceItems)) OF SlicePerPlmnPerCellListItem, - ... -} - -SlicePerPlmnPerCellListItem ::= SEQUENCE{ - sliceID SNSSAI, - fQIPERSlicesPerPlmnPerCellList SEQUENCE (SIZE(1..maxnoofQoSFlows)) OF FQIPERSlicesPerPlmnPerCellListItem, - ... -} - -FQIPERSlicesPerPlmnPerCellListItem ::= SEQUENCE{ - fiveQI INTEGER (0..255), - dl-PRBUsage INTEGER (0..273) OPTIONAL, - ul-PRBUsage INTEGER (0..273) OPTIONAL, - ... -} - -EPC-DU-PM-Container ::= SEQUENCE{ - perQCIReportList SEQUENCE (SIZE(1..maxnoofQCI)) OF PerQCIReportListItem, - ... -} - -PerQCIReportListItem ::= SEQUENCE{ - qci INTEGER (0..255), - dl-PRBUsage INTEGER (0..100) OPTIONAL, - ul-PRBUsage INTEGER (0..100) OPTIONAL, - ... -} - --- ************************************************************** --- O-CUCP Container IEs --- ************************************************************** - - -OCUCP-PF-Container ::= SEQUENCE{ - gNB-CU-CP-Name GNB-CU-CP-Name OPTIONAL, - cu-CP-Resource-Status SEQUENCE { - numberOfActive-UEs INTEGER (1..65536, ...) OPTIONAL - } -} - --- ************************************************************** --- O-CU-UP Container IEs --- ************************************************************** - -OCUUP-PF-Container ::= SEQUENCE{ - gNB-CU-UP-Name GNB-CU-UP-Name OPTIONAL, - pf-ContainerList SEQUENCE (SIZE(1..maxnoofContainerListItems)) OF PF-ContainerListItem, - ... -} - -PF-ContainerListItem ::= SEQUENCE{ - interface-type NI-Type, - o-CU-UP-PM-Container CUUPMeasurement-Container, - ... -} - -CUUPMeasurement-Container ::= SEQUENCE{ - plmnList SEQUENCE (SIZE(1.. maxPLMN)) OF PlmnID-List, - ... -} - -PlmnID-List ::= SEQUENCE{ - pLMN-Identity PLMN-Identity, - cu-UP-PM-5GC FGC-CUUP-PM-Format OPTIONAL, - cu-UP-PM-EPC EPC-CUUP-PM-Format OPTIONAL, - ... -} - -FGC-CUUP-PM-Format ::= SEQUENCE{ - sliceToReportList SEQUENCE (SIZE(1..maxnoofSliceItems)) OF SliceToReportListItem, - ... -} - -SliceToReportListItem ::= SEQUENCE{ - sliceID SNSSAI, - fQIPERSlicesPerPlmnList SEQUENCE (SIZE(1..maxnoofQoSFlows)) OF FQIPERSlicesPerPlmnListItem, - ... -} - -FQIPERSlicesPerPlmnListItem ::= SEQUENCE{ - fiveQI INTEGER (0..255), - pDCPBytesDL INTEGER (0..10000000000,...) OPTIONAL, - pDCPBytesUL INTEGER (0..10000000000,...) OPTIONAL, - ... -} - -EPC-CUUP-PM-Format ::= SEQUENCE{ - perQCIReportList SEQUENCE (SIZE(1..maxnoofQCI)) OF PerQCIReportListItemFormat, - ... -} - -PerQCIReportListItemFormat ::= SEQUENCE{ - qci INTEGER (0..255), - pDCPBytesDL INTEGER (0..10000000000,...) OPTIONAL, - pDCPBytesUL INTEGER (0..10000000000,...) OPTIONAL, - ... -} - - -END - --- ASN1STOP diff --git a/epan/dissectors/asn1/e2ap/e2sm-kpm-v2.02.asn b/epan/dissectors/asn1/e2ap/e2sm-kpm-v2.02.asn new file mode 100644 index 0000000000..2f763c6c5c --- /dev/null +++ b/epan/dissectors/asn1/e2ap/e2sm-kpm-v2.02.asn @@ -0,0 +1,389 @@ +-- 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) version2(2) 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, + -- TODO: removed hyphen + -- SNSSAI, + UEID +FROM E2SM-COMMON-IEs; + +TimeStamp ::= OCTET STRING (SIZE(4)) + +GranularityPeriod ::= INTEGER (1.. 4294967295) + +MeasurementType ::= CHOICE { + measName MeasurementTypeName, + measID MeasurementTypeID, + ... +} + +-- TODO: (copied from e2sm-kpm-v1.asn) +SNSSAI ::= SEQUENCE { + sST OCTET STRING (SIZE(1)), + sD OCTET STRING (SIZE(3)) OPTIONAL +} + +MeasurementTypeName ::= PrintableString(SIZE(1.. 150, ...)) + +MeasurementTypeID ::= INTEGER (1.. 65536, ...) + +MeasurementLabel ::= SEQUENCE { + noLabel ENUMERATED {true, ...} OPTIONAL, + -- TODO: changed from PLMNIdentity and S-NSSAI + plmnID PLMN-Identity OPTIONAL, + sliceID SNSSAI 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, + ... +} + +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 + + +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, + ... +} + +MeasurementCondList ::= SEQUENCE (SIZE(1..maxnoofMeasurementInfo)) OF MeasurementCondItem + +MeasurementCondItem ::= SEQUENCE { + measType MeasurementType, + matchingCond MatchingCondList, + ... +} + +MeasurementCondUEidList ::= SEQUENCE (SIZE(1..maxnoofMeasurementInfo)) OF MeasurementCondUEidItem + +MeasurementCondUEidItem ::= SEQUENCE { + measType MeasurementType, + matchingCond MatchingCondList, + matchingUEidList MatchingUEidList OPTIONAL, + ... +} + +MatchingCondList ::= SEQUENCE (SIZE(1..maxnoofConditionInfo)) OF MatchingCondItem + +MatchingCondItem ::= CHOICE{ + measLabel MeasurementLabel, + testCondInfo TestCondInfo, + ... +} + +MatchingUEidList ::= SEQUENCE (SIZE(1..maxnoofUEID)) OF MatchingUEidItem + +MatchingUEidItem ::= SEQUENCE{ + ueID UEID, + ... +} + +MatchingUeCondPerSubList ::= SEQUENCE (SIZE(1..maxnoofConditionInfoPerSub)) OF MatchingUeCondPerSubItem + +MatchingUeCondPerSubItem ::= SEQUENCE{ + testCondInfo TestCondInfo, + ... +} + +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, + ... +} + +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-ric-v1.02.asn b/epan/dissectors/asn1/e2ap/e2sm-ric-v1.02.asn new file mode 100644 index 0000000000..62133dce36 --- /dev/null +++ b/epan/dissectors/asn1/e2ap/e2sm-ric-v1.02.asn @@ -0,0 +1,1151 @@ +-- 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, ...) +-- N.B. will not cope with highest value.. +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, ...}, + ... +} + +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-v2.01.asn b/epan/dissectors/asn1/e2ap/e2sm-v2.01.asn new file mode 100644 index 0000000000..8b44b91ce2 --- /dev/null +++ b/epan/dissectors/asn1/e2ap/e2sm-v2.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 38.463 (E1AP) +-- ************************************************************** + +-- copied from v16.5.0 +GNB-CU-CP-UE-E1AP-ID ::= INTEGER (0..4294967295) + +-- copied from v16.5.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 index 5286e76ba3..86ee15fd08 100644 --- a/epan/dissectors/asn1/e2ap/packet-e2ap-template.c +++ b/epan/dissectors/asn1/e2ap/packet-e2ap-template.c @@ -8,7 +8,7 @@ * * SPDX-License-Identifier: GPL-2.0-or-later * - * References: ORAN-WG3.E2AP-v01.00, ORAN-WG3.E2SM-KPM-v01.00 + * References: ORAN-WG3.E2AP-v02.01, ORAN-WG3.E2SM-KPM-v02.02, ORAN-WG3.E2SM-RC.01.02 */ #include "config.h" @@ -45,13 +45,37 @@ static dissector_handle_t e2ap_handle; 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; + + + /* 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; + #include "packet-e2ap-ett.c" -enum{ +/* Forward declarations */ +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_); + + +enum { INITIATING_MESSAGE, SUCCESSFUL_OUTCOME, UNSUCCESSFUL_OUTCOME @@ -72,37 +96,10 @@ struct e2ap_private_data { guint32 protocol_extension_id; guint32 message_type; guint32 ran_ue_e2ap_id; + + guint32 ran_function_id; }; -/* 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); -*/ - -/* Forward declarations */ -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_RANfunction_Description_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _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_IndicationHeader_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); -static int dissect_RANcallProcess_ID_string_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); -static int dissect_E2SM_KPM_IndicationMessage_Format1_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); - - -static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); -static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); -static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); - static struct e2ap_private_data* e2ap_get_private_data(packet_info *pinfo) { @@ -114,6 +111,208 @@ e2ap_get_private_data(packet_info *pinfo) return e2ap_data; } +/****************************************************************************************************************/ +/* We learn which set of RAN functions pointers corresponds to a given ranFunctionID when we see E2SetupRequest */ +typedef int (*pdu_dissector_t)(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data); + +/* Function pointers for a RANFunction */ +typedef struct { + pdu_dissector_t ran_function_definition_dissector; + pdu_dissector_t ran_action_definition_dissector; + pdu_dissector_t ran_indication_message_dissector; + pdu_dissector_t ran_indication_header_dissector; + pdu_dissector_t ran_callprocessid_dissector; + pdu_dissector_t ran_event_trigger_dissector; +} ran_function_pointers_t; + +typedef enum { + MIN_RANFUNCTIONS, + KPM_RANFUNCTIONS=0, + RIC_RANFUNCTIONS, + MAX_RANFUNCTIONS +} ran_function_t; + +typedef struct { + const char* name; + ran_function_pointers_t functions; +} ran_function_name_mapping_t; + +/* Static table mapping from string -> ran_function */ +static const ran_function_name_mapping_t g_ran_functioname_table[MAX_RANFUNCTIONS] = +{ + { "ORAN-E2SM-KPM", { dissect_E2SM_KPM_RANfunction_Description_PDU, + 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 + } + }, + { "ORAN-E2SM-RC", { dissect_E2SM_RC_RANFunctionDefinition_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 + } + } +}; + + + +/* Per-conversation mapping: ranFunctionId -> ran_function */ +typedef struct { + guint32 setup_frame; + guint32 ran_function_id; + ran_function_t ran_function; + ran_function_pointers_t *ran_function_pointers; +} ran_function_id_mapping_t; + +typedef struct { +#define MAX_RANFUNCTION_ENTRIES 16 + guint32 num_entries; + ran_function_id_mapping_t entries[MAX_RANFUNCTION_ENTRIES]; +} ran_functionid_table_t; + +const char *ran_function_to_str(ran_function_t ran_function) +{ + switch (ran_function) { + case KPM_RANFUNCTIONS: + return "KPM"; + case RIC_RANFUNCTIONS: + return "RIC"; + + default: + return "Unknown"; + } +} + + +/* Get RANfunctionID table from conversation data */ +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 */ +static void store_ran_function_mapping(packet_info *pinfo, ran_functionid_table_t *table, guint32 ran_function_id, const char *name) +{ + /* Stop if already reached table limit */ + if (table->num_entries == MAX_RANFUNCTION_ENTRIES) { + /* TODO: expert info warning? */ + return; + } + + ran_function_t ran_function = MAX_RANFUNCTIONS; /* i.e. invalid */ + ran_function_pointers_t *ran_function_pointers = NULL; + + /* Check known RAN functions */ + for (int n=MIN_RANFUNCTIONS; n < MAX_RANFUNCTIONS; n++) { + /* TODO: shouldn't need to check both positions! */ + if ((strcmp(name, g_ran_functioname_table[n].name) == 0) || + (strcmp(name+1, g_ran_functioname_table[n].name) == 0)) { + + ran_function = n; + ran_function_pointers = (ran_function_pointers_t*)&(g_ran_functioname_table[n].functions); + break; + } + } + + /* Nothing to do if no matches */ + if (ran_function == MAX_RANFUNCTIONS) { + return; + } + + /* If ID already mapped, ignore */ + 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].ran_function_pointers = ran_function_pointers; +} + +/* Look for Service Model function pointers, based on current RANFunctionID in pinfo */ +ran_function_pointers_t* lookup_ranfunction_pointers(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; + + /* Look in table function pointers for this ranFunctionID */ + ran_functionid_table_t *table = get_ran_functionid_table(pinfo); + for (guint n=0; n < table->num_entries; n++) { + if (ran_function_id == table->entries[n].ran_function_id) { + /* 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); + /* Also 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); + + return table->entries[n].ran_function_pointers; + } + } + + /* 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; +} + + +/* 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_) @@ -128,6 +327,9 @@ static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto 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) { @@ -181,7 +383,6 @@ dissect_e2ap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_ 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); } @@ -191,17 +392,12 @@ void proto_reg_handoff_e2ap(void) { dissector_add_uint_with_preference("sctp.port", SCTP_PORT_E2AP, e2ap_handle); -#if 0 - /* TODO: should one or more of these be registered? */ - 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); -#endif #include "packet-e2ap-dis-tab.c" - } + + /*--- proto_register_e2ap -------------------------------------------*/ void proto_register_e2ap(void) { @@ -209,7 +405,18 @@ void proto_register_e2ap(void) { 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 }} }; /* List of subtrees */ @@ -218,8 +425,12 @@ void proto_register_e2ap(void) { #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 }}, + }; - /* module_t *e2ap_module; */ + expert_module_t* expert_e2ap; /* Register protocol */ proto_e2ap = proto_register_protocol(PNAME, PSNAME, PFNAME); @@ -231,19 +442,19 @@ void proto_register_e2ap(void) { /* 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_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, FALSE); - - /* Register configuration options for ports */ - /* e2ap_module = prefs_register_protocol(proto_e2ap, NULL); */ - } /* diff --git a/epan/dissectors/packet-e2ap.c b/epan/dissectors/packet-e2ap.c index 023e5e9aae..f950cd9146 100644 --- a/epan/dissectors/packet-e2ap.c +++ b/epan/dissectors/packet-e2ap.c @@ -1,7 +1,7 @@ /* Do not modify this file. Changes will be overwritten. */ /* Generated automatically by the ASN.1 to Wireshark dissector compiler */ /* packet-e2ap.c */ -/* asn2wrs.py -p e2ap -c ./e2ap.cnf -s ./packet-e2ap-template -D . -O ../.. E2AP-CommonDataTypes.asn E2AP-Constants.asn E2AP-Containers.asn E2AP-IEs.asn E2AP-PDU-Contents.asn E2AP-PDU-Descriptions.asn e2sm-kpm-v1.asn */ +/* asn2wrs.py -p e2ap -c ./e2ap.cnf -s ./packet-e2ap-template -D . -O ../.. E2AP-CommonDataTypes.asn E2AP-Constants.asn E2AP-Containers.asn E2AP-IEs.asn E2AP-PDU-Contents.asn E2AP-PDU-Descriptions.asn e2sm-v2.01.asn e2sm-ric-v1.02.asn e2sm-kpm-v2.02.asn */ /* Input file: packet-e2ap-template.c */ @@ -16,7 +16,7 @@ * * SPDX-License-Identifier: GPL-2.0-or-later * - * References: ORAN-WG3.E2AP-v01.00, ORAN-WG3.E2SM-KPM-v01.00 + * References: ORAN-WG3.E2AP-v02.01, ORAN-WG3.E2SM-KPM-v02.02, ORAN-WG3.E2SM-RC.01.02 */ #include "config.h" @@ -52,17 +52,50 @@ static dissector_handle_t e2ap_handle; #line 1 "./asn1/e2ap/packet-e2ap-val.h" #define maxProtocolIEs 65535 #define maxnoofErrors 256 +#define maxofE2nodeComponents 1024 #define maxofRANfunctionID 256 #define maxofRICactionID 16 -#define maxofMessageProtocolTests 15 -#define maxofRICstyles 63 -#define maxnoofQCI 256 -#define maxnoofQoSFlows 64 -#define maxnoofSliceItems 1024 -#define maxnoofContainerListItems 3 -#define maxCellingNBDU 512 -#define maxofContainers 8 -#define maxPLMN 12 +#define maxofTNLA 32 +#define maxofRICrequestID 4294967295 +#define maxE1APid 65535 +#define maxF1APid 4 +#define maxEARFCN 65535 +#define maxNRARFCN 3279165 +#define maxnoofNrCellBands 32 +#define maxnoofMessages 65535 +#define maxnoofE2InfoChanges 65535 +#define maxnoofUEInfoChanges 65535 +#define maxnoofRRCstate 8 +#define maxnoofParametersToReport 65535 +#define maxnoofPolicyConditions 65535 +#define maxnoofAssociatedRANParameters 65535 +#define maxnoofCellID 65535 +#define maxnoofRANOutcomeParameters 255 +#define maxnoofParametersinStructure 65535 +#define maxnoofItemsinList 65535 +#define maxnoofUEInfo 65535 +#define maxnoofCellInfo 65535 +#define maxnoofUEeventInfo 65535 +#define maxnoofRANparamTest 255 +#define maxnoofNeighbourCell 65535 +#define maxnoofCallProcessTypes 65535 +#define maxnoofCallProcessBreakpoints 65535 +#define maxnoofInsertIndication 65535 +#define maxnoofControlAction 65535 +#define maxnoofPolicyAction 65535 +#define maxnoofInsertIndicationActions 63 +#define maxnoofMulCtrlActions 63 +#define maxnoofCells 16384 +#define maxnoofRICStyles 63 +#define maxnoofMeasurementInfo 65535 +#define maxnoofLabelInfo 2147483647 +#define maxnoofMeasurementRecord 65535 +#define maxnoofMeasurementValue 2147483647 +#define maxnoofConditionInfo 32768 +#define maxnoofUEID 65535 +#define maxnoofConditionInfoPerSub 32768 +#define maxnoofUEIDPerSub 65535 +#define maxnoofUEMeasReport 65535 typedef enum _ProcedureCode_enum { id_E2setup = 1, @@ -73,7 +106,11 @@ typedef enum _ProcedureCode_enum { id_RICserviceQuery = 6, id_RICserviceUpdate = 7, id_RICsubscription = 8, - id_RICsubscriptionDelete = 9 + id_RICsubscriptionDelete = 9, + id_E2nodeConfigurationUpdate = 10, + id_E2connectionUpdate = 11, + id_RICsubscriptionDeleteRequired = 12, + id_E2removal = 13 } ProcedureCode_enum; typedef enum _ProtocolIE_ID_enum { @@ -108,7 +145,34 @@ typedef enum _ProtocolIE_ID_enum { id_RICrequestID = 29, id_RICsubscriptionDetails = 30, id_TimeToWait = 31, - id_RICcontrolOutcome = 32 + id_RICcontrolOutcome = 32, + id_E2nodeComponentConfigUpdate = 33, + id_E2nodeComponentConfigUpdate_Item = 34, + id_E2nodeComponentConfigUpdateAck = 35, + id_E2nodeComponentConfigUpdateAck_Item = 36, + id_E2connectionSetup = 39, + id_E2connectionSetupFailed = 40, + id_E2connectionSetupFailed_Item = 41, + id_E2connectionFailed_Item = 42, + id_E2connectionUpdate_Item = 43, + id_E2connectionUpdateAdd = 44, + id_E2connectionUpdateModify = 45, + id_E2connectionUpdateRemove = 46, + id_E2connectionUpdateRemove_Item = 47, + id_TNLinformation = 48, + id_TransactionID = 49, + id_E2nodeComponentConfigAddition = 50, + id_E2nodeComponentConfigAddition_Item = 51, + id_E2nodeComponentConfigAdditionAck = 52, + id_E2nodeComponentConfigAdditionAck_Item = 53, + id_E2nodeComponentConfigRemoval = 54, + id_E2nodeComponentConfigRemoval_Item = 55, + id_E2nodeComponentConfigRemovalAck = 56, + id_E2nodeComponentConfigRemovalAck_Item = 57, + id_E2nodeTNLassociationRemoval = 58, + id_E2nodeTNLassociationRemoval_Item = 59, + id_RICsubscriptionToBeRemoved = 60, + id_RICsubscription_withCause_Item = 61 } ProtocolIE_ID_enum; /*--- End of included file: packet-e2ap-val.h ---*/ @@ -130,13 +194,14 @@ static int hf_e2ap_RICcontrolAckRequest_PDU = -1; /* RICcontrolAckRequest */ static int hf_e2ap_RICcontrolHeader_PDU = -1; /* RICcontrolHeader */ static int hf_e2ap_RICcontrolMessage_PDU = -1; /* RICcontrolMessage */ static int hf_e2ap_RICcontrolOutcome_PDU = -1; /* RICcontrolOutcome */ -static int hf_e2ap_RICcontrolStatus_PDU = -1; /* RICcontrolStatus */ static int hf_e2ap_RICindicationHeader_PDU = -1; /* RICindicationHeader */ static int hf_e2ap_RICindicationMessage_PDU = -1; /* RICindicationMessage */ static int hf_e2ap_RICindicationSN_PDU = -1; /* RICindicationSN */ static int hf_e2ap_RICindicationType_PDU = -1; /* RICindicationType */ static int hf_e2ap_RICrequestID_PDU = -1; /* RICrequestID */ static int hf_e2ap_TimeToWait_PDU = -1; /* TimeToWait */ +static int hf_e2ap_TNLinformation_PDU = -1; /* TNLinformation */ +static int hf_e2ap_TransactionID_PDU = -1; /* TransactionID */ static int hf_e2ap_RICsubscriptionRequest_PDU = -1; /* RICsubscriptionRequest */ static int hf_e2ap_RICsubscriptionDetails_PDU = -1; /* RICsubscriptionDetails */ static int hf_e2ap_RICaction_ToBeSetup_Item_PDU = -1; /* RICaction_ToBeSetup_Item */ @@ -149,6 +214,9 @@ static int hf_e2ap_RICsubscriptionFailure_PDU = -1; /* RICsubscriptionFailure * static int hf_e2ap_RICsubscriptionDeleteRequest_PDU = -1; /* RICsubscriptionDeleteRequest */ static int hf_e2ap_RICsubscriptionDeleteResponse_PDU = -1; /* RICsubscriptionDeleteResponse */ static int hf_e2ap_RICsubscriptionDeleteFailure_PDU = -1; /* RICsubscriptionDeleteFailure */ +static int hf_e2ap_RICsubscriptionDeleteRequired_PDU = -1; /* RICsubscriptionDeleteRequired */ +static int hf_e2ap_RICsubscription_List_withCause_PDU = -1; /* RICsubscription_List_withCause */ +static int hf_e2ap_RICsubscription_withCause_Item_PDU = -1; /* RICsubscription_withCause_Item */ static int hf_e2ap_RICindication_PDU = -1; /* RICindication */ static int hf_e2ap_RICcontrolRequest_PDU = -1; /* RICcontrolRequest */ static int hf_e2ap_RICcontrolAcknowledge_PDU = -1; /* RICcontrolAcknowledge */ @@ -157,6 +225,32 @@ static int hf_e2ap_ErrorIndication_PDU = -1; /* ErrorIndication */ static int hf_e2ap_E2setupRequest_PDU = -1; /* E2setupRequest */ static int hf_e2ap_E2setupResponse_PDU = -1; /* E2setupResponse */ static int hf_e2ap_E2setupFailure_PDU = -1; /* E2setupFailure */ +static int hf_e2ap_E2connectionUpdate_PDU = -1; /* E2connectionUpdate */ +static int hf_e2ap_E2connectionUpdate_List_PDU = -1; /* E2connectionUpdate_List */ +static int hf_e2ap_E2connectionUpdate_Item_PDU = -1; /* E2connectionUpdate_Item */ +static int hf_e2ap_E2connectionUpdateRemove_List_PDU = -1; /* E2connectionUpdateRemove_List */ +static int hf_e2ap_E2connectionUpdateRemove_Item_PDU = -1; /* E2connectionUpdateRemove_Item */ +static int hf_e2ap_E2connectionUpdateAcknowledge_PDU = -1; /* E2connectionUpdateAcknowledge */ +static int hf_e2ap_E2connectionSetupFailed_List_PDU = -1; /* E2connectionSetupFailed_List */ +static int hf_e2ap_E2connectionSetupFailed_Item_PDU = -1; /* E2connectionSetupFailed_Item */ +static int hf_e2ap_E2connectionUpdateFailure_PDU = -1; /* E2connectionUpdateFailure */ +static int hf_e2ap_E2nodeConfigurationUpdate_PDU = -1; /* E2nodeConfigurationUpdate */ +static int hf_e2ap_E2nodeComponentConfigAddition_List_PDU = -1; /* E2nodeComponentConfigAddition_List */ +static int hf_e2ap_E2nodeComponentConfigAddition_Item_PDU = -1; /* E2nodeComponentConfigAddition_Item */ +static int hf_e2ap_E2nodeComponentConfigUpdate_List_PDU = -1; /* E2nodeComponentConfigUpdate_List */ +static int hf_e2ap_E2nodeComponentConfigUpdate_Item_PDU = -1; /* E2nodeComponentConfigUpdate_Item */ +static int hf_e2ap_E2nodeComponentConfigRemoval_List_PDU = -1; /* E2nodeComponentConfigRemoval_List */ +static int hf_e2ap_E2nodeComponentConfigRemoval_Item_PDU = -1; /* E2nodeComponentConfigRemoval_Item */ +static int hf_e2ap_E2nodeTNLassociationRemoval_List_PDU = -1; /* E2nodeTNLassociationRemoval_List */ +static int hf_e2ap_E2nodeTNLassociationRemoval_Item_PDU = -1; /* E2nodeTNLassociationRemoval_Item */ +static int hf_e2ap_E2nodeConfigurationUpdateAcknowledge_PDU = -1; /* E2nodeConfigurationUpdateAcknowledge */ +static int hf_e2ap_E2nodeComponentConfigAdditionAck_List_PDU = -1; /* E2nodeComponentConfigAdditionAck_List */ +static int hf_e2ap_E2nodeComponentConfigAdditionAck_Item_PDU = -1; /* E2nodeComponentConfigAdditionAck_Item */ +static int hf_e2ap_E2nodeComponentConfigUpdateAck_List_PDU = -1; /* E2nodeComponentConfigUpdateAck_List */ +static int hf_e2ap_E2nodeComponentConfigUpdateAck_Item_PDU = -1; /* E2nodeComponentConfigUpdateAck_Item */ +static int hf_e2ap_E2nodeComponentConfigRemovalAck_List_PDU = -1; /* E2nodeComponentConfigRemovalAck_List */ +static int hf_e2ap_E2nodeComponentConfigRemovalAck_Item_PDU = -1; /* E2nodeComponentConfigRemovalAck_Item */ +static int hf_e2ap_E2nodeConfigurationUpdateFailure_PDU = -1; /* E2nodeConfigurationUpdateFailure */ static int hf_e2ap_ResetRequest_PDU = -1; /* ResetRequest */ static int hf_e2ap_ResetResponse_PDU = -1; /* ResetResponse */ static int hf_e2ap_RICserviceUpdate_PDU = -1; /* RICserviceUpdate */ @@ -170,18 +264,24 @@ static int hf_e2ap_RANfunctionIDcause_Item_PDU = -1; /* RANfunctionIDcause_Item static int hf_e2ap_RICserviceUpdateFailure_PDU = -1; /* RICserviceUpdateFailure */ static int hf_e2ap_RICserviceQuery_PDU = -1; /* RICserviceQuery */ static int hf_e2ap_E2AP_PDU_PDU = -1; /* E2AP_PDU */ +static int hf_e2ap_E2SM_RC_EventTrigger_PDU = -1; /* E2SM_RC_EventTrigger */ +static int hf_e2ap_E2SM_RC_ActionDefinition_PDU = -1; /* E2SM_RC_ActionDefinition */ +static int hf_e2ap_E2SM_RC_IndicationHeader_PDU = -1; /* E2SM_RC_IndicationHeader */ +static int hf_e2ap_E2SM_RC_IndicationMessage_PDU = -1; /* E2SM_RC_IndicationMessage */ +static int hf_e2ap_E2SM_RC_CallProcessID_PDU = -1; /* E2SM_RC_CallProcessID */ +static int hf_e2ap_E2SM_RC_RANFunctionDefinition_PDU = -1; /* E2SM_RC_RANFunctionDefinition */ static int hf_e2ap_E2SM_KPM_EventTriggerDefinition_PDU = -1; /* E2SM_KPM_EventTriggerDefinition */ static int hf_e2ap_E2SM_KPM_ActionDefinition_PDU = -1; /* E2SM_KPM_ActionDefinition */ static int hf_e2ap_E2SM_KPM_IndicationHeader_PDU = -1; /* E2SM_KPM_IndicationHeader */ -static int hf_e2ap_E2SM_KPM_IndicationMessage_Format1_PDU = -1; /* E2SM_KPM_IndicationMessage_Format1 */ +static int hf_e2ap_E2SM_KPM_IndicationMessage_PDU = -1; /* E2SM_KPM_IndicationMessage */ static int hf_e2ap_E2SM_KPM_RANfunction_Description_PDU = -1; /* E2SM_KPM_RANfunction_Description */ -static int hf_e2ap_RANcallProcess_ID_string_PDU = -1; /* RANcallProcess_ID_string */ static int hf_e2ap_ProtocolIE_Container_item = -1; /* ProtocolIE_Field */ static int hf_e2ap_id = -1; /* ProtocolIE_ID */ static int hf_e2ap_criticality = -1; /* Criticality */ static int hf_e2ap_value = -1; /* T_value */ -static int hf_e2ap_ricRequest = -1; /* CauseRIC */ +static int hf_e2ap_ricRequest = -1; /* CauseRICrequest */ static int hf_e2ap_ricService = -1; /* CauseRICservice */ +static int hf_e2ap_e2Node = -1; /* CauseE2node */ static int hf_e2ap_transport = -1; /* CauseTransport */ static int hf_e2ap_protocol = -1; /* CauseProtocol */ static int hf_e2ap_misc = -1; /* CauseMisc */ @@ -194,6 +294,25 @@ static int hf_e2ap_CriticalityDiagnostics_IE_List_item = -1; /* CriticalityDiag static int hf_e2ap_iECriticality = -1; /* Criticality */ static int hf_e2ap_iE_ID = -1; /* ProtocolIE_ID */ static int hf_e2ap_typeOfError = -1; /* TypeOfError */ +static int hf_e2ap_e2nodeComponentRequestPart = -1; /* OCTET_STRING */ +static int hf_e2ap_e2nodeComponentResponsePart = -1; /* OCTET_STRING */ +static int hf_e2ap_updateOutcome = -1; /* T_updateOutcome */ +static int hf_e2ap_failureCause = -1; /* Cause */ +static int hf_e2ap_e2nodeComponentInterfaceTypeNG = -1; /* E2nodeComponentInterfaceNG */ +static int hf_e2ap_e2nodeComponentInterfaceTypeXn = -1; /* E2nodeComponentInterfaceXn */ +static int hf_e2ap_e2nodeComponentInterfaceTypeE1 = -1; /* E2nodeComponentInterfaceE1 */ +static int hf_e2ap_e2nodeComponentInterfaceTypeF1 = -1; /* E2nodeComponentInterfaceF1 */ +static int hf_e2ap_e2nodeComponentInterfaceTypeW1 = -1; /* E2nodeComponentInterfaceW1 */ +static int hf_e2ap_e2nodeComponentInterfaceTypeS1 = -1; /* E2nodeComponentInterfaceS1 */ +static int hf_e2ap_e2nodeComponentInterfaceTypeX2 = -1; /* E2nodeComponentInterfaceX2 */ +static int hf_e2ap_gNB_CU_CP_ID = -1; /* GNB_CU_UP_ID */ +static int hf_e2ap_gNB_DU_ID = -1; /* GNB_DU_ID */ +static int hf_e2ap_amf_name = -1; /* AMFName */ +static int hf_e2ap_mme_name = -1; /* MMEname */ +static int hf_e2ap_global_eNB_ID = -1; /* GlobalENB_ID */ +static int hf_e2ap_global_en_gNB_ID = -1; /* GlobalenGNB_ID */ +static int hf_e2ap_global_NG_RAN_Node_ID = -1; /* GlobalNG_RANNode_ID */ +static int hf_e2ap_ng_eNB_DU_ID = -1; /* NGENB_DU_ID */ static int hf_e2ap_macro_eNB_ID = -1; /* BIT_STRING_SIZE_20 */ static int hf_e2ap_home_eNB_ID = -1; /* BIT_STRING_SIZE_28 */ static int hf_e2ap_short_Macro_eNB_ID = -1; /* BIT_STRING_SIZE_18 */ @@ -206,24 +325,28 @@ static int hf_e2ap_gNB = -1; /* GlobalE2node_gNB_ID */ static int hf_e2ap_en_gNB = -1; /* GlobalE2node_en_gNB_ID */ static int hf_e2ap_ng_eNB = -1; /* GlobalE2node_ng_eNB_ID */ static int hf_e2ap_eNB = -1; /* GlobalE2node_eNB_ID */ -static int hf_e2ap_global_gNB_ID = -1; /* GlobalenGNB_ID */ -static int hf_e2ap_global_eNB_ID = -1; /* GlobalENB_ID */ -static int hf_e2ap_global_gNB_ID_01 = -1; /* GlobalgNB_ID */ +static int hf_e2ap_en_gNB_CU_UP_ID = -1; /* GNB_CU_UP_ID */ +static int hf_e2ap_en_gNB_DU_ID = -1; /* GNB_DU_ID */ +static int hf_e2ap_global_gNB_ID = -1; /* GlobalgNB_ID */ static int hf_e2ap_gNB_CU_UP_ID = -1; /* GNB_CU_UP_ID */ -static int hf_e2ap_gNB_DU_ID = -1; /* GNB_DU_ID */ static int hf_e2ap_global_ng_eNB_ID = -1; /* GlobalngeNB_ID */ +static int hf_e2ap_ngENB_DU_ID = -1; /* NGENB_DU_ID */ static int hf_e2ap_pLMN_Identity = -1; /* PLMN_Identity */ static int hf_e2ap_eNB_ID = -1; /* ENB_ID */ static int hf_e2ap_gNB_ID_01 = -1; /* ENGNB_ID */ static int hf_e2ap_plmn_id = -1; /* PLMN_Identity */ static int hf_e2ap_gnb_id = -1; /* GNB_ID_Choice */ static int hf_e2ap_enb_id = -1; /* ENB_ID_Choice */ +static int hf_e2ap_gNB_01 = -1; /* GlobalgNB_ID */ +static int hf_e2ap_ng_eNB_01 = -1; /* GlobalngeNB_ID */ static int hf_e2ap_ric_ID = -1; /* BIT_STRING_SIZE_20 */ static int hf_e2ap_gnb_ID = -1; /* BIT_STRING_SIZE_22_32 */ static int hf_e2ap_ricRequestorID_01 = -1; /* INTEGER_0_65535 */ static int hf_e2ap_ricInstanceID = -1; /* INTEGER_0_65535 */ static int hf_e2ap_ricSubsequentActionType = -1; /* RICsubsequentActionType */ static int hf_e2ap_ricTimeToWait = -1; /* RICtimeToWait */ +static int hf_e2ap_tnlAddress = -1; /* BIT_STRING_SIZE_1_160_ */ +static int hf_e2ap_tnlPort = -1; /* BIT_STRING_SIZE_16 */ static int hf_e2ap_protocolIEs = -1; /* ProtocolIE_Container */ static int hf_e2ap_ricEventTriggerDefinition = -1; /* RICeventTriggerDefinition */ static int hf_e2ap_ricAction_ToBeSetup_List = -1; /* RICactions_ToBeSetup_List */ @@ -235,10 +358,30 @@ static int hf_e2ap_ricSubsequentAction = -1; /* RICsubsequentAction */ static int hf_e2ap_RICaction_Admitted_List_item = -1; /* ProtocolIE_SingleContainer */ static int hf_e2ap_RICaction_NotAdmitted_List_item = -1; /* ProtocolIE_SingleContainer */ static int hf_e2ap_cause = -1; /* Cause */ -static int hf_e2ap_RANfunctions_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_e2ap_RICsubscription_List_withCause_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_e2ap_ricRequestID = -1; /* RICrequestID */ static int hf_e2ap_ranFunctionID = -1; /* RANfunctionID */ +static int hf_e2ap_E2connectionUpdate_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_e2ap_tnlInformation = -1; /* TNLinformation */ +static int hf_e2ap_tnlUsage = -1; /* TNLusage */ +static int hf_e2ap_E2connectionUpdateRemove_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_e2ap_E2connectionSetupFailed_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_e2ap_E2nodeComponentConfigAddition_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_e2ap_e2nodeComponentInterfaceType = -1; /* E2nodeComponentInterfaceType */ +static int hf_e2ap_e2nodeComponentID = -1; /* E2nodeComponentID */ +static int hf_e2ap_e2nodeComponentConfiguration = -1; /* E2nodeComponentConfiguration */ +static int hf_e2ap_E2nodeComponentConfigUpdate_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_e2ap_E2nodeComponentConfigRemoval_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_e2ap_E2nodeTNLassociationRemoval_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_e2ap_tnlInformationRIC = -1; /* TNLinformation */ +static int hf_e2ap_E2nodeComponentConfigAdditionAck_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_e2ap_e2nodeComponentConfigurationAck = -1; /* E2nodeComponentConfigurationAck */ +static int hf_e2ap_E2nodeComponentConfigUpdateAck_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_e2ap_E2nodeComponentConfigRemovalAck_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_e2ap_RANfunctions_List_item = -1; /* ProtocolIE_SingleContainer */ static int hf_e2ap_ranFunctionDefinition = -1; /* RANfunctionDefinition */ static int hf_e2ap_ranFunctionRevision = -1; /* RANfunctionRevision */ +static int hf_e2ap_ranFunctionOID = -1; /* RANfunctionOID */ static int hf_e2ap_RANfunctionsID_List_item = -1; /* ProtocolIE_SingleContainer */ static int hf_e2ap_RANfunctionsIDcause_List_item = -1; /* ProtocolIE_SingleContainer */ static int hf_e2ap_initiatingMessage = -1; /* InitiatingMessage */ @@ -247,93 +390,458 @@ static int hf_e2ap_unsuccessfulOutcome = -1; /* UnsuccessfulOutcome */ static int hf_e2ap_initiatingMessagevalue = -1; /* InitiatingMessage_value */ static int hf_e2ap_successfulOutcome_value = -1; /* SuccessfulOutcome_value */ static int hf_e2ap_unsuccessfulOutcome_value = -1; /* UnsuccessfulOutcome_value */ -static int hf_e2ap_gNB_01 = -1; /* GlobalKPMnode_gNB_ID */ -static int hf_e2ap_en_gNB_01 = -1; /* GlobalKPMnode_en_gNB_ID */ -static int hf_e2ap_ng_eNB_01 = -1; /* GlobalKPMnode_ng_eNB_ID */ -static int hf_e2ap_eNB_01 = -1; /* GlobalKPMnode_eNB_ID */ -static int hf_e2ap_nRCellIdentity = -1; /* NRCellIdentity */ -static int hf_e2ap_sST = -1; /* OCTET_STRING_SIZE_1 */ -static int hf_e2ap_sD = -1; /* OCTET_STRING_SIZE_3 */ -static int hf_e2ap_eventDefinition_Format1 = -1; /* E2SM_KPM_EventTriggerDefinition_Format1 */ -static int hf_e2ap_policyTest_List = -1; /* SEQUENCE_SIZE_1_maxofMessageProtocolTests_OF_Trigger_ConditionIE_Item */ -static int hf_e2ap_policyTest_List_item = -1; /* Trigger_ConditionIE_Item */ -static int hf_e2ap_ric_Style_Type = -1; /* RIC_Style_Type */ -static int hf_e2ap_indicationHeader_Format1 = -1; /* E2SM_KPM_IndicationHeader_Format1 */ -static int hf_e2ap_id_GlobalKPMnode_ID = -1; /* GlobalKPMnode_ID */ -static int hf_e2ap_nRCGI = -1; /* NRCGI */ -static int hf_e2ap_sliceID = -1; /* SNSSAI */ -static int hf_e2ap_fiveQI = -1; /* INTEGER_0_255 */ -static int hf_e2ap_qci = -1; /* INTEGER_0_255 */ -static int hf_e2ap_pm_Containers = -1; /* SEQUENCE_SIZE_1_maxCellingNBDU_OF_PM_Containers_List */ -static int hf_e2ap_pm_Containers_item = -1; /* PM_Containers_List */ -static int hf_e2ap_performanceContainer = -1; /* PF_Container */ -static int hf_e2ap_theRANContainer = -1; /* RAN_Container */ -static int hf_e2ap_ranFunction_Name = -1; /* RANfunction_Name */ -static int hf_e2ap_e2SM_KPM_RANfunction_Item = -1; /* T_e2SM_KPM_RANfunction_Item */ -static int hf_e2ap_ric_EventTriggerStyle_List = -1; /* SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_EventTriggerStyle_List */ -static int hf_e2ap_ric_EventTriggerStyle_List_item = -1; /* RIC_EventTriggerStyle_List */ -static int hf_e2ap_ric_ReportStyle_List = -1; /* SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_ReportStyle_List */ -static int hf_e2ap_ric_ReportStyle_List_item = -1; /* RIC_ReportStyle_List */ -static int hf_e2ap_report_Period_IE = -1; /* RT_Period_IE */ -static int hf_e2ap_ranFunction_ShortName = -1; /* PrintableString_SIZE_1_150_ */ +static int hf_e2ap_nR_CGI = -1; /* NR_CGI */ +static int hf_e2ap_eUTRA_CGI = -1; /* EUTRA_CGI */ +static int hf_e2ap_nG = -1; /* InterfaceID_NG */ +static int hf_e2ap_xN = -1; /* InterfaceID_Xn */ +static int hf_e2ap_f1 = -1; /* InterfaceID_F1 */ +static int hf_e2ap_e1 = -1; /* InterfaceID_E1 */ +static int hf_e2ap_s1 = -1; /* InterfaceID_S1 */ +static int hf_e2ap_x2 = -1; /* InterfaceID_X2 */ +static int hf_e2ap_w1 = -1; /* InterfaceID_W1 */ +static int hf_e2ap_guami = -1; /* GUAMI */ +static int hf_e2ap_global_NG_RAN_ID = -1; /* GlobalNGRANNodeID */ +static int hf_e2ap_globalGNB_ID = -1; /* GlobalGNB_ID */ +static int hf_e2ap_gUMMEI = -1; /* GUMMEI */ +static int hf_e2ap_nodeType = -1; /* T_nodeType */ +static int hf_e2ap_global_ng_eNB_ID_01 = -1; /* GlobalNgENB_ID */ +static int hf_e2ap_interfaceProcedureID = -1; /* INTEGER */ +static int hf_e2ap_messageType = -1; /* T_messageType */ +static int hf_e2ap_ranFunction_ShortName = -1; /* T_ranFunction_ShortName */ static int hf_e2ap_ranFunction_E2SM_OID = -1; /* PrintableString_SIZE_1_1000_ */ static int hf_e2ap_ranFunction_Description = -1; /* PrintableString_SIZE_1_150_ */ static int hf_e2ap_ranFunction_Instance = -1; /* INTEGER */ +static int hf_e2ap_rrcType = -1; /* T_rrcType */ +static int hf_e2ap_lTE = -1; /* RRCclass_LTE */ +static int hf_e2ap_nR = -1; /* RRCclass_NR */ +static int hf_e2ap_messageID = -1; /* INTEGER */ +static int hf_e2ap_nR_01 = -1; /* NR_ARFCN */ +static int hf_e2ap_eUTRA = -1; /* E_UTRA_ARFCN */ +static int hf_e2ap_nR_02 = -1; /* NR_PCI */ +static int hf_e2ap_eUTRA_01 = -1; /* E_UTRA_PCI */ +static int hf_e2ap_gNB_UEID = -1; /* UEID_GNB */ +static int hf_e2ap_gNB_DU_UEID = -1; /* UEID_GNB_DU */ +static int hf_e2ap_gNB_CU_UP_UEID = -1; /* UEID_GNB_CU_UP */ +static int hf_e2ap_ng_eNB_UEID = -1; /* UEID_NG_ENB */ +static int hf_e2ap_ng_eNB_DU_UEID = -1; /* UEID_NG_ENB_DU */ +static int hf_e2ap_en_gNB_UEID = -1; /* UEID_EN_GNB */ +static int hf_e2ap_eNB_UEID = -1; /* UEID_ENB */ +static int hf_e2ap_amf_UE_NGAP_ID = -1; /* AMF_UE_NGAP_ID */ +static int hf_e2ap_gNB_CU_UE_F1AP_ID_List = -1; /* UEID_GNB_CU_F1AP_ID_List */ +static int hf_e2ap_gNB_CU_CP_UE_E1AP_ID_List = -1; /* UEID_GNB_CU_CP_E1AP_ID_List */ +static int hf_e2ap_ran_UEID = -1; /* RANUEID */ +static int hf_e2ap_m_NG_RAN_UE_XnAP_ID = -1; /* NG_RANnodeUEXnAPID */ +static int hf_e2ap_globalNG_RANNode_ID = -1; /* GlobalNGRANNodeID */ +static int hf_e2ap_UEID_GNB_CU_CP_E1AP_ID_List_item = -1; /* UEID_GNB_CU_CP_E1AP_ID_Item */ +static int hf_e2ap_gNB_CU_CP_UE_E1AP_ID = -1; /* GNB_CU_CP_UE_E1AP_ID */ +static int hf_e2ap_UEID_GNB_CU_F1AP_ID_List_item = -1; /* UEID_GNB_CU_CP_F1AP_ID_Item */ +static int hf_e2ap_gNB_CU_UE_F1AP_ID = -1; /* GNB_CU_UE_F1AP_ID */ +static int hf_e2ap_ng_eNB_CU_UE_W1AP_ID = -1; /* NGENB_CU_UE_W1AP_ID */ +static int hf_e2ap_globalNgENB_ID = -1; /* GlobalNgENB_ID */ +static int hf_e2ap_m_eNB_UE_X2AP_ID = -1; /* ENB_UE_X2AP_ID */ +static int hf_e2ap_m_eNB_UE_X2AP_ID_Extension = -1; /* ENB_UE_X2AP_ID_Extension */ +static int hf_e2ap_globalENB_ID = -1; /* GlobalENB_ID */ +static int hf_e2ap_mME_UE_S1AP_ID = -1; /* MME_UE_S1AP_ID */ +static int hf_e2ap_pLMN_Identity_01 = -1; /* PLMNIdentity */ +static int hf_e2ap_mME_Group_ID = -1; /* MME_Group_ID */ +static int hf_e2ap_mME_Code = -1; /* MME_Code */ +static int hf_e2ap_pLMNIdentity = -1; /* PLMNIdentity */ +static int hf_e2ap_eUTRACellIdentity = -1; /* EUTRACellIdentity */ +static int hf_e2ap_gNB_ID_02 = -1; /* GNB_ID */ +static int hf_e2ap_ngENB_ID = -1; /* NgENB_ID */ +static int hf_e2ap_aMFRegionID = -1; /* AMFRegionID */ +static int hf_e2ap_aMFSetID = -1; /* AMFSetID */ +static int hf_e2ap_aMFPointer = -1; /* AMFPointer */ +static int hf_e2ap_macroNgENB_ID = -1; /* BIT_STRING_SIZE_20 */ +static int hf_e2ap_shortMacroNgENB_ID = -1; /* BIT_STRING_SIZE_18 */ +static int hf_e2ap_longMacroNgENB_ID = -1; /* BIT_STRING_SIZE_21 */ +static int hf_e2ap_gNB_02 = -1; /* GlobalGNB_ID */ +static int hf_e2ap_ng_eNB_02 = -1; /* GlobalNgENB_ID */ +static int hf_e2ap_nRARFCN = -1; /* INTEGER_0_maxNRARFCN */ +static int hf_e2ap_NRFrequencyBand_List_item = -1; /* NRFrequencyBandItem */ +static int hf_e2ap_freqBandIndicatorNr = -1; /* INTEGER_1_1024_ */ +static int hf_e2ap_supportedSULBandList = -1; /* SupportedSULBandList */ +static int hf_e2ap_nrARFCN = -1; /* NR_ARFCN */ +static int hf_e2ap_frequencyBand_List = -1; /* NRFrequencyBand_List */ +static int hf_e2ap_frequencyShift7p5khz = -1; /* NRFrequencyShift7p5khz */ +static int hf_e2ap_SupportedSULBandList_item = -1; /* SupportedSULFreqBandItem */ +static int hf_e2ap_nRCellIdentity = -1; /* NRCellIdentity */ +static int hf_e2ap_NeighborCell_List_item = -1; /* NeighborCell_Item */ +static int hf_e2ap_ranType_Choice_NR = -1; /* NeighborCell_Item_Choice_NR */ +static int hf_e2ap_ranType_Choice_EUTRA = -1; /* NeighborCell_Item_Choice_E_UTRA */ +static int hf_e2ap_nR_PCI = -1; /* NR_PCI */ +static int hf_e2ap_fiveGS_TAC = -1; /* FiveGS_TAC */ +static int hf_e2ap_nR_mode_info = -1; /* T_nR_mode_info */ +static int hf_e2ap_nR_FreqInfo = -1; /* NRFrequencyInfo */ +static int hf_e2ap_x2_Xn_established = -1; /* T_x2_Xn_established */ +static int hf_e2ap_hO_validated = -1; /* T_hO_validated */ +static int hf_e2ap_version = -1; /* INTEGER_1_65535_ */ +static int hf_e2ap_eUTRA_PCI = -1; /* E_UTRA_PCI */ +static int hf_e2ap_eUTRA_ARFCN = -1; /* E_UTRA_ARFCN */ +static int hf_e2ap_eUTRA_TAC = -1; /* E_UTRA_TAC */ +static int hf_e2ap_x2_Xn_established_01 = -1; /* T_x2_Xn_established_01 */ +static int hf_e2ap_hO_validated_01 = -1; /* T_hO_validated_01 */ +static int hf_e2ap_servingCellPCI = -1; /* ServingCell_PCI */ +static int hf_e2ap_servingCellARFCN = -1; /* ServingCell_ARFCN */ +static int hf_e2ap_neighborCell_List = -1; /* NeighborCell_List */ +static int hf_e2ap_cellInfo_List = -1; /* SEQUENCE_SIZE_1_maxnoofCellInfo_OF_EventTrigger_Cell_Info_Item */ +static int hf_e2ap_cellInfo_List_item = -1; /* EventTrigger_Cell_Info_Item */ +static int hf_e2ap_eventTriggerCellID = -1; /* RIC_EventTrigger_Cell_ID */ +static int hf_e2ap_cellType = -1; /* T_cellType */ +static int hf_e2ap_cellType_Choice_Individual = -1; /* EventTrigger_Cell_Info_Item_Choice_Individual */ +static int hf_e2ap_cellType_Choice_Group = -1; /* EventTrigger_Cell_Info_Item_Choice_Group */ +static int hf_e2ap_logicalOR = -1; /* LogicalOR */ +static int hf_e2ap_cellGlobalID = -1; /* CGI */ +static int hf_e2ap_ranParameterTesting = -1; /* RANParameter_Testing */ +static int hf_e2ap_ueInfo_List = -1; /* SEQUENCE_SIZE_1_maxnoofUEInfo_OF_EventTrigger_UE_Info_Item */ +static int hf_e2ap_ueInfo_List_item = -1; /* EventTrigger_UE_Info_Item */ +static int hf_e2ap_eventTriggerUEID = -1; /* RIC_EventTrigger_UE_ID */ +static int hf_e2ap_ueType = -1; /* T_ueType */ +static int hf_e2ap_ueType_Choice_Individual = -1; /* EventTrigger_UE_Info_Item_Choice_Individual */ +static int hf_e2ap_ueType_Choice_Group = -1; /* EventTrigger_UE_Info_Item_Choice_Group */ +static int hf_e2ap_ueID = -1; /* UEID */ +static int hf_e2ap_ueEvent_List = -1; /* SEQUENCE_SIZE_1_maxnoofUEeventInfo_OF_EventTrigger_UEevent_Info_Item */ +static int hf_e2ap_ueEvent_List_item = -1; /* EventTrigger_UEevent_Info_Item */ +static int hf_e2ap_ueEventID = -1; /* RIC_EventTrigger_UEevent_ID */ +static int hf_e2ap_ranParameter_Definition_Choice = -1; /* RANParameter_Definition_Choice */ +static int hf_e2ap_choiceLIST = -1; /* RANParameter_Definition_Choice_LIST */ +static int hf_e2ap_choiceSTRUCTURE = -1; /* RANParameter_Definition_Choice_STRUCTURE */ +static int hf_e2ap_ranParameter_List = -1; /* SEQUENCE_SIZE_1_maxnoofItemsinList_OF_RANParameter_Definition_Choice_LIST_Item */ +static int hf_e2ap_ranParameter_List_item = -1; /* RANParameter_Definition_Choice_LIST_Item */ +static int hf_e2ap_ranParameter_ID = -1; /* RANParameter_ID */ +static int hf_e2ap_ranParameter_name = -1; /* RANParameter_Name */ +static int hf_e2ap_ranParameter_Definition = -1; /* RANParameter_Definition */ +static int hf_e2ap_ranParameter_STRUCTURE = -1; /* SEQUENCE_SIZE_1_maxnoofParametersinStructure_OF_RANParameter_Definition_Choice_STRUCTURE_Item */ +static int hf_e2ap_ranParameter_STRUCTURE_item = -1; /* RANParameter_Definition_Choice_STRUCTURE_Item */ +static int hf_e2ap_valueBoolean = -1; /* BOOLEAN */ +static int hf_e2ap_valueInt = -1; /* INTEGER */ +static int hf_e2ap_valueReal = -1; /* REAL */ +static int hf_e2ap_valueBitS = -1; /* BIT_STRING */ +static int hf_e2ap_valueOctS = -1; /* OCTET_STRING */ +static int hf_e2ap_valuePrintableString = -1; /* PrintableString */ +static int hf_e2ap_ranP_Choice_ElementTrue = -1; /* RANParameter_ValueType_Choice_ElementTrue */ +static int hf_e2ap_ranP_Choice_ElementFalse = -1; /* RANParameter_ValueType_Choice_ElementFalse */ +static int hf_e2ap_ranP_Choice_Structure = -1; /* RANParameter_ValueType_Choice_Structure */ +static int hf_e2ap_ranP_Choice_List = -1; /* RANParameter_ValueType_Choice_List */ +static int hf_e2ap_ranParameter_value = -1; /* RANParameter_Value */ +static int hf_e2ap_ranParameter_Structure = -1; /* RANParameter_STRUCTURE */ +static int hf_e2ap_ranParameter_List_01 = -1; /* RANParameter_LIST */ +static int hf_e2ap_sequence_of_ranParameters = -1; /* SEQUENCE_SIZE_1_maxnoofParametersinStructure_OF_RANParameter_STRUCTURE_Item */ +static int hf_e2ap_sequence_of_ranParameters_item = -1; /* RANParameter_STRUCTURE_Item */ +static int hf_e2ap_ranParameter_valueType = -1; /* RANParameter_ValueType */ +static int hf_e2ap_list_of_ranParameter = -1; /* SEQUENCE_SIZE_1_maxnoofItemsinList_OF_RANParameter_STRUCTURE */ +static int hf_e2ap_list_of_ranParameter_item = -1; /* RANParameter_STRUCTURE */ +static int hf_e2ap_RANParameter_Testing_item = -1; /* RANParameter_Testing_Item */ +static int hf_e2ap_ranP_Choice_comparison = -1; /* T_ranP_Choice_comparison */ +static int hf_e2ap_ranP_Choice_presence = -1; /* T_ranP_Choice_presence */ +static int hf_e2ap_ranParameter_Type = -1; /* T_ranParameter_Type */ +static int hf_e2ap_ranP_Choice_List_01 = -1; /* RANParameter_Testing_Item_Choice_List */ +static int hf_e2ap_ranP_Choice_Structure_01 = -1; /* RANParameter_Testing_Item_Choice_Structure */ +static int hf_e2ap_ranP_Choice_ElementTrue_01 = -1; /* RANParameter_Testing_Item_Choice_ElementTrue */ +static int hf_e2ap_ranP_Choice_ElementFalse_01 = -1; /* RANParameter_Testing_Item_Choice_ElementFalse */ +static int hf_e2ap_ranParameter_List_02 = -1; /* RANParameter_Testing_LIST */ +static int hf_e2ap_ranParameter_Structure_01 = -1; /* RANParameter_Testing_STRUCTURE */ +static int hf_e2ap_ranParameter_TestCondition = -1; /* RANParameter_TestingCondition */ +static int hf_e2ap_ranParameter_Value = -1; /* RANParameter_Value */ +static int hf_e2ap_RANParameter_Testing_LIST_item = -1; /* RANParameter_Testing_Item */ +static int hf_e2ap_RANParameter_Testing_STRUCTURE_item = -1; /* RANParameter_Testing_Item */ +static int hf_e2ap_ric_PolicyAction_ID = -1; /* RIC_ControlAction_ID */ +static int hf_e2ap_ranParameters_List = -1; /* SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_RIC_PolicyAction_RANParameter_Item */ +static int hf_e2ap_ranParameters_List_item = -1; /* RIC_PolicyAction_RANParameter_Item */ +static int hf_e2ap_ric_PolicyDecision = -1; /* T_ric_PolicyDecision */ +static int hf_e2ap_ric_eventTrigger_formats = -1; /* T_ric_eventTrigger_formats */ +static int hf_e2ap_eventTrigger_Format1 = -1; /* E2SM_RC_EventTrigger_Format1 */ +static int hf_e2ap_eventTrigger_Format2 = -1; /* E2SM_RC_EventTrigger_Format2 */ +static int hf_e2ap_eventTrigger_Format3 = -1; /* E2SM_RC_EventTrigger_Format3 */ +static int hf_e2ap_eventTrigger_Format4 = -1; /* E2SM_RC_EventTrigger_Format4 */ +static int hf_e2ap_eventTrigger_Format5 = -1; /* E2SM_RC_EventTrigger_Format5 */ +static int hf_e2ap_message_List = -1; /* SEQUENCE_SIZE_1_maxnoofMessages_OF_E2SM_RC_EventTrigger_Format1_Item */ +static int hf_e2ap_message_List_item = -1; /* E2SM_RC_EventTrigger_Format1_Item */ +static int hf_e2ap_globalAssociatedUEInfo = -1; /* EventTrigger_UE_Info */ +static int hf_e2ap_ric_eventTriggerCondition_ID = -1; /* RIC_EventTriggerCondition_ID */ +static int hf_e2ap_messageType_01 = -1; /* MessageType_Choice */ +static int hf_e2ap_messageDirection = -1; /* T_messageDirection */ +static int hf_e2ap_associatedUEInfo = -1; /* EventTrigger_UE_Info */ +static int hf_e2ap_associatedUEEvent = -1; /* EventTrigger_UEevent_Info */ +static int hf_e2ap_messageType_Choice_NI = -1; /* MessageType_Choice_NI */ +static int hf_e2ap_messageType_Choice_RRC = -1; /* MessageType_Choice_RRC */ +static int hf_e2ap_nI_Type = -1; /* InterfaceType */ +static int hf_e2ap_nI_Identifier = -1; /* InterfaceIdentifier */ +static int hf_e2ap_nI_Message = -1; /* Interface_MessageID */ +static int hf_e2ap_rRC_Message = -1; /* RRC_MessageID */ +static int hf_e2ap_ric_callProcessType_ID = -1; /* RIC_CallProcessType_ID */ +static int hf_e2ap_ric_callProcessBreakpoint_ID = -1; /* RIC_CallProcessBreakpoint_ID */ +static int hf_e2ap_associatedE2NodeInfo = -1; /* RANParameter_Testing */ +static int hf_e2ap_e2NodeInfoChange_List = -1; /* SEQUENCE_SIZE_1_maxnoofE2InfoChanges_OF_E2SM_RC_EventTrigger_Format3_Item */ +static int hf_e2ap_e2NodeInfoChange_List_item = -1; /* E2SM_RC_EventTrigger_Format3_Item */ +static int hf_e2ap_e2NodeInfoChange_ID = -1; /* INTEGER_1_512_ */ +static int hf_e2ap_associatedCellInfo = -1; /* EventTrigger_Cell_Info */ +static int hf_e2ap_uEInfoChange_List = -1; /* SEQUENCE_SIZE_1_maxnoofUEInfoChanges_OF_E2SM_RC_EventTrigger_Format4_Item */ +static int hf_e2ap_uEInfoChange_List_item = -1; /* E2SM_RC_EventTrigger_Format4_Item */ +static int hf_e2ap_triggerType = -1; /* TriggerType_Choice */ +static int hf_e2ap_triggerType_Choice_RRCstate = -1; /* TriggerType_Choice_RRCstate */ +static int hf_e2ap_triggerType_Choice_UEID = -1; /* TriggerType_Choice_UEID */ +static int hf_e2ap_triggerType_Choice_L2state = -1; /* TriggerType_Choice_L2state */ +static int hf_e2ap_rrcState_List = -1; /* SEQUENCE_SIZE_1_maxnoofRRCstate_OF_TriggerType_Choice_RRCstate_Item */ +static int hf_e2ap_rrcState_List_item = -1; /* TriggerType_Choice_RRCstate_Item */ +static int hf_e2ap_stateChangedTo = -1; /* RRC_State */ +static int hf_e2ap_ueIDchange_ID = -1; /* INTEGER_1_512_ */ +static int hf_e2ap_associatedL2variables = -1; /* RANParameter_Testing */ +static int hf_e2ap_onDemand = -1; /* T_onDemand */ +static int hf_e2ap_ric_Style_Type = -1; /* RIC_Style_Type */ +static int hf_e2ap_ric_actionDefinition_formats = -1; /* T_ric_actionDefinition_formats */ +static int hf_e2ap_actionDefinition_Format1 = -1; /* E2SM_RC_ActionDefinition_Format1 */ +static int hf_e2ap_actionDefinition_Format2 = -1; /* E2SM_RC_ActionDefinition_Format2 */ +static int hf_e2ap_actionDefinition_Format3 = -1; /* E2SM_RC_ActionDefinition_Format3 */ +static int hf_e2ap_actionDefinition_Format4 = -1; /* E2SM_RC_ActionDefinition_Format4 */ +static int hf_e2ap_ranP_ToBeReported_List = -1; /* SEQUENCE_SIZE_1_maxnoofParametersToReport_OF_E2SM_RC_ActionDefinition_Format1_Item */ +static int hf_e2ap_ranP_ToBeReported_List_item = -1; /* E2SM_RC_ActionDefinition_Format1_Item */ +static int hf_e2ap_ric_PolicyConditions_List = -1; /* SEQUENCE_SIZE_1_maxnoofPolicyConditions_OF_E2SM_RC_ActionDefinition_Format2_Item */ +static int hf_e2ap_ric_PolicyConditions_List_item = -1; /* E2SM_RC_ActionDefinition_Format2_Item */ +static int hf_e2ap_ric_PolicyAction = -1; /* RIC_PolicyAction */ +static int hf_e2ap_ric_PolicyConditionDefinition = -1; /* RANParameter_Testing */ +static int hf_e2ap_ric_InsertIndication_ID = -1; /* RIC_InsertIndication_ID */ +static int hf_e2ap_ranP_InsertIndication_List = -1; /* SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_ActionDefinition_Format3_Item */ +static int hf_e2ap_ranP_InsertIndication_List_item = -1; /* E2SM_RC_ActionDefinition_Format3_Item */ +static int hf_e2ap_ric_InsertStyle_List = -1; /* SEQUENCE_SIZE_1_maxnoofRICStyles_OF_E2SM_RC_ActionDefinition_Format4_Style_Item */ +static int hf_e2ap_ric_InsertStyle_List_item = -1; /* E2SM_RC_ActionDefinition_Format4_Style_Item */ +static int hf_e2ap_requested_Insert_Style_Type = -1; /* RIC_Style_Type */ +static int hf_e2ap_ric_InsertIndication_List = -1; /* SEQUENCE_SIZE_1_maxnoofInsertIndicationActions_OF_E2SM_RC_ActionDefinition_Format4_Indication_Item */ +static int hf_e2ap_ric_InsertIndication_List_item = -1; /* E2SM_RC_ActionDefinition_Format4_Indication_Item */ +static int hf_e2ap_ranP_InsertIndication_List_01 = -1; /* SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_ActionDefinition_Format4_RANP_Item */ +static int hf_e2ap_ranP_InsertIndication_List_item_01 = -1; /* E2SM_RC_ActionDefinition_Format4_RANP_Item */ +static int hf_e2ap_ric_indicationHeader_formats = -1; /* T_ric_indicationHeader_formats */ +static int hf_e2ap_indicationHeader_Format1 = -1; /* E2SM_RC_IndicationHeader_Format1 */ +static int hf_e2ap_indicationHeader_Format2 = -1; /* E2SM_RC_IndicationHeader_Format2 */ +static int hf_e2ap_indicationHeader_Format3 = -1; /* E2SM_RC_IndicationHeader_Format3 */ +static int hf_e2ap_ric_InsertStyle_Type = -1; /* RIC_Style_Type */ +static int hf_e2ap_ric_indicationMessage_formats = -1; /* T_ric_indicationMessage_formats */ +static int hf_e2ap_indicationMessage_Format1 = -1; /* E2SM_RC_IndicationMessage_Format1 */ +static int hf_e2ap_indicationMessage_Format2 = -1; /* E2SM_RC_IndicationMessage_Format2 */ +static int hf_e2ap_indicationMessage_Format3 = -1; /* E2SM_RC_IndicationMessage_Format3 */ +static int hf_e2ap_indicationMessage_Format4 = -1; /* E2SM_RC_IndicationMessage_Format4 */ +static int hf_e2ap_indicationMessage_Format5 = -1; /* E2SM_RC_IndicationMessage_Format5 */ +static int hf_e2ap_indicationMessage_Format6 = -1; /* E2SM_RC_IndicationMessage_Format6 */ +static int hf_e2ap_ranP_Reported_List = -1; /* SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format1_Item */ +static int hf_e2ap_ranP_Reported_List_item = -1; /* E2SM_RC_IndicationMessage_Format1_Item */ +static int hf_e2ap_ueParameter_List = -1; /* SEQUENCE_SIZE_1_maxnoofUEID_OF_E2SM_RC_IndicationMessage_Format2_Item */ +static int hf_e2ap_ueParameter_List_item = -1; /* E2SM_RC_IndicationMessage_Format2_Item */ +static int hf_e2ap_ranP_List = -1; /* SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format2_RANParameter_Item */ +static int hf_e2ap_ranP_List_item = -1; /* E2SM_RC_IndicationMessage_Format2_RANParameter_Item */ +static int hf_e2ap_cellInfo_List_01 = -1; /* SEQUENCE_SIZE_1_maxnoofCellID_OF_E2SM_RC_IndicationMessage_Format3_Item */ +static int hf_e2ap_cellInfo_List_item_01 = -1; /* E2SM_RC_IndicationMessage_Format3_Item */ +static int hf_e2ap_cellGlobal_ID = -1; /* CGI */ +static int hf_e2ap_cellContextInfo = -1; /* OCTET_STRING */ +static int hf_e2ap_cellDeleted = -1; /* BOOLEAN */ +static int hf_e2ap_neighborRelation_Table = -1; /* NeighborRelation_Info */ +static int hf_e2ap_ueInfo_List_01 = -1; /* SEQUENCE_SIZE_0_maxnoofUEID_OF_E2SM_RC_IndicationMessage_Format4_ItemUE */ +static int hf_e2ap_ueInfo_List_item_01 = -1; /* E2SM_RC_IndicationMessage_Format4_ItemUE */ +static int hf_e2ap_cellInfo_List_02 = -1; /* SEQUENCE_SIZE_0_maxnoofCellID_OF_E2SM_RC_IndicationMessage_Format4_ItemCell */ +static int hf_e2ap_cellInfo_List_item_02 = -1; /* E2SM_RC_IndicationMessage_Format4_ItemCell */ +static int hf_e2ap_ueContextInfo = -1; /* OCTET_STRING */ +static int hf_e2ap_ranP_Requested_List = -1; /* SEQUENCE_SIZE_0_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format5_Item */ +static int hf_e2ap_ranP_Requested_List_item = -1; /* E2SM_RC_IndicationMessage_Format5_Item */ +static int hf_e2ap_ric_InsertStyle_List_01 = -1; /* SEQUENCE_SIZE_1_maxnoofRICStyles_OF_E2SM_RC_IndicationMessage_Format6_Style_Item */ +static int hf_e2ap_ric_InsertStyle_List_item_01 = -1; /* E2SM_RC_IndicationMessage_Format6_Style_Item */ +static int hf_e2ap_indicated_Insert_Style_Type = -1; /* RIC_Style_Type */ +static int hf_e2ap_ric_InsertIndication_List_01 = -1; /* SEQUENCE_SIZE_1_maxnoofInsertIndicationActions_OF_E2SM_RC_IndicationMessage_Format6_Indication_Item */ +static int hf_e2ap_ric_InsertIndication_List_item_01 = -1; /* E2SM_RC_IndicationMessage_Format6_Indication_Item */ +static int hf_e2ap_ranP_InsertIndication_List_02 = -1; /* SEQUENCE_SIZE_0_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format6_RANP_Item */ +static int hf_e2ap_ranP_InsertIndication_List_item_02 = -1; /* E2SM_RC_IndicationMessage_Format6_RANP_Item */ +static int hf_e2ap_ric_callProcessID_formats = -1; /* T_ric_callProcessID_formats */ +static int hf_e2ap_callProcessID_Format1 = -1; /* E2SM_RC_CallProcessID_Format1 */ +static int hf_e2ap_ric_callProcess_ID = -1; /* RAN_CallProcess_ID */ +static int hf_e2ap_ranFunction_Name = -1; /* RANfunction_Name */ +static int hf_e2ap_ranFunctionDefinition_EventTrigger = -1; /* RANFunctionDefinition_EventTrigger */ +static int hf_e2ap_ranFunctionDefinition_Report = -1; /* RANFunctionDefinition_Report */ +static int hf_e2ap_ranFunctionDefinition_Insert = -1; /* RANFunctionDefinition_Insert */ +static int hf_e2ap_ranFunctionDefinition_Control = -1; /* RANFunctionDefinition_Control */ +static int hf_e2ap_ranFunctionDefinition_Policy = -1; /* RANFunctionDefinition_Policy */ +static int hf_e2ap_ric_EventTriggerStyle_List = -1; /* SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_EventTrigger_Style_Item */ +static int hf_e2ap_ric_EventTriggerStyle_List_item = -1; /* RANFunctionDefinition_EventTrigger_Style_Item */ +static int hf_e2ap_ran_L2Parameters_List = -1; /* SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_L2Parameters_RANParameter_Item */ +static int hf_e2ap_ran_L2Parameters_List_item = -1; /* L2Parameters_RANParameter_Item */ +static int hf_e2ap_ran_CallProcessTypes_List = -1; /* SEQUENCE_SIZE_1_maxnoofCallProcessTypes_OF_RANFunctionDefinition_EventTrigger_CallProcess_Item */ +static int hf_e2ap_ran_CallProcessTypes_List_item = -1; /* RANFunctionDefinition_EventTrigger_CallProcess_Item */ +static int hf_e2ap_ran_UEIdentificationParameters_List = -1; /* SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_UEIdentification_RANParameter_Item */ +static int hf_e2ap_ran_UEIdentificationParameters_List_item = -1; /* UEIdentification_RANParameter_Item */ +static int hf_e2ap_ran_CellIdentificationParameters_List = -1; /* SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_CellIdentification_RANParameter_Item */ +static int hf_e2ap_ran_CellIdentificationParameters_List_item = -1; /* CellIdentification_RANParameter_Item */ static int hf_e2ap_ric_EventTriggerStyle_Type = -1; /* RIC_Style_Type */ static int hf_e2ap_ric_EventTriggerStyle_Name = -1; /* RIC_Style_Name */ static int hf_e2ap_ric_EventTriggerFormat_Type = -1; /* RIC_Format_Type */ +static int hf_e2ap_callProcessType_ID = -1; /* RIC_CallProcessType_ID */ +static int hf_e2ap_callProcessType_Name = -1; /* RIC_CallProcessType_Name */ +static int hf_e2ap_callProcessBreakpoints_List = -1; /* SEQUENCE_SIZE_1_maxnoofCallProcessBreakpoints_OF_RANFunctionDefinition_EventTrigger_Breakpoint_Item */ +static int hf_e2ap_callProcessBreakpoints_List_item = -1; /* RANFunctionDefinition_EventTrigger_Breakpoint_Item */ +static int hf_e2ap_callProcessBreakpoint_ID = -1; /* RIC_CallProcessBreakpoint_ID */ +static int hf_e2ap_callProcessBreakpoint_Name = -1; /* RIC_CallProcessBreakpoint_Name */ +static int hf_e2ap_ran_CallProcessBreakpointParameters_List = -1; /* SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_CallProcessBreakpoint_RANParameter_Item */ +static int hf_e2ap_ran_CallProcessBreakpointParameters_List_item = -1; /* CallProcessBreakpoint_RANParameter_Item */ +static int hf_e2ap_ric_ReportStyle_List = -1; /* SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Report_Item */ +static int hf_e2ap_ric_ReportStyle_List_item = -1; /* RANFunctionDefinition_Report_Item */ static int hf_e2ap_ric_ReportStyle_Type = -1; /* RIC_Style_Type */ static int hf_e2ap_ric_ReportStyle_Name = -1; /* RIC_Style_Name */ +static int hf_e2ap_ric_SupportedEventTriggerStyle_Type = -1; /* RIC_Style_Type */ +static int hf_e2ap_ric_ReportActionFormat_Type = -1; /* RIC_Format_Type */ static int hf_e2ap_ric_IndicationHeaderFormat_Type = -1; /* RIC_Format_Type */ static int hf_e2ap_ric_IndicationMessageFormat_Type = -1; /* RIC_Format_Type */ -static int hf_e2ap_oDU = -1; /* ODU_PF_Container */ -static int hf_e2ap_oCU_CP = -1; /* OCUCP_PF_Container */ -static int hf_e2ap_oCU_UP = -1; /* OCUUP_PF_Container */ -static int hf_e2ap_cellResourceReportList = -1; /* SEQUENCE_SIZE_1_maxCellingNBDU_OF_CellResourceReportListItem */ -static int hf_e2ap_cellResourceReportList_item = -1; /* CellResourceReportListItem */ -static int hf_e2ap_dl_TotalofAvailablePRBs = -1; /* INTEGER_0_273 */ -static int hf_e2ap_ul_TotalofAvailablePRBs = -1; /* INTEGER_0_273 */ -static int hf_e2ap_servedPlmnPerCellList = -1; /* SEQUENCE_SIZE_1_maxPLMN_OF_ServedPlmnPerCellListItem */ -static int hf_e2ap_servedPlmnPerCellList_item = -1; /* ServedPlmnPerCellListItem */ -static int hf_e2ap_du_PM_5GC = -1; /* FGC_DU_PM_Container */ -static int hf_e2ap_du_PM_EPC = -1; /* EPC_DU_PM_Container */ -static int hf_e2ap_slicePerPlmnPerCellList = -1; /* SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SlicePerPlmnPerCellListItem */ -static int hf_e2ap_slicePerPlmnPerCellList_item = -1; /* SlicePerPlmnPerCellListItem */ -static int hf_e2ap_fQIPERSlicesPerPlmnPerCellList = -1; /* SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnPerCellListItem */ -static int hf_e2ap_fQIPERSlicesPerPlmnPerCellList_item = -1; /* FQIPERSlicesPerPlmnPerCellListItem */ -static int hf_e2ap_dl_PRBUsage = -1; /* INTEGER_0_273 */ -static int hf_e2ap_ul_PRBUsage = -1; /* INTEGER_0_273 */ -static int hf_e2ap_perQCIReportList = -1; /* SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItem */ -static int hf_e2ap_perQCIReportList_item = -1; /* PerQCIReportListItem */ -static int hf_e2ap_dl_PRBUsage_01 = -1; /* INTEGER_0_100 */ -static int hf_e2ap_ul_PRBUsage_01 = -1; /* INTEGER_0_100 */ -static int hf_e2ap_gNB_CU_CP_Name = -1; /* GNB_CU_CP_Name */ -static int hf_e2ap_cu_CP_Resource_Status = -1; /* T_cu_CP_Resource_Status */ -static int hf_e2ap_numberOfActive_UEs = -1; /* INTEGER_1_65536_ */ -static int hf_e2ap_gNB_CU_UP_Name = -1; /* GNB_CU_UP_Name */ -static int hf_e2ap_pf_ContainerList = -1; /* SEQUENCE_SIZE_1_maxnoofContainerListItems_OF_PF_ContainerListItem */ -static int hf_e2ap_pf_ContainerList_item = -1; /* PF_ContainerListItem */ -static int hf_e2ap_interface_type = -1; /* NI_Type */ -static int hf_e2ap_o_CU_UP_PM_Container = -1; /* CUUPMeasurement_Container */ -static int hf_e2ap_plmnList = -1; /* SEQUENCE_SIZE_1_maxPLMN_OF_PlmnID_List */ -static int hf_e2ap_plmnList_item = -1; /* PlmnID_List */ -static int hf_e2ap_cu_UP_PM_5GC = -1; /* FGC_CUUP_PM_Format */ -static int hf_e2ap_cu_UP_PM_EPC = -1; /* EPC_CUUP_PM_Format */ -static int hf_e2ap_sliceToReportList = -1; /* SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SliceToReportListItem */ -static int hf_e2ap_sliceToReportList_item = -1; /* SliceToReportListItem */ -static int hf_e2ap_fQIPERSlicesPerPlmnList = -1; /* SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnListItem */ -static int hf_e2ap_fQIPERSlicesPerPlmnList_item = -1; /* FQIPERSlicesPerPlmnListItem */ -static int hf_e2ap_pDCPBytesDL = -1; /* INTEGER_0_10000000000_ */ -static int hf_e2ap_pDCPBytesUL = -1; /* INTEGER_0_10000000000_ */ -static int hf_e2ap_perQCIReportList_01 = -1; /* SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItemFormat */ -static int hf_e2ap_perQCIReportList_item_01 = -1; /* PerQCIReportListItemFormat */ +static int hf_e2ap_ran_ReportParameters_List = -1; /* SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_Report_RANParameter_Item */ +static int hf_e2ap_ran_ReportParameters_List_item = -1; /* Report_RANParameter_Item */ +static int hf_e2ap_ric_InsertStyle_List_02 = -1; /* SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Insert_Item */ +static int hf_e2ap_ric_InsertStyle_List_item_02 = -1; /* RANFunctionDefinition_Insert_Item */ +static int hf_e2ap_ric_InsertStyle_Name = -1; /* RIC_Style_Name */ +static int hf_e2ap_ric_ActionDefinitionFormat_Type = -1; /* RIC_Format_Type */ +static int hf_e2ap_ric_InsertIndication_List_02 = -1; /* SEQUENCE_SIZE_1_maxnoofInsertIndication_OF_RANFunctionDefinition_Insert_Indication_Item */ +static int hf_e2ap_ric_InsertIndication_List_item_02 = -1; /* RANFunctionDefinition_Insert_Indication_Item */ +static int hf_e2ap_ric_CallProcessIDFormat_Type = -1; /* RIC_Format_Type */ +static int hf_e2ap_ric_InsertIndication_Name = -1; /* RIC_InsertIndication_Name */ +static int hf_e2ap_ran_InsertIndicationParameters_List = -1; /* SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_InsertIndication_RANParameter_Item */ +static int hf_e2ap_ran_InsertIndicationParameters_List_item = -1; /* InsertIndication_RANParameter_Item */ +static int hf_e2ap_ric_ControlStyle_List = -1; /* SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Control_Item */ +static int hf_e2ap_ric_ControlStyle_List_item = -1; /* RANFunctionDefinition_Control_Item */ +static int hf_e2ap_ric_ControlStyle_Type = -1; /* RIC_Style_Type */ +static int hf_e2ap_ric_ControlStyle_Name = -1; /* RIC_Style_Name */ +static int hf_e2ap_ric_ControlAction_List = -1; /* SEQUENCE_SIZE_1_maxnoofControlAction_OF_RANFunctionDefinition_Control_Action_Item */ +static int hf_e2ap_ric_ControlAction_List_item = -1; /* RANFunctionDefinition_Control_Action_Item */ +static int hf_e2ap_ric_ControlHeaderFormat_Type = -1; /* RIC_Format_Type */ +static int hf_e2ap_ric_ControlMessageFormat_Type = -1; /* RIC_Format_Type */ +static int hf_e2ap_ric_ControlOutcomeFormat_Type = -1; /* RIC_Format_Type */ +static int hf_e2ap_ran_ControlOutcomeParameters_List = -1; /* SEQUENCE_SIZE_1_maxnoofRANOutcomeParameters_OF_ControlOutcome_RANParameter_Item */ +static int hf_e2ap_ran_ControlOutcomeParameters_List_item = -1; /* ControlOutcome_RANParameter_Item */ +static int hf_e2ap_ric_ControlAction_ID = -1; /* RIC_ControlAction_ID */ +static int hf_e2ap_ric_ControlAction_Name = -1; /* RIC_ControlAction_Name */ +static int hf_e2ap_ran_ControlActionParameters_List = -1; /* SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_ControlAction_RANParameter_Item */ +static int hf_e2ap_ran_ControlActionParameters_List_item = -1; /* ControlAction_RANParameter_Item */ +static int hf_e2ap_ric_PolicyStyle_List = -1; /* SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Policy_Item */ +static int hf_e2ap_ric_PolicyStyle_List_item = -1; /* RANFunctionDefinition_Policy_Item */ +static int hf_e2ap_ric_PolicyStyle_Type = -1; /* RIC_Style_Type */ +static int hf_e2ap_ric_PolicyStyle_Name = -1; /* RIC_Style_Name */ +static int hf_e2ap_ric_PolicyAction_List = -1; /* SEQUENCE_SIZE_1_maxnoofPolicyAction_OF_RANFunctionDefinition_Policy_Action_Item */ +static int hf_e2ap_ric_PolicyAction_List_item = -1; /* RANFunctionDefinition_Policy_Action_Item */ +static int hf_e2ap_ric_PolicyAction_Name = -1; /* RIC_ControlAction_Name */ +static int hf_e2ap_ran_PolicyActionParameters_List = -1; /* SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_PolicyAction_RANParameter_Item */ +static int hf_e2ap_ran_PolicyActionParameters_List_item = -1; /* PolicyAction_RANParameter_Item */ +static int hf_e2ap_ran_PolicyConditionParameters_List = -1; /* SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_PolicyCondition_RANParameter_Item */ +static int hf_e2ap_ran_PolicyConditionParameters_List_item = -1; /* PolicyCondition_RANParameter_Item */ +static int hf_e2ap_measName = -1; /* MeasurementTypeName */ +static int hf_e2ap_measID = -1; /* MeasurementTypeID */ +static int hf_e2ap_sST = -1; /* OCTET_STRING_SIZE_1 */ +static int hf_e2ap_sD = -1; /* OCTET_STRING_SIZE_3 */ +static int hf_e2ap_noLabel = -1; /* T_noLabel */ +static int hf_e2ap_plmnID = -1; /* PLMN_Identity */ +static int hf_e2ap_sliceID = -1; /* SNSSAI */ +static int hf_e2ap_fiveQI = -1; /* FiveQI */ +static int hf_e2ap_qFI = -1; /* QosFlowIdentifier */ +static int hf_e2ap_qCI = -1; /* QCI */ +static int hf_e2ap_qCImax = -1; /* QCI */ +static int hf_e2ap_qCImin = -1; /* QCI */ +static int hf_e2ap_aRPmax = -1; /* INTEGER_1_15_ */ +static int hf_e2ap_aRPmin = -1; /* INTEGER_1_15_ */ +static int hf_e2ap_bitrateRange = -1; /* INTEGER_1_65535_ */ +static int hf_e2ap_layerMU_MIMO = -1; /* INTEGER_1_65535_ */ +static int hf_e2ap_sUM = -1; /* T_sUM */ +static int hf_e2ap_distBinX = -1; /* INTEGER_1_65535_ */ +static int hf_e2ap_distBinY = -1; /* INTEGER_1_65535_ */ +static int hf_e2ap_distBinZ = -1; /* INTEGER_1_65535_ */ +static int hf_e2ap_preLabelOverride = -1; /* T_preLabelOverride */ +static int hf_e2ap_startEndInd = -1; /* T_startEndInd */ +static int hf_e2ap_min = -1; /* T_min */ +static int hf_e2ap_max = -1; /* T_max */ +static int hf_e2ap_avg = -1; /* T_avg */ +static int hf_e2ap_testType = -1; /* TestCond_Type */ +static int hf_e2ap_testExpr = -1; /* TestCond_Expression */ +static int hf_e2ap_testValue = -1; /* TestCond_Value */ +static int hf_e2ap_gBR = -1; /* T_gBR */ +static int hf_e2ap_aMBR = -1; /* T_aMBR */ +static int hf_e2ap_isStat = -1; /* T_isStat */ +static int hf_e2ap_isCatM = -1; /* T_isCatM */ +static int hf_e2ap_rSRP = -1; /* T_rSRP */ +static int hf_e2ap_rSRQ = -1; /* T_rSRQ */ +static int hf_e2ap_ul_rSRP = -1; /* T_ul_rSRP */ +static int hf_e2ap_cQI = -1; /* T_cQI */ +static int hf_e2ap_fiveQI_01 = -1; /* T_fiveQI */ +static int hf_e2ap_qCI_01 = -1; /* T_qCI */ +static int hf_e2ap_sNSSAI = -1; /* T_sNSSAI */ +static int hf_e2ap_valueEnum = -1; /* INTEGER */ +static int hf_e2ap_valueBool = -1; /* BOOLEAN */ +static int hf_e2ap_valuePrtS = -1; /* PrintableString */ +static int hf_e2ap_MeasurementInfoList_item = -1; /* MeasurementInfoItem */ +static int hf_e2ap_measType = -1; /* MeasurementType */ +static int hf_e2ap_labelInfoList = -1; /* LabelInfoList */ +static int hf_e2ap_LabelInfoList_item = -1; /* LabelInfoItem */ +static int hf_e2ap_measLabel = -1; /* MeasurementLabel */ +static int hf_e2ap_MeasurementData_item = -1; /* MeasurementDataItem */ +static int hf_e2ap_measRecord = -1; /* MeasurementRecord */ +static int hf_e2ap_incompleteFlag = -1; /* T_incompleteFlag */ +static int hf_e2ap_MeasurementRecord_item = -1; /* MeasurementRecordItem */ +static int hf_e2ap_integer = -1; /* INTEGER_0_4294967295 */ +static int hf_e2ap_real = -1; /* REAL */ +static int hf_e2ap_noValue = -1; /* NULL */ +static int hf_e2ap_MeasurementInfo_Action_List_item = -1; /* MeasurementInfo_Action_Item */ +static int hf_e2ap_MeasurementCondList_item = -1; /* MeasurementCondItem */ +static int hf_e2ap_matchingCond = -1; /* MatchingCondList */ +static int hf_e2ap_MeasurementCondUEidList_item = -1; /* MeasurementCondUEidItem */ +static int hf_e2ap_matchingUEidList = -1; /* MatchingUEidList */ +static int hf_e2ap_MatchingCondList_item = -1; /* MatchingCondItem */ +static int hf_e2ap_testCondInfo = -1; /* TestCondInfo */ +static int hf_e2ap_MatchingUEidList_item = -1; /* MatchingUEidItem */ +static int hf_e2ap_MatchingUeCondPerSubList_item = -1; /* MatchingUeCondPerSubItem */ +static int hf_e2ap_MatchingUEidPerSubList_item = -1; /* MatchingUEidPerSubItem */ +static int hf_e2ap_UEMeasurementReportList_item = -1; /* UEMeasurementReportItem */ +static int hf_e2ap_measReport = -1; /* E2SM_KPM_IndicationMessage_Format1 */ +static int hf_e2ap_eventDefinition_formats = -1; /* T_eventDefinition_formats */ +static int hf_e2ap_eventDefinition_Format1 = -1; /* E2SM_KPM_EventTriggerDefinition_Format1 */ +static int hf_e2ap_reportingPeriod = -1; /* INTEGER_1_4294967295 */ +static int hf_e2ap_actionDefinition_formats = -1; /* T_actionDefinition_formats */ +static int hf_e2ap_actionDefinition_Format1_01 = -1; /* E2SM_KPM_ActionDefinition_Format1 */ +static int hf_e2ap_actionDefinition_Format2_01 = -1; /* E2SM_KPM_ActionDefinition_Format2 */ +static int hf_e2ap_actionDefinition_Format3_01 = -1; /* E2SM_KPM_ActionDefinition_Format3 */ +static int hf_e2ap_actionDefinition_Format4_01 = -1; /* E2SM_KPM_ActionDefinition_Format4 */ +static int hf_e2ap_actionDefinition_Format5 = -1; /* E2SM_KPM_ActionDefinition_Format5 */ +static int hf_e2ap_measInfoList = -1; /* MeasurementInfoList */ +static int hf_e2ap_granulPeriod = -1; /* GranularityPeriod */ +static int hf_e2ap_subscriptInfo = -1; /* E2SM_KPM_ActionDefinition_Format1 */ +static int hf_e2ap_measCondList = -1; /* MeasurementCondList */ +static int hf_e2ap_matchingUeCondList = -1; /* MatchingUeCondPerSubList */ +static int hf_e2ap_subscriptionInfo = -1; /* E2SM_KPM_ActionDefinition_Format1 */ +static int hf_e2ap_matchingUEidList_01 = -1; /* MatchingUEidPerSubList */ +static int hf_e2ap_indicationHeader_formats = -1; /* T_indicationHeader_formats */ +static int hf_e2ap_indicationHeader_Format1_01 = -1; /* E2SM_KPM_IndicationHeader_Format1 */ +static int hf_e2ap_colletStartTime = -1; /* TimeStamp */ +static int hf_e2ap_fileFormatversion = -1; /* PrintableString_SIZE_0_15_ */ +static int hf_e2ap_senderName = -1; /* PrintableString_SIZE_0_400_ */ +static int hf_e2ap_senderType = -1; /* PrintableString_SIZE_0_8_ */ +static int hf_e2ap_vendorName = -1; /* PrintableString_SIZE_0_32_ */ +static int hf_e2ap_indicationMessage_formats = -1; /* T_indicationMessage_formats */ +static int hf_e2ap_indicationMessage_Format1_01 = -1; /* E2SM_KPM_IndicationMessage_Format1 */ +static int hf_e2ap_indicationMessage_Format2_01 = -1; /* E2SM_KPM_IndicationMessage_Format2 */ +static int hf_e2ap_indicationMessage_Format3_01 = -1; /* E2SM_KPM_IndicationMessage_Format3 */ +static int hf_e2ap_measData = -1; /* MeasurementData */ +static int hf_e2ap_measCondUEidList = -1; /* MeasurementCondUEidList */ +static int hf_e2ap_ueMeasReportList = -1; /* UEMeasurementReportList */ +static int hf_e2ap_ric_EventTriggerStyle_List_01 = -1; /* SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_EventTriggerStyle_Item */ +static int hf_e2ap_ric_EventTriggerStyle_List_item_01 = -1; /* RIC_EventTriggerStyle_Item */ +static int hf_e2ap_ric_ReportStyle_List_01 = -1; /* SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_ReportStyle_Item */ +static int hf_e2ap_ric_ReportStyle_List_item_01 = -1; /* RIC_ReportStyle_Item */ +static int hf_e2ap_ric_ActionFormat_Type = -1; /* RIC_Format_Type */ +static int hf_e2ap_measInfo_Action_List = -1; /* MeasurementInfo_Action_List */ /*--- End of included file: packet-e2ap-hf.c ---*/ #line 47 "./asn1/e2ap/packet-e2ap-template.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; + + + /* 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; + /*--- Included file: packet-e2ap-ett.c ---*/ #line 1 "./asn1/e2ap/packet-e2ap-ett.c" @@ -343,6 +851,16 @@ static gint ett_e2ap_Cause = -1; static gint ett_e2ap_CriticalityDiagnostics = -1; static gint ett_e2ap_CriticalityDiagnostics_IE_List = -1; static gint ett_e2ap_CriticalityDiagnostics_IE_Item = -1; +static gint ett_e2ap_E2nodeComponentConfiguration = -1; +static gint ett_e2ap_E2nodeComponentConfigurationAck = -1; +static gint ett_e2ap_E2nodeComponentID = -1; +static gint ett_e2ap_E2nodeComponentInterfaceE1 = -1; +static gint ett_e2ap_E2nodeComponentInterfaceF1 = -1; +static gint ett_e2ap_E2nodeComponentInterfaceNG = -1; +static gint ett_e2ap_E2nodeComponentInterfaceS1 = -1; +static gint ett_e2ap_E2nodeComponentInterfaceX2 = -1; +static gint ett_e2ap_E2nodeComponentInterfaceXn = -1; +static gint ett_e2ap_E2nodeComponentInterfaceW1 = -1; static gint ett_e2ap_ENB_ID = -1; static gint ett_e2ap_ENB_ID_Choice = -1; static gint ett_e2ap_ENGNB_ID = -1; @@ -355,10 +873,12 @@ static gint ett_e2ap_GlobalENB_ID = -1; static gint ett_e2ap_GlobalenGNB_ID = -1; static gint ett_e2ap_GlobalgNB_ID = -1; static gint ett_e2ap_GlobalngeNB_ID = -1; +static gint ett_e2ap_GlobalNG_RANNode_ID = -1; static gint ett_e2ap_GlobalRIC_ID = -1; static gint ett_e2ap_GNB_ID_Choice = -1; static gint ett_e2ap_RICrequestID = -1; static gint ett_e2ap_RICsubsequentAction = -1; +static gint ett_e2ap_TNLinformation = -1; static gint ett_e2ap_RICsubscriptionRequest = -1; static gint ett_e2ap_RICsubscriptionDetails = -1; static gint ett_e2ap_RICactions_ToBeSetup_List = -1; @@ -372,6 +892,9 @@ static gint ett_e2ap_RICsubscriptionFailure = -1; static gint ett_e2ap_RICsubscriptionDeleteRequest = -1; static gint ett_e2ap_RICsubscriptionDeleteResponse = -1; static gint ett_e2ap_RICsubscriptionDeleteFailure = -1; +static gint ett_e2ap_RICsubscriptionDeleteRequired = -1; +static gint ett_e2ap_RICsubscription_List_withCause = -1; +static gint ett_e2ap_RICsubscription_withCause_Item = -1; static gint ett_e2ap_RICindication = -1; static gint ett_e2ap_RICcontrolRequest = -1; static gint ett_e2ap_RICcontrolAcknowledge = -1; @@ -380,6 +903,32 @@ static gint ett_e2ap_ErrorIndication = -1; static gint ett_e2ap_E2setupRequest = -1; static gint ett_e2ap_E2setupResponse = -1; static gint ett_e2ap_E2setupFailure = -1; +static gint ett_e2ap_E2connectionUpdate = -1; +static gint ett_e2ap_E2connectionUpdate_List = -1; +static gint ett_e2ap_E2connectionUpdate_Item = -1; +static gint ett_e2ap_E2connectionUpdateRemove_List = -1; +static gint ett_e2ap_E2connectionUpdateRemove_Item = -1; +static gint ett_e2ap_E2connectionUpdateAcknowledge = -1; +static gint ett_e2ap_E2connectionSetupFailed_List = -1; +static gint ett_e2ap_E2connectionSetupFailed_Item = -1; +static gint ett_e2ap_E2connectionUpdateFailure = -1; +static gint ett_e2ap_E2nodeConfigurationUpdate = -1; +static gint ett_e2ap_E2nodeComponentConfigAddition_List = -1; +static gint ett_e2ap_E2nodeComponentConfigAddition_Item = -1; +static gint ett_e2ap_E2nodeComponentConfigUpdate_List = -1; +static gint ett_e2ap_E2nodeComponentConfigUpdate_Item = -1; +static gint ett_e2ap_E2nodeComponentConfigRemoval_List = -1; +static gint ett_e2ap_E2nodeComponentConfigRemoval_Item = -1; +static gint ett_e2ap_E2nodeTNLassociationRemoval_List = -1; +static gint ett_e2ap_E2nodeTNLassociationRemoval_Item = -1; +static gint ett_e2ap_E2nodeConfigurationUpdateAcknowledge = -1; +static gint ett_e2ap_E2nodeComponentConfigAdditionAck_List = -1; +static gint ett_e2ap_E2nodeComponentConfigAdditionAck_Item = -1; +static gint ett_e2ap_E2nodeComponentConfigUpdateAck_List = -1; +static gint ett_e2ap_E2nodeComponentConfigUpdateAck_Item = -1; +static gint ett_e2ap_E2nodeComponentConfigRemovalAck_List = -1; +static gint ett_e2ap_E2nodeComponentConfigRemovalAck_Item = -1; +static gint ett_e2ap_E2nodeConfigurationUpdateFailure = -1; static gint ett_e2ap_ResetRequest = -1; static gint ett_e2ap_ResetResponse = -1; static gint ett_e2ap_RICserviceUpdate = -1; @@ -396,66 +945,297 @@ static gint ett_e2ap_E2AP_PDU = -1; static gint ett_e2ap_InitiatingMessage = -1; static gint ett_e2ap_SuccessfulOutcome = -1; static gint ett_e2ap_UnsuccessfulOutcome = -1; -static gint ett_e2ap_GlobalKPMnode_ID = -1; -static gint ett_e2ap_GlobalKPMnode_gNB_ID = -1; -static gint ett_e2ap_GlobalKPMnode_en_gNB_ID = -1; -static gint ett_e2ap_GlobalKPMnode_ng_eNB_ID = -1; -static gint ett_e2ap_GlobalKPMnode_eNB_ID = -1; -static gint ett_e2ap_NRCGI = -1; -static gint ett_e2ap_SNSSAI = -1; -static gint ett_e2ap_E2SM_KPM_EventTriggerDefinition = -1; -static gint ett_e2ap_E2SM_KPM_EventTriggerDefinition_Format1 = -1; -static gint ett_e2ap_SEQUENCE_SIZE_1_maxofMessageProtocolTests_OF_Trigger_ConditionIE_Item = -1; -static gint ett_e2ap_E2SM_KPM_ActionDefinition = -1; -static gint ett_e2ap_E2SM_KPM_IndicationHeader = -1; -static gint ett_e2ap_E2SM_KPM_IndicationHeader_Format1 = -1; -static gint ett_e2ap_E2SM_KPM_IndicationMessage_Format1 = -1; -static gint ett_e2ap_SEQUENCE_SIZE_1_maxCellingNBDU_OF_PM_Containers_List = -1; -static gint ett_e2ap_PM_Containers_List = -1; -static gint ett_e2ap_E2SM_KPM_RANfunction_Description = -1; -static gint ett_e2ap_T_e2SM_KPM_RANfunction_Item = -1; -static gint ett_e2ap_SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_EventTriggerStyle_List = -1; -static gint ett_e2ap_SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_ReportStyle_List = -1; -static gint ett_e2ap_Trigger_ConditionIE_Item = -1; +static gint ett_e2ap_CGI = -1; +static gint ett_e2ap_InterfaceIdentifier = -1; +static gint ett_e2ap_InterfaceID_NG = -1; +static gint ett_e2ap_InterfaceID_Xn = -1; +static gint ett_e2ap_InterfaceID_F1 = -1; +static gint ett_e2ap_InterfaceID_E1 = -1; +static gint ett_e2ap_InterfaceID_S1 = -1; +static gint ett_e2ap_InterfaceID_X2 = -1; +static gint ett_e2ap_T_nodeType = -1; +static gint ett_e2ap_InterfaceID_W1 = -1; +static gint ett_e2ap_Interface_MessageID = -1; static gint ett_e2ap_RANfunction_Name = -1; -static gint ett_e2ap_RIC_EventTriggerStyle_List = -1; -static gint ett_e2ap_RIC_ReportStyle_List = -1; -static gint ett_e2ap_PF_Container = -1; -static gint ett_e2ap_ODU_PF_Container = -1; -static gint ett_e2ap_SEQUENCE_SIZE_1_maxCellingNBDU_OF_CellResourceReportListItem = -1; -static gint ett_e2ap_CellResourceReportListItem = -1; -static gint ett_e2ap_SEQUENCE_SIZE_1_maxPLMN_OF_ServedPlmnPerCellListItem = -1; -static gint ett_e2ap_ServedPlmnPerCellListItem = -1; -static gint ett_e2ap_FGC_DU_PM_Container = -1; -static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SlicePerPlmnPerCellListItem = -1; -static gint ett_e2ap_SlicePerPlmnPerCellListItem = -1; -static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnPerCellListItem = -1; -static gint ett_e2ap_FQIPERSlicesPerPlmnPerCellListItem = -1; -static gint ett_e2ap_EPC_DU_PM_Container = -1; -static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItem = -1; -static gint ett_e2ap_PerQCIReportListItem = -1; -static gint ett_e2ap_OCUCP_PF_Container = -1; -static gint ett_e2ap_T_cu_CP_Resource_Status = -1; -static gint ett_e2ap_OCUUP_PF_Container = -1; -static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofContainerListItems_OF_PF_ContainerListItem = -1; -static gint ett_e2ap_PF_ContainerListItem = -1; -static gint ett_e2ap_CUUPMeasurement_Container = -1; -static gint ett_e2ap_SEQUENCE_SIZE_1_maxPLMN_OF_PlmnID_List = -1; -static gint ett_e2ap_PlmnID_List = -1; -static gint ett_e2ap_FGC_CUUP_PM_Format = -1; -static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SliceToReportListItem = -1; -static gint ett_e2ap_SliceToReportListItem = -1; -static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnListItem = -1; -static gint ett_e2ap_FQIPERSlicesPerPlmnListItem = -1; -static gint ett_e2ap_EPC_CUUP_PM_Format = -1; -static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItemFormat = -1; -static gint ett_e2ap_PerQCIReportListItemFormat = -1; +static gint ett_e2ap_RRC_MessageID = -1; +static gint ett_e2ap_T_rrcType = -1; +static gint ett_e2ap_ServingCell_ARFCN = -1; +static gint ett_e2ap_ServingCell_PCI = -1; +static gint ett_e2ap_UEID = -1; +static gint ett_e2ap_UEID_GNB = -1; +static gint ett_e2ap_UEID_GNB_CU_CP_E1AP_ID_List = -1; +static gint ett_e2ap_UEID_GNB_CU_CP_E1AP_ID_Item = -1; +static gint ett_e2ap_UEID_GNB_CU_F1AP_ID_List = -1; +static gint ett_e2ap_UEID_GNB_CU_CP_F1AP_ID_Item = -1; +static gint ett_e2ap_UEID_GNB_DU = -1; +static gint ett_e2ap_UEID_GNB_CU_UP = -1; +static gint ett_e2ap_UEID_NG_ENB = -1; +static gint ett_e2ap_UEID_NG_ENB_DU = -1; +static gint ett_e2ap_UEID_EN_GNB = -1; +static gint ett_e2ap_UEID_ENB = -1; +static gint ett_e2ap_GUMMEI = -1; +static gint ett_e2ap_EUTRA_CGI = -1; +static gint ett_e2ap_GlobalGNB_ID = -1; +static gint ett_e2ap_GlobalNgENB_ID = -1; +static gint ett_e2ap_GNB_ID = -1; +static gint ett_e2ap_GUAMI = -1; +static gint ett_e2ap_NgENB_ID = -1; +static gint ett_e2ap_GlobalNGRANNodeID = -1; +static gint ett_e2ap_NR_ARFCN = -1; +static gint ett_e2ap_NRFrequencyBand_List = -1; +static gint ett_e2ap_NRFrequencyBandItem = -1; +static gint ett_e2ap_NRFrequencyInfo = -1; +static gint ett_e2ap_SupportedSULBandList = -1; +static gint ett_e2ap_SupportedSULFreqBandItem = -1; +static gint ett_e2ap_NR_CGI = -1; +static gint ett_e2ap_NeighborCell_List = -1; +static gint ett_e2ap_NeighborCell_Item = -1; +static gint ett_e2ap_NeighborCell_Item_Choice_NR = -1; +static gint ett_e2ap_NeighborCell_Item_Choice_E_UTRA = -1; +static gint ett_e2ap_NeighborRelation_Info = -1; +static gint ett_e2ap_EventTrigger_Cell_Info = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofCellInfo_OF_EventTrigger_Cell_Info_Item = -1; +static gint ett_e2ap_EventTrigger_Cell_Info_Item = -1; +static gint ett_e2ap_T_cellType = -1; +static gint ett_e2ap_EventTrigger_Cell_Info_Item_Choice_Individual = -1; +static gint ett_e2ap_EventTrigger_Cell_Info_Item_Choice_Group = -1; +static gint ett_e2ap_EventTrigger_UE_Info = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofUEInfo_OF_EventTrigger_UE_Info_Item = -1; +static gint ett_e2ap_EventTrigger_UE_Info_Item = -1; +static gint ett_e2ap_T_ueType = -1; +static gint ett_e2ap_EventTrigger_UE_Info_Item_Choice_Individual = -1; +static gint ett_e2ap_EventTrigger_UE_Info_Item_Choice_Group = -1; +static gint ett_e2ap_EventTrigger_UEevent_Info = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofUEeventInfo_OF_EventTrigger_UEevent_Info_Item = -1; +static gint ett_e2ap_EventTrigger_UEevent_Info_Item = -1; +static gint ett_e2ap_RANParameter_Definition = -1; +static gint ett_e2ap_RANParameter_Definition_Choice = -1; +static gint ett_e2ap_RANParameter_Definition_Choice_LIST = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofItemsinList_OF_RANParameter_Definition_Choice_LIST_Item = -1; +static gint ett_e2ap_RANParameter_Definition_Choice_LIST_Item = -1; +static gint ett_e2ap_RANParameter_Definition_Choice_STRUCTURE = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofParametersinStructure_OF_RANParameter_Definition_Choice_STRUCTURE_Item = -1; +static gint ett_e2ap_RANParameter_Definition_Choice_STRUCTURE_Item = -1; +static gint ett_e2ap_RANParameter_Value = -1; +static gint ett_e2ap_RANParameter_ValueType = -1; +static gint ett_e2ap_RANParameter_ValueType_Choice_ElementTrue = -1; +static gint ett_e2ap_RANParameter_ValueType_Choice_ElementFalse = -1; +static gint ett_e2ap_RANParameter_ValueType_Choice_Structure = -1; +static gint ett_e2ap_RANParameter_ValueType_Choice_List = -1; +static gint ett_e2ap_RANParameter_STRUCTURE = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofParametersinStructure_OF_RANParameter_STRUCTURE_Item = -1; +static gint ett_e2ap_RANParameter_STRUCTURE_Item = -1; +static gint ett_e2ap_RANParameter_LIST = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofItemsinList_OF_RANParameter_STRUCTURE = -1; +static gint ett_e2ap_RANParameter_Testing = -1; +static gint ett_e2ap_RANParameter_TestingCondition = -1; +static gint ett_e2ap_RANParameter_Testing_Item = -1; +static gint ett_e2ap_T_ranParameter_Type = -1; +static gint ett_e2ap_RANParameter_Testing_Item_Choice_List = -1; +static gint ett_e2ap_RANParameter_Testing_Item_Choice_Structure = -1; +static gint ett_e2ap_RANParameter_Testing_Item_Choice_ElementTrue = -1; +static gint ett_e2ap_RANParameter_Testing_Item_Choice_ElementFalse = -1; +static gint ett_e2ap_RANParameter_Testing_LIST = -1; +static gint ett_e2ap_RANParameter_Testing_STRUCTURE = -1; +static gint ett_e2ap_RIC_PolicyAction = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_RIC_PolicyAction_RANParameter_Item = -1; +static gint ett_e2ap_RIC_PolicyAction_RANParameter_Item = -1; +static gint ett_e2ap_E2SM_RC_EventTrigger = -1; +static gint ett_e2ap_T_ric_eventTrigger_formats = -1; +static gint ett_e2ap_E2SM_RC_EventTrigger_Format1 = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofMessages_OF_E2SM_RC_EventTrigger_Format1_Item = -1; +static gint ett_e2ap_E2SM_RC_EventTrigger_Format1_Item = -1; +static gint ett_e2ap_MessageType_Choice = -1; +static gint ett_e2ap_MessageType_Choice_NI = -1; +static gint ett_e2ap_MessageType_Choice_RRC = -1; +static gint ett_e2ap_E2SM_RC_EventTrigger_Format2 = -1; +static gint ett_e2ap_E2SM_RC_EventTrigger_Format3 = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofE2InfoChanges_OF_E2SM_RC_EventTrigger_Format3_Item = -1; +static gint ett_e2ap_E2SM_RC_EventTrigger_Format3_Item = -1; +static gint ett_e2ap_E2SM_RC_EventTrigger_Format4 = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofUEInfoChanges_OF_E2SM_RC_EventTrigger_Format4_Item = -1; +static gint ett_e2ap_E2SM_RC_EventTrigger_Format4_Item = -1; +static gint ett_e2ap_TriggerType_Choice = -1; +static gint ett_e2ap_TriggerType_Choice_RRCstate = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofRRCstate_OF_TriggerType_Choice_RRCstate_Item = -1; +static gint ett_e2ap_TriggerType_Choice_RRCstate_Item = -1; +static gint ett_e2ap_TriggerType_Choice_UEID = -1; +static gint ett_e2ap_TriggerType_Choice_L2state = -1; +static gint ett_e2ap_E2SM_RC_EventTrigger_Format5 = -1; +static gint ett_e2ap_E2SM_RC_ActionDefinition = -1; +static gint ett_e2ap_T_ric_actionDefinition_formats = -1; +static gint ett_e2ap_E2SM_RC_ActionDefinition_Format1 = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofParametersToReport_OF_E2SM_RC_ActionDefinition_Format1_Item = -1; +static gint ett_e2ap_E2SM_RC_ActionDefinition_Format1_Item = -1; +static gint ett_e2ap_E2SM_RC_ActionDefinition_Format2 = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofPolicyConditions_OF_E2SM_RC_ActionDefinition_Format2_Item = -1; +static gint ett_e2ap_E2SM_RC_ActionDefinition_Format2_Item = -1; +static gint ett_e2ap_E2SM_RC_ActionDefinition_Format3 = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_ActionDefinition_Format3_Item = -1; +static gint ett_e2ap_E2SM_RC_ActionDefinition_Format3_Item = -1; +static gint ett_e2ap_E2SM_RC_ActionDefinition_Format4 = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_E2SM_RC_ActionDefinition_Format4_Style_Item = -1; +static gint ett_e2ap_E2SM_RC_ActionDefinition_Format4_Style_Item = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofInsertIndicationActions_OF_E2SM_RC_ActionDefinition_Format4_Indication_Item = -1; +static gint ett_e2ap_E2SM_RC_ActionDefinition_Format4_Indication_Item = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_ActionDefinition_Format4_RANP_Item = -1; +static gint ett_e2ap_E2SM_RC_ActionDefinition_Format4_RANP_Item = -1; +static gint ett_e2ap_E2SM_RC_IndicationHeader = -1; +static gint ett_e2ap_T_ric_indicationHeader_formats = -1; +static gint ett_e2ap_E2SM_RC_IndicationHeader_Format1 = -1; +static gint ett_e2ap_E2SM_RC_IndicationHeader_Format2 = -1; +static gint ett_e2ap_E2SM_RC_IndicationHeader_Format3 = -1; +static gint ett_e2ap_E2SM_RC_IndicationMessage = -1; +static gint ett_e2ap_T_ric_indicationMessage_formats = -1; +static gint ett_e2ap_E2SM_RC_IndicationMessage_Format1 = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format1_Item = -1; +static gint ett_e2ap_E2SM_RC_IndicationMessage_Format1_Item = -1; +static gint ett_e2ap_E2SM_RC_IndicationMessage_Format2 = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofUEID_OF_E2SM_RC_IndicationMessage_Format2_Item = -1; +static gint ett_e2ap_E2SM_RC_IndicationMessage_Format2_Item = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format2_RANParameter_Item = -1; +static gint ett_e2ap_E2SM_RC_IndicationMessage_Format2_RANParameter_Item = -1; +static gint ett_e2ap_E2SM_RC_IndicationMessage_Format3 = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofCellID_OF_E2SM_RC_IndicationMessage_Format3_Item = -1; +static gint ett_e2ap_E2SM_RC_IndicationMessage_Format3_Item = -1; +static gint ett_e2ap_E2SM_RC_IndicationMessage_Format4 = -1; +static gint ett_e2ap_SEQUENCE_SIZE_0_maxnoofUEID_OF_E2SM_RC_IndicationMessage_Format4_ItemUE = -1; +static gint ett_e2ap_SEQUENCE_SIZE_0_maxnoofCellID_OF_E2SM_RC_IndicationMessage_Format4_ItemCell = -1; +static gint ett_e2ap_E2SM_RC_IndicationMessage_Format4_ItemUE = -1; +static gint ett_e2ap_E2SM_RC_IndicationMessage_Format4_ItemCell = -1; +static gint ett_e2ap_E2SM_RC_IndicationMessage_Format5 = -1; +static gint ett_e2ap_SEQUENCE_SIZE_0_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format5_Item = -1; +static gint ett_e2ap_E2SM_RC_IndicationMessage_Format5_Item = -1; +static gint ett_e2ap_E2SM_RC_IndicationMessage_Format6 = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_E2SM_RC_IndicationMessage_Format6_Style_Item = -1; +static gint ett_e2ap_E2SM_RC_IndicationMessage_Format6_Style_Item = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofInsertIndicationActions_OF_E2SM_RC_IndicationMessage_Format6_Indication_Item = -1; +static gint ett_e2ap_E2SM_RC_IndicationMessage_Format6_Indication_Item = -1; +static gint ett_e2ap_SEQUENCE_SIZE_0_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format6_RANP_Item = -1; +static gint ett_e2ap_E2SM_RC_IndicationMessage_Format6_RANP_Item = -1; +static gint ett_e2ap_E2SM_RC_CallProcessID = -1; +static gint ett_e2ap_T_ric_callProcessID_formats = -1; +static gint ett_e2ap_E2SM_RC_CallProcessID_Format1 = -1; +static gint ett_e2ap_E2SM_RC_RANFunctionDefinition = -1; +static gint ett_e2ap_RANFunctionDefinition_EventTrigger = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_EventTrigger_Style_Item = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_L2Parameters_RANParameter_Item = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofCallProcessTypes_OF_RANFunctionDefinition_EventTrigger_CallProcess_Item = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_UEIdentification_RANParameter_Item = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_CellIdentification_RANParameter_Item = -1; +static gint ett_e2ap_RANFunctionDefinition_EventTrigger_Style_Item = -1; +static gint ett_e2ap_L2Parameters_RANParameter_Item = -1; +static gint ett_e2ap_UEIdentification_RANParameter_Item = -1; +static gint ett_e2ap_CellIdentification_RANParameter_Item = -1; +static gint ett_e2ap_RANFunctionDefinition_EventTrigger_CallProcess_Item = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofCallProcessBreakpoints_OF_RANFunctionDefinition_EventTrigger_Breakpoint_Item = -1; +static gint ett_e2ap_RANFunctionDefinition_EventTrigger_Breakpoint_Item = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_CallProcessBreakpoint_RANParameter_Item = -1; +static gint ett_e2ap_CallProcessBreakpoint_RANParameter_Item = -1; +static gint ett_e2ap_RANFunctionDefinition_Report = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Report_Item = -1; +static gint ett_e2ap_RANFunctionDefinition_Report_Item = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_Report_RANParameter_Item = -1; +static gint ett_e2ap_Report_RANParameter_Item = -1; +static gint ett_e2ap_RANFunctionDefinition_Insert = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Insert_Item = -1; +static gint ett_e2ap_RANFunctionDefinition_Insert_Item = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofInsertIndication_OF_RANFunctionDefinition_Insert_Indication_Item = -1; +static gint ett_e2ap_RANFunctionDefinition_Insert_Indication_Item = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_InsertIndication_RANParameter_Item = -1; +static gint ett_e2ap_InsertIndication_RANParameter_Item = -1; +static gint ett_e2ap_RANFunctionDefinition_Control = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Control_Item = -1; +static gint ett_e2ap_RANFunctionDefinition_Control_Item = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofControlAction_OF_RANFunctionDefinition_Control_Action_Item = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofRANOutcomeParameters_OF_ControlOutcome_RANParameter_Item = -1; +static gint ett_e2ap_ControlOutcome_RANParameter_Item = -1; +static gint ett_e2ap_RANFunctionDefinition_Control_Action_Item = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_ControlAction_RANParameter_Item = -1; +static gint ett_e2ap_ControlAction_RANParameter_Item = -1; +static gint ett_e2ap_RANFunctionDefinition_Policy = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Policy_Item = -1; +static gint ett_e2ap_RANFunctionDefinition_Policy_Item = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofPolicyAction_OF_RANFunctionDefinition_Policy_Action_Item = -1; +static gint ett_e2ap_RANFunctionDefinition_Policy_Action_Item = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_PolicyAction_RANParameter_Item = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_PolicyCondition_RANParameter_Item = -1; +static gint ett_e2ap_PolicyAction_RANParameter_Item = -1; +static gint ett_e2ap_PolicyCondition_RANParameter_Item = -1; +static gint ett_e2ap_MeasurementType = -1; +static gint ett_e2ap_SNSSAI = -1; +static gint ett_e2ap_MeasurementLabel = -1; +static gint ett_e2ap_TestCondInfo = -1; +static gint ett_e2ap_TestCond_Type = -1; +static gint ett_e2ap_TestCond_Value = -1; +static gint ett_e2ap_MeasurementInfoList = -1; +static gint ett_e2ap_MeasurementInfoItem = -1; +static gint ett_e2ap_LabelInfoList = -1; +static gint ett_e2ap_LabelInfoItem = -1; +static gint ett_e2ap_MeasurementData = -1; +static gint ett_e2ap_MeasurementDataItem = -1; +static gint ett_e2ap_MeasurementRecord = -1; +static gint ett_e2ap_MeasurementRecordItem = -1; +static gint ett_e2ap_MeasurementInfo_Action_List = -1; +static gint ett_e2ap_MeasurementInfo_Action_Item = -1; +static gint ett_e2ap_MeasurementCondList = -1; +static gint ett_e2ap_MeasurementCondItem = -1; +static gint ett_e2ap_MeasurementCondUEidList = -1; +static gint ett_e2ap_MeasurementCondUEidItem = -1; +static gint ett_e2ap_MatchingCondList = -1; +static gint ett_e2ap_MatchingCondItem = -1; +static gint ett_e2ap_MatchingUEidList = -1; +static gint ett_e2ap_MatchingUEidItem = -1; +static gint ett_e2ap_MatchingUeCondPerSubList = -1; +static gint ett_e2ap_MatchingUeCondPerSubItem = -1; +static gint ett_e2ap_MatchingUEidPerSubList = -1; +static gint ett_e2ap_MatchingUEidPerSubItem = -1; +static gint ett_e2ap_UEMeasurementReportList = -1; +static gint ett_e2ap_UEMeasurementReportItem = -1; +static gint ett_e2ap_E2SM_KPM_EventTriggerDefinition = -1; +static gint ett_e2ap_T_eventDefinition_formats = -1; +static gint ett_e2ap_E2SM_KPM_EventTriggerDefinition_Format1 = -1; +static gint ett_e2ap_E2SM_KPM_ActionDefinition = -1; +static gint ett_e2ap_T_actionDefinition_formats = -1; +static gint ett_e2ap_E2SM_KPM_ActionDefinition_Format1 = -1; +static gint ett_e2ap_E2SM_KPM_ActionDefinition_Format2 = -1; +static gint ett_e2ap_E2SM_KPM_ActionDefinition_Format3 = -1; +static gint ett_e2ap_E2SM_KPM_ActionDefinition_Format4 = -1; +static gint ett_e2ap_E2SM_KPM_ActionDefinition_Format5 = -1; +static gint ett_e2ap_E2SM_KPM_IndicationHeader = -1; +static gint ett_e2ap_T_indicationHeader_formats = -1; +static gint ett_e2ap_E2SM_KPM_IndicationHeader_Format1 = -1; +static gint ett_e2ap_E2SM_KPM_IndicationMessage = -1; +static gint ett_e2ap_T_indicationMessage_formats = -1; +static gint ett_e2ap_E2SM_KPM_IndicationMessage_Format1 = -1; +static gint ett_e2ap_E2SM_KPM_IndicationMessage_Format2 = -1; +static gint ett_e2ap_E2SM_KPM_IndicationMessage_Format3 = -1; +static gint ett_e2ap_E2SM_KPM_RANfunction_Description = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_EventTriggerStyle_Item = -1; +static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_ReportStyle_Item = -1; +static gint ett_e2ap_RIC_EventTriggerStyle_Item = -1; +static gint ett_e2ap_RIC_ReportStyle_Item = -1; /*--- End of included file: packet-e2ap-ett.c ---*/ -#line 52 "./asn1/e2ap/packet-e2ap-template.c" +#line 61 "./asn1/e2ap/packet-e2ap-template.c" -enum{ +/* Forward declarations */ +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_); + + +enum { INITIATING_MESSAGE, SUCCESSFUL_OUTCOME, UNSUCCESSFUL_OUTCOME @@ -476,37 +1256,10 @@ struct e2ap_private_data { guint32 protocol_extension_id; guint32 message_type; guint32 ran_ue_e2ap_id; + + guint32 ran_function_id; }; -/* 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); -*/ - -/* Forward declarations */ -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_RANfunction_Description_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _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_IndicationHeader_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); -static int dissect_RANcallProcess_ID_string_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); -static int dissect_E2SM_KPM_IndicationMessage_Format1_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); - - -static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); -static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); -static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); - static struct e2ap_private_data* e2ap_get_private_data(packet_info *pinfo) { @@ -518,9 +1271,225 @@ e2ap_get_private_data(packet_info *pinfo) return e2ap_data; } +/****************************************************************************************************************/ +/* We learn which set of RAN functions pointers corresponds to a given ranFunctionID when we see E2SetupRequest */ +typedef int (*pdu_dissector_t)(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data); + +/* Function pointers for a RANFunction */ +typedef struct { + pdu_dissector_t ran_function_definition_dissector; + pdu_dissector_t ran_action_definition_dissector; + pdu_dissector_t ran_indication_message_dissector; + pdu_dissector_t ran_indication_header_dissector; + pdu_dissector_t ran_callprocessid_dissector; + pdu_dissector_t ran_event_trigger_dissector; +} ran_function_pointers_t; + +typedef enum { + MIN_RANFUNCTIONS, + KPM_RANFUNCTIONS=0, + RIC_RANFUNCTIONS, + MAX_RANFUNCTIONS +} ran_function_t; + +typedef struct { + const char* name; + ran_function_pointers_t functions; +} ran_function_name_mapping_t; + +/* Static table mapping from string -> ran_function */ +static const ran_function_name_mapping_t g_ran_functioname_table[MAX_RANFUNCTIONS] = +{ + { "ORAN-E2SM-KPM", { dissect_E2SM_KPM_RANfunction_Description_PDU, + 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 + } + }, + { "ORAN-E2SM-RC", { dissect_E2SM_RC_RANFunctionDefinition_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 + } + } +}; + + + +/* Per-conversation mapping: ranFunctionId -> ran_function */ +typedef struct { + guint32 setup_frame; + guint32 ran_function_id; + ran_function_t ran_function; + ran_function_pointers_t *ran_function_pointers; +} ran_function_id_mapping_t; + +typedef struct { +#define MAX_RANFUNCTION_ENTRIES 16 + guint32 num_entries; + ran_function_id_mapping_t entries[MAX_RANFUNCTION_ENTRIES]; +} ran_functionid_table_t; + +const char *ran_function_to_str(ran_function_t ran_function) +{ + switch (ran_function) { + case KPM_RANFUNCTIONS: + return "KPM"; + case RIC_RANFUNCTIONS: + return "RIC"; + + default: + return "Unknown"; + } +} + + +/* Get RANfunctionID table from conversation data */ +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 */ +static void store_ran_function_mapping(packet_info *pinfo, ran_functionid_table_t *table, guint32 ran_function_id, const char *name) +{ + /* Stop if already reached table limit */ + if (table->num_entries == MAX_RANFUNCTION_ENTRIES) { + /* TODO: expert info warning? */ + return; + } + + ran_function_t ran_function = MAX_RANFUNCTIONS; /* i.e. invalid */ + ran_function_pointers_t *ran_function_pointers = NULL; + + /* Check known RAN functions */ + for (int n=MIN_RANFUNCTIONS; n < MAX_RANFUNCTIONS; n++) { + /* TODO: shouldn't need to check both positions! */ + if ((strcmp(name, g_ran_functioname_table[n].name) == 0) || + (strcmp(name+1, g_ran_functioname_table[n].name) == 0)) { + + ran_function = n; + ran_function_pointers = (ran_function_pointers_t*)&(g_ran_functioname_table[n].functions); + break; + } + } + + /* Nothing to do if no matches */ + if (ran_function == MAX_RANFUNCTIONS) { + return; + } + + /* If ID already mapped, ignore */ + 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].ran_function_pointers = ran_function_pointers; +} + +/* Look for Service Model function pointers, based on current RANFunctionID in pinfo */ +ran_function_pointers_t* lookup_ranfunction_pointers(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; + + /* Look in table function pointers for this ranFunctionID */ + ran_functionid_table_t *table = get_ran_functionid_table(pinfo); + for (guint n=0; n < table->num_entries; n++) { + if (ran_function_id == table->entries[n].ran_function_id) { + /* 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); + /* Also 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); + + return table->entries[n].ran_function_pointers; + } + } + + /* 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; +} + + +/* 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 *); + + /*--- Included file: packet-e2ap-fn.c ---*/ #line 1 "./asn1/e2ap/packet-e2ap-fn.c" +/*--- Cyclic dependencies ---*/ + +/* RANParameter-Testing-Item -> RANParameter-Testing-Item/ranParameter-Type -> RANParameter-Testing-Item-Choice-List -> RANParameter-Testing-LIST -> RANParameter-Testing-Item */ +/* RANParameter-Testing-Item -> RANParameter-Testing-Item/ranParameter-Type -> RANParameter-Testing-Item-Choice-Structure -> RANParameter-Testing-STRUCTURE -> RANParameter-Testing-Item */ +static int dissect_e2ap_RANParameter_Testing_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* RANParameter-Definition -> RANParameter-Definition-Choice -> RANParameter-Definition-Choice-LIST -> RANParameter-Definition-Choice-LIST/ranParameter-List -> RANParameter-Definition-Choice-LIST-Item -> RANParameter-Definition */ +/* RANParameter-Definition -> RANParameter-Definition-Choice -> RANParameter-Definition-Choice-STRUCTURE -> RANParameter-Definition-Choice-STRUCTURE/ranParameter-STRUCTURE -> RANParameter-Definition-Choice-STRUCTURE-Item -> RANParameter-Definition */ +static int dissect_e2ap_RANParameter_Definition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* RANParameter-ValueType -> RANParameter-ValueType-Choice-Structure -> RANParameter-STRUCTURE -> RANParameter-STRUCTURE/sequence-of-ranParameters -> RANParameter-STRUCTURE-Item -> RANParameter-ValueType */ +static int dissect_e2ap_RANParameter_ValueType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static const value_string e2ap_Criticality_vals[] = { { 0, "reject" }, @@ -549,6 +1518,10 @@ static const value_string e2ap_ProcedureCode_vals[] = { { id_RICserviceUpdate, "id-RICserviceUpdate" }, { id_RICsubscription, "id-RICsubscription" }, { id_RICsubscriptionDelete, "id-RICsubscriptionDelete" }, + { id_E2nodeConfigurationUpdate, "id-E2nodeConfigurationUpdate" }, + { id_E2connectionUpdate, "id-E2connectionUpdate" }, + { id_RICsubscriptionDeleteRequired, "id-RICsubscriptionDeleteRequired" }, + { id_E2removal, "id-E2removal" }, { 0, NULL } }; @@ -557,7 +1530,7 @@ static value_string_ext e2ap_ProcedureCode_vals_ext = VALUE_STRING_EXT_INIT(e2ap static int dissect_e2ap_ProcedureCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 102 "./asn1/e2ap/e2ap.cnf" +#line 135 "./asn1/e2ap/e2ap.cnf" struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 255U, &e2ap_data->procedure_code, FALSE); @@ -602,6 +1575,33 @@ static const value_string e2ap_ProtocolIE_ID_vals[] = { { id_RICsubscriptionDetails, "id-RICsubscriptionDetails" }, { id_TimeToWait, "id-TimeToWait" }, { id_RICcontrolOutcome, "id-RICcontrolOutcome" }, + { id_E2nodeComponentConfigUpdate, "id-E2nodeComponentConfigUpdate" }, + { id_E2nodeComponentConfigUpdate_Item, "id-E2nodeComponentConfigUpdate-Item" }, + { id_E2nodeComponentConfigUpdateAck, "id-E2nodeComponentConfigUpdateAck" }, + { id_E2nodeComponentConfigUpdateAck_Item, "id-E2nodeComponentConfigUpdateAck-Item" }, + { id_E2connectionSetup, "id-E2connectionSetup" }, + { id_E2connectionSetupFailed, "id-E2connectionSetupFailed" }, + { id_E2connectionSetupFailed_Item, "id-E2connectionSetupFailed-Item" }, + { id_E2connectionFailed_Item, "id-E2connectionFailed-Item" }, + { id_E2connectionUpdate_Item, "id-E2connectionUpdate-Item" }, + { id_E2connectionUpdateAdd, "id-E2connectionUpdateAdd" }, + { id_E2connectionUpdateModify, "id-E2connectionUpdateModify" }, + { id_E2connectionUpdateRemove, "id-E2connectionUpdateRemove" }, + { id_E2connectionUpdateRemove_Item, "id-E2connectionUpdateRemove-Item" }, + { id_TNLinformation, "id-TNLinformation" }, + { id_TransactionID, "id-TransactionID" }, + { id_E2nodeComponentConfigAddition, "id-E2nodeComponentConfigAddition" }, + { id_E2nodeComponentConfigAddition_Item, "id-E2nodeComponentConfigAddition-Item" }, + { id_E2nodeComponentConfigAdditionAck, "id-E2nodeComponentConfigAdditionAck" }, + { id_E2nodeComponentConfigAdditionAck_Item, "id-E2nodeComponentConfigAdditionAck-Item" }, + { id_E2nodeComponentConfigRemoval, "id-E2nodeComponentConfigRemoval" }, + { id_E2nodeComponentConfigRemoval_Item, "id-E2nodeComponentConfigRemoval-Item" }, + { id_E2nodeComponentConfigRemovalAck, "id-E2nodeComponentConfigRemovalAck" }, + { id_E2nodeComponentConfigRemovalAck_Item, "id-E2nodeComponentConfigRemovalAck-Item" }, + { id_E2nodeTNLassociationRemoval, "id-E2nodeTNLassociationRemoval" }, + { id_E2nodeTNLassociationRemoval_Item, "id-E2nodeTNLassociationRemoval-Item" }, + { id_RICsubscriptionToBeRemoved, "id-RICsubscriptionToBeRemoved" }, + { id_RICsubscription_withCause_Item, "id-RICsubscription-withCause-Item" }, { 0, NULL } }; @@ -610,7 +1610,7 @@ static value_string_ext e2ap_ProtocolIE_ID_vals_ext = VALUE_STRING_EXT_INIT(e2ap static int dissect_e2ap_ProtocolIE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 75 "./asn1/e2ap/e2ap.cnf" +#line 109 "./asn1/e2ap/e2ap.cnf" struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 65535U, &e2ap_data->protocol_ie_id, FALSE); @@ -618,7 +1618,7 @@ dissect_e2ap_ProtocolIE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _ -#line 79 "./asn1/e2ap/e2ap.cnf" +#line 113 "./asn1/e2ap/e2ap.cnf" 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)")); @@ -693,33 +1693,46 @@ dissect_e2ap_ProtocolIE_SingleContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ } -static const value_string e2ap_CauseRIC_vals[] = { - { 0, "ran-function-id-Invalid" }, + +static int +dissect_e2ap_AMFName(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index, + 1, 150, TRUE); + + return offset; +} + + +static const value_string e2ap_CauseRICrequest_vals[] = { + { 0, "ran-function-id-invalid" }, { 1, "action-not-supported" }, { 2, "excessive-actions" }, { 3, "duplicate-action" }, - { 4, "duplicate-event" }, + { 4, "duplicate-event-trigger" }, { 5, "function-resource-limit" }, { 6, "request-id-unknown" }, { 7, "inconsistent-action-subsequent-action-sequence" }, { 8, "control-message-invalid" }, - { 9, "call-process-id-invalid" }, - { 10, "unspecified" }, + { 9, "ric-call-process-id-invalid" }, + { 10, "control-timer-expired" }, + { 11, "control-failed-to-execute" }, + { 12, "system-not-ready" }, + { 13, "unspecified" }, { 0, NULL } }; static int -dissect_e2ap_CauseRIC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_e2ap_CauseRICrequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, - 11, NULL, TRUE, 0, NULL); + 14, NULL, TRUE, 0, NULL); return offset; } static const value_string e2ap_CauseRICservice_vals[] = { - { 0, "function-not-required" }, + { 0, "ran-function-not-supported" }, { 1, "excessive-functions" }, { 2, "ric-resource-limit" }, { 0, NULL } @@ -735,6 +1748,21 @@ dissect_e2ap_CauseRICservice(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx } +static const value_string e2ap_CauseE2node_vals[] = { + { 0, "e2node-component-unknown" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_CauseE2node(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 1, NULL, TRUE, 0, NULL); + + return offset; +} + + static const value_string e2ap_CauseTransport_vals[] = { { 0, "unspecified" }, { 1, "transport-resource-unavailable" }, @@ -793,18 +1821,20 @@ dissect_e2ap_CauseMisc(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, static const value_string e2ap_Cause_vals[] = { { 0, "ricRequest" }, { 1, "ricService" }, - { 2, "transport" }, - { 3, "protocol" }, - { 4, "misc" }, + { 2, "e2Node" }, + { 3, "transport" }, + { 4, "protocol" }, + { 5, "misc" }, { 0, NULL } }; static const per_choice_t Cause_choice[] = { - { 0, &hf_e2ap_ricRequest , ASN1_EXTENSION_ROOT , dissect_e2ap_CauseRIC }, + { 0, &hf_e2ap_ricRequest , ASN1_EXTENSION_ROOT , dissect_e2ap_CauseRICrequest }, { 1, &hf_e2ap_ricService , ASN1_EXTENSION_ROOT , dissect_e2ap_CauseRICservice }, - { 2, &hf_e2ap_transport , ASN1_EXTENSION_ROOT , dissect_e2ap_CauseTransport }, - { 3, &hf_e2ap_protocol , ASN1_EXTENSION_ROOT , dissect_e2ap_CauseProtocol }, - { 4, &hf_e2ap_misc , ASN1_EXTENSION_ROOT , dissect_e2ap_CauseMisc }, + { 2, &hf_e2ap_e2Node , ASN1_EXTENSION_ROOT , dissect_e2ap_CauseE2node }, + { 3, &hf_e2ap_transport , ASN1_EXTENSION_ROOT , dissect_e2ap_CauseTransport }, + { 4, &hf_e2ap_protocol , ASN1_EXTENSION_ROOT , dissect_e2ap_CauseProtocol }, + { 5, &hf_e2ap_misc , ASN1_EXTENSION_ROOT , dissect_e2ap_CauseMisc }, { 0, NULL, 0, NULL } }; @@ -909,119 +1939,90 @@ dissect_e2ap_CriticalityDiagnostics(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_ static int -dissect_e2ap_BIT_STRING_SIZE_20(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 20, 20, FALSE, NULL, 0, NULL, NULL); +dissect_e2ap_OCTET_STRING(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + NO_BOUND, NO_BOUND, FALSE, NULL); return offset; } +static const per_sequence_t E2nodeComponentConfiguration_sequence[] = { + { &hf_e2ap_e2nodeComponentRequestPart, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_OCTET_STRING }, + { &hf_e2ap_e2nodeComponentResponsePart, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_OCTET_STRING }, + { NULL, 0, 0, NULL } +}; static int -dissect_e2ap_BIT_STRING_SIZE_28(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 28, 28, FALSE, NULL, 0, NULL, NULL); +dissect_e2ap_E2nodeComponentConfiguration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2nodeComponentConfiguration, E2nodeComponentConfiguration_sequence); return offset; } - -static int -dissect_e2ap_BIT_STRING_SIZE_18(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 18, 18, FALSE, NULL, 0, NULL, NULL); - - return offset; -} - - - -static int -dissect_e2ap_BIT_STRING_SIZE_21(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 21, 21, FALSE, NULL, 0, NULL, NULL); - - return offset; -} - - -static const value_string e2ap_ENB_ID_vals[] = { - { 0, "macro-eNB-ID" }, - { 1, "home-eNB-ID" }, - { 2, "short-Macro-eNB-ID" }, - { 3, "long-Macro-eNB-ID" }, +static const value_string e2ap_T_updateOutcome_vals[] = { + { 0, "success" }, + { 1, "failure" }, { 0, NULL } }; -static const per_choice_t ENB_ID_choice[] = { - { 0, &hf_e2ap_macro_eNB_ID , ASN1_EXTENSION_ROOT , dissect_e2ap_BIT_STRING_SIZE_20 }, - { 1, &hf_e2ap_home_eNB_ID , ASN1_EXTENSION_ROOT , dissect_e2ap_BIT_STRING_SIZE_28 }, - { 2, &hf_e2ap_short_Macro_eNB_ID, ASN1_NOT_EXTENSION_ROOT, dissect_e2ap_BIT_STRING_SIZE_18 }, - { 3, &hf_e2ap_long_Macro_eNB_ID, ASN1_NOT_EXTENSION_ROOT, dissect_e2ap_BIT_STRING_SIZE_21 }, - { 0, NULL, 0, NULL } -}; static int -dissect_e2ap_ENB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, - ett_e2ap_ENB_ID, ENB_ID_choice, - NULL); +dissect_e2ap_T_updateOutcome(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, TRUE, 0, NULL); return offset; } -static const value_string e2ap_ENB_ID_Choice_vals[] = { - { 0, "enb-ID-macro" }, - { 1, "enb-ID-shortmacro" }, - { 2, "enb-ID-longmacro" }, +static const per_sequence_t E2nodeComponentConfigurationAck_sequence[] = { + { &hf_e2ap_updateOutcome , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_T_updateOutcome }, + { &hf_e2ap_failureCause , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_Cause }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2nodeComponentConfigurationAck(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2nodeComponentConfigurationAck, E2nodeComponentConfigurationAck_sequence); + + return offset; +} + + +static const value_string e2ap_E2nodeComponentInterfaceType_vals[] = { + { 0, "ng" }, + { 1, "xn" }, + { 2, "e1" }, + { 3, "f1" }, + { 4, "w1" }, + { 5, "s1" }, + { 6, "x2" }, { 0, NULL } }; -static const per_choice_t ENB_ID_Choice_choice[] = { - { 0, &hf_e2ap_enb_ID_macro , ASN1_EXTENSION_ROOT , dissect_e2ap_BIT_STRING_SIZE_20 }, - { 1, &hf_e2ap_enb_ID_shortmacro, ASN1_EXTENSION_ROOT , dissect_e2ap_BIT_STRING_SIZE_18 }, - { 2, &hf_e2ap_enb_ID_longmacro, ASN1_EXTENSION_ROOT , dissect_e2ap_BIT_STRING_SIZE_21 }, - { 0, NULL, 0, NULL } -}; static int -dissect_e2ap_ENB_ID_Choice(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, - ett_e2ap_ENB_ID_Choice, ENB_ID_Choice_choice, - NULL); +dissect_e2ap_E2nodeComponentInterfaceType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 7, NULL, TRUE, 0, NULL); return offset; } - -static int -dissect_e2ap_BIT_STRING_SIZE_22_32(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 22, 32, FALSE, NULL, 0, NULL, NULL); - - return offset; -} - - -static const value_string e2ap_ENGNB_ID_vals[] = { - { 0, "gNB-ID" }, - { 0, NULL } -}; - -static const per_choice_t ENGNB_ID_choice[] = { - { 0, &hf_e2ap_gNB_ID , ASN1_EXTENSION_ROOT , dissect_e2ap_BIT_STRING_SIZE_22_32 }, - { 0, NULL, 0, NULL } +static const per_sequence_t E2nodeComponentInterfaceNG_sequence[] = { + { &hf_e2ap_amf_name , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_AMFName }, + { NULL, 0, 0, NULL } }; static int -dissect_e2ap_ENGNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, - ett_e2ap_ENGNB_ID, ENGNB_ID_choice, - NULL); +dissect_e2ap_E2nodeComponentInterfaceNG(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2nodeComponentInterfaceNG, E2nodeComponentInterfaceNG_sequence); return offset; } @@ -1037,6 +2038,16 @@ dissect_e2ap_PLMN_Identity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _ } + +static int +dissect_e2ap_BIT_STRING_SIZE_22_32(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 22, 32, FALSE, NULL, 0, NULL, NULL); + + return offset; +} + + static const value_string e2ap_GNB_ID_Choice_vals[] = { { 0, "gnb-ID" }, { 0, NULL } @@ -1074,9 +2085,9 @@ dissect_e2ap_GlobalgNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U static int -dissect_e2ap_GNB_CU_UP_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index, - 0U, G_GUINT64_CONSTANT(68719476735), NULL, FALSE); +dissect_e2ap_BIT_STRING_SIZE_20(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 20, 20, FALSE, NULL, 0, NULL, NULL); return offset; } @@ -1084,54 +2095,43 @@ dissect_e2ap_GNB_CU_UP_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U static int -dissect_e2ap_GNB_DU_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index, - 0U, G_GUINT64_CONSTANT(68719476735), NULL, FALSE); +dissect_e2ap_BIT_STRING_SIZE_18(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 18, 18, FALSE, NULL, 0, NULL, NULL); return offset; } -static const per_sequence_t GlobalE2node_gNB_ID_sequence[] = { - { &hf_e2ap_global_gNB_ID_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GlobalgNB_ID }, - { &hf_e2ap_gNB_CU_UP_ID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_GNB_CU_UP_ID }, - { &hf_e2ap_gNB_DU_ID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_GNB_DU_ID }, - { NULL, 0, 0, NULL } + +static int +dissect_e2ap_BIT_STRING_SIZE_21(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 21, 21, FALSE, NULL, 0, NULL, NULL); + + return offset; +} + + +static const value_string e2ap_ENB_ID_Choice_vals[] = { + { 0, "enb-ID-macro" }, + { 1, "enb-ID-shortmacro" }, + { 2, "enb-ID-longmacro" }, + { 0, NULL } +}; + +static const per_choice_t ENB_ID_Choice_choice[] = { + { 0, &hf_e2ap_enb_ID_macro , ASN1_EXTENSION_ROOT , dissect_e2ap_BIT_STRING_SIZE_20 }, + { 1, &hf_e2ap_enb_ID_shortmacro, ASN1_EXTENSION_ROOT , dissect_e2ap_BIT_STRING_SIZE_18 }, + { 2, &hf_e2ap_enb_ID_longmacro, ASN1_EXTENSION_ROOT , dissect_e2ap_BIT_STRING_SIZE_21 }, + { 0, NULL, 0, NULL } }; static int -dissect_e2ap_GlobalE2node_gNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_GlobalE2node_gNB_ID, GlobalE2node_gNB_ID_sequence); - - return offset; -} - - -static const per_sequence_t GlobalenGNB_ID_sequence[] = { - { &hf_e2ap_pLMN_Identity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_PLMN_Identity }, - { &hf_e2ap_gNB_ID_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ENGNB_ID }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_e2ap_GlobalenGNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_GlobalenGNB_ID, GlobalenGNB_ID_sequence); - - return offset; -} - - -static const per_sequence_t GlobalE2node_en_gNB_ID_sequence[] = { - { &hf_e2ap_global_gNB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GlobalenGNB_ID }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_e2ap_GlobalE2node_en_gNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_GlobalE2node_en_gNB_ID, GlobalE2node_en_gNB_ID_sequence); +dissect_e2ap_ENB_ID_Choice(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_ENB_ID_Choice, ENB_ID_Choice_choice, + NULL); return offset; } @@ -1152,15 +2152,169 @@ dissect_e2ap_GlobalngeNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx } -static const per_sequence_t GlobalE2node_ng_eNB_ID_sequence[] = { - { &hf_e2ap_global_ng_eNB_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GlobalngeNB_ID }, +static const value_string e2ap_GlobalNG_RANNode_ID_vals[] = { + { 0, "gNB" }, + { 1, "ng-eNB" }, + { 0, NULL } +}; + +static const per_choice_t GlobalNG_RANNode_ID_choice[] = { + { 0, &hf_e2ap_gNB_01 , ASN1_EXTENSION_ROOT , dissect_e2ap_GlobalgNB_ID }, + { 1, &hf_e2ap_ng_eNB_01 , ASN1_EXTENSION_ROOT , dissect_e2ap_GlobalngeNB_ID }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_GlobalNG_RANNode_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_GlobalNG_RANNode_ID, GlobalNG_RANNode_ID_choice, + NULL); + + return offset; +} + + +static const per_sequence_t E2nodeComponentInterfaceXn_sequence[] = { + { &hf_e2ap_global_NG_RAN_Node_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GlobalNG_RANNode_ID }, { NULL, 0, 0, NULL } }; static int -dissect_e2ap_GlobalE2node_ng_eNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_e2ap_E2nodeComponentInterfaceXn(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_GlobalE2node_ng_eNB_ID, GlobalE2node_ng_eNB_ID_sequence); + ett_e2ap_E2nodeComponentInterfaceXn, E2nodeComponentInterfaceXn_sequence); + + return offset; +} + + + +static int +dissect_e2ap_GNB_CU_UP_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index, + 0U, G_GUINT64_CONSTANT(68719476735), NULL, FALSE); + + return offset; +} + + +static const per_sequence_t E2nodeComponentInterfaceE1_sequence[] = { + { &hf_e2ap_gNB_CU_CP_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GNB_CU_UP_ID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2nodeComponentInterfaceE1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2nodeComponentInterfaceE1, E2nodeComponentInterfaceE1_sequence); + + return offset; +} + + + +static int +dissect_e2ap_GNB_DU_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index, + 0U, G_GUINT64_CONSTANT(68719476735), NULL, FALSE); + + return offset; +} + + +static const per_sequence_t E2nodeComponentInterfaceF1_sequence[] = { + { &hf_e2ap_gNB_DU_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GNB_DU_ID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2nodeComponentInterfaceF1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2nodeComponentInterfaceF1, E2nodeComponentInterfaceF1_sequence); + + return offset; +} + + + +static int +dissect_e2ap_NGENB_DU_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index, + 0U, G_GUINT64_CONSTANT(68719476735), NULL, FALSE); + + return offset; +} + + +static const per_sequence_t E2nodeComponentInterfaceW1_sequence[] = { + { &hf_e2ap_ng_eNB_DU_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_NGENB_DU_ID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2nodeComponentInterfaceW1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2nodeComponentInterfaceW1, E2nodeComponentInterfaceW1_sequence); + + return offset; +} + + + +static int +dissect_e2ap_MMEname(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index, + 1, 150, TRUE); + + return offset; +} + + +static const per_sequence_t E2nodeComponentInterfaceS1_sequence[] = { + { &hf_e2ap_mme_name , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_MMEname }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2nodeComponentInterfaceS1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2nodeComponentInterfaceS1, E2nodeComponentInterfaceS1_sequence); + + return offset; +} + + + +static int +dissect_e2ap_BIT_STRING_SIZE_28(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 28, 28, FALSE, NULL, 0, NULL, NULL); + + return offset; +} + + +static const value_string e2ap_ENB_ID_vals[] = { + { 0, "macro-eNB-ID" }, + { 1, "home-eNB-ID" }, + { 2, "short-Macro-eNB-ID" }, + { 3, "long-Macro-eNB-ID" }, + { 0, NULL } +}; + +static const per_choice_t ENB_ID_choice[] = { + { 0, &hf_e2ap_macro_eNB_ID , ASN1_EXTENSION_ROOT , dissect_e2ap_BIT_STRING_SIZE_20 }, + { 1, &hf_e2ap_home_eNB_ID , ASN1_EXTENSION_ROOT , dissect_e2ap_BIT_STRING_SIZE_28 }, + { 2, &hf_e2ap_short_Macro_eNB_ID, ASN1_NOT_EXTENSION_ROOT, dissect_e2ap_BIT_STRING_SIZE_18 }, + { 3, &hf_e2ap_long_Macro_eNB_ID, ASN1_NOT_EXTENSION_ROOT, dissect_e2ap_BIT_STRING_SIZE_21 }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_ENB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_ENB_ID, ENB_ID_choice, + NULL); return offset; } @@ -1181,6 +2335,137 @@ dissect_e2ap_GlobalENB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U } +static const value_string e2ap_ENGNB_ID_vals[] = { + { 0, "gNB-ID" }, + { 0, NULL } +}; + +static const per_choice_t ENGNB_ID_choice[] = { + { 0, &hf_e2ap_gNB_ID , ASN1_EXTENSION_ROOT , dissect_e2ap_BIT_STRING_SIZE_22_32 }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_ENGNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_ENGNB_ID, ENGNB_ID_choice, + NULL); + + return offset; +} + + +static const per_sequence_t GlobalenGNB_ID_sequence[] = { + { &hf_e2ap_pLMN_Identity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_PLMN_Identity }, + { &hf_e2ap_gNB_ID_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ENGNB_ID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_GlobalenGNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_GlobalenGNB_ID, GlobalenGNB_ID_sequence); + + return offset; +} + + +static const per_sequence_t E2nodeComponentInterfaceX2_sequence[] = { + { &hf_e2ap_global_eNB_ID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_GlobalENB_ID }, + { &hf_e2ap_global_en_gNB_ID, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_GlobalenGNB_ID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2nodeComponentInterfaceX2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2nodeComponentInterfaceX2, E2nodeComponentInterfaceX2_sequence); + + return offset; +} + + +static const value_string e2ap_E2nodeComponentID_vals[] = { + { 0, "e2nodeComponentInterfaceTypeNG" }, + { 1, "e2nodeComponentInterfaceTypeXn" }, + { 2, "e2nodeComponentInterfaceTypeE1" }, + { 3, "e2nodeComponentInterfaceTypeF1" }, + { 4, "e2nodeComponentInterfaceTypeW1" }, + { 5, "e2nodeComponentInterfaceTypeS1" }, + { 6, "e2nodeComponentInterfaceTypeX2" }, + { 0, NULL } +}; + +static const per_choice_t E2nodeComponentID_choice[] = { + { 0, &hf_e2ap_e2nodeComponentInterfaceTypeNG, ASN1_EXTENSION_ROOT , dissect_e2ap_E2nodeComponentInterfaceNG }, + { 1, &hf_e2ap_e2nodeComponentInterfaceTypeXn, ASN1_EXTENSION_ROOT , dissect_e2ap_E2nodeComponentInterfaceXn }, + { 2, &hf_e2ap_e2nodeComponentInterfaceTypeE1, ASN1_EXTENSION_ROOT , dissect_e2ap_E2nodeComponentInterfaceE1 }, + { 3, &hf_e2ap_e2nodeComponentInterfaceTypeF1, ASN1_EXTENSION_ROOT , dissect_e2ap_E2nodeComponentInterfaceF1 }, + { 4, &hf_e2ap_e2nodeComponentInterfaceTypeW1, ASN1_EXTENSION_ROOT , dissect_e2ap_E2nodeComponentInterfaceW1 }, + { 5, &hf_e2ap_e2nodeComponentInterfaceTypeS1, ASN1_EXTENSION_ROOT , dissect_e2ap_E2nodeComponentInterfaceS1 }, + { 6, &hf_e2ap_e2nodeComponentInterfaceTypeX2, ASN1_EXTENSION_ROOT , dissect_e2ap_E2nodeComponentInterfaceX2 }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_E2nodeComponentID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2nodeComponentID, E2nodeComponentID_choice, + NULL); + + return offset; +} + + +static const per_sequence_t GlobalE2node_gNB_ID_sequence[] = { + { &hf_e2ap_global_gNB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GlobalgNB_ID }, + { &hf_e2ap_global_en_gNB_ID, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_GlobalenGNB_ID }, + { &hf_e2ap_gNB_CU_UP_ID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_GNB_CU_UP_ID }, + { &hf_e2ap_gNB_DU_ID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_GNB_DU_ID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_GlobalE2node_gNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_GlobalE2node_gNB_ID, GlobalE2node_gNB_ID_sequence); + + return offset; +} + + +static const per_sequence_t GlobalE2node_en_gNB_ID_sequence[] = { + { &hf_e2ap_global_en_gNB_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GlobalenGNB_ID }, + { &hf_e2ap_en_gNB_CU_UP_ID, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_GNB_CU_UP_ID }, + { &hf_e2ap_en_gNB_DU_ID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_GNB_DU_ID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_GlobalE2node_en_gNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_GlobalE2node_en_gNB_ID, GlobalE2node_en_gNB_ID_sequence); + + return offset; +} + + +static const per_sequence_t GlobalE2node_ng_eNB_ID_sequence[] = { + { &hf_e2ap_global_ng_eNB_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GlobalngeNB_ID }, + { &hf_e2ap_global_eNB_ID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_GlobalENB_ID }, + { &hf_e2ap_ngENB_DU_ID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_NGENB_DU_ID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_GlobalE2node_ng_eNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_GlobalE2node_ng_eNB_ID, GlobalE2node_ng_eNB_ID_sequence); + + return offset; +} + + static const per_sequence_t GlobalE2node_eNB_ID_sequence[] = { { &hf_e2ap_global_eNB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GlobalENB_ID }, { NULL, 0, 0, NULL } @@ -1239,12 +2524,31 @@ dissect_e2ap_GlobalRIC_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U static int dissect_e2ap_RANfunctionDefinition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 242 "./asn1/e2ap/e2ap.cnf" +#line 255 "./asn1/e2ap/e2ap.cnf" tvbuff_t *parameter_tvb; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, FALSE, ¶meter_tvb); - dissect_E2SM_KPM_RANfunction_Description_PDU(parameter_tvb, actx->pinfo, tree, NULL); + /* Looking for shortName string near beginning of tvb */ + gboolean found = FALSE; + for (int n=KPM_RANFUNCTIONS; npinfo, 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"); + } @@ -1255,8 +2559,27 @@ dissect_e2ap_RANfunctionDefinition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t static int dissect_e2ap_RANfunctionID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 520 "./asn1/e2ap/e2ap.cnf" + guint32 value; offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, - 0U, 4095U, NULL, FALSE); + 0U, 4095U, &value, FALSE); + + /* Store value in packet-private data */ + struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); + e2ap_data->ran_function_id = value; + + + + + return offset; +} + + + +static int +dissect_e2ap_RANfunctionOID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index, + 1, 1000, TRUE); return offset; } @@ -1275,12 +2598,15 @@ dissect_e2ap_RANfunctionRevision(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t * static int dissect_e2ap_RICactionDefinition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 221 "./asn1/e2ap/e2ap.cnf" +#line 287 "./asn1/e2ap/e2ap.cnf" tvbuff_t *parameter_tvb; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, FALSE, ¶meter_tvb); - dissect_E2SM_KPM_ActionDefinition_PDU(parameter_tvb, actx->pinfo, tree, NULL); + ran_function_pointers_t* functions = lookup_ranfunction_pointers(actx->pinfo, tree, parameter_tvb); + if (functions && functions->ran_action_definition_dissector) { + functions->ran_action_definition_dissector(parameter_tvb, actx->pinfo, tree, NULL); + } @@ -1318,12 +2644,15 @@ dissect_e2ap_RICactionType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _ static int dissect_e2ap_RICcallProcessID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 247 "./asn1/e2ap/e2ap.cnf" +#line 311 "./asn1/e2ap/e2ap.cnf" tvbuff_t *parameter_tvb; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, FALSE, ¶meter_tvb); - dissect_RANcallProcess_ID_string_PDU(parameter_tvb, actx->pinfo, tree, NULL); + ran_function_pointers_t* functions = lookup_ranfunction_pointers(actx->pinfo, tree, parameter_tvb); + if (functions && functions->ran_callprocessid_dissector) { + functions->ran_callprocessid_dissector(parameter_tvb, actx->pinfo, tree, NULL); + } @@ -1336,7 +2665,6 @@ dissect_e2ap_RICcallProcessID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act static const value_string e2ap_RICcontrolAckRequest_vals[] = { { 0, "noAck" }, { 1, "ack" }, - { 2, "nAck" }, { 0, NULL } }; @@ -1344,7 +2672,7 @@ static const value_string e2ap_RICcontrolAckRequest_vals[] = { static int dissect_e2ap_RICcontrolAckRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, - 3, NULL, TRUE, 0, NULL); + 2, NULL, TRUE, 0, NULL); return offset; } @@ -1380,32 +2708,18 @@ dissect_e2ap_RICcontrolOutcome(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac } -static const value_string e2ap_RICcontrolStatus_vals[] = { - { 0, "success" }, - { 1, "rejected" }, - { 2, "failed" }, - { 0, NULL } -}; - - -static int -dissect_e2ap_RICcontrolStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, - 3, NULL, TRUE, 0, NULL); - - return offset; -} - - static int dissect_e2ap_RICeventTriggerDefinition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 226 "./asn1/e2ap/e2ap.cnf" +#line 279 "./asn1/e2ap/e2ap.cnf" tvbuff_t *parameter_tvb; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, FALSE, ¶meter_tvb); - dissect_E2SM_KPM_EventTriggerDefinition_PDU(parameter_tvb, actx->pinfo, tree, NULL); + ran_function_pointers_t* functions = lookup_ranfunction_pointers(actx->pinfo, tree, parameter_tvb); + if (functions && functions->ran_event_trigger_dissector) { + functions->ran_event_trigger_dissector(parameter_tvb, actx->pinfo, tree, NULL); + } @@ -1416,12 +2730,15 @@ dissect_e2ap_RICeventTriggerDefinition(tvbuff_t *tvb _U_, int offset _U_, asn1_c static int dissect_e2ap_RICindicationHeader(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 231 "./asn1/e2ap/e2ap.cnf" +#line 295 "./asn1/e2ap/e2ap.cnf" tvbuff_t *parameter_tvb; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, FALSE, ¶meter_tvb); - dissect_E2SM_KPM_IndicationHeader_PDU(parameter_tvb, actx->pinfo, tree, NULL); + ran_function_pointers_t* functions = lookup_ranfunction_pointers(actx->pinfo, tree, parameter_tvb); + if (functions && functions->ran_indication_header_dissector) { + functions->ran_indication_header_dissector(parameter_tvb, actx->pinfo, tree, NULL); + } @@ -1432,13 +2749,15 @@ dissect_e2ap_RICindicationHeader(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t * static int dissect_e2ap_RICindicationMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 236 "./asn1/e2ap/e2ap.cnf" +#line 303 "./asn1/e2ap/e2ap.cnf" tvbuff_t *parameter_tvb; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, FALSE, ¶meter_tvb); - /* It is believed that this is an error in the ASN in V1 of the spec... */ - dissect_E2SM_KPM_IndicationMessage_Format1_PDU(parameter_tvb, actx->pinfo, tree, NULL); + ran_function_pointers_t* functions = lookup_ranfunction_pointers(actx->pinfo, tree, parameter_tvb); + if (functions && functions->ran_indication_message_dissector) { + functions->ran_indication_message_dissector(parameter_tvb, actx->pinfo, tree, NULL); + } @@ -1489,24 +2808,23 @@ dissect_e2ap_RICsubsequentActionType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx static const value_string e2ap_RICtimeToWait_vals[] = { - { 0, "zero" }, - { 1, "w1ms" }, - { 2, "w2ms" }, - { 3, "w5ms" }, - { 4, "w10ms" }, - { 5, "w20ms" }, - { 6, "w30ms" }, - { 7, "w40ms" }, - { 8, "w50ms" }, - { 9, "w100ms" }, - { 10, "w200ms" }, - { 11, "w500ms" }, - { 12, "w1s" }, - { 13, "w2s" }, - { 14, "w5s" }, - { 15, "w10s" }, - { 16, "w20s" }, - { 17, "w60s" }, + { 0, "w1ms" }, + { 1, "w2ms" }, + { 2, "w5ms" }, + { 3, "w10ms" }, + { 4, "w20ms" }, + { 5, "w30ms" }, + { 6, "w40ms" }, + { 7, "w50ms" }, + { 8, "w100ms" }, + { 9, "w200ms" }, + { 10, "w500ms" }, + { 11, "w1s" }, + { 12, "w2s" }, + { 13, "w5s" }, + { 14, "w10s" }, + { 15, "w20s" }, + { 16, "w60s" }, { 0, NULL } }; @@ -1514,7 +2832,7 @@ static const value_string e2ap_RICtimeToWait_vals[] = { static int dissect_e2ap_RICtimeToWait(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, - 18, NULL, TRUE, 0, NULL); + 17, NULL, TRUE, 0, NULL); return offset; } @@ -1555,6 +2873,68 @@ dissect_e2ap_TimeToWait(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, } + +static int +dissect_e2ap_BIT_STRING_SIZE_1_160_(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 1, 160, TRUE, NULL, 0, NULL, NULL); + + return offset; +} + + + +static int +dissect_e2ap_BIT_STRING_SIZE_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 16, 16, FALSE, NULL, 0, NULL, NULL); + + return offset; +} + + +static const per_sequence_t TNLinformation_sequence[] = { + { &hf_e2ap_tnlAddress , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_BIT_STRING_SIZE_1_160_ }, + { &hf_e2ap_tnlPort , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_BIT_STRING_SIZE_16 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_TNLinformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_TNLinformation, TNLinformation_sequence); + + return offset; +} + + +static const value_string e2ap_TNLusage_vals[] = { + { 0, "ric-service" }, + { 1, "support-function" }, + { 2, "both" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_TNLusage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 3, NULL, TRUE, 0, NULL); + + return offset; +} + + + +static int +dissect_e2ap_TransactionID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 255U, NULL, TRUE); + + return offset; +} + + static const per_sequence_t RICsubscriptionRequest_sequence[] = { { &hf_e2ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_Container }, { NULL, 0, 0, NULL } @@ -1562,7 +2942,7 @@ static const per_sequence_t RICsubscriptionRequest_sequence[] = { static int dissect_e2ap_RICsubscriptionRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 500 "./asn1/e2ap/e2ap.cnf" +#line 611 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionRequest"); @@ -1626,7 +3006,7 @@ static const per_sequence_t RICsubscriptionResponse_sequence[] = { static int dissect_e2ap_RICsubscriptionResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 503 "./asn1/e2ap/e2ap.cnf" +#line 614 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionResponse"); @@ -1703,7 +3083,7 @@ static const per_sequence_t RICsubscriptionFailure_sequence[] = { static int dissect_e2ap_RICsubscriptionFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 497 "./asn1/e2ap/e2ap.cnf" +#line 608 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionFailure"); @@ -1721,7 +3101,7 @@ static const per_sequence_t RICsubscriptionDeleteRequest_sequence[] = { static int dissect_e2ap_RICsubscriptionDeleteRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 511 "./asn1/e2ap/e2ap.cnf" +#line 622 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionDeleteRequest"); @@ -1739,16 +3119,10 @@ static const per_sequence_t RICsubscriptionDeleteResponse_sequence[] = { static int dissect_e2ap_RICsubscriptionDeleteResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 514 "./asn1/e2ap/e2ap.cnf" +#line 625 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionDeleteResponse"); - - - - - - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RICsubscriptionDeleteResponse, RICsubscriptionDeleteResponse_sequence); @@ -1763,7 +3137,7 @@ static const per_sequence_t RICsubscriptionDeleteFailure_sequence[] = { static int dissect_e2ap_RICsubscriptionDeleteFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 508 "./asn1/e2ap/e2ap.cnf" +#line 619 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionDeleteFailure"); @@ -1774,6 +3148,55 @@ dissect_e2ap_RICsubscriptionDeleteFailure(tvbuff_t *tvb _U_, int offset _U_, asn } +static const per_sequence_t RICsubscriptionDeleteRequired_sequence[] = { + { &hf_e2ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RICsubscriptionDeleteRequired(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 628 "./asn1/e2ap/e2ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionDeleteRequired"); + + + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RICsubscriptionDeleteRequired, RICsubscriptionDeleteRequired_sequence); + + return offset; +} + + +static const per_sequence_t RICsubscription_List_withCause_sequence_of[1] = { + { &hf_e2ap_RICsubscription_List_withCause_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_e2ap_RICsubscription_List_withCause(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_RICsubscription_List_withCause, RICsubscription_List_withCause_sequence_of, + 1, maxofRICrequestID, FALSE); + + return offset; +} + + +static const per_sequence_t RICsubscription_withCause_Item_sequence[] = { + { &hf_e2ap_ricRequestID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RICrequestID }, + { &hf_e2ap_ranFunctionID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANfunctionID }, + { &hf_e2ap_cause , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_Cause }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RICsubscription_withCause_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RICsubscription_withCause_Item, RICsubscription_withCause_Item_sequence); + + return offset; +} + + static const per_sequence_t RICindication_sequence[] = { { &hf_e2ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_Container }, { NULL, 0, 0, NULL } @@ -1781,7 +3204,7 @@ static const per_sequence_t RICindication_sequence[] = { static int dissect_e2ap_RICindication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 478 "./asn1/e2ap/e2ap.cnf" +#line 589 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICindication"); @@ -1800,10 +3223,11 @@ static const per_sequence_t RICcontrolRequest_sequence[] = { static int dissect_e2ap_RICcontrolRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 475 "./asn1/e2ap/e2ap.cnf" +#line 585 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICcontrolRequest"); + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RICcontrolRequest, RICcontrolRequest_sequence); @@ -1818,12 +3242,10 @@ static const per_sequence_t RICcontrolAcknowledge_sequence[] = { static int dissect_e2ap_RICcontrolAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 467 "./asn1/e2ap/e2ap.cnf" +#line 579 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICcontrolAcknowledge"); - - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RICcontrolAcknowledge, RICcontrolAcknowledge_sequence); @@ -1838,7 +3260,7 @@ static const per_sequence_t RICcontrolFailure_sequence[] = { static int dissect_e2ap_RICcontrolFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 472 "./asn1/e2ap/e2ap.cnf" +#line 582 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICcontrolFailure"); @@ -1856,10 +3278,11 @@ static const per_sequence_t ErrorIndication_sequence[] = { static int dissect_e2ap_ErrorIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 458 "./asn1/e2ap/e2ap.cnf" +#line 568 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ErrorIndication"); + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_ErrorIndication, ErrorIndication_sequence); @@ -1874,7 +3297,7 @@ static const per_sequence_t E2setupRequest_sequence[] = { static int dissect_e2ap_E2setupRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 452 "./asn1/e2ap/e2ap.cnf" +#line 561 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2setupRequest"); @@ -1892,10 +3315,11 @@ static const per_sequence_t E2setupResponse_sequence[] = { static int dissect_e2ap_E2setupResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 455 "./asn1/e2ap/e2ap.cnf" +#line 564 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2setupResponse"); + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_E2setupResponse, E2setupResponse_sequence); @@ -1910,7 +3334,7 @@ static const per_sequence_t E2setupFailure_sequence[] = { static int dissect_e2ap_E2setupFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 449 "./asn1/e2ap/e2ap.cnf" +#line 558 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2setupFailure"); @@ -1921,6 +3345,410 @@ dissect_e2ap_E2setupFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx } +static const per_sequence_t E2connectionUpdate_sequence[] = { + { &hf_e2ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2connectionUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 538 "./asn1/e2ap/e2ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2connectionUpdate"); + + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2connectionUpdate, E2connectionUpdate_sequence); + + return offset; +} + + +static const per_sequence_t E2connectionUpdate_List_sequence_of[1] = { + { &hf_e2ap_E2connectionUpdate_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_e2ap_E2connectionUpdate_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2connectionUpdate_List, E2connectionUpdate_List_sequence_of, + 1, maxofTNLA, FALSE); + + return offset; +} + + +static const per_sequence_t E2connectionUpdate_Item_sequence[] = { + { &hf_e2ap_tnlInformation , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_TNLinformation }, + { &hf_e2ap_tnlUsage , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_TNLusage }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2connectionUpdate_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2connectionUpdate_Item, E2connectionUpdate_Item_sequence); + + return offset; +} + + +static const per_sequence_t E2connectionUpdateRemove_List_sequence_of[1] = { + { &hf_e2ap_E2connectionUpdateRemove_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_e2ap_E2connectionUpdateRemove_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2connectionUpdateRemove_List, E2connectionUpdateRemove_List_sequence_of, + 1, maxofTNLA, FALSE); + + return offset; +} + + +static const per_sequence_t E2connectionUpdateRemove_Item_sequence[] = { + { &hf_e2ap_tnlInformation , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_TNLinformation }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2connectionUpdateRemove_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2connectionUpdateRemove_Item, E2connectionUpdateRemove_Item_sequence); + + return offset; +} + + +static const per_sequence_t E2connectionUpdateAcknowledge_sequence[] = { + { &hf_e2ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2connectionUpdateAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 541 "./asn1/e2ap/e2ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2connectionUpdateAcknowledge"); + + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2connectionUpdateAcknowledge, E2connectionUpdateAcknowledge_sequence); + + return offset; +} + + +static const per_sequence_t E2connectionSetupFailed_List_sequence_of[1] = { + { &hf_e2ap_E2connectionSetupFailed_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_e2ap_E2connectionSetupFailed_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2connectionSetupFailed_List, E2connectionSetupFailed_List_sequence_of, + 1, maxofTNLA, FALSE); + + return offset; +} + + +static const per_sequence_t E2connectionSetupFailed_Item_sequence[] = { + { &hf_e2ap_tnlInformation , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_TNLinformation }, + { &hf_e2ap_cause , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_Cause }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2connectionSetupFailed_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2connectionSetupFailed_Item, E2connectionSetupFailed_Item_sequence); + + return offset; +} + + +static const per_sequence_t E2connectionUpdateFailure_sequence[] = { + { &hf_e2ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2connectionUpdateFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 544 "./asn1/e2ap/e2ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2connectionUpdateFailure"); + + + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2connectionUpdateFailure, E2connectionUpdateFailure_sequence); + + return offset; +} + + +static const per_sequence_t E2nodeConfigurationUpdate_sequence[] = { + { &hf_e2ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2nodeConfigurationUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 548 "./asn1/e2ap/e2ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2nodeConfigurationUpdate"); + + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2nodeConfigurationUpdate, E2nodeConfigurationUpdate_sequence); + + return offset; +} + + +static const per_sequence_t E2nodeComponentConfigAddition_List_sequence_of[1] = { + { &hf_e2ap_E2nodeComponentConfigAddition_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_e2ap_E2nodeComponentConfigAddition_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2nodeComponentConfigAddition_List, E2nodeComponentConfigAddition_List_sequence_of, + 1, maxofE2nodeComponents, FALSE); + + return offset; +} + + +static const per_sequence_t E2nodeComponentConfigAddition_Item_sequence[] = { + { &hf_e2ap_e2nodeComponentInterfaceType, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_E2nodeComponentInterfaceType }, + { &hf_e2ap_e2nodeComponentID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_E2nodeComponentID }, + { &hf_e2ap_e2nodeComponentConfiguration, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_E2nodeComponentConfiguration }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2nodeComponentConfigAddition_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2nodeComponentConfigAddition_Item, E2nodeComponentConfigAddition_Item_sequence); + + return offset; +} + + +static const per_sequence_t E2nodeComponentConfigUpdate_List_sequence_of[1] = { + { &hf_e2ap_E2nodeComponentConfigUpdate_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_e2ap_E2nodeComponentConfigUpdate_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2nodeComponentConfigUpdate_List, E2nodeComponentConfigUpdate_List_sequence_of, + 1, maxofE2nodeComponents, FALSE); + + return offset; +} + + +static const per_sequence_t E2nodeComponentConfigUpdate_Item_sequence[] = { + { &hf_e2ap_e2nodeComponentInterfaceType, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_E2nodeComponentInterfaceType }, + { &hf_e2ap_e2nodeComponentID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_E2nodeComponentID }, + { &hf_e2ap_e2nodeComponentConfiguration, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_E2nodeComponentConfiguration }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2nodeComponentConfigUpdate_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2nodeComponentConfigUpdate_Item, E2nodeComponentConfigUpdate_Item_sequence); + + return offset; +} + + +static const per_sequence_t E2nodeComponentConfigRemoval_List_sequence_of[1] = { + { &hf_e2ap_E2nodeComponentConfigRemoval_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_e2ap_E2nodeComponentConfigRemoval_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2nodeComponentConfigRemoval_List, E2nodeComponentConfigRemoval_List_sequence_of, + 1, maxofE2nodeComponents, FALSE); + + return offset; +} + + +static const per_sequence_t E2nodeComponentConfigRemoval_Item_sequence[] = { + { &hf_e2ap_e2nodeComponentInterfaceType, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_E2nodeComponentInterfaceType }, + { &hf_e2ap_e2nodeComponentID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_E2nodeComponentID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2nodeComponentConfigRemoval_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2nodeComponentConfigRemoval_Item, E2nodeComponentConfigRemoval_Item_sequence); + + return offset; +} + + +static const per_sequence_t E2nodeTNLassociationRemoval_List_sequence_of[1] = { + { &hf_e2ap_E2nodeTNLassociationRemoval_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_e2ap_E2nodeTNLassociationRemoval_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2nodeTNLassociationRemoval_List, E2nodeTNLassociationRemoval_List_sequence_of, + 1, maxofTNLA, FALSE); + + return offset; +} + + +static const per_sequence_t E2nodeTNLassociationRemoval_Item_sequence[] = { + { &hf_e2ap_tnlInformation , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_TNLinformation }, + { &hf_e2ap_tnlInformationRIC, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_TNLinformation }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2nodeTNLassociationRemoval_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2nodeTNLassociationRemoval_Item, E2nodeTNLassociationRemoval_Item_sequence); + + return offset; +} + + +static const per_sequence_t E2nodeConfigurationUpdateAcknowledge_sequence[] = { + { &hf_e2ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2nodeConfigurationUpdateAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 551 "./asn1/e2ap/e2ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2nodeConfigurationUpdateAcknowledge"); + + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2nodeConfigurationUpdateAcknowledge, E2nodeConfigurationUpdateAcknowledge_sequence); + + return offset; +} + + +static const per_sequence_t E2nodeComponentConfigAdditionAck_List_sequence_of[1] = { + { &hf_e2ap_E2nodeComponentConfigAdditionAck_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_e2ap_E2nodeComponentConfigAdditionAck_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2nodeComponentConfigAdditionAck_List, E2nodeComponentConfigAdditionAck_List_sequence_of, + 1, maxofE2nodeComponents, FALSE); + + return offset; +} + + +static const per_sequence_t E2nodeComponentConfigAdditionAck_Item_sequence[] = { + { &hf_e2ap_e2nodeComponentInterfaceType, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_E2nodeComponentInterfaceType }, + { &hf_e2ap_e2nodeComponentID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_E2nodeComponentID }, + { &hf_e2ap_e2nodeComponentConfigurationAck, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_E2nodeComponentConfigurationAck }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2nodeComponentConfigAdditionAck_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2nodeComponentConfigAdditionAck_Item, E2nodeComponentConfigAdditionAck_Item_sequence); + + return offset; +} + + +static const per_sequence_t E2nodeComponentConfigUpdateAck_List_sequence_of[1] = { + { &hf_e2ap_E2nodeComponentConfigUpdateAck_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_e2ap_E2nodeComponentConfigUpdateAck_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2nodeComponentConfigUpdateAck_List, E2nodeComponentConfigUpdateAck_List_sequence_of, + 1, maxofE2nodeComponents, FALSE); + + return offset; +} + + +static const per_sequence_t E2nodeComponentConfigUpdateAck_Item_sequence[] = { + { &hf_e2ap_e2nodeComponentInterfaceType, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_E2nodeComponentInterfaceType }, + { &hf_e2ap_e2nodeComponentID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_E2nodeComponentID }, + { &hf_e2ap_e2nodeComponentConfigurationAck, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_E2nodeComponentConfigurationAck }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2nodeComponentConfigUpdateAck_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2nodeComponentConfigUpdateAck_Item, E2nodeComponentConfigUpdateAck_Item_sequence); + + return offset; +} + + +static const per_sequence_t E2nodeComponentConfigRemovalAck_List_sequence_of[1] = { + { &hf_e2ap_E2nodeComponentConfigRemovalAck_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_e2ap_E2nodeComponentConfigRemovalAck_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2nodeComponentConfigRemovalAck_List, E2nodeComponentConfigRemovalAck_List_sequence_of, + 1, maxofE2nodeComponents, FALSE); + + return offset; +} + + +static const per_sequence_t E2nodeComponentConfigRemovalAck_Item_sequence[] = { + { &hf_e2ap_e2nodeComponentInterfaceType, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_E2nodeComponentInterfaceType }, + { &hf_e2ap_e2nodeComponentID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_E2nodeComponentID }, + { &hf_e2ap_e2nodeComponentConfigurationAck, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_E2nodeComponentConfigurationAck }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2nodeComponentConfigRemovalAck_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2nodeComponentConfigRemovalAck_Item, E2nodeComponentConfigRemovalAck_Item_sequence); + + return offset; +} + + +static const per_sequence_t E2nodeConfigurationUpdateFailure_sequence[] = { + { &hf_e2ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2nodeConfigurationUpdateFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 554 "./asn1/e2ap/e2ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2nodeConfigurationUpdateFailure"); + + + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2nodeConfigurationUpdateFailure, E2nodeConfigurationUpdateFailure_sequence); + + return offset; +} + + static const per_sequence_t ResetRequest_sequence[] = { { &hf_e2ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_Container }, { NULL, 0, 0, NULL } @@ -1928,7 +3756,7 @@ static const per_sequence_t ResetRequest_sequence[] = { static int dissect_e2ap_ResetRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 461 "./asn1/e2ap/e2ap.cnf" +#line 572 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ResetRequest"); @@ -1946,10 +3774,11 @@ static const per_sequence_t ResetResponse_sequence[] = { static int dissect_e2ap_ResetResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 464 "./asn1/e2ap/e2ap.cnf" +#line 575 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ResetResponse"); + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_ResetResponse, ResetResponse_sequence); @@ -1964,11 +3793,10 @@ static const per_sequence_t RICserviceUpdate_sequence[] = { static int dissect_e2ap_RICserviceUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 485 "./asn1/e2ap/e2ap.cnf" +#line 597 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICserviceUpdate"); - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RICserviceUpdate, RICserviceUpdate_sequence); @@ -1984,7 +3812,7 @@ static int dissect_e2ap_RANfunctions_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_e2ap_RANfunctions_List, RANfunctions_List_sequence_of, - 0, maxofRANfunctionID, FALSE); + 1, maxofRANfunctionID, FALSE); return offset; } @@ -1994,6 +3822,7 @@ static const per_sequence_t RANfunction_Item_sequence[] = { { &hf_e2ap_ranFunctionID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANfunctionID }, { &hf_e2ap_ranFunctionDefinition, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANfunctionDefinition }, { &hf_e2ap_ranFunctionRevision, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANfunctionRevision }, + { &hf_e2ap_ranFunctionOID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANfunctionOID }, { NULL, 0, 0, NULL } }; @@ -2014,7 +3843,7 @@ static int dissect_e2ap_RANfunctionsID_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_e2ap_RANfunctionsID_List, RANfunctionsID_List_sequence_of, - 0, maxofRANfunctionID, FALSE); + 1, maxofRANfunctionID, FALSE); return offset; } @@ -2042,7 +3871,7 @@ static const per_sequence_t RICserviceUpdateAcknowledge_sequence[] = { static int dissect_e2ap_RICserviceUpdateAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 489 "./asn1/e2ap/e2ap.cnf" +#line 600 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICserviceUpdateAcknowledge"); @@ -2061,7 +3890,7 @@ static int dissect_e2ap_RANfunctionsIDcause_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_e2ap_RANfunctionsIDcause_List, RANfunctionsIDcause_List_sequence_of, - 0, maxofRANfunctionID, FALSE); + 1, maxofRANfunctionID, FALSE); return offset; } @@ -2089,7 +3918,7 @@ static const per_sequence_t RICserviceUpdateFailure_sequence[] = { static int dissect_e2ap_RICserviceUpdateFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 492 "./asn1/e2ap/e2ap.cnf" +#line 603 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICserviceUpdateFailure"); @@ -2109,10 +3938,11 @@ static const per_sequence_t RICserviceQuery_sequence[] = { static int dissect_e2ap_RICserviceQuery(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 482 "./asn1/e2ap/e2ap.cnf" +#line 593 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICserviceQuery"); + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RICserviceQuery, RICserviceQuery_sequence); @@ -2123,7 +3953,7 @@ dissect_e2ap_RICserviceQuery(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx static int dissect_e2ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 111 "./asn1/e2ap/e2ap.cnf" +#line 144 "./asn1/e2ap/e2ap.cnf" struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); e2ap_data->message_type = INITIATING_MESSAGE; @@ -2152,7 +3982,7 @@ dissect_e2ap_InitiatingMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac static int dissect_e2ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 115 "./asn1/e2ap/e2ap.cnf" +#line 148 "./asn1/e2ap/e2ap.cnf" struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); e2ap_data->message_type = SUCCESSFUL_OUTCOME; @@ -2181,7 +4011,7 @@ dissect_e2ap_SuccessfulOutcome(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac static int dissect_e2ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 119 "./asn1/e2ap/e2ap.cnf" +#line 152 "./asn1/e2ap/e2ap.cnf" struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); e2ap_data->message_type = UNSUCCESSFUL_OUTCOME; @@ -2251,85 +4081,11 @@ dissect_e2ap_E2AP_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, p } -static const per_sequence_t GlobalKPMnode_gNB_ID_sequence[] = { - { &hf_e2ap_global_gNB_ID_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GlobalgNB_ID }, - { &hf_e2ap_gNB_CU_UP_ID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_GNB_CU_UP_ID }, - { &hf_e2ap_gNB_DU_ID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_GNB_DU_ID }, - { NULL, 0, 0, NULL } -}; static int -dissect_e2ap_GlobalKPMnode_gNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_GlobalKPMnode_gNB_ID, GlobalKPMnode_gNB_ID_sequence); - - return offset; -} - - -static const per_sequence_t GlobalKPMnode_en_gNB_ID_sequence[] = { - { &hf_e2ap_global_gNB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GlobalenGNB_ID }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_e2ap_GlobalKPMnode_en_gNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_GlobalKPMnode_en_gNB_ID, GlobalKPMnode_en_gNB_ID_sequence); - - return offset; -} - - -static const per_sequence_t GlobalKPMnode_ng_eNB_ID_sequence[] = { - { &hf_e2ap_global_ng_eNB_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GlobalngeNB_ID }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_e2ap_GlobalKPMnode_ng_eNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_GlobalKPMnode_ng_eNB_ID, GlobalKPMnode_ng_eNB_ID_sequence); - - return offset; -} - - -static const per_sequence_t GlobalKPMnode_eNB_ID_sequence[] = { - { &hf_e2ap_global_eNB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GlobalENB_ID }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_e2ap_GlobalKPMnode_eNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_GlobalKPMnode_eNB_ID, GlobalKPMnode_eNB_ID_sequence); - - return offset; -} - - -static const value_string e2ap_GlobalKPMnode_ID_vals[] = { - { 0, "gNB" }, - { 1, "en-gNB" }, - { 2, "ng-eNB" }, - { 3, "eNB" }, - { 0, NULL } -}; - -static const per_choice_t GlobalKPMnode_ID_choice[] = { - { 0, &hf_e2ap_gNB_01 , ASN1_EXTENSION_ROOT , dissect_e2ap_GlobalKPMnode_gNB_ID }, - { 1, &hf_e2ap_en_gNB_01 , ASN1_EXTENSION_ROOT , dissect_e2ap_GlobalKPMnode_en_gNB_ID }, - { 2, &hf_e2ap_ng_eNB_01 , ASN1_EXTENSION_ROOT , dissect_e2ap_GlobalKPMnode_ng_eNB_ID }, - { 3, &hf_e2ap_eNB_01 , ASN1_EXTENSION_ROOT , dissect_e2ap_GlobalKPMnode_eNB_ID }, - { 0, NULL, 0, NULL } -}; - -static int -dissect_e2ap_GlobalKPMnode_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, - ett_e2ap_GlobalKPMnode_ID, GlobalKPMnode_ID_choice, - NULL); +dissect_e2ap_PLMNIdentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + 3, 3, FALSE, NULL); return offset; } @@ -2345,16 +4101,4383 @@ dissect_e2ap_NRCellIdentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx } -static const per_sequence_t NRCGI_sequence[] = { - { &hf_e2ap_pLMN_Identity , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_PLMN_Identity }, - { &hf_e2ap_nRCellIdentity , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_NRCellIdentity }, +static const per_sequence_t NR_CGI_sequence[] = { + { &hf_e2ap_pLMNIdentity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_PLMNIdentity }, + { &hf_e2ap_nRCellIdentity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_NRCellIdentity }, { NULL, 0, 0, NULL } }; static int -dissect_e2ap_NRCGI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_e2ap_NR_CGI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_NRCGI, NRCGI_sequence); + ett_e2ap_NR_CGI, NR_CGI_sequence); + + return offset; +} + + + +static int +dissect_e2ap_EUTRACellIdentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 28, 28, FALSE, NULL, 0, NULL, NULL); + + return offset; +} + + +static const per_sequence_t EUTRA_CGI_sequence[] = { + { &hf_e2ap_pLMNIdentity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_PLMNIdentity }, + { &hf_e2ap_eUTRACellIdentity, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_EUTRACellIdentity }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_EUTRA_CGI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_EUTRA_CGI, EUTRA_CGI_sequence); + + return offset; +} + + +static const value_string e2ap_CGI_vals[] = { + { 0, "nR-CGI" }, + { 1, "eUTRA-CGI" }, + { 0, NULL } +}; + +static const per_choice_t CGI_choice[] = { + { 0, &hf_e2ap_nR_CGI , ASN1_EXTENSION_ROOT , dissect_e2ap_NR_CGI }, + { 1, &hf_e2ap_eUTRA_CGI , ASN1_EXTENSION_ROOT , dissect_e2ap_EUTRA_CGI }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_CGI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_CGI, CGI_choice, + NULL); + + return offset; +} + + + +static int +dissect_e2ap_AMFRegionID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 8, 8, FALSE, NULL, 0, NULL, NULL); + + return offset; +} + + + +static int +dissect_e2ap_AMFSetID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 10, 10, FALSE, NULL, 0, NULL, NULL); + + return offset; +} + + + +static int +dissect_e2ap_AMFPointer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 6, 6, FALSE, NULL, 0, NULL, NULL); + + return offset; +} + + +static const per_sequence_t GUAMI_sequence[] = { + { &hf_e2ap_pLMNIdentity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_PLMNIdentity }, + { &hf_e2ap_aMFRegionID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_AMFRegionID }, + { &hf_e2ap_aMFSetID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_AMFSetID }, + { &hf_e2ap_aMFPointer , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_AMFPointer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_GUAMI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_GUAMI, GUAMI_sequence); + + return offset; +} + + +static const per_sequence_t InterfaceID_NG_sequence[] = { + { &hf_e2ap_guami , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GUAMI }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_InterfaceID_NG(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_InterfaceID_NG, InterfaceID_NG_sequence); + + return offset; +} + + +static const value_string e2ap_GNB_ID_vals[] = { + { 0, "gNB-ID" }, + { 0, NULL } +}; + +static const per_choice_t GNB_ID_choice[] = { + { 0, &hf_e2ap_gNB_ID , ASN1_EXTENSION_ROOT , dissect_e2ap_BIT_STRING_SIZE_22_32 }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_GNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_GNB_ID, GNB_ID_choice, + NULL); + + return offset; +} + + +static const per_sequence_t GlobalGNB_ID_sequence[] = { + { &hf_e2ap_pLMNIdentity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_PLMNIdentity }, + { &hf_e2ap_gNB_ID_02 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GNB_ID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_GlobalGNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_GlobalGNB_ID, GlobalGNB_ID_sequence); + + return offset; +} + + +static const value_string e2ap_NgENB_ID_vals[] = { + { 0, "macroNgENB-ID" }, + { 1, "shortMacroNgENB-ID" }, + { 2, "longMacroNgENB-ID" }, + { 0, NULL } +}; + +static const per_choice_t NgENB_ID_choice[] = { + { 0, &hf_e2ap_macroNgENB_ID , ASN1_EXTENSION_ROOT , dissect_e2ap_BIT_STRING_SIZE_20 }, + { 1, &hf_e2ap_shortMacroNgENB_ID, ASN1_EXTENSION_ROOT , dissect_e2ap_BIT_STRING_SIZE_18 }, + { 2, &hf_e2ap_longMacroNgENB_ID, ASN1_EXTENSION_ROOT , dissect_e2ap_BIT_STRING_SIZE_21 }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_NgENB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_NgENB_ID, NgENB_ID_choice, + NULL); + + return offset; +} + + +static const per_sequence_t GlobalNgENB_ID_sequence[] = { + { &hf_e2ap_pLMNIdentity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_PLMNIdentity }, + { &hf_e2ap_ngENB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_NgENB_ID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_GlobalNgENB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_GlobalNgENB_ID, GlobalNgENB_ID_sequence); + + return offset; +} + + +static const value_string e2ap_GlobalNGRANNodeID_vals[] = { + { 0, "gNB" }, + { 1, "ng-eNB" }, + { 0, NULL } +}; + +static const per_choice_t GlobalNGRANNodeID_choice[] = { + { 0, &hf_e2ap_gNB_02 , ASN1_EXTENSION_ROOT , dissect_e2ap_GlobalGNB_ID }, + { 1, &hf_e2ap_ng_eNB_02 , ASN1_EXTENSION_ROOT , dissect_e2ap_GlobalNgENB_ID }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_GlobalNGRANNodeID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_GlobalNGRANNodeID, GlobalNGRANNodeID_choice, + NULL); + + return offset; +} + + +static const per_sequence_t InterfaceID_Xn_sequence[] = { + { &hf_e2ap_global_NG_RAN_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GlobalNGRANNodeID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_InterfaceID_Xn(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_InterfaceID_Xn, InterfaceID_Xn_sequence); + + return offset; +} + + +static const per_sequence_t InterfaceID_F1_sequence[] = { + { &hf_e2ap_globalGNB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GlobalGNB_ID }, + { &hf_e2ap_gNB_DU_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GNB_DU_ID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_InterfaceID_F1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_InterfaceID_F1, InterfaceID_F1_sequence); + + return offset; +} + + +static const per_sequence_t InterfaceID_E1_sequence[] = { + { &hf_e2ap_globalGNB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GlobalGNB_ID }, + { &hf_e2ap_gNB_CU_UP_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GNB_CU_UP_ID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_InterfaceID_E1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_InterfaceID_E1, InterfaceID_E1_sequence); + + return offset; +} + + + +static int +dissect_e2ap_MME_Group_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + 2, 2, FALSE, NULL); + + return offset; +} + + + +static int +dissect_e2ap_MME_Code(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + 1, 1, FALSE, NULL); + + return offset; +} + + +static const per_sequence_t GUMMEI_sequence[] = { + { &hf_e2ap_pLMN_Identity_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_PLMNIdentity }, + { &hf_e2ap_mME_Group_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_MME_Group_ID }, + { &hf_e2ap_mME_Code , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_MME_Code }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_GUMMEI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_GUMMEI, GUMMEI_sequence); + + return offset; +} + + +static const per_sequence_t InterfaceID_S1_sequence[] = { + { &hf_e2ap_gUMMEI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GUMMEI }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_InterfaceID_S1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_InterfaceID_S1, InterfaceID_S1_sequence); + + return offset; +} + + +static const value_string e2ap_T_nodeType_vals[] = { + { 0, "global-eNB-ID" }, + { 1, "global-en-gNB-ID" }, + { 0, NULL } +}; + +static const per_choice_t T_nodeType_choice[] = { + { 0, &hf_e2ap_global_eNB_ID , ASN1_EXTENSION_ROOT , dissect_e2ap_GlobalENB_ID }, + { 1, &hf_e2ap_global_en_gNB_ID, ASN1_EXTENSION_ROOT , dissect_e2ap_GlobalenGNB_ID }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_T_nodeType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_T_nodeType, T_nodeType_choice, + NULL); + + return offset; +} + + +static const per_sequence_t InterfaceID_X2_sequence[] = { + { &hf_e2ap_nodeType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_T_nodeType }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_InterfaceID_X2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_InterfaceID_X2, InterfaceID_X2_sequence); + + return offset; +} + + +static const per_sequence_t InterfaceID_W1_sequence[] = { + { &hf_e2ap_global_ng_eNB_ID_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GlobalNgENB_ID }, + { &hf_e2ap_ng_eNB_DU_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_NGENB_DU_ID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_InterfaceID_W1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_InterfaceID_W1, InterfaceID_W1_sequence); + + return offset; +} + + +static const value_string e2ap_InterfaceIdentifier_vals[] = { + { 0, "nG" }, + { 1, "xN" }, + { 2, "f1" }, + { 3, "e1" }, + { 4, "s1" }, + { 5, "x2" }, + { 6, "w1" }, + { 0, NULL } +}; + +static const per_choice_t InterfaceIdentifier_choice[] = { + { 0, &hf_e2ap_nG , ASN1_EXTENSION_ROOT , dissect_e2ap_InterfaceID_NG }, + { 1, &hf_e2ap_xN , ASN1_EXTENSION_ROOT , dissect_e2ap_InterfaceID_Xn }, + { 2, &hf_e2ap_f1 , ASN1_EXTENSION_ROOT , dissect_e2ap_InterfaceID_F1 }, + { 3, &hf_e2ap_e1 , ASN1_EXTENSION_ROOT , dissect_e2ap_InterfaceID_E1 }, + { 4, &hf_e2ap_s1 , ASN1_EXTENSION_ROOT , dissect_e2ap_InterfaceID_S1 }, + { 5, &hf_e2ap_x2 , ASN1_EXTENSION_ROOT , dissect_e2ap_InterfaceID_X2 }, + { 6, &hf_e2ap_w1 , ASN1_EXTENSION_ROOT , dissect_e2ap_InterfaceID_W1 }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_InterfaceIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_InterfaceIdentifier, InterfaceIdentifier_choice, + NULL); + + return offset; +} + + + +static int +dissect_e2ap_INTEGER(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, NULL); + + return offset; +} + + +static const value_string e2ap_T_messageType_vals[] = { + { 0, "initiatingMessage" }, + { 1, "successfulOutcome" }, + { 2, "unsuccessfulOutcome" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_T_messageType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 3, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const per_sequence_t Interface_MessageID_sequence[] = { + { &hf_e2ap_interfaceProcedureID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_INTEGER }, + { &hf_e2ap_messageType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_T_messageType }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_Interface_MessageID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_Interface_MessageID, Interface_MessageID_sequence); + + return offset; +} + + +static const value_string e2ap_InterfaceType_vals[] = { + { 0, "nG" }, + { 1, "xn" }, + { 2, "f1" }, + { 3, "e1" }, + { 4, "s1" }, + { 5, "x2" }, + { 6, "w1" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_InterfaceType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 7, NULL, TRUE, 0, NULL); + + return offset; +} + + + +static int +dissect_e2ap_T_ranFunction_ShortName(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 528 "./asn1/e2ap/e2ap.cnf" + gint start_offset = offset; + offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index, + 1, 150, TRUE); + + /* TODO: is there a nicer/reliable way to get PrintableString here (VAL_PTR won't get assigned..) */ + struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); + ran_functionid_table_t *table = get_ran_functionid_table(actx->pinfo); + store_ran_function_mapping(actx->pinfo, table, e2ap_data->ran_function_id, tvb_get_ptr(tvb, (start_offset+15)/8, (offset-start_offset)/8)); + + + + + + return offset; +} + + + +static int +dissect_e2ap_PrintableString_SIZE_1_1000_(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index, + 1, 1000, TRUE); + + return offset; +} + + + +static int +dissect_e2ap_PrintableString_SIZE_1_150_(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index, + 1, 150, TRUE); + + return offset; +} + + +static const per_sequence_t RANfunction_Name_sequence[] = { + { &hf_e2ap_ranFunction_ShortName, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_T_ranFunction_ShortName }, + { &hf_e2ap_ranFunction_E2SM_OID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_PrintableString_SIZE_1_1000_ }, + { &hf_e2ap_ranFunction_Description, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_PrintableString_SIZE_1_150_ }, + { &hf_e2ap_ranFunction_Instance, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER }, + { NULL, 0, 0, NULL } +}; + +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_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANfunction_Name, RANfunction_Name_sequence); + + return offset; +} + + + +static int +dissect_e2ap_RIC_Format_Type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, NULL); + + return offset; +} + + + +static int +dissect_e2ap_RIC_Style_Type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, NULL); + + return offset; +} + + + +static int +dissect_e2ap_RIC_Style_Name(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index, + 1, 150, TRUE); + + return offset; +} + + +static const value_string e2ap_RRCclass_LTE_vals[] = { + { 0, "bCCH-BCH" }, + { 1, "bCCH-BCH-MBMS" }, + { 2, "bCCH-DL-SCH" }, + { 3, "bCCH-DL-SCH-BR" }, + { 4, "bCCH-DL-SCH-MBMS" }, + { 5, "mCCH" }, + { 6, "pCCH" }, + { 7, "dL-CCCH" }, + { 8, "dL-DCCH" }, + { 9, "uL-CCCH" }, + { 10, "uL-DCCH" }, + { 11, "sC-MCCH" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_RRCclass_LTE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 12, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string e2ap_RRCclass_NR_vals[] = { + { 0, "bCCH-BCH" }, + { 1, "bCCH-DL-SCH" }, + { 2, "dL-CCCH" }, + { 3, "dL-DCCH" }, + { 4, "pCCH" }, + { 5, "uL-CCCH" }, + { 6, "uL-CCCH1" }, + { 7, "uL-DCCH" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_RRCclass_NR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 8, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string e2ap_T_rrcType_vals[] = { + { 0, "lTE" }, + { 1, "nR" }, + { 0, NULL } +}; + +static const per_choice_t T_rrcType_choice[] = { + { 0, &hf_e2ap_lTE , ASN1_EXTENSION_ROOT , dissect_e2ap_RRCclass_LTE }, + { 1, &hf_e2ap_nR , ASN1_EXTENSION_ROOT , dissect_e2ap_RRCclass_NR }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_T_rrcType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_T_rrcType, T_rrcType_choice, + NULL); + + return offset; +} + + +static const per_sequence_t RRC_MessageID_sequence[] = { + { &hf_e2ap_rrcType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_T_rrcType }, + { &hf_e2ap_messageID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_INTEGER }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RRC_MessageID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RRC_MessageID, RRC_MessageID_sequence); + + return offset; +} + + + +static int +dissect_e2ap_INTEGER_0_maxNRARFCN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, maxNRARFCN, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t NR_ARFCN_sequence[] = { + { &hf_e2ap_nRARFCN , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_INTEGER_0_maxNRARFCN }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_NR_ARFCN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_NR_ARFCN, NR_ARFCN_sequence); + + return offset; +} + + + +static int +dissect_e2ap_E_UTRA_ARFCN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, maxEARFCN, NULL, FALSE); + + return offset; +} + + +static const value_string e2ap_ServingCell_ARFCN_vals[] = { + { 0, "nR" }, + { 1, "eUTRA" }, + { 0, NULL } +}; + +static const per_choice_t ServingCell_ARFCN_choice[] = { + { 0, &hf_e2ap_nR_01 , ASN1_EXTENSION_ROOT , dissect_e2ap_NR_ARFCN }, + { 1, &hf_e2ap_eUTRA , ASN1_EXTENSION_ROOT , dissect_e2ap_E_UTRA_ARFCN }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_ServingCell_ARFCN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_ServingCell_ARFCN, ServingCell_ARFCN_choice, + NULL); + + return offset; +} + + + +static int +dissect_e2ap_NR_PCI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 1007U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_e2ap_E_UTRA_PCI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 503U, NULL, TRUE); + + return offset; +} + + +static const value_string e2ap_ServingCell_PCI_vals[] = { + { 0, "nR" }, + { 1, "eUTRA" }, + { 0, NULL } +}; + +static const per_choice_t ServingCell_PCI_choice[] = { + { 0, &hf_e2ap_nR_02 , ASN1_EXTENSION_ROOT , dissect_e2ap_NR_PCI }, + { 1, &hf_e2ap_eUTRA_01 , ASN1_EXTENSION_ROOT , dissect_e2ap_E_UTRA_PCI }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_ServingCell_PCI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_ServingCell_PCI, ServingCell_PCI_choice, + NULL); + + return offset; +} + + + +static int +dissect_e2ap_AMF_UE_NGAP_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index, + 0U, G_GUINT64_CONSTANT(1099511627775), NULL, FALSE); + + return offset; +} + + + +static int +dissect_e2ap_GNB_CU_UE_F1AP_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 4294967295U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t UEID_GNB_CU_CP_F1AP_ID_Item_sequence[] = { + { &hf_e2ap_gNB_CU_UE_F1AP_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GNB_CU_UE_F1AP_ID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_UEID_GNB_CU_CP_F1AP_ID_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_UEID_GNB_CU_CP_F1AP_ID_Item, UEID_GNB_CU_CP_F1AP_ID_Item_sequence); + + return offset; +} + + +static const per_sequence_t UEID_GNB_CU_F1AP_ID_List_sequence_of[1] = { + { &hf_e2ap_UEID_GNB_CU_F1AP_ID_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_UEID_GNB_CU_CP_F1AP_ID_Item }, +}; + +static int +dissect_e2ap_UEID_GNB_CU_F1AP_ID_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_UEID_GNB_CU_F1AP_ID_List, UEID_GNB_CU_F1AP_ID_List_sequence_of, + 1, maxF1APid, FALSE); + + return offset; +} + + + +static int +dissect_e2ap_GNB_CU_CP_UE_E1AP_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 4294967295U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t UEID_GNB_CU_CP_E1AP_ID_Item_sequence[] = { + { &hf_e2ap_gNB_CU_CP_UE_E1AP_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GNB_CU_CP_UE_E1AP_ID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_UEID_GNB_CU_CP_E1AP_ID_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_UEID_GNB_CU_CP_E1AP_ID_Item, UEID_GNB_CU_CP_E1AP_ID_Item_sequence); + + return offset; +} + + +static const per_sequence_t UEID_GNB_CU_CP_E1AP_ID_List_sequence_of[1] = { + { &hf_e2ap_UEID_GNB_CU_CP_E1AP_ID_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_UEID_GNB_CU_CP_E1AP_ID_Item }, +}; + +static int +dissect_e2ap_UEID_GNB_CU_CP_E1AP_ID_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_UEID_GNB_CU_CP_E1AP_ID_List, UEID_GNB_CU_CP_E1AP_ID_List_sequence_of, + 1, maxE1APid, FALSE); + + return offset; +} + + + +static int +dissect_e2ap_RANUEID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + 8, 8, FALSE, NULL); + + return offset; +} + + + +static int +dissect_e2ap_NG_RANnodeUEXnAPID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 4294967295U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t UEID_GNB_sequence[] = { + { &hf_e2ap_amf_UE_NGAP_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_AMF_UE_NGAP_ID }, + { &hf_e2ap_guami , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GUAMI }, + { &hf_e2ap_gNB_CU_UE_F1AP_ID_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_UEID_GNB_CU_F1AP_ID_List }, + { &hf_e2ap_gNB_CU_CP_UE_E1AP_ID_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_UEID_GNB_CU_CP_E1AP_ID_List }, + { &hf_e2ap_ran_UEID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_RANUEID }, + { &hf_e2ap_m_NG_RAN_UE_XnAP_ID, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_NG_RANnodeUEXnAPID }, + { &hf_e2ap_globalGNB_ID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_GlobalGNB_ID }, + { &hf_e2ap_globalNG_RANNode_ID, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_e2ap_GlobalNGRANNodeID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_UEID_GNB(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_UEID_GNB, UEID_GNB_sequence); + + return offset; +} + + +static const per_sequence_t UEID_GNB_DU_sequence[] = { + { &hf_e2ap_gNB_CU_UE_F1AP_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GNB_CU_UE_F1AP_ID }, + { &hf_e2ap_ran_UEID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_RANUEID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_UEID_GNB_DU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_UEID_GNB_DU, UEID_GNB_DU_sequence); + + return offset; +} + + +static const per_sequence_t UEID_GNB_CU_UP_sequence[] = { + { &hf_e2ap_gNB_CU_CP_UE_E1AP_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GNB_CU_CP_UE_E1AP_ID }, + { &hf_e2ap_ran_UEID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_RANUEID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_UEID_GNB_CU_UP(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_UEID_GNB_CU_UP, UEID_GNB_CU_UP_sequence); + + return offset; +} + + + +static int +dissect_e2ap_NGENB_CU_UE_W1AP_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 4294967295U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t UEID_NG_ENB_sequence[] = { + { &hf_e2ap_amf_UE_NGAP_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_AMF_UE_NGAP_ID }, + { &hf_e2ap_guami , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GUAMI }, + { &hf_e2ap_ng_eNB_CU_UE_W1AP_ID, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_NGENB_CU_UE_W1AP_ID }, + { &hf_e2ap_m_NG_RAN_UE_XnAP_ID, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_NG_RANnodeUEXnAPID }, + { &hf_e2ap_globalNgENB_ID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_GlobalNgENB_ID }, + { &hf_e2ap_globalNG_RANNode_ID, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_e2ap_GlobalNGRANNodeID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_UEID_NG_ENB(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_UEID_NG_ENB, UEID_NG_ENB_sequence); + + return offset; +} + + +static const per_sequence_t UEID_NG_ENB_DU_sequence[] = { + { &hf_e2ap_ng_eNB_CU_UE_W1AP_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_NGENB_CU_UE_W1AP_ID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_UEID_NG_ENB_DU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_UEID_NG_ENB_DU, UEID_NG_ENB_DU_sequence); + + return offset; +} + + + +static int +dissect_e2ap_ENB_UE_X2AP_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 4095U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_e2ap_ENB_UE_X2AP_ID_Extension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 4095U, NULL, TRUE); + + return offset; +} + + +static const per_sequence_t UEID_EN_GNB_sequence[] = { + { &hf_e2ap_m_eNB_UE_X2AP_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ENB_UE_X2AP_ID }, + { &hf_e2ap_m_eNB_UE_X2AP_ID_Extension, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_ENB_UE_X2AP_ID_Extension }, + { &hf_e2ap_globalENB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GlobalENB_ID }, + { &hf_e2ap_gNB_CU_UE_F1AP_ID, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_GNB_CU_UE_F1AP_ID }, + { &hf_e2ap_gNB_CU_CP_UE_E1AP_ID_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_UEID_GNB_CU_CP_E1AP_ID_List }, + { &hf_e2ap_ran_UEID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_RANUEID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_UEID_EN_GNB(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_UEID_EN_GNB, UEID_EN_GNB_sequence); + + return offset; +} + + + +static int +dissect_e2ap_MME_UE_S1AP_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 4294967295U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t UEID_ENB_sequence[] = { + { &hf_e2ap_mME_UE_S1AP_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_MME_UE_S1AP_ID }, + { &hf_e2ap_gUMMEI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GUMMEI }, + { &hf_e2ap_m_eNB_UE_X2AP_ID, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_ENB_UE_X2AP_ID }, + { &hf_e2ap_m_eNB_UE_X2AP_ID_Extension, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_ENB_UE_X2AP_ID_Extension }, + { &hf_e2ap_globalENB_ID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_GlobalENB_ID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_UEID_ENB(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_UEID_ENB, UEID_ENB_sequence); + + return offset; +} + + +static const value_string e2ap_UEID_vals[] = { + { 0, "gNB-UEID" }, + { 1, "gNB-DU-UEID" }, + { 2, "gNB-CU-UP-UEID" }, + { 3, "ng-eNB-UEID" }, + { 4, "ng-eNB-DU-UEID" }, + { 5, "en-gNB-UEID" }, + { 6, "eNB-UEID" }, + { 0, NULL } +}; + +static const per_choice_t UEID_choice[] = { + { 0, &hf_e2ap_gNB_UEID , ASN1_EXTENSION_ROOT , dissect_e2ap_UEID_GNB }, + { 1, &hf_e2ap_gNB_DU_UEID , ASN1_EXTENSION_ROOT , dissect_e2ap_UEID_GNB_DU }, + { 2, &hf_e2ap_gNB_CU_UP_UEID , ASN1_EXTENSION_ROOT , dissect_e2ap_UEID_GNB_CU_UP }, + { 3, &hf_e2ap_ng_eNB_UEID , ASN1_EXTENSION_ROOT , dissect_e2ap_UEID_NG_ENB }, + { 4, &hf_e2ap_ng_eNB_DU_UEID , ASN1_EXTENSION_ROOT , dissect_e2ap_UEID_NG_ENB_DU }, + { 5, &hf_e2ap_en_gNB_UEID , ASN1_EXTENSION_ROOT , dissect_e2ap_UEID_EN_GNB }, + { 6, &hf_e2ap_eNB_UEID , ASN1_EXTENSION_ROOT , dissect_e2ap_UEID_ENB }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_UEID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_UEID, UEID_choice, + NULL); + + return offset; +} + + + +static int +dissect_e2ap_QCI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 255U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_e2ap_E_UTRA_TAC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + 2, 2, FALSE, NULL); + + return offset; +} + + + +static int +dissect_e2ap_FiveQI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 255U, NULL, TRUE); + + return offset; +} + + + +static int +dissect_e2ap_QosFlowIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 63U, NULL, TRUE); + + return offset; +} + + + +static int +dissect_e2ap_FiveGS_TAC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + 3, 3, FALSE, NULL); + + return offset; +} + + + +static int +dissect_e2ap_INTEGER_1_1024_(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 1U, 1024U, NULL, TRUE); + + return offset; +} + + +static const per_sequence_t SupportedSULFreqBandItem_sequence[] = { + { &hf_e2ap_freqBandIndicatorNr, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_INTEGER_1_1024_ }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_SupportedSULFreqBandItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_SupportedSULFreqBandItem, SupportedSULFreqBandItem_sequence); + + return offset; +} + + +static const per_sequence_t SupportedSULBandList_sequence_of[1] = { + { &hf_e2ap_SupportedSULBandList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_SupportedSULFreqBandItem }, +}; + +static int +dissect_e2ap_SupportedSULBandList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SupportedSULBandList, SupportedSULBandList_sequence_of, + 0, maxnoofNrCellBands, FALSE); + + return offset; +} + + +static const per_sequence_t NRFrequencyBandItem_sequence[] = { + { &hf_e2ap_freqBandIndicatorNr, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_INTEGER_1_1024_ }, + { &hf_e2ap_supportedSULBandList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SupportedSULBandList }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_NRFrequencyBandItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_NRFrequencyBandItem, NRFrequencyBandItem_sequence); + + return offset; +} + + +static const per_sequence_t NRFrequencyBand_List_sequence_of[1] = { + { &hf_e2ap_NRFrequencyBand_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_NRFrequencyBandItem }, +}; + +static int +dissect_e2ap_NRFrequencyBand_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_NRFrequencyBand_List, NRFrequencyBand_List_sequence_of, + 1, maxnoofNrCellBands, FALSE); + + return offset; +} + + +static const value_string e2ap_NRFrequencyShift7p5khz_vals[] = { + { 0, "false" }, + { 1, "true" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_NRFrequencyShift7p5khz(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const per_sequence_t NRFrequencyInfo_sequence[] = { + { &hf_e2ap_nrARFCN , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_NR_ARFCN }, + { &hf_e2ap_frequencyBand_List, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_NRFrequencyBand_List }, + { &hf_e2ap_frequencyShift7p5khz, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_NRFrequencyShift7p5khz }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_NRFrequencyInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_NRFrequencyInfo, NRFrequencyInfo_sequence); + + return offset; +} + + +static const value_string e2ap_LogicalOR_vals[] = { + { 0, "true" }, + { 1, "false" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_LogicalOR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string e2ap_T_nR_mode_info_vals[] = { + { 0, "fdd" }, + { 1, "tdd" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_T_nR_mode_info(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string e2ap_T_x2_Xn_established_vals[] = { + { 0, "true" }, + { 1, "false" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_T_x2_Xn_established(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string e2ap_T_hO_validated_vals[] = { + { 0, "true" }, + { 1, "false" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_T_hO_validated(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, TRUE, 0, NULL); + + return offset; +} + + + +static int +dissect_e2ap_INTEGER_1_65535_(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 1U, 65535U, NULL, TRUE); + + return offset; +} + + +static const per_sequence_t NeighborCell_Item_Choice_NR_sequence[] = { + { &hf_e2ap_nR_CGI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_NR_CGI }, + { &hf_e2ap_nR_PCI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_NR_PCI }, + { &hf_e2ap_fiveGS_TAC , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_FiveGS_TAC }, + { &hf_e2ap_nR_mode_info , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_T_nR_mode_info }, + { &hf_e2ap_nR_FreqInfo , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_NRFrequencyInfo }, + { &hf_e2ap_x2_Xn_established, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_T_x2_Xn_established }, + { &hf_e2ap_hO_validated , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_T_hO_validated }, + { &hf_e2ap_version , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_INTEGER_1_65535_ }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_NeighborCell_Item_Choice_NR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_NeighborCell_Item_Choice_NR, NeighborCell_Item_Choice_NR_sequence); + + return offset; +} + + +static const value_string e2ap_T_x2_Xn_established_01_vals[] = { + { 0, "true" }, + { 1, "false" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_T_x2_Xn_established_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string e2ap_T_hO_validated_01_vals[] = { + { 0, "true" }, + { 1, "false" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_T_hO_validated_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const per_sequence_t NeighborCell_Item_Choice_E_UTRA_sequence[] = { + { &hf_e2ap_eUTRA_CGI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_EUTRA_CGI }, + { &hf_e2ap_eUTRA_PCI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_E_UTRA_PCI }, + { &hf_e2ap_eUTRA_ARFCN , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_E_UTRA_ARFCN }, + { &hf_e2ap_eUTRA_TAC , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_E_UTRA_TAC }, + { &hf_e2ap_x2_Xn_established_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_T_x2_Xn_established_01 }, + { &hf_e2ap_hO_validated_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_T_hO_validated_01 }, + { &hf_e2ap_version , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_INTEGER_1_65535_ }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_NeighborCell_Item_Choice_E_UTRA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_NeighborCell_Item_Choice_E_UTRA, NeighborCell_Item_Choice_E_UTRA_sequence); + + return offset; +} + + +static const value_string e2ap_NeighborCell_Item_vals[] = { + { 0, "ranType-Choice-NR" }, + { 1, "ranType-Choice-EUTRA" }, + { 0, NULL } +}; + +static const per_choice_t NeighborCell_Item_choice[] = { + { 0, &hf_e2ap_ranType_Choice_NR, ASN1_EXTENSION_ROOT , dissect_e2ap_NeighborCell_Item_Choice_NR }, + { 1, &hf_e2ap_ranType_Choice_EUTRA, ASN1_EXTENSION_ROOT , dissect_e2ap_NeighborCell_Item_Choice_E_UTRA }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_NeighborCell_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_NeighborCell_Item, NeighborCell_Item_choice, + NULL); + + return offset; +} + + +static const per_sequence_t NeighborCell_List_sequence_of[1] = { + { &hf_e2ap_NeighborCell_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_NeighborCell_Item }, +}; + +static int +dissect_e2ap_NeighborCell_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_NeighborCell_List, NeighborCell_List_sequence_of, + 1, maxnoofNeighbourCell, FALSE); + + return offset; +} + + +static const per_sequence_t NeighborRelation_Info_sequence[] = { + { &hf_e2ap_servingCellPCI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ServingCell_PCI }, + { &hf_e2ap_servingCellARFCN, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ServingCell_ARFCN }, + { &hf_e2ap_neighborCell_List, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_NeighborCell_List }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_NeighborRelation_Info(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_NeighborRelation_Info, NeighborRelation_Info_sequence); + + return offset; +} + + +static const value_string e2ap_RRC_State_vals[] = { + { 0, "rrc-connected" }, + { 1, "rrc-inactive" }, + { 2, "rrc-idle" }, + { 3, "any" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_RRC_State(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 4, NULL, TRUE, 0, NULL); + + return offset; +} + + + +static int +dissect_e2ap_RIC_EventTrigger_Cell_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 1U, 65535U, NULL, TRUE); + + return offset; +} + + +static const per_sequence_t EventTrigger_Cell_Info_Item_Choice_Individual_sequence[] = { + { &hf_e2ap_cellGlobalID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_CGI }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_EventTrigger_Cell_Info_Item_Choice_Individual(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_EventTrigger_Cell_Info_Item_Choice_Individual, EventTrigger_Cell_Info_Item_Choice_Individual_sequence); + + return offset; +} + + + +static int +dissect_e2ap_RANParameter_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 1U, 4294967295U, NULL, TRUE); + + return offset; +} + + +static const per_sequence_t RANParameter_Testing_LIST_sequence_of[1] = { + { &hf_e2ap_RANParameter_Testing_LIST_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_Testing_Item }, +}; + +static int +dissect_e2ap_RANParameter_Testing_LIST(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANParameter_Testing_LIST, RANParameter_Testing_LIST_sequence_of, + 1, maxnoofItemsinList, FALSE); + + return offset; +} + + +static const per_sequence_t RANParameter_Testing_Item_Choice_List_sequence[] = { + { &hf_e2ap_ranParameter_List_02, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_Testing_LIST }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RANParameter_Testing_Item_Choice_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANParameter_Testing_Item_Choice_List, RANParameter_Testing_Item_Choice_List_sequence); + + return offset; +} + + +static const per_sequence_t RANParameter_Testing_STRUCTURE_sequence_of[1] = { + { &hf_e2ap_RANParameter_Testing_STRUCTURE_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_Testing_Item }, +}; + +static int +dissect_e2ap_RANParameter_Testing_STRUCTURE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANParameter_Testing_STRUCTURE, RANParameter_Testing_STRUCTURE_sequence_of, + 1, maxnoofParametersinStructure, FALSE); + + return offset; +} + + +static const per_sequence_t RANParameter_Testing_Item_Choice_Structure_sequence[] = { + { &hf_e2ap_ranParameter_Structure_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_Testing_STRUCTURE }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RANParameter_Testing_Item_Choice_Structure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANParameter_Testing_Item_Choice_Structure, RANParameter_Testing_Item_Choice_Structure_sequence); + + return offset; +} + + + +static int +dissect_e2ap_BOOLEAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL); + + return offset; +} + + + +static int +dissect_e2ap_REAL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_real(tvb, offset, actx, tree, hf_index, NULL); + + return offset; +} + + + +static int +dissect_e2ap_BIT_STRING(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + NO_BOUND, NO_BOUND, FALSE, NULL, 0, NULL, NULL); + + return offset; +} + + + +static int +dissect_e2ap_PrintableString(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index, + NO_BOUND, NO_BOUND, FALSE); + + return offset; +} + + +static const value_string e2ap_RANParameter_Value_vals[] = { + { 0, "valueBoolean" }, + { 1, "valueInt" }, + { 2, "valueReal" }, + { 3, "valueBitS" }, + { 4, "valueOctS" }, + { 5, "valuePrintableString" }, + { 0, NULL } +}; + +static const per_choice_t RANParameter_Value_choice[] = { + { 0, &hf_e2ap_valueBoolean , ASN1_EXTENSION_ROOT , dissect_e2ap_BOOLEAN }, + { 1, &hf_e2ap_valueInt , ASN1_EXTENSION_ROOT , dissect_e2ap_INTEGER }, + { 2, &hf_e2ap_valueReal , ASN1_EXTENSION_ROOT , dissect_e2ap_REAL }, + { 3, &hf_e2ap_valueBitS , ASN1_EXTENSION_ROOT , dissect_e2ap_BIT_STRING }, + { 4, &hf_e2ap_valueOctS , ASN1_EXTENSION_ROOT , dissect_e2ap_OCTET_STRING }, + { 5, &hf_e2ap_valuePrintableString, ASN1_EXTENSION_ROOT , dissect_e2ap_PrintableString }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_RANParameter_Value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANParameter_Value, RANParameter_Value_choice, + NULL); + + return offset; +} + + +static const per_sequence_t RANParameter_Testing_Item_Choice_ElementTrue_sequence[] = { + { &hf_e2ap_ranParameter_value, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_Value }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RANParameter_Testing_Item_Choice_ElementTrue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANParameter_Testing_Item_Choice_ElementTrue, RANParameter_Testing_Item_Choice_ElementTrue_sequence); + + return offset; +} + + +static const value_string e2ap_T_ranP_Choice_comparison_vals[] = { + { 0, "equal" }, + { 1, "difference" }, + { 2, "greaterthan" }, + { 3, "lessthan" }, + { 4, "contains" }, + { 5, "starts-with" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_T_ranP_Choice_comparison(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 6, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string e2ap_T_ranP_Choice_presence_vals[] = { + { 0, "present" }, + { 1, "configured" }, + { 2, "rollover" }, + { 3, "non-zero" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_T_ranP_Choice_presence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 4, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string e2ap_RANParameter_TestingCondition_vals[] = { + { 0, "ranP-Choice-comparison" }, + { 1, "ranP-Choice-presence" }, + { 0, NULL } +}; + +static const per_choice_t RANParameter_TestingCondition_choice[] = { + { 0, &hf_e2ap_ranP_Choice_comparison, ASN1_EXTENSION_ROOT , dissect_e2ap_T_ranP_Choice_comparison }, + { 1, &hf_e2ap_ranP_Choice_presence, ASN1_EXTENSION_ROOT , dissect_e2ap_T_ranP_Choice_presence }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_RANParameter_TestingCondition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANParameter_TestingCondition, RANParameter_TestingCondition_choice, + NULL); + + return offset; +} + + +static const per_sequence_t RANParameter_Testing_Item_Choice_ElementFalse_sequence[] = { + { &hf_e2ap_ranParameter_TestCondition, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_TestingCondition }, + { &hf_e2ap_ranParameter_Value, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_RANParameter_Value }, + { &hf_e2ap_logicalOR , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_LogicalOR }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RANParameter_Testing_Item_Choice_ElementFalse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANParameter_Testing_Item_Choice_ElementFalse, RANParameter_Testing_Item_Choice_ElementFalse_sequence); + + return offset; +} + + +static const value_string e2ap_T_ranParameter_Type_vals[] = { + { 0, "ranP-Choice-List" }, + { 1, "ranP-Choice-Structure" }, + { 2, "ranP-Choice-ElementTrue" }, + { 3, "ranP-Choice-ElementFalse" }, + { 0, NULL } +}; + +static const per_choice_t T_ranParameter_Type_choice[] = { + { 0, &hf_e2ap_ranP_Choice_List_01, ASN1_EXTENSION_ROOT , dissect_e2ap_RANParameter_Testing_Item_Choice_List }, + { 1, &hf_e2ap_ranP_Choice_Structure_01, ASN1_EXTENSION_ROOT , dissect_e2ap_RANParameter_Testing_Item_Choice_Structure }, + { 2, &hf_e2ap_ranP_Choice_ElementTrue_01, ASN1_EXTENSION_ROOT , dissect_e2ap_RANParameter_Testing_Item_Choice_ElementTrue }, + { 3, &hf_e2ap_ranP_Choice_ElementFalse_01, ASN1_EXTENSION_ROOT , dissect_e2ap_RANParameter_Testing_Item_Choice_ElementFalse }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_T_ranParameter_Type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_T_ranParameter_Type, T_ranParameter_Type_choice, + NULL); + + return offset; +} + + +static const per_sequence_t RANParameter_Testing_Item_sequence[] = { + { &hf_e2ap_ranParameter_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_ID }, + { &hf_e2ap_ranParameter_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_T_ranParameter_Type }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RANParameter_Testing_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANParameter_Testing_Item, RANParameter_Testing_Item_sequence); + + return offset; +} + + +static const per_sequence_t RANParameter_Testing_sequence_of[1] = { + { &hf_e2ap_RANParameter_Testing_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_Testing_Item }, +}; + +static int +dissect_e2ap_RANParameter_Testing(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANParameter_Testing, RANParameter_Testing_sequence_of, + 1, maxnoofRANparamTest, FALSE); + + return offset; +} + + +static const per_sequence_t EventTrigger_Cell_Info_Item_Choice_Group_sequence[] = { + { &hf_e2ap_ranParameterTesting, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_Testing }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_EventTrigger_Cell_Info_Item_Choice_Group(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_EventTrigger_Cell_Info_Item_Choice_Group, EventTrigger_Cell_Info_Item_Choice_Group_sequence); + + return offset; +} + + +static const value_string e2ap_T_cellType_vals[] = { + { 0, "cellType-Choice-Individual" }, + { 1, "cellType-Choice-Group" }, + { 0, NULL } +}; + +static const per_choice_t T_cellType_choice[] = { + { 0, &hf_e2ap_cellType_Choice_Individual, ASN1_EXTENSION_ROOT , dissect_e2ap_EventTrigger_Cell_Info_Item_Choice_Individual }, + { 1, &hf_e2ap_cellType_Choice_Group, ASN1_EXTENSION_ROOT , dissect_e2ap_EventTrigger_Cell_Info_Item_Choice_Group }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_T_cellType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_T_cellType, T_cellType_choice, + NULL); + + return offset; +} + + +static const per_sequence_t EventTrigger_Cell_Info_Item_sequence[] = { + { &hf_e2ap_eventTriggerCellID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_EventTrigger_Cell_ID }, + { &hf_e2ap_cellType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_T_cellType }, + { &hf_e2ap_logicalOR , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_LogicalOR }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_EventTrigger_Cell_Info_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_EventTrigger_Cell_Info_Item, EventTrigger_Cell_Info_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofCellInfo_OF_EventTrigger_Cell_Info_Item_sequence_of[1] = { + { &hf_e2ap_cellInfo_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_EventTrigger_Cell_Info_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofCellInfo_OF_EventTrigger_Cell_Info_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofCellInfo_OF_EventTrigger_Cell_Info_Item, SEQUENCE_SIZE_1_maxnoofCellInfo_OF_EventTrigger_Cell_Info_Item_sequence_of, + 1, maxnoofCellInfo, FALSE); + + return offset; +} + + +static const per_sequence_t EventTrigger_Cell_Info_sequence[] = { + { &hf_e2ap_cellInfo_List , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofCellInfo_OF_EventTrigger_Cell_Info_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_EventTrigger_Cell_Info(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_EventTrigger_Cell_Info, EventTrigger_Cell_Info_sequence); + + return offset; +} + + + +static int +dissect_e2ap_RIC_EventTrigger_UE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 1U, 65535U, NULL, TRUE); + + return offset; +} + + +static const per_sequence_t EventTrigger_UE_Info_Item_Choice_Individual_sequence[] = { + { &hf_e2ap_ueID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_UEID }, + { &hf_e2ap_ranParameterTesting, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_RANParameter_Testing }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_EventTrigger_UE_Info_Item_Choice_Individual(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_EventTrigger_UE_Info_Item_Choice_Individual, EventTrigger_UE_Info_Item_Choice_Individual_sequence); + + return offset; +} + + +static const per_sequence_t EventTrigger_UE_Info_Item_Choice_Group_sequence[] = { + { &hf_e2ap_ranParameterTesting, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_Testing }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_EventTrigger_UE_Info_Item_Choice_Group(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_EventTrigger_UE_Info_Item_Choice_Group, EventTrigger_UE_Info_Item_Choice_Group_sequence); + + return offset; +} + + +static const value_string e2ap_T_ueType_vals[] = { + { 0, "ueType-Choice-Individual" }, + { 1, "ueType-Choice-Group" }, + { 0, NULL } +}; + +static const per_choice_t T_ueType_choice[] = { + { 0, &hf_e2ap_ueType_Choice_Individual, ASN1_EXTENSION_ROOT , dissect_e2ap_EventTrigger_UE_Info_Item_Choice_Individual }, + { 1, &hf_e2ap_ueType_Choice_Group, ASN1_EXTENSION_ROOT , dissect_e2ap_EventTrigger_UE_Info_Item_Choice_Group }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_T_ueType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_T_ueType, T_ueType_choice, + NULL); + + return offset; +} + + +static const per_sequence_t EventTrigger_UE_Info_Item_sequence[] = { + { &hf_e2ap_eventTriggerUEID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_EventTrigger_UE_ID }, + { &hf_e2ap_ueType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_T_ueType }, + { &hf_e2ap_logicalOR , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_LogicalOR }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_EventTrigger_UE_Info_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_EventTrigger_UE_Info_Item, EventTrigger_UE_Info_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofUEInfo_OF_EventTrigger_UE_Info_Item_sequence_of[1] = { + { &hf_e2ap_ueInfo_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_EventTrigger_UE_Info_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofUEInfo_OF_EventTrigger_UE_Info_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofUEInfo_OF_EventTrigger_UE_Info_Item, SEQUENCE_SIZE_1_maxnoofUEInfo_OF_EventTrigger_UE_Info_Item_sequence_of, + 1, maxnoofUEInfo, FALSE); + + return offset; +} + + +static const per_sequence_t EventTrigger_UE_Info_sequence[] = { + { &hf_e2ap_ueInfo_List , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofUEInfo_OF_EventTrigger_UE_Info_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_EventTrigger_UE_Info(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_EventTrigger_UE_Info, EventTrigger_UE_Info_sequence); + + return offset; +} + + + +static int +dissect_e2ap_RIC_EventTrigger_UEevent_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 1U, 65535U, NULL, TRUE); + + return offset; +} + + +static const per_sequence_t EventTrigger_UEevent_Info_Item_sequence[] = { + { &hf_e2ap_ueEventID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_EventTrigger_UEevent_ID }, + { &hf_e2ap_logicalOR , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_LogicalOR }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_EventTrigger_UEevent_Info_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_EventTrigger_UEevent_Info_Item, EventTrigger_UEevent_Info_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofUEeventInfo_OF_EventTrigger_UEevent_Info_Item_sequence_of[1] = { + { &hf_e2ap_ueEvent_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_EventTrigger_UEevent_Info_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofUEeventInfo_OF_EventTrigger_UEevent_Info_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofUEeventInfo_OF_EventTrigger_UEevent_Info_Item, SEQUENCE_SIZE_1_maxnoofUEeventInfo_OF_EventTrigger_UEevent_Info_Item_sequence_of, + 1, maxnoofUEeventInfo, FALSE); + + return offset; +} + + +static const per_sequence_t EventTrigger_UEevent_Info_sequence[] = { + { &hf_e2ap_ueEvent_List , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofUEeventInfo_OF_EventTrigger_UEevent_Info_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_EventTrigger_UEevent_Info(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_EventTrigger_UEevent_Info, EventTrigger_UEevent_Info_sequence); + + return offset; +} + + + +static int +dissect_e2ap_RANParameter_Name(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index, + 1, 150, TRUE); + + return offset; +} + + +static const per_sequence_t RANParameter_Definition_Choice_LIST_Item_sequence[] = { + { &hf_e2ap_ranParameter_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_ID }, + { &hf_e2ap_ranParameter_name, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_Name }, + { &hf_e2ap_ranParameter_Definition, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_RANParameter_Definition }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RANParameter_Definition_Choice_LIST_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANParameter_Definition_Choice_LIST_Item, RANParameter_Definition_Choice_LIST_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofItemsinList_OF_RANParameter_Definition_Choice_LIST_Item_sequence_of[1] = { + { &hf_e2ap_ranParameter_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_Definition_Choice_LIST_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofItemsinList_OF_RANParameter_Definition_Choice_LIST_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofItemsinList_OF_RANParameter_Definition_Choice_LIST_Item, SEQUENCE_SIZE_1_maxnoofItemsinList_OF_RANParameter_Definition_Choice_LIST_Item_sequence_of, + 1, maxnoofItemsinList, FALSE); + + return offset; +} + + +static const per_sequence_t RANParameter_Definition_Choice_LIST_sequence[] = { + { &hf_e2ap_ranParameter_List, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofItemsinList_OF_RANParameter_Definition_Choice_LIST_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RANParameter_Definition_Choice_LIST(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANParameter_Definition_Choice_LIST, RANParameter_Definition_Choice_LIST_sequence); + + return offset; +} + + +static const per_sequence_t RANParameter_Definition_Choice_STRUCTURE_Item_sequence[] = { + { &hf_e2ap_ranParameter_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_ID }, + { &hf_e2ap_ranParameter_name, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_Name }, + { &hf_e2ap_ranParameter_Definition, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_RANParameter_Definition }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RANParameter_Definition_Choice_STRUCTURE_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANParameter_Definition_Choice_STRUCTURE_Item, RANParameter_Definition_Choice_STRUCTURE_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofParametersinStructure_OF_RANParameter_Definition_Choice_STRUCTURE_Item_sequence_of[1] = { + { &hf_e2ap_ranParameter_STRUCTURE_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_Definition_Choice_STRUCTURE_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofParametersinStructure_OF_RANParameter_Definition_Choice_STRUCTURE_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofParametersinStructure_OF_RANParameter_Definition_Choice_STRUCTURE_Item, SEQUENCE_SIZE_1_maxnoofParametersinStructure_OF_RANParameter_Definition_Choice_STRUCTURE_Item_sequence_of, + 1, maxnoofParametersinStructure, FALSE); + + return offset; +} + + +static const per_sequence_t RANParameter_Definition_Choice_STRUCTURE_sequence[] = { + { &hf_e2ap_ranParameter_STRUCTURE, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofParametersinStructure_OF_RANParameter_Definition_Choice_STRUCTURE_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RANParameter_Definition_Choice_STRUCTURE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANParameter_Definition_Choice_STRUCTURE, RANParameter_Definition_Choice_STRUCTURE_sequence); + + return offset; +} + + +static const value_string e2ap_RANParameter_Definition_Choice_vals[] = { + { 0, "choiceLIST" }, + { 1, "choiceSTRUCTURE" }, + { 0, NULL } +}; + +static const per_choice_t RANParameter_Definition_Choice_choice[] = { + { 0, &hf_e2ap_choiceLIST , ASN1_EXTENSION_ROOT , dissect_e2ap_RANParameter_Definition_Choice_LIST }, + { 1, &hf_e2ap_choiceSTRUCTURE, ASN1_EXTENSION_ROOT , dissect_e2ap_RANParameter_Definition_Choice_STRUCTURE }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_RANParameter_Definition_Choice(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANParameter_Definition_Choice, RANParameter_Definition_Choice_choice, + NULL); + + return offset; +} + + +static const per_sequence_t RANParameter_Definition_sequence[] = { + { &hf_e2ap_ranParameter_Definition_Choice, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_Definition_Choice }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RANParameter_Definition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANParameter_Definition, RANParameter_Definition_sequence); + + return offset; +} + + +static const per_sequence_t RANParameter_ValueType_Choice_ElementTrue_sequence[] = { + { &hf_e2ap_ranParameter_value, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_Value }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RANParameter_ValueType_Choice_ElementTrue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANParameter_ValueType_Choice_ElementTrue, RANParameter_ValueType_Choice_ElementTrue_sequence); + + return offset; +} + + +static const per_sequence_t RANParameter_ValueType_Choice_ElementFalse_sequence[] = { + { &hf_e2ap_ranParameter_value, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_RANParameter_Value }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RANParameter_ValueType_Choice_ElementFalse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANParameter_ValueType_Choice_ElementFalse, RANParameter_ValueType_Choice_ElementFalse_sequence); + + return offset; +} + + +static const per_sequence_t RANParameter_STRUCTURE_Item_sequence[] = { + { &hf_e2ap_ranParameter_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_ID }, + { &hf_e2ap_ranParameter_valueType, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_ValueType }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RANParameter_STRUCTURE_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANParameter_STRUCTURE_Item, RANParameter_STRUCTURE_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofParametersinStructure_OF_RANParameter_STRUCTURE_Item_sequence_of[1] = { + { &hf_e2ap_sequence_of_ranParameters_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_STRUCTURE_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofParametersinStructure_OF_RANParameter_STRUCTURE_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofParametersinStructure_OF_RANParameter_STRUCTURE_Item, SEQUENCE_SIZE_1_maxnoofParametersinStructure_OF_RANParameter_STRUCTURE_Item_sequence_of, + 1, maxnoofParametersinStructure, FALSE); + + return offset; +} + + +static const per_sequence_t RANParameter_STRUCTURE_sequence[] = { + { &hf_e2ap_sequence_of_ranParameters, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_SEQUENCE_SIZE_1_maxnoofParametersinStructure_OF_RANParameter_STRUCTURE_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RANParameter_STRUCTURE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANParameter_STRUCTURE, RANParameter_STRUCTURE_sequence); + + return offset; +} + + +static const per_sequence_t RANParameter_ValueType_Choice_Structure_sequence[] = { + { &hf_e2ap_ranParameter_Structure, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_STRUCTURE }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RANParameter_ValueType_Choice_Structure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANParameter_ValueType_Choice_Structure, RANParameter_ValueType_Choice_Structure_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofItemsinList_OF_RANParameter_STRUCTURE_sequence_of[1] = { + { &hf_e2ap_list_of_ranParameter_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_STRUCTURE }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofItemsinList_OF_RANParameter_STRUCTURE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofItemsinList_OF_RANParameter_STRUCTURE, SEQUENCE_SIZE_1_maxnoofItemsinList_OF_RANParameter_STRUCTURE_sequence_of, + 1, maxnoofItemsinList, FALSE); + + return offset; +} + + +static const per_sequence_t RANParameter_LIST_sequence[] = { + { &hf_e2ap_list_of_ranParameter, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofItemsinList_OF_RANParameter_STRUCTURE }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RANParameter_LIST(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANParameter_LIST, RANParameter_LIST_sequence); + + return offset; +} + + +static const per_sequence_t RANParameter_ValueType_Choice_List_sequence[] = { + { &hf_e2ap_ranParameter_List_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_LIST }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RANParameter_ValueType_Choice_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANParameter_ValueType_Choice_List, RANParameter_ValueType_Choice_List_sequence); + + return offset; +} + + +static const value_string e2ap_RANParameter_ValueType_vals[] = { + { 0, "ranP-Choice-ElementTrue" }, + { 1, "ranP-Choice-ElementFalse" }, + { 2, "ranP-Choice-Structure" }, + { 3, "ranP-Choice-List" }, + { 0, NULL } +}; + +static const per_choice_t RANParameter_ValueType_choice[] = { + { 0, &hf_e2ap_ranP_Choice_ElementTrue, ASN1_EXTENSION_ROOT , dissect_e2ap_RANParameter_ValueType_Choice_ElementTrue }, + { 1, &hf_e2ap_ranP_Choice_ElementFalse, ASN1_EXTENSION_ROOT , dissect_e2ap_RANParameter_ValueType_Choice_ElementFalse }, + { 2, &hf_e2ap_ranP_Choice_Structure, ASN1_EXTENSION_ROOT , dissect_e2ap_RANParameter_ValueType_Choice_Structure }, + { 3, &hf_e2ap_ranP_Choice_List, ASN1_EXTENSION_ROOT , dissect_e2ap_RANParameter_ValueType_Choice_List }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_RANParameter_ValueType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANParameter_ValueType, RANParameter_ValueType_choice, + NULL); + + return offset; +} + + + +static int +dissect_e2ap_RAN_CallProcess_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 1U, 232U, NULL, TRUE); + + return offset; +} + + + +static int +dissect_e2ap_RIC_CallProcessType_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 1U, 65535U, NULL, TRUE); + + return offset; +} + + + +static int +dissect_e2ap_RIC_CallProcessType_Name(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index, + 1, 150, TRUE); + + return offset; +} + + + +static int +dissect_e2ap_RIC_CallProcessBreakpoint_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 1U, 65535U, NULL, TRUE); + + return offset; +} + + + +static int +dissect_e2ap_RIC_CallProcessBreakpoint_Name(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index, + 1, 150, TRUE); + + return offset; +} + + + +static int +dissect_e2ap_RIC_ControlAction_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 1U, 65535U, NULL, TRUE); + + return offset; +} + + + +static int +dissect_e2ap_RIC_ControlAction_Name(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index, + 1, 150, TRUE); + + return offset; +} + + + +static int +dissect_e2ap_RIC_EventTriggerCondition_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 1U, 65535U, NULL, TRUE); + + return offset; +} + + + +static int +dissect_e2ap_RIC_InsertIndication_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 1U, 65535U, NULL, TRUE); + + return offset; +} + + + +static int +dissect_e2ap_RIC_InsertIndication_Name(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index, + 1, 150, TRUE); + + return offset; +} + + +static const per_sequence_t RIC_PolicyAction_RANParameter_Item_sequence[] = { + { &hf_e2ap_ranParameter_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_ID }, + { &hf_e2ap_ranParameter_valueType, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_ValueType }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RIC_PolicyAction_RANParameter_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RIC_PolicyAction_RANParameter_Item, RIC_PolicyAction_RANParameter_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_RIC_PolicyAction_RANParameter_Item_sequence_of[1] = { + { &hf_e2ap_ranParameters_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_PolicyAction_RANParameter_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_RIC_PolicyAction_RANParameter_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_RIC_PolicyAction_RANParameter_Item, SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_RIC_PolicyAction_RANParameter_Item_sequence_of, + 1, maxnoofAssociatedRANParameters, FALSE); + + return offset; +} + + +static const value_string e2ap_T_ric_PolicyDecision_vals[] = { + { 0, "accept" }, + { 1, "reject" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_T_ric_PolicyDecision(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const per_sequence_t RIC_PolicyAction_sequence[] = { + { &hf_e2ap_ric_PolicyAction_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_ControlAction_ID }, + { &hf_e2ap_ranParameters_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_RIC_PolicyAction_RANParameter_Item }, + { &hf_e2ap_ric_PolicyDecision, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_e2ap_T_ric_PolicyDecision }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RIC_PolicyAction(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RIC_PolicyAction, RIC_PolicyAction_sequence); + + return offset; +} + + +static const per_sequence_t MessageType_Choice_NI_sequence[] = { + { &hf_e2ap_nI_Type , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_InterfaceType }, + { &hf_e2ap_nI_Identifier , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_InterfaceIdentifier }, + { &hf_e2ap_nI_Message , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_Interface_MessageID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_MessageType_Choice_NI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_MessageType_Choice_NI, MessageType_Choice_NI_sequence); + + return offset; +} + + +static const per_sequence_t MessageType_Choice_RRC_sequence[] = { + { &hf_e2ap_rRC_Message , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RRC_MessageID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_MessageType_Choice_RRC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_MessageType_Choice_RRC, MessageType_Choice_RRC_sequence); + + return offset; +} + + +static const value_string e2ap_MessageType_Choice_vals[] = { + { 0, "messageType-Choice-NI" }, + { 1, "messageType-Choice-RRC" }, + { 0, NULL } +}; + +static const per_choice_t MessageType_Choice_choice[] = { + { 0, &hf_e2ap_messageType_Choice_NI, ASN1_EXTENSION_ROOT , dissect_e2ap_MessageType_Choice_NI }, + { 1, &hf_e2ap_messageType_Choice_RRC, ASN1_EXTENSION_ROOT , dissect_e2ap_MessageType_Choice_RRC }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_MessageType_Choice(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_MessageType_Choice, MessageType_Choice_choice, + NULL); + + return offset; +} + + +static const value_string e2ap_T_messageDirection_vals[] = { + { 0, "incoming" }, + { 1, "outgoing" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_T_messageDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const per_sequence_t E2SM_RC_EventTrigger_Format1_Item_sequence[] = { + { &hf_e2ap_ric_eventTriggerCondition_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_EventTriggerCondition_ID }, + { &hf_e2ap_messageType_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_MessageType_Choice }, + { &hf_e2ap_messageDirection, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_T_messageDirection }, + { &hf_e2ap_associatedUEInfo, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_EventTrigger_UE_Info }, + { &hf_e2ap_associatedUEEvent, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_EventTrigger_UEevent_Info }, + { &hf_e2ap_logicalOR , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_LogicalOR }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_EventTrigger_Format1_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_EventTrigger_Format1_Item, E2SM_RC_EventTrigger_Format1_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofMessages_OF_E2SM_RC_EventTrigger_Format1_Item_sequence_of[1] = { + { &hf_e2ap_message_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_E2SM_RC_EventTrigger_Format1_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofMessages_OF_E2SM_RC_EventTrigger_Format1_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofMessages_OF_E2SM_RC_EventTrigger_Format1_Item, SEQUENCE_SIZE_1_maxnoofMessages_OF_E2SM_RC_EventTrigger_Format1_Item_sequence_of, + 1, maxnoofMessages, FALSE); + + return offset; +} + + +static const per_sequence_t E2SM_RC_EventTrigger_Format1_sequence[] = { + { &hf_e2ap_message_List , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofMessages_OF_E2SM_RC_EventTrigger_Format1_Item }, + { &hf_e2ap_globalAssociatedUEInfo, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_EventTrigger_UE_Info }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_EventTrigger_Format1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_EventTrigger_Format1, E2SM_RC_EventTrigger_Format1_sequence); + + return offset; +} + + +static const per_sequence_t E2SM_RC_EventTrigger_Format2_sequence[] = { + { &hf_e2ap_ric_callProcessType_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_CallProcessType_ID }, + { &hf_e2ap_ric_callProcessBreakpoint_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_CallProcessBreakpoint_ID }, + { &hf_e2ap_associatedE2NodeInfo, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_RANParameter_Testing }, + { &hf_e2ap_associatedUEInfo, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_EventTrigger_UE_Info }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_EventTrigger_Format2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_EventTrigger_Format2, E2SM_RC_EventTrigger_Format2_sequence); + + return offset; +} + + + +static int +dissect_e2ap_INTEGER_1_512_(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 1U, 512U, NULL, TRUE); + + return offset; +} + + +static const per_sequence_t E2SM_RC_EventTrigger_Format3_Item_sequence[] = { + { &hf_e2ap_ric_eventTriggerCondition_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_EventTriggerCondition_ID }, + { &hf_e2ap_e2NodeInfoChange_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_INTEGER_1_512_ }, + { &hf_e2ap_associatedCellInfo, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_EventTrigger_Cell_Info }, + { &hf_e2ap_logicalOR , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_LogicalOR }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_EventTrigger_Format3_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_EventTrigger_Format3_Item, E2SM_RC_EventTrigger_Format3_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofE2InfoChanges_OF_E2SM_RC_EventTrigger_Format3_Item_sequence_of[1] = { + { &hf_e2ap_e2NodeInfoChange_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_E2SM_RC_EventTrigger_Format3_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofE2InfoChanges_OF_E2SM_RC_EventTrigger_Format3_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofE2InfoChanges_OF_E2SM_RC_EventTrigger_Format3_Item, SEQUENCE_SIZE_1_maxnoofE2InfoChanges_OF_E2SM_RC_EventTrigger_Format3_Item_sequence_of, + 1, maxnoofE2InfoChanges, FALSE); + + return offset; +} + + +static const per_sequence_t E2SM_RC_EventTrigger_Format3_sequence[] = { + { &hf_e2ap_e2NodeInfoChange_List, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofE2InfoChanges_OF_E2SM_RC_EventTrigger_Format3_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_EventTrigger_Format3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_EventTrigger_Format3, E2SM_RC_EventTrigger_Format3_sequence); + + return offset; +} + + +static const per_sequence_t TriggerType_Choice_RRCstate_Item_sequence[] = { + { &hf_e2ap_stateChangedTo , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RRC_State }, + { &hf_e2ap_logicalOR , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_LogicalOR }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_TriggerType_Choice_RRCstate_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_TriggerType_Choice_RRCstate_Item, TriggerType_Choice_RRCstate_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofRRCstate_OF_TriggerType_Choice_RRCstate_Item_sequence_of[1] = { + { &hf_e2ap_rrcState_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_TriggerType_Choice_RRCstate_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofRRCstate_OF_TriggerType_Choice_RRCstate_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofRRCstate_OF_TriggerType_Choice_RRCstate_Item, SEQUENCE_SIZE_1_maxnoofRRCstate_OF_TriggerType_Choice_RRCstate_Item_sequence_of, + 1, maxnoofRRCstate, FALSE); + + return offset; +} + + +static const per_sequence_t TriggerType_Choice_RRCstate_sequence[] = { + { &hf_e2ap_rrcState_List , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofRRCstate_OF_TriggerType_Choice_RRCstate_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_TriggerType_Choice_RRCstate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_TriggerType_Choice_RRCstate, TriggerType_Choice_RRCstate_sequence); + + return offset; +} + + +static const per_sequence_t TriggerType_Choice_UEID_sequence[] = { + { &hf_e2ap_ueIDchange_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_INTEGER_1_512_ }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_TriggerType_Choice_UEID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_TriggerType_Choice_UEID, TriggerType_Choice_UEID_sequence); + + return offset; +} + + +static const per_sequence_t TriggerType_Choice_L2state_sequence[] = { + { &hf_e2ap_associatedL2variables, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_Testing }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_TriggerType_Choice_L2state(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_TriggerType_Choice_L2state, TriggerType_Choice_L2state_sequence); + + return offset; +} + + +static const value_string e2ap_TriggerType_Choice_vals[] = { + { 0, "triggerType-Choice-RRCstate" }, + { 1, "triggerType-Choice-UEID" }, + { 2, "triggerType-Choice-L2state" }, + { 0, NULL } +}; + +static const per_choice_t TriggerType_Choice_choice[] = { + { 0, &hf_e2ap_triggerType_Choice_RRCstate, ASN1_EXTENSION_ROOT , dissect_e2ap_TriggerType_Choice_RRCstate }, + { 1, &hf_e2ap_triggerType_Choice_UEID, ASN1_EXTENSION_ROOT , dissect_e2ap_TriggerType_Choice_UEID }, + { 2, &hf_e2ap_triggerType_Choice_L2state, ASN1_EXTENSION_ROOT , dissect_e2ap_TriggerType_Choice_L2state }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_TriggerType_Choice(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_TriggerType_Choice, TriggerType_Choice_choice, + NULL); + + return offset; +} + + +static const per_sequence_t E2SM_RC_EventTrigger_Format4_Item_sequence[] = { + { &hf_e2ap_ric_eventTriggerCondition_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_EventTriggerCondition_ID }, + { &hf_e2ap_triggerType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_TriggerType_Choice }, + { &hf_e2ap_associatedUEInfo, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_EventTrigger_UE_Info }, + { &hf_e2ap_logicalOR , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_LogicalOR }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_EventTrigger_Format4_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_EventTrigger_Format4_Item, E2SM_RC_EventTrigger_Format4_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofUEInfoChanges_OF_E2SM_RC_EventTrigger_Format4_Item_sequence_of[1] = { + { &hf_e2ap_uEInfoChange_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_E2SM_RC_EventTrigger_Format4_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofUEInfoChanges_OF_E2SM_RC_EventTrigger_Format4_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofUEInfoChanges_OF_E2SM_RC_EventTrigger_Format4_Item, SEQUENCE_SIZE_1_maxnoofUEInfoChanges_OF_E2SM_RC_EventTrigger_Format4_Item_sequence_of, + 1, maxnoofUEInfoChanges, FALSE); + + return offset; +} + + +static const per_sequence_t E2SM_RC_EventTrigger_Format4_sequence[] = { + { &hf_e2ap_uEInfoChange_List, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofUEInfoChanges_OF_E2SM_RC_EventTrigger_Format4_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_EventTrigger_Format4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_EventTrigger_Format4, E2SM_RC_EventTrigger_Format4_sequence); + + return offset; +} + + +static const value_string e2ap_T_onDemand_vals[] = { + { 0, "true" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_T_onDemand(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 1, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const per_sequence_t E2SM_RC_EventTrigger_Format5_sequence[] = { + { &hf_e2ap_onDemand , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_T_onDemand }, + { &hf_e2ap_associatedUEInfo, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_EventTrigger_UE_Info }, + { &hf_e2ap_associatedCellInfo, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_EventTrigger_Cell_Info }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_EventTrigger_Format5(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_EventTrigger_Format5, E2SM_RC_EventTrigger_Format5_sequence); + + return offset; +} + + +static const value_string e2ap_T_ric_eventTrigger_formats_vals[] = { + { 0, "eventTrigger-Format1" }, + { 1, "eventTrigger-Format2" }, + { 2, "eventTrigger-Format3" }, + { 3, "eventTrigger-Format4" }, + { 4, "eventTrigger-Format5" }, + { 0, NULL } +}; + +static const per_choice_t T_ric_eventTrigger_formats_choice[] = { + { 0, &hf_e2ap_eventTrigger_Format1, ASN1_EXTENSION_ROOT , dissect_e2ap_E2SM_RC_EventTrigger_Format1 }, + { 1, &hf_e2ap_eventTrigger_Format2, ASN1_EXTENSION_ROOT , dissect_e2ap_E2SM_RC_EventTrigger_Format2 }, + { 2, &hf_e2ap_eventTrigger_Format3, ASN1_EXTENSION_ROOT , dissect_e2ap_E2SM_RC_EventTrigger_Format3 }, + { 3, &hf_e2ap_eventTrigger_Format4, ASN1_EXTENSION_ROOT , dissect_e2ap_E2SM_RC_EventTrigger_Format4 }, + { 4, &hf_e2ap_eventTrigger_Format5, ASN1_EXTENSION_ROOT , dissect_e2ap_E2SM_RC_EventTrigger_Format5 }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_T_ric_eventTrigger_formats(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_T_ric_eventTrigger_formats, T_ric_eventTrigger_formats_choice, + NULL); + + return offset; +} + + +static const per_sequence_t E2SM_RC_EventTrigger_sequence[] = { + { &hf_e2ap_ric_eventTrigger_formats, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_T_ric_eventTrigger_formats }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_EventTrigger(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_EventTrigger, E2SM_RC_EventTrigger_sequence); + + return offset; +} + + +static const per_sequence_t E2SM_RC_ActionDefinition_Format1_Item_sequence[] = { + { &hf_e2ap_ranParameter_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_ID }, + { &hf_e2ap_ranParameter_Definition, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_e2ap_RANParameter_Definition }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_ActionDefinition_Format1_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_ActionDefinition_Format1_Item, E2SM_RC_ActionDefinition_Format1_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofParametersToReport_OF_E2SM_RC_ActionDefinition_Format1_Item_sequence_of[1] = { + { &hf_e2ap_ranP_ToBeReported_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_E2SM_RC_ActionDefinition_Format1_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofParametersToReport_OF_E2SM_RC_ActionDefinition_Format1_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofParametersToReport_OF_E2SM_RC_ActionDefinition_Format1_Item, SEQUENCE_SIZE_1_maxnoofParametersToReport_OF_E2SM_RC_ActionDefinition_Format1_Item_sequence_of, + 1, maxnoofParametersToReport, FALSE); + + return offset; +} + + +static const per_sequence_t E2SM_RC_ActionDefinition_Format1_sequence[] = { + { &hf_e2ap_ranP_ToBeReported_List, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofParametersToReport_OF_E2SM_RC_ActionDefinition_Format1_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_ActionDefinition_Format1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_ActionDefinition_Format1, E2SM_RC_ActionDefinition_Format1_sequence); + + return offset; +} + + +static const per_sequence_t E2SM_RC_ActionDefinition_Format2_Item_sequence[] = { + { &hf_e2ap_ric_PolicyAction, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_PolicyAction }, + { &hf_e2ap_ric_PolicyConditionDefinition, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_RANParameter_Testing }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_ActionDefinition_Format2_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_ActionDefinition_Format2_Item, E2SM_RC_ActionDefinition_Format2_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofPolicyConditions_OF_E2SM_RC_ActionDefinition_Format2_Item_sequence_of[1] = { + { &hf_e2ap_ric_PolicyConditions_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_E2SM_RC_ActionDefinition_Format2_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofPolicyConditions_OF_E2SM_RC_ActionDefinition_Format2_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofPolicyConditions_OF_E2SM_RC_ActionDefinition_Format2_Item, SEQUENCE_SIZE_1_maxnoofPolicyConditions_OF_E2SM_RC_ActionDefinition_Format2_Item_sequence_of, + 1, maxnoofPolicyConditions, FALSE); + + return offset; +} + + +static const per_sequence_t E2SM_RC_ActionDefinition_Format2_sequence[] = { + { &hf_e2ap_ric_PolicyConditions_List, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofPolicyConditions_OF_E2SM_RC_ActionDefinition_Format2_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_ActionDefinition_Format2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_ActionDefinition_Format2, E2SM_RC_ActionDefinition_Format2_sequence); + + return offset; +} + + +static const per_sequence_t E2SM_RC_ActionDefinition_Format3_Item_sequence[] = { + { &hf_e2ap_ranParameter_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_ID }, + { &hf_e2ap_ranParameter_Definition, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_e2ap_RANParameter_Definition }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_ActionDefinition_Format3_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_ActionDefinition_Format3_Item, E2SM_RC_ActionDefinition_Format3_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_ActionDefinition_Format3_Item_sequence_of[1] = { + { &hf_e2ap_ranP_InsertIndication_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_E2SM_RC_ActionDefinition_Format3_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_ActionDefinition_Format3_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_ActionDefinition_Format3_Item, SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_ActionDefinition_Format3_Item_sequence_of, + 1, maxnoofAssociatedRANParameters, FALSE); + + return offset; +} + + +static const per_sequence_t E2SM_RC_ActionDefinition_Format3_sequence[] = { + { &hf_e2ap_ric_InsertIndication_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_InsertIndication_ID }, + { &hf_e2ap_ranP_InsertIndication_List, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_ActionDefinition_Format3_Item }, + { &hf_e2ap_ueID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_UEID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_ActionDefinition_Format3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_ActionDefinition_Format3, E2SM_RC_ActionDefinition_Format3_sequence); + + return offset; +} + + +static const per_sequence_t E2SM_RC_ActionDefinition_Format4_RANP_Item_sequence[] = { + { &hf_e2ap_ranParameter_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_ID }, + { &hf_e2ap_ranParameter_Definition, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_e2ap_RANParameter_Definition }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_ActionDefinition_Format4_RANP_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_ActionDefinition_Format4_RANP_Item, E2SM_RC_ActionDefinition_Format4_RANP_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_ActionDefinition_Format4_RANP_Item_sequence_of[1] = { + { &hf_e2ap_ranP_InsertIndication_List_item_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_E2SM_RC_ActionDefinition_Format4_RANP_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_ActionDefinition_Format4_RANP_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_ActionDefinition_Format4_RANP_Item, SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_ActionDefinition_Format4_RANP_Item_sequence_of, + 1, maxnoofAssociatedRANParameters, FALSE); + + return offset; +} + + +static const per_sequence_t E2SM_RC_ActionDefinition_Format4_Indication_Item_sequence[] = { + { &hf_e2ap_ric_InsertIndication_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_InsertIndication_ID }, + { &hf_e2ap_ranP_InsertIndication_List_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_ActionDefinition_Format4_RANP_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_ActionDefinition_Format4_Indication_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_ActionDefinition_Format4_Indication_Item, E2SM_RC_ActionDefinition_Format4_Indication_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofInsertIndicationActions_OF_E2SM_RC_ActionDefinition_Format4_Indication_Item_sequence_of[1] = { + { &hf_e2ap_ric_InsertIndication_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_E2SM_RC_ActionDefinition_Format4_Indication_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofInsertIndicationActions_OF_E2SM_RC_ActionDefinition_Format4_Indication_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofInsertIndicationActions_OF_E2SM_RC_ActionDefinition_Format4_Indication_Item, SEQUENCE_SIZE_1_maxnoofInsertIndicationActions_OF_E2SM_RC_ActionDefinition_Format4_Indication_Item_sequence_of, + 1, maxnoofInsertIndicationActions, FALSE); + + return offset; +} + + +static const per_sequence_t E2SM_RC_ActionDefinition_Format4_Style_Item_sequence[] = { + { &hf_e2ap_requested_Insert_Style_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Style_Type }, + { &hf_e2ap_ric_InsertIndication_List, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofInsertIndicationActions_OF_E2SM_RC_ActionDefinition_Format4_Indication_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_ActionDefinition_Format4_Style_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_ActionDefinition_Format4_Style_Item, E2SM_RC_ActionDefinition_Format4_Style_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofRICStyles_OF_E2SM_RC_ActionDefinition_Format4_Style_Item_sequence_of[1] = { + { &hf_e2ap_ric_InsertStyle_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_E2SM_RC_ActionDefinition_Format4_Style_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_E2SM_RC_ActionDefinition_Format4_Style_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_E2SM_RC_ActionDefinition_Format4_Style_Item, SEQUENCE_SIZE_1_maxnoofRICStyles_OF_E2SM_RC_ActionDefinition_Format4_Style_Item_sequence_of, + 1, maxnoofRICStyles, FALSE); + + return offset; +} + + +static const per_sequence_t E2SM_RC_ActionDefinition_Format4_sequence[] = { + { &hf_e2ap_ric_InsertStyle_List, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_E2SM_RC_ActionDefinition_Format4_Style_Item }, + { &hf_e2ap_ueID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_UEID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_ActionDefinition_Format4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_ActionDefinition_Format4, E2SM_RC_ActionDefinition_Format4_sequence); + + return offset; +} + + +static const value_string e2ap_T_ric_actionDefinition_formats_vals[] = { + { 0, "actionDefinition-Format1" }, + { 1, "actionDefinition-Format2" }, + { 2, "actionDefinition-Format3" }, + { 3, "actionDefinition-Format4" }, + { 0, NULL } +}; + +static const per_choice_t T_ric_actionDefinition_formats_choice[] = { + { 0, &hf_e2ap_actionDefinition_Format1, ASN1_EXTENSION_ROOT , dissect_e2ap_E2SM_RC_ActionDefinition_Format1 }, + { 1, &hf_e2ap_actionDefinition_Format2, ASN1_EXTENSION_ROOT , dissect_e2ap_E2SM_RC_ActionDefinition_Format2 }, + { 2, &hf_e2ap_actionDefinition_Format3, ASN1_EXTENSION_ROOT , dissect_e2ap_E2SM_RC_ActionDefinition_Format3 }, + { 3, &hf_e2ap_actionDefinition_Format4, ASN1_NOT_EXTENSION_ROOT, dissect_e2ap_E2SM_RC_ActionDefinition_Format4 }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_T_ric_actionDefinition_formats(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_T_ric_actionDefinition_formats, T_ric_actionDefinition_formats_choice, + NULL); + + return offset; +} + + +static const per_sequence_t E2SM_RC_ActionDefinition_sequence[] = { + { &hf_e2ap_ric_Style_Type , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Style_Type }, + { &hf_e2ap_ric_actionDefinition_formats, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_T_ric_actionDefinition_formats }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_ActionDefinition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_ActionDefinition, E2SM_RC_ActionDefinition_sequence); + + return offset; +} + + +static const per_sequence_t E2SM_RC_IndicationHeader_Format1_sequence[] = { + { &hf_e2ap_ric_eventTriggerCondition_ID, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_RIC_EventTriggerCondition_ID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_IndicationHeader_Format1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_IndicationHeader_Format1, E2SM_RC_IndicationHeader_Format1_sequence); + + return offset; +} + + +static const per_sequence_t E2SM_RC_IndicationHeader_Format2_sequence[] = { + { &hf_e2ap_ueID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_UEID }, + { &hf_e2ap_ric_InsertStyle_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Style_Type }, + { &hf_e2ap_ric_InsertIndication_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_InsertIndication_ID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_IndicationHeader_Format2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_IndicationHeader_Format2, E2SM_RC_IndicationHeader_Format2_sequence); + + return offset; +} + + +static const per_sequence_t E2SM_RC_IndicationHeader_Format3_sequence[] = { + { &hf_e2ap_ric_eventTriggerCondition_ID, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_RIC_EventTriggerCondition_ID }, + { &hf_e2ap_ueID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_UEID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_IndicationHeader_Format3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_IndicationHeader_Format3, E2SM_RC_IndicationHeader_Format3_sequence); + + return offset; +} + + +static const value_string e2ap_T_ric_indicationHeader_formats_vals[] = { + { 0, "indicationHeader-Format1" }, + { 1, "indicationHeader-Format2" }, + { 2, "indicationHeader-Format3" }, + { 0, NULL } +}; + +static const per_choice_t T_ric_indicationHeader_formats_choice[] = { + { 0, &hf_e2ap_indicationHeader_Format1, ASN1_EXTENSION_ROOT , dissect_e2ap_E2SM_RC_IndicationHeader_Format1 }, + { 1, &hf_e2ap_indicationHeader_Format2, ASN1_EXTENSION_ROOT , dissect_e2ap_E2SM_RC_IndicationHeader_Format2 }, + { 2, &hf_e2ap_indicationHeader_Format3, ASN1_NOT_EXTENSION_ROOT, dissect_e2ap_E2SM_RC_IndicationHeader_Format3 }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_T_ric_indicationHeader_formats(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_T_ric_indicationHeader_formats, T_ric_indicationHeader_formats_choice, + NULL); + + return offset; +} + + +static const per_sequence_t E2SM_RC_IndicationHeader_sequence[] = { + { &hf_e2ap_ric_indicationHeader_formats, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_T_ric_indicationHeader_formats }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_IndicationHeader(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_IndicationHeader, E2SM_RC_IndicationHeader_sequence); + + return offset; +} + + +static const per_sequence_t E2SM_RC_IndicationMessage_Format1_Item_sequence[] = { + { &hf_e2ap_ranParameter_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_ID }, + { &hf_e2ap_ranParameter_valueType, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_ValueType }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_IndicationMessage_Format1_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_IndicationMessage_Format1_Item, E2SM_RC_IndicationMessage_Format1_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format1_Item_sequence_of[1] = { + { &hf_e2ap_ranP_Reported_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_E2SM_RC_IndicationMessage_Format1_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format1_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format1_Item, SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format1_Item_sequence_of, + 1, maxnoofAssociatedRANParameters, FALSE); + + return offset; +} + + +static const per_sequence_t E2SM_RC_IndicationMessage_Format1_sequence[] = { + { &hf_e2ap_ranP_Reported_List, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format1_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_IndicationMessage_Format1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_IndicationMessage_Format1, E2SM_RC_IndicationMessage_Format1_sequence); + + return offset; +} + + +static const per_sequence_t E2SM_RC_IndicationMessage_Format2_RANParameter_Item_sequence[] = { + { &hf_e2ap_ranParameter_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_ID }, + { &hf_e2ap_ranParameter_valueType, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_ValueType }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_IndicationMessage_Format2_RANParameter_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_IndicationMessage_Format2_RANParameter_Item, E2SM_RC_IndicationMessage_Format2_RANParameter_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format2_RANParameter_Item_sequence_of[1] = { + { &hf_e2ap_ranP_List_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_E2SM_RC_IndicationMessage_Format2_RANParameter_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format2_RANParameter_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format2_RANParameter_Item, SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format2_RANParameter_Item_sequence_of, + 1, maxnoofAssociatedRANParameters, FALSE); + + return offset; +} + + +static const per_sequence_t E2SM_RC_IndicationMessage_Format2_Item_sequence[] = { + { &hf_e2ap_ueID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_UEID }, + { &hf_e2ap_ranP_List , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format2_RANParameter_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_IndicationMessage_Format2_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_IndicationMessage_Format2_Item, E2SM_RC_IndicationMessage_Format2_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofUEID_OF_E2SM_RC_IndicationMessage_Format2_Item_sequence_of[1] = { + { &hf_e2ap_ueParameter_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_E2SM_RC_IndicationMessage_Format2_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofUEID_OF_E2SM_RC_IndicationMessage_Format2_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofUEID_OF_E2SM_RC_IndicationMessage_Format2_Item, SEQUENCE_SIZE_1_maxnoofUEID_OF_E2SM_RC_IndicationMessage_Format2_Item_sequence_of, + 1, maxnoofUEID, FALSE); + + return offset; +} + + +static const per_sequence_t E2SM_RC_IndicationMessage_Format2_sequence[] = { + { &hf_e2ap_ueParameter_List, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofUEID_OF_E2SM_RC_IndicationMessage_Format2_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_IndicationMessage_Format2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_IndicationMessage_Format2, E2SM_RC_IndicationMessage_Format2_sequence); + + return offset; +} + + +static const per_sequence_t E2SM_RC_IndicationMessage_Format3_Item_sequence[] = { + { &hf_e2ap_cellGlobal_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_CGI }, + { &hf_e2ap_cellContextInfo, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_OCTET_STRING }, + { &hf_e2ap_cellDeleted , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_BOOLEAN }, + { &hf_e2ap_neighborRelation_Table, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_NeighborRelation_Info }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_IndicationMessage_Format3_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_IndicationMessage_Format3_Item, E2SM_RC_IndicationMessage_Format3_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofCellID_OF_E2SM_RC_IndicationMessage_Format3_Item_sequence_of[1] = { + { &hf_e2ap_cellInfo_List_item_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_E2SM_RC_IndicationMessage_Format3_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofCellID_OF_E2SM_RC_IndicationMessage_Format3_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofCellID_OF_E2SM_RC_IndicationMessage_Format3_Item, SEQUENCE_SIZE_1_maxnoofCellID_OF_E2SM_RC_IndicationMessage_Format3_Item_sequence_of, + 1, maxnoofCellID, FALSE); + + return offset; +} + + +static const per_sequence_t E2SM_RC_IndicationMessage_Format3_sequence[] = { + { &hf_e2ap_cellInfo_List_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofCellID_OF_E2SM_RC_IndicationMessage_Format3_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_IndicationMessage_Format3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_IndicationMessage_Format3, E2SM_RC_IndicationMessage_Format3_sequence); + + return offset; +} + + +static const per_sequence_t E2SM_RC_IndicationMessage_Format4_ItemUE_sequence[] = { + { &hf_e2ap_ueID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_UEID }, + { &hf_e2ap_ueContextInfo , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_OCTET_STRING }, + { &hf_e2ap_cellGlobal_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_CGI }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_IndicationMessage_Format4_ItemUE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_IndicationMessage_Format4_ItemUE, E2SM_RC_IndicationMessage_Format4_ItemUE_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_0_maxnoofUEID_OF_E2SM_RC_IndicationMessage_Format4_ItemUE_sequence_of[1] = { + { &hf_e2ap_ueInfo_List_item_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_E2SM_RC_IndicationMessage_Format4_ItemUE }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_0_maxnoofUEID_OF_E2SM_RC_IndicationMessage_Format4_ItemUE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_0_maxnoofUEID_OF_E2SM_RC_IndicationMessage_Format4_ItemUE, SEQUENCE_SIZE_0_maxnoofUEID_OF_E2SM_RC_IndicationMessage_Format4_ItemUE_sequence_of, + 0, maxnoofUEID, FALSE); + + return offset; +} + + +static const per_sequence_t E2SM_RC_IndicationMessage_Format4_ItemCell_sequence[] = { + { &hf_e2ap_cellGlobal_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_CGI }, + { &hf_e2ap_cellContextInfo, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_OCTET_STRING }, + { &hf_e2ap_neighborRelation_Table, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_NeighborRelation_Info }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_IndicationMessage_Format4_ItemCell(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_IndicationMessage_Format4_ItemCell, E2SM_RC_IndicationMessage_Format4_ItemCell_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_0_maxnoofCellID_OF_E2SM_RC_IndicationMessage_Format4_ItemCell_sequence_of[1] = { + { &hf_e2ap_cellInfo_List_item_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_E2SM_RC_IndicationMessage_Format4_ItemCell }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_0_maxnoofCellID_OF_E2SM_RC_IndicationMessage_Format4_ItemCell(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_0_maxnoofCellID_OF_E2SM_RC_IndicationMessage_Format4_ItemCell, SEQUENCE_SIZE_0_maxnoofCellID_OF_E2SM_RC_IndicationMessage_Format4_ItemCell_sequence_of, + 0, maxnoofCellID, FALSE); + + return offset; +} + + +static const per_sequence_t E2SM_RC_IndicationMessage_Format4_sequence[] = { + { &hf_e2ap_ueInfo_List_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_0_maxnoofUEID_OF_E2SM_RC_IndicationMessage_Format4_ItemUE }, + { &hf_e2ap_cellInfo_List_02, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_0_maxnoofCellID_OF_E2SM_RC_IndicationMessage_Format4_ItemCell }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_IndicationMessage_Format4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_IndicationMessage_Format4, E2SM_RC_IndicationMessage_Format4_sequence); + + return offset; +} + + +static const per_sequence_t E2SM_RC_IndicationMessage_Format5_Item_sequence[] = { + { &hf_e2ap_ranParameter_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_ID }, + { &hf_e2ap_ranParameter_valueType, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_ValueType }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_IndicationMessage_Format5_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_IndicationMessage_Format5_Item, E2SM_RC_IndicationMessage_Format5_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_0_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format5_Item_sequence_of[1] = { + { &hf_e2ap_ranP_Requested_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_E2SM_RC_IndicationMessage_Format5_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_0_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format5_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_0_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format5_Item, SEQUENCE_SIZE_0_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format5_Item_sequence_of, + 0, maxnoofAssociatedRANParameters, FALSE); + + return offset; +} + + +static const per_sequence_t E2SM_RC_IndicationMessage_Format5_sequence[] = { + { &hf_e2ap_ranP_Requested_List, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_0_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format5_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_IndicationMessage_Format5(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_IndicationMessage_Format5, E2SM_RC_IndicationMessage_Format5_sequence); + + return offset; +} + + +static const per_sequence_t E2SM_RC_IndicationMessage_Format6_RANP_Item_sequence[] = { + { &hf_e2ap_ranParameter_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_ID }, + { &hf_e2ap_ranParameter_valueType, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_ValueType }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_IndicationMessage_Format6_RANP_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_IndicationMessage_Format6_RANP_Item, E2SM_RC_IndicationMessage_Format6_RANP_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_0_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format6_RANP_Item_sequence_of[1] = { + { &hf_e2ap_ranP_InsertIndication_List_item_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_E2SM_RC_IndicationMessage_Format6_RANP_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_0_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format6_RANP_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_0_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format6_RANP_Item, SEQUENCE_SIZE_0_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format6_RANP_Item_sequence_of, + 0, maxnoofAssociatedRANParameters, FALSE); + + return offset; +} + + +static const per_sequence_t E2SM_RC_IndicationMessage_Format6_Indication_Item_sequence[] = { + { &hf_e2ap_ric_InsertIndication_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_InsertIndication_ID }, + { &hf_e2ap_ranP_InsertIndication_List_02, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_0_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format6_RANP_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_IndicationMessage_Format6_Indication_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_IndicationMessage_Format6_Indication_Item, E2SM_RC_IndicationMessage_Format6_Indication_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofInsertIndicationActions_OF_E2SM_RC_IndicationMessage_Format6_Indication_Item_sequence_of[1] = { + { &hf_e2ap_ric_InsertIndication_List_item_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_E2SM_RC_IndicationMessage_Format6_Indication_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofInsertIndicationActions_OF_E2SM_RC_IndicationMessage_Format6_Indication_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofInsertIndicationActions_OF_E2SM_RC_IndicationMessage_Format6_Indication_Item, SEQUENCE_SIZE_1_maxnoofInsertIndicationActions_OF_E2SM_RC_IndicationMessage_Format6_Indication_Item_sequence_of, + 1, maxnoofInsertIndicationActions, FALSE); + + return offset; +} + + +static const per_sequence_t E2SM_RC_IndicationMessage_Format6_Style_Item_sequence[] = { + { &hf_e2ap_indicated_Insert_Style_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Style_Type }, + { &hf_e2ap_ric_InsertIndication_List_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofInsertIndicationActions_OF_E2SM_RC_IndicationMessage_Format6_Indication_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_IndicationMessage_Format6_Style_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_IndicationMessage_Format6_Style_Item, E2SM_RC_IndicationMessage_Format6_Style_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofRICStyles_OF_E2SM_RC_IndicationMessage_Format6_Style_Item_sequence_of[1] = { + { &hf_e2ap_ric_InsertStyle_List_item_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_E2SM_RC_IndicationMessage_Format6_Style_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_E2SM_RC_IndicationMessage_Format6_Style_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_E2SM_RC_IndicationMessage_Format6_Style_Item, SEQUENCE_SIZE_1_maxnoofRICStyles_OF_E2SM_RC_IndicationMessage_Format6_Style_Item_sequence_of, + 1, maxnoofRICStyles, FALSE); + + return offset; +} + + +static const per_sequence_t E2SM_RC_IndicationMessage_Format6_sequence[] = { + { &hf_e2ap_ric_InsertStyle_List_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_E2SM_RC_IndicationMessage_Format6_Style_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_IndicationMessage_Format6(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_IndicationMessage_Format6, E2SM_RC_IndicationMessage_Format6_sequence); + + return offset; +} + + +static const value_string e2ap_T_ric_indicationMessage_formats_vals[] = { + { 0, "indicationMessage-Format1" }, + { 1, "indicationMessage-Format2" }, + { 2, "indicationMessage-Format3" }, + { 3, "indicationMessage-Format4" }, + { 4, "indicationMessage-Format5" }, + { 5, "indicationMessage-Format6" }, + { 0, NULL } +}; + +static const per_choice_t T_ric_indicationMessage_formats_choice[] = { + { 0, &hf_e2ap_indicationMessage_Format1, ASN1_EXTENSION_ROOT , dissect_e2ap_E2SM_RC_IndicationMessage_Format1 }, + { 1, &hf_e2ap_indicationMessage_Format2, ASN1_EXTENSION_ROOT , dissect_e2ap_E2SM_RC_IndicationMessage_Format2 }, + { 2, &hf_e2ap_indicationMessage_Format3, ASN1_EXTENSION_ROOT , dissect_e2ap_E2SM_RC_IndicationMessage_Format3 }, + { 3, &hf_e2ap_indicationMessage_Format4, ASN1_EXTENSION_ROOT , dissect_e2ap_E2SM_RC_IndicationMessage_Format4 }, + { 4, &hf_e2ap_indicationMessage_Format5, ASN1_EXTENSION_ROOT , dissect_e2ap_E2SM_RC_IndicationMessage_Format5 }, + { 5, &hf_e2ap_indicationMessage_Format6, ASN1_NOT_EXTENSION_ROOT, dissect_e2ap_E2SM_RC_IndicationMessage_Format6 }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_T_ric_indicationMessage_formats(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_T_ric_indicationMessage_formats, T_ric_indicationMessage_formats_choice, + NULL); + + return offset; +} + + +static const per_sequence_t E2SM_RC_IndicationMessage_sequence[] = { + { &hf_e2ap_ric_indicationMessage_formats, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_T_ric_indicationMessage_formats }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_IndicationMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_IndicationMessage, E2SM_RC_IndicationMessage_sequence); + + return offset; +} + + +static const per_sequence_t E2SM_RC_CallProcessID_Format1_sequence[] = { + { &hf_e2ap_ric_callProcess_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RAN_CallProcess_ID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_CallProcessID_Format1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_CallProcessID_Format1, E2SM_RC_CallProcessID_Format1_sequence); + + return offset; +} + + +static const value_string e2ap_T_ric_callProcessID_formats_vals[] = { + { 0, "callProcessID-Format1" }, + { 0, NULL } +}; + +static const per_choice_t T_ric_callProcessID_formats_choice[] = { + { 0, &hf_e2ap_callProcessID_Format1, ASN1_EXTENSION_ROOT , dissect_e2ap_E2SM_RC_CallProcessID_Format1 }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_T_ric_callProcessID_formats(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_T_ric_callProcessID_formats, T_ric_callProcessID_formats_choice, + NULL); + + return offset; +} + + +static const per_sequence_t E2SM_RC_CallProcessID_sequence[] = { + { &hf_e2ap_ric_callProcessID_formats, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_T_ric_callProcessID_formats }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_CallProcessID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_CallProcessID, E2SM_RC_CallProcessID_sequence); + + return offset; +} + + +static const per_sequence_t RANFunctionDefinition_EventTrigger_Style_Item_sequence[] = { + { &hf_e2ap_ric_EventTriggerStyle_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Style_Type }, + { &hf_e2ap_ric_EventTriggerStyle_Name, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Style_Name }, + { &hf_e2ap_ric_EventTriggerFormat_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Format_Type }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RANFunctionDefinition_EventTrigger_Style_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANFunctionDefinition_EventTrigger_Style_Item, RANFunctionDefinition_EventTrigger_Style_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_EventTrigger_Style_Item_sequence_of[1] = { + { &hf_e2ap_ric_EventTriggerStyle_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_RANFunctionDefinition_EventTrigger_Style_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_EventTrigger_Style_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_EventTrigger_Style_Item, SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_EventTrigger_Style_Item_sequence_of, + 1, maxnoofRICStyles, FALSE); + + return offset; +} + + +static const per_sequence_t L2Parameters_RANParameter_Item_sequence[] = { + { &hf_e2ap_ranParameter_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_ID }, + { &hf_e2ap_ranParameter_name, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_Name }, + { &hf_e2ap_ranParameter_Definition, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_e2ap_RANParameter_Definition }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_L2Parameters_RANParameter_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_L2Parameters_RANParameter_Item, L2Parameters_RANParameter_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_L2Parameters_RANParameter_Item_sequence_of[1] = { + { &hf_e2ap_ran_L2Parameters_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_L2Parameters_RANParameter_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_L2Parameters_RANParameter_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_L2Parameters_RANParameter_Item, SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_L2Parameters_RANParameter_Item_sequence_of, + 1, maxnoofAssociatedRANParameters, FALSE); + + return offset; +} + + +static const per_sequence_t CallProcessBreakpoint_RANParameter_Item_sequence[] = { + { &hf_e2ap_ranParameter_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_ID }, + { &hf_e2ap_ranParameter_name, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_Name }, + { &hf_e2ap_ranParameter_Definition, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_e2ap_RANParameter_Definition }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_CallProcessBreakpoint_RANParameter_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_CallProcessBreakpoint_RANParameter_Item, CallProcessBreakpoint_RANParameter_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_CallProcessBreakpoint_RANParameter_Item_sequence_of[1] = { + { &hf_e2ap_ran_CallProcessBreakpointParameters_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_CallProcessBreakpoint_RANParameter_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_CallProcessBreakpoint_RANParameter_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_CallProcessBreakpoint_RANParameter_Item, SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_CallProcessBreakpoint_RANParameter_Item_sequence_of, + 1, maxnoofAssociatedRANParameters, FALSE); + + return offset; +} + + +static const per_sequence_t RANFunctionDefinition_EventTrigger_Breakpoint_Item_sequence[] = { + { &hf_e2ap_callProcessBreakpoint_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_CallProcessBreakpoint_ID }, + { &hf_e2ap_callProcessBreakpoint_Name, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_CallProcessBreakpoint_Name }, + { &hf_e2ap_ran_CallProcessBreakpointParameters_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_CallProcessBreakpoint_RANParameter_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RANFunctionDefinition_EventTrigger_Breakpoint_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANFunctionDefinition_EventTrigger_Breakpoint_Item, RANFunctionDefinition_EventTrigger_Breakpoint_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofCallProcessBreakpoints_OF_RANFunctionDefinition_EventTrigger_Breakpoint_Item_sequence_of[1] = { + { &hf_e2ap_callProcessBreakpoints_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_RANFunctionDefinition_EventTrigger_Breakpoint_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofCallProcessBreakpoints_OF_RANFunctionDefinition_EventTrigger_Breakpoint_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofCallProcessBreakpoints_OF_RANFunctionDefinition_EventTrigger_Breakpoint_Item, SEQUENCE_SIZE_1_maxnoofCallProcessBreakpoints_OF_RANFunctionDefinition_EventTrigger_Breakpoint_Item_sequence_of, + 1, maxnoofCallProcessBreakpoints, FALSE); + + return offset; +} + + +static const per_sequence_t RANFunctionDefinition_EventTrigger_CallProcess_Item_sequence[] = { + { &hf_e2ap_callProcessType_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_CallProcessType_ID }, + { &hf_e2ap_callProcessType_Name, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_CallProcessType_Name }, + { &hf_e2ap_callProcessBreakpoints_List, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofCallProcessBreakpoints_OF_RANFunctionDefinition_EventTrigger_Breakpoint_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RANFunctionDefinition_EventTrigger_CallProcess_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANFunctionDefinition_EventTrigger_CallProcess_Item, RANFunctionDefinition_EventTrigger_CallProcess_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofCallProcessTypes_OF_RANFunctionDefinition_EventTrigger_CallProcess_Item_sequence_of[1] = { + { &hf_e2ap_ran_CallProcessTypes_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_RANFunctionDefinition_EventTrigger_CallProcess_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofCallProcessTypes_OF_RANFunctionDefinition_EventTrigger_CallProcess_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofCallProcessTypes_OF_RANFunctionDefinition_EventTrigger_CallProcess_Item, SEQUENCE_SIZE_1_maxnoofCallProcessTypes_OF_RANFunctionDefinition_EventTrigger_CallProcess_Item_sequence_of, + 1, maxnoofCallProcessTypes, FALSE); + + return offset; +} + + +static const per_sequence_t UEIdentification_RANParameter_Item_sequence[] = { + { &hf_e2ap_ranParameter_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_ID }, + { &hf_e2ap_ranParameter_name, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_Name }, + { &hf_e2ap_ranParameter_Definition, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_e2ap_RANParameter_Definition }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_UEIdentification_RANParameter_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_UEIdentification_RANParameter_Item, UEIdentification_RANParameter_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_UEIdentification_RANParameter_Item_sequence_of[1] = { + { &hf_e2ap_ran_UEIdentificationParameters_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_UEIdentification_RANParameter_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_UEIdentification_RANParameter_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_UEIdentification_RANParameter_Item, SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_UEIdentification_RANParameter_Item_sequence_of, + 1, maxnoofAssociatedRANParameters, FALSE); + + return offset; +} + + +static const per_sequence_t CellIdentification_RANParameter_Item_sequence[] = { + { &hf_e2ap_ranParameter_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_ID }, + { &hf_e2ap_ranParameter_name, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_Name }, + { &hf_e2ap_ranParameter_Definition, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_e2ap_RANParameter_Definition }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_CellIdentification_RANParameter_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_CellIdentification_RANParameter_Item, CellIdentification_RANParameter_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_CellIdentification_RANParameter_Item_sequence_of[1] = { + { &hf_e2ap_ran_CellIdentificationParameters_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_CellIdentification_RANParameter_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_CellIdentification_RANParameter_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_CellIdentification_RANParameter_Item, SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_CellIdentification_RANParameter_Item_sequence_of, + 1, maxnoofAssociatedRANParameters, FALSE); + + return offset; +} + + +static const per_sequence_t RANFunctionDefinition_EventTrigger_sequence[] = { + { &hf_e2ap_ric_EventTriggerStyle_List, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_EventTrigger_Style_Item }, + { &hf_e2ap_ran_L2Parameters_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_L2Parameters_RANParameter_Item }, + { &hf_e2ap_ran_CallProcessTypes_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_SEQUENCE_SIZE_1_maxnoofCallProcessTypes_OF_RANFunctionDefinition_EventTrigger_CallProcess_Item }, + { &hf_e2ap_ran_UEIdentificationParameters_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_UEIdentification_RANParameter_Item }, + { &hf_e2ap_ran_CellIdentificationParameters_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_CellIdentification_RANParameter_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RANFunctionDefinition_EventTrigger(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANFunctionDefinition_EventTrigger, RANFunctionDefinition_EventTrigger_sequence); + + return offset; +} + + +static const per_sequence_t Report_RANParameter_Item_sequence[] = { + { &hf_e2ap_ranParameter_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_ID }, + { &hf_e2ap_ranParameter_name, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_Name }, + { &hf_e2ap_ranParameter_Definition, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_e2ap_RANParameter_Definition }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_Report_RANParameter_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_Report_RANParameter_Item, Report_RANParameter_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_Report_RANParameter_Item_sequence_of[1] = { + { &hf_e2ap_ran_ReportParameters_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_Report_RANParameter_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_Report_RANParameter_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_Report_RANParameter_Item, SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_Report_RANParameter_Item_sequence_of, + 1, maxnoofAssociatedRANParameters, FALSE); + + return offset; +} + + +static const per_sequence_t RANFunctionDefinition_Report_Item_sequence[] = { + { &hf_e2ap_ric_ReportStyle_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Style_Type }, + { &hf_e2ap_ric_ReportStyle_Name, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Style_Name }, + { &hf_e2ap_ric_SupportedEventTriggerStyle_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Style_Type }, + { &hf_e2ap_ric_ReportActionFormat_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Format_Type }, + { &hf_e2ap_ric_IndicationHeaderFormat_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Format_Type }, + { &hf_e2ap_ric_IndicationMessageFormat_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Format_Type }, + { &hf_e2ap_ran_ReportParameters_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_Report_RANParameter_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RANFunctionDefinition_Report_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANFunctionDefinition_Report_Item, RANFunctionDefinition_Report_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Report_Item_sequence_of[1] = { + { &hf_e2ap_ric_ReportStyle_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_RANFunctionDefinition_Report_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Report_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Report_Item, SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Report_Item_sequence_of, + 1, maxnoofRICStyles, FALSE); + + return offset; +} + + +static const per_sequence_t RANFunctionDefinition_Report_sequence[] = { + { &hf_e2ap_ric_ReportStyle_List, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Report_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RANFunctionDefinition_Report(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANFunctionDefinition_Report, RANFunctionDefinition_Report_sequence); + + return offset; +} + + +static const per_sequence_t InsertIndication_RANParameter_Item_sequence[] = { + { &hf_e2ap_ranParameter_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_ID }, + { &hf_e2ap_ranParameter_name, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_Name }, + { &hf_e2ap_ranParameter_Definition, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_e2ap_RANParameter_Definition }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_InsertIndication_RANParameter_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_InsertIndication_RANParameter_Item, InsertIndication_RANParameter_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_InsertIndication_RANParameter_Item_sequence_of[1] = { + { &hf_e2ap_ran_InsertIndicationParameters_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_InsertIndication_RANParameter_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_InsertIndication_RANParameter_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_InsertIndication_RANParameter_Item, SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_InsertIndication_RANParameter_Item_sequence_of, + 1, maxnoofAssociatedRANParameters, FALSE); + + return offset; +} + + +static const per_sequence_t RANFunctionDefinition_Insert_Indication_Item_sequence[] = { + { &hf_e2ap_ric_InsertIndication_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_InsertIndication_ID }, + { &hf_e2ap_ric_InsertIndication_Name, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_InsertIndication_Name }, + { &hf_e2ap_ran_InsertIndicationParameters_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_InsertIndication_RANParameter_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RANFunctionDefinition_Insert_Indication_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANFunctionDefinition_Insert_Indication_Item, RANFunctionDefinition_Insert_Indication_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofInsertIndication_OF_RANFunctionDefinition_Insert_Indication_Item_sequence_of[1] = { + { &hf_e2ap_ric_InsertIndication_List_item_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_RANFunctionDefinition_Insert_Indication_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofInsertIndication_OF_RANFunctionDefinition_Insert_Indication_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofInsertIndication_OF_RANFunctionDefinition_Insert_Indication_Item, SEQUENCE_SIZE_1_maxnoofInsertIndication_OF_RANFunctionDefinition_Insert_Indication_Item_sequence_of, + 1, maxnoofInsertIndication, FALSE); + + return offset; +} + + +static const per_sequence_t RANFunctionDefinition_Insert_Item_sequence[] = { + { &hf_e2ap_ric_InsertStyle_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Style_Type }, + { &hf_e2ap_ric_InsertStyle_Name, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Style_Name }, + { &hf_e2ap_ric_SupportedEventTriggerStyle_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Style_Type }, + { &hf_e2ap_ric_ActionDefinitionFormat_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Format_Type }, + { &hf_e2ap_ric_InsertIndication_List_02, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_SEQUENCE_SIZE_1_maxnoofInsertIndication_OF_RANFunctionDefinition_Insert_Indication_Item }, + { &hf_e2ap_ric_IndicationHeaderFormat_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Format_Type }, + { &hf_e2ap_ric_IndicationMessageFormat_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Format_Type }, + { &hf_e2ap_ric_CallProcessIDFormat_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Format_Type }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RANFunctionDefinition_Insert_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANFunctionDefinition_Insert_Item, RANFunctionDefinition_Insert_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Insert_Item_sequence_of[1] = { + { &hf_e2ap_ric_InsertStyle_List_item_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_RANFunctionDefinition_Insert_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Insert_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Insert_Item, SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Insert_Item_sequence_of, + 1, maxnoofRICStyles, FALSE); + + return offset; +} + + +static const per_sequence_t RANFunctionDefinition_Insert_sequence[] = { + { &hf_e2ap_ric_InsertStyle_List_02, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Insert_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RANFunctionDefinition_Insert(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANFunctionDefinition_Insert, RANFunctionDefinition_Insert_sequence); + + return offset; +} + + +static const per_sequence_t ControlAction_RANParameter_Item_sequence[] = { + { &hf_e2ap_ranParameter_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_ID }, + { &hf_e2ap_ranParameter_name, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_Name }, + { &hf_e2ap_ranParameter_Definition, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_e2ap_RANParameter_Definition }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_ControlAction_RANParameter_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_ControlAction_RANParameter_Item, ControlAction_RANParameter_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_ControlAction_RANParameter_Item_sequence_of[1] = { + { &hf_e2ap_ran_ControlActionParameters_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_ControlAction_RANParameter_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_ControlAction_RANParameter_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_ControlAction_RANParameter_Item, SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_ControlAction_RANParameter_Item_sequence_of, + 1, maxnoofAssociatedRANParameters, FALSE); + + return offset; +} + + +static const per_sequence_t RANFunctionDefinition_Control_Action_Item_sequence[] = { + { &hf_e2ap_ric_ControlAction_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_ControlAction_ID }, + { &hf_e2ap_ric_ControlAction_Name, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_ControlAction_Name }, + { &hf_e2ap_ran_ControlActionParameters_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_ControlAction_RANParameter_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RANFunctionDefinition_Control_Action_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANFunctionDefinition_Control_Action_Item, RANFunctionDefinition_Control_Action_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofControlAction_OF_RANFunctionDefinition_Control_Action_Item_sequence_of[1] = { + { &hf_e2ap_ric_ControlAction_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_RANFunctionDefinition_Control_Action_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofControlAction_OF_RANFunctionDefinition_Control_Action_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofControlAction_OF_RANFunctionDefinition_Control_Action_Item, SEQUENCE_SIZE_1_maxnoofControlAction_OF_RANFunctionDefinition_Control_Action_Item_sequence_of, + 1, maxnoofControlAction, FALSE); + + return offset; +} + + +static const per_sequence_t ControlOutcome_RANParameter_Item_sequence[] = { + { &hf_e2ap_ranParameter_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_ID }, + { &hf_e2ap_ranParameter_name, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_Name }, + { &hf_e2ap_ranParameter_Definition, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_e2ap_RANParameter_Definition }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_ControlOutcome_RANParameter_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_ControlOutcome_RANParameter_Item, ControlOutcome_RANParameter_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofRANOutcomeParameters_OF_ControlOutcome_RANParameter_Item_sequence_of[1] = { + { &hf_e2ap_ran_ControlOutcomeParameters_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_ControlOutcome_RANParameter_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofRANOutcomeParameters_OF_ControlOutcome_RANParameter_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofRANOutcomeParameters_OF_ControlOutcome_RANParameter_Item, SEQUENCE_SIZE_1_maxnoofRANOutcomeParameters_OF_ControlOutcome_RANParameter_Item_sequence_of, + 1, maxnoofRANOutcomeParameters, FALSE); + + return offset; +} + + +static const per_sequence_t RANFunctionDefinition_Control_Item_sequence[] = { + { &hf_e2ap_ric_ControlStyle_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Style_Type }, + { &hf_e2ap_ric_ControlStyle_Name, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Style_Name }, + { &hf_e2ap_ric_ControlAction_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_SEQUENCE_SIZE_1_maxnoofControlAction_OF_RANFunctionDefinition_Control_Action_Item }, + { &hf_e2ap_ric_ControlHeaderFormat_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Format_Type }, + { &hf_e2ap_ric_ControlMessageFormat_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Format_Type }, + { &hf_e2ap_ric_CallProcessIDFormat_Type, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_RIC_Format_Type }, + { &hf_e2ap_ric_ControlOutcomeFormat_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Format_Type }, + { &hf_e2ap_ran_ControlOutcomeParameters_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_SEQUENCE_SIZE_1_maxnoofRANOutcomeParameters_OF_ControlOutcome_RANParameter_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RANFunctionDefinition_Control_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANFunctionDefinition_Control_Item, RANFunctionDefinition_Control_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Control_Item_sequence_of[1] = { + { &hf_e2ap_ric_ControlStyle_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_RANFunctionDefinition_Control_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Control_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Control_Item, SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Control_Item_sequence_of, + 1, maxnoofRICStyles, FALSE); + + return offset; +} + + +static const per_sequence_t RANFunctionDefinition_Control_sequence[] = { + { &hf_e2ap_ric_ControlStyle_List, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Control_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RANFunctionDefinition_Control(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANFunctionDefinition_Control, RANFunctionDefinition_Control_sequence); + + return offset; +} + + +static const per_sequence_t PolicyAction_RANParameter_Item_sequence[] = { + { &hf_e2ap_ranParameter_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_ID }, + { &hf_e2ap_ranParameter_name, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_Name }, + { &hf_e2ap_ranParameter_Definition, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_e2ap_RANParameter_Definition }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_PolicyAction_RANParameter_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_PolicyAction_RANParameter_Item, PolicyAction_RANParameter_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_PolicyAction_RANParameter_Item_sequence_of[1] = { + { &hf_e2ap_ran_PolicyActionParameters_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_PolicyAction_RANParameter_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_PolicyAction_RANParameter_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_PolicyAction_RANParameter_Item, SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_PolicyAction_RANParameter_Item_sequence_of, + 1, maxnoofAssociatedRANParameters, FALSE); + + return offset; +} + + +static const per_sequence_t PolicyCondition_RANParameter_Item_sequence[] = { + { &hf_e2ap_ranParameter_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_ID }, + { &hf_e2ap_ranParameter_name, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANParameter_Name }, + { &hf_e2ap_ranParameter_Definition, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_e2ap_RANParameter_Definition }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_PolicyCondition_RANParameter_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_PolicyCondition_RANParameter_Item, PolicyCondition_RANParameter_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_PolicyCondition_RANParameter_Item_sequence_of[1] = { + { &hf_e2ap_ran_PolicyConditionParameters_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_PolicyCondition_RANParameter_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_PolicyCondition_RANParameter_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_PolicyCondition_RANParameter_Item, SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_PolicyCondition_RANParameter_Item_sequence_of, + 1, maxnoofAssociatedRANParameters, FALSE); + + return offset; +} + + +static const per_sequence_t RANFunctionDefinition_Policy_Action_Item_sequence[] = { + { &hf_e2ap_ric_PolicyAction_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_ControlAction_ID }, + { &hf_e2ap_ric_PolicyAction_Name, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_ControlAction_Name }, + { &hf_e2ap_ric_ActionDefinitionFormat_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Format_Type }, + { &hf_e2ap_ran_PolicyActionParameters_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_PolicyAction_RANParameter_Item }, + { &hf_e2ap_ran_PolicyConditionParameters_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_PolicyCondition_RANParameter_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RANFunctionDefinition_Policy_Action_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANFunctionDefinition_Policy_Action_Item, RANFunctionDefinition_Policy_Action_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofPolicyAction_OF_RANFunctionDefinition_Policy_Action_Item_sequence_of[1] = { + { &hf_e2ap_ric_PolicyAction_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_RANFunctionDefinition_Policy_Action_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofPolicyAction_OF_RANFunctionDefinition_Policy_Action_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofPolicyAction_OF_RANFunctionDefinition_Policy_Action_Item, SEQUENCE_SIZE_1_maxnoofPolicyAction_OF_RANFunctionDefinition_Policy_Action_Item_sequence_of, + 1, maxnoofPolicyAction, FALSE); + + return offset; +} + + +static const per_sequence_t RANFunctionDefinition_Policy_Item_sequence[] = { + { &hf_e2ap_ric_PolicyStyle_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Style_Type }, + { &hf_e2ap_ric_PolicyStyle_Name, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Style_Name }, + { &hf_e2ap_ric_SupportedEventTriggerStyle_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Style_Type }, + { &hf_e2ap_ric_PolicyAction_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_SEQUENCE_SIZE_1_maxnoofPolicyAction_OF_RANFunctionDefinition_Policy_Action_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RANFunctionDefinition_Policy_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANFunctionDefinition_Policy_Item, RANFunctionDefinition_Policy_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Policy_Item_sequence_of[1] = { + { &hf_e2ap_ric_PolicyStyle_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_RANFunctionDefinition_Policy_Item }, +}; + +static int +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Policy_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Policy_Item, SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Policy_Item_sequence_of, + 1, maxnoofRICStyles, FALSE); + + return offset; +} + + +static const per_sequence_t RANFunctionDefinition_Policy_sequence[] = { + { &hf_e2ap_ric_PolicyStyle_List, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Policy_Item }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_RANFunctionDefinition_Policy(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_RANFunctionDefinition_Policy, RANFunctionDefinition_Policy_sequence); + + return offset; +} + + +static const per_sequence_t E2SM_RC_RANFunctionDefinition_sequence[] = { + { &hf_e2ap_ranFunction_Name, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANfunction_Name }, + { &hf_e2ap_ranFunctionDefinition_EventTrigger, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_RANFunctionDefinition_EventTrigger }, + { &hf_e2ap_ranFunctionDefinition_Report, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_RANFunctionDefinition_Report }, + { &hf_e2ap_ranFunctionDefinition_Insert, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_RANFunctionDefinition_Insert }, + { &hf_e2ap_ranFunctionDefinition_Control, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_RANFunctionDefinition_Control }, + { &hf_e2ap_ranFunctionDefinition_Policy, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_RANFunctionDefinition_Policy }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_RC_RANFunctionDefinition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_RC_RANFunctionDefinition, E2SM_RC_RANFunctionDefinition_sequence); + + return offset; +} + + + +static int +dissect_e2ap_TimeStamp(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + 4, 4, FALSE, NULL); + + return offset; +} + + + +static int +dissect_e2ap_GranularityPeriod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 1U, 4294967295U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_e2ap_MeasurementTypeName(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index, + 1, 150, TRUE); + + return offset; +} + + + +static int +dissect_e2ap_MeasurementTypeID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 1U, 65536U, NULL, TRUE); + + return offset; +} + + +static const value_string e2ap_MeasurementType_vals[] = { + { 0, "measName" }, + { 1, "measID" }, + { 0, NULL } +}; + +static const per_choice_t MeasurementType_choice[] = { + { 0, &hf_e2ap_measName , ASN1_EXTENSION_ROOT , dissect_e2ap_MeasurementTypeName }, + { 1, &hf_e2ap_measID , ASN1_EXTENSION_ROOT , dissect_e2ap_MeasurementTypeID }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_MeasurementType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_MeasurementType, MeasurementType_choice, + NULL); return offset; } @@ -2395,98 +8518,851 @@ dissect_e2ap_SNSSAI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro } - -static int -dissect_e2ap_RIC_Style_Type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, NULL); - - return offset; -} - - - -static int -dissect_e2ap_RIC_Style_Name(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index, - 1, 150, TRUE); - - return offset; -} - - - -static int -dissect_e2ap_RIC_Format_Type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, NULL); - - return offset; -} - - -static const value_string e2ap_RT_Period_IE_vals[] = { - { 0, "ms10" }, - { 1, "ms20" }, - { 2, "ms32" }, - { 3, "ms40" }, - { 4, "ms60" }, - { 5, "ms64" }, - { 6, "ms70" }, - { 7, "ms80" }, - { 8, "ms128" }, - { 9, "ms160" }, - { 10, "ms256" }, - { 11, "ms320" }, - { 12, "ms512" }, - { 13, "ms640" }, - { 14, "ms1024" }, - { 15, "ms1280" }, - { 16, "ms2048" }, - { 17, "ms2560" }, - { 18, "ms5120" }, - { 19, "ms10240" }, +static const value_string e2ap_T_noLabel_vals[] = { + { 0, "true" }, { 0, NULL } }; static int -dissect_e2ap_RT_Period_IE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_e2ap_T_noLabel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, - 20, NULL, TRUE, 0, NULL); + 1, NULL, TRUE, 0, NULL); return offset; } -static const per_sequence_t Trigger_ConditionIE_Item_sequence[] = { - { &hf_e2ap_report_Period_IE, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RT_Period_IE }, + +static int +dissect_e2ap_INTEGER_1_15_(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 1U, 15U, NULL, TRUE); + + return offset; +} + + +static const value_string e2ap_T_sUM_vals[] = { + { 0, "true" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_T_sUM(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 1, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string e2ap_T_preLabelOverride_vals[] = { + { 0, "true" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_T_preLabelOverride(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 1, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string e2ap_T_startEndInd_vals[] = { + { 0, "start" }, + { 1, "end" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_T_startEndInd(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string e2ap_T_min_vals[] = { + { 0, "true" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_T_min(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 1, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string e2ap_T_max_vals[] = { + { 0, "true" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_T_max(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 1, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string e2ap_T_avg_vals[] = { + { 0, "true" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_T_avg(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 1, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const per_sequence_t MeasurementLabel_sequence[] = { + { &hf_e2ap_noLabel , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_T_noLabel }, + { &hf_e2ap_plmnID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_PLMN_Identity }, + { &hf_e2ap_sliceID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_SNSSAI }, + { &hf_e2ap_fiveQI , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_FiveQI }, + { &hf_e2ap_qFI , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_QosFlowIdentifier }, + { &hf_e2ap_qCI , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_QCI }, + { &hf_e2ap_qCImax , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_QCI }, + { &hf_e2ap_qCImin , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_QCI }, + { &hf_e2ap_aRPmax , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER_1_15_ }, + { &hf_e2ap_aRPmin , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER_1_15_ }, + { &hf_e2ap_bitrateRange , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER_1_65535_ }, + { &hf_e2ap_layerMU_MIMO , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER_1_65535_ }, + { &hf_e2ap_sUM , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_T_sUM }, + { &hf_e2ap_distBinX , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER_1_65535_ }, + { &hf_e2ap_distBinY , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER_1_65535_ }, + { &hf_e2ap_distBinZ , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER_1_65535_ }, + { &hf_e2ap_preLabelOverride, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_T_preLabelOverride }, + { &hf_e2ap_startEndInd , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_T_startEndInd }, + { &hf_e2ap_min , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_T_min }, + { &hf_e2ap_max , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_T_max }, + { &hf_e2ap_avg , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_T_avg }, { NULL, 0, 0, NULL } }; static int -dissect_e2ap_Trigger_ConditionIE_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_e2ap_MeasurementLabel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_Trigger_ConditionIE_Item, Trigger_ConditionIE_Item_sequence); + ett_e2ap_MeasurementLabel, MeasurementLabel_sequence); return offset; } -static const per_sequence_t SEQUENCE_SIZE_1_maxofMessageProtocolTests_OF_Trigger_ConditionIE_Item_sequence_of[1] = { - { &hf_e2ap_policyTest_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_Trigger_ConditionIE_Item }, +static const value_string e2ap_T_gBR_vals[] = { + { 0, "true" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_T_gBR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 1, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string e2ap_T_aMBR_vals[] = { + { 0, "true" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_T_aMBR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 1, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string e2ap_T_isStat_vals[] = { + { 0, "true" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_T_isStat(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 1, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string e2ap_T_isCatM_vals[] = { + { 0, "true" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_T_isCatM(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 1, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string e2ap_T_rSRP_vals[] = { + { 0, "true" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_T_rSRP(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 1, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string e2ap_T_rSRQ_vals[] = { + { 0, "true" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_T_rSRQ(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 1, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string e2ap_T_ul_rSRP_vals[] = { + { 0, "true" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_T_ul_rSRP(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 1, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string e2ap_T_cQI_vals[] = { + { 0, "true" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_T_cQI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 1, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string e2ap_T_fiveQI_vals[] = { + { 0, "true" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_T_fiveQI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 1, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string e2ap_T_qCI_vals[] = { + { 0, "true" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_T_qCI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 1, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string e2ap_T_sNSSAI_vals[] = { + { 0, "true" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_T_sNSSAI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 1, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string e2ap_TestCond_Type_vals[] = { + { 0, "gBR" }, + { 1, "aMBR" }, + { 2, "isStat" }, + { 3, "isCatM" }, + { 4, "rSRP" }, + { 5, "rSRQ" }, + { 6, "ul-rSRP" }, + { 7, "cQI" }, + { 8, "fiveQI" }, + { 9, "qCI" }, + { 10, "sNSSAI" }, + { 0, NULL } +}; + +static const per_choice_t TestCond_Type_choice[] = { + { 0, &hf_e2ap_gBR , ASN1_EXTENSION_ROOT , dissect_e2ap_T_gBR }, + { 1, &hf_e2ap_aMBR , ASN1_EXTENSION_ROOT , dissect_e2ap_T_aMBR }, + { 2, &hf_e2ap_isStat , ASN1_EXTENSION_ROOT , dissect_e2ap_T_isStat }, + { 3, &hf_e2ap_isCatM , ASN1_EXTENSION_ROOT , dissect_e2ap_T_isCatM }, + { 4, &hf_e2ap_rSRP , ASN1_EXTENSION_ROOT , dissect_e2ap_T_rSRP }, + { 5, &hf_e2ap_rSRQ , ASN1_EXTENSION_ROOT , dissect_e2ap_T_rSRQ }, + { 6, &hf_e2ap_ul_rSRP , ASN1_NOT_EXTENSION_ROOT, dissect_e2ap_T_ul_rSRP }, + { 7, &hf_e2ap_cQI , ASN1_NOT_EXTENSION_ROOT, dissect_e2ap_T_cQI }, + { 8, &hf_e2ap_fiveQI_01 , ASN1_NOT_EXTENSION_ROOT, dissect_e2ap_T_fiveQI }, + { 9, &hf_e2ap_qCI_01 , ASN1_NOT_EXTENSION_ROOT, dissect_e2ap_T_qCI }, + { 10, &hf_e2ap_sNSSAI , ASN1_NOT_EXTENSION_ROOT, dissect_e2ap_T_sNSSAI }, + { 0, NULL, 0, NULL } }; static int -dissect_e2ap_SEQUENCE_SIZE_1_maxofMessageProtocolTests_OF_Trigger_ConditionIE_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_e2ap_TestCond_Type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_TestCond_Type, TestCond_Type_choice, + NULL); + + return offset; +} + + +static const value_string e2ap_TestCond_Expression_vals[] = { + { 0, "equal" }, + { 1, "greaterthan" }, + { 2, "lessthan" }, + { 3, "contains" }, + { 4, "present" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_TestCond_Expression(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 5, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string e2ap_TestCond_Value_vals[] = { + { 0, "valueInt" }, + { 1, "valueEnum" }, + { 2, "valueBool" }, + { 3, "valueBitS" }, + { 4, "valueOctS" }, + { 5, "valuePrtS" }, + { 6, "valueReal" }, + { 0, NULL } +}; + +static const per_choice_t TestCond_Value_choice[] = { + { 0, &hf_e2ap_valueInt , ASN1_EXTENSION_ROOT , dissect_e2ap_INTEGER }, + { 1, &hf_e2ap_valueEnum , ASN1_EXTENSION_ROOT , dissect_e2ap_INTEGER }, + { 2, &hf_e2ap_valueBool , ASN1_EXTENSION_ROOT , dissect_e2ap_BOOLEAN }, + { 3, &hf_e2ap_valueBitS , ASN1_EXTENSION_ROOT , dissect_e2ap_BIT_STRING }, + { 4, &hf_e2ap_valueOctS , ASN1_EXTENSION_ROOT , dissect_e2ap_OCTET_STRING }, + { 5, &hf_e2ap_valuePrtS , ASN1_EXTENSION_ROOT , dissect_e2ap_PrintableString }, + { 6, &hf_e2ap_valueReal , ASN1_NOT_EXTENSION_ROOT, dissect_e2ap_REAL }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_TestCond_Value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_TestCond_Value, TestCond_Value_choice, + NULL); + + return offset; +} + + +static const per_sequence_t TestCondInfo_sequence[] = { + { &hf_e2ap_testType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_TestCond_Type }, + { &hf_e2ap_testExpr , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_TestCond_Expression }, + { &hf_e2ap_testValue , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_TestCond_Value }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_TestCondInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_TestCondInfo, TestCondInfo_sequence); + + return offset; +} + + +static const per_sequence_t LabelInfoItem_sequence[] = { + { &hf_e2ap_measLabel , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_MeasurementLabel }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_LabelInfoItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_LabelInfoItem, LabelInfoItem_sequence); + + return offset; +} + + +static const per_sequence_t LabelInfoList_sequence_of[1] = { + { &hf_e2ap_LabelInfoList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_LabelInfoItem }, +}; + +static int +dissect_e2ap_LabelInfoList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, - ett_e2ap_SEQUENCE_SIZE_1_maxofMessageProtocolTests_OF_Trigger_ConditionIE_Item, SEQUENCE_SIZE_1_maxofMessageProtocolTests_OF_Trigger_ConditionIE_Item_sequence_of, - 1, maxofMessageProtocolTests, FALSE); + ett_e2ap_LabelInfoList, LabelInfoList_sequence_of, + 1, maxnoofLabelInfo, FALSE); + + return offset; +} + + +static const per_sequence_t MeasurementInfoItem_sequence[] = { + { &hf_e2ap_measType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_MeasurementType }, + { &hf_e2ap_labelInfoList , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_LabelInfoList }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_MeasurementInfoItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_MeasurementInfoItem, MeasurementInfoItem_sequence); + + return offset; +} + + +static const per_sequence_t MeasurementInfoList_sequence_of[1] = { + { &hf_e2ap_MeasurementInfoList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_MeasurementInfoItem }, +}; + +static int +dissect_e2ap_MeasurementInfoList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_MeasurementInfoList, MeasurementInfoList_sequence_of, + 1, maxnoofMeasurementInfo, FALSE); + + return offset; +} + + + +static int +dissect_e2ap_INTEGER_0_4294967295(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 4294967295U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_e2ap_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_null(tvb, offset, actx, tree, hf_index); + + return offset; +} + + +static const value_string e2ap_MeasurementRecordItem_vals[] = { + { 0, "integer" }, + { 1, "real" }, + { 2, "noValue" }, + { 0, NULL } +}; + +static const per_choice_t MeasurementRecordItem_choice[] = { + { 0, &hf_e2ap_integer , ASN1_EXTENSION_ROOT , dissect_e2ap_INTEGER_0_4294967295 }, + { 1, &hf_e2ap_real , ASN1_EXTENSION_ROOT , dissect_e2ap_REAL }, + { 2, &hf_e2ap_noValue , ASN1_EXTENSION_ROOT , dissect_e2ap_NULL }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_MeasurementRecordItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_MeasurementRecordItem, MeasurementRecordItem_choice, + NULL); + + return offset; +} + + +static const per_sequence_t MeasurementRecord_sequence_of[1] = { + { &hf_e2ap_MeasurementRecord_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_MeasurementRecordItem }, +}; + +static int +dissect_e2ap_MeasurementRecord(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_MeasurementRecord, MeasurementRecord_sequence_of, + 1, maxnoofMeasurementValue, FALSE); + + return offset; +} + + +static const value_string e2ap_T_incompleteFlag_vals[] = { + { 0, "true" }, + { 0, NULL } +}; + + +static int +dissect_e2ap_T_incompleteFlag(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 1, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const per_sequence_t MeasurementDataItem_sequence[] = { + { &hf_e2ap_measRecord , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_MeasurementRecord }, + { &hf_e2ap_incompleteFlag , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_T_incompleteFlag }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_MeasurementDataItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_MeasurementDataItem, MeasurementDataItem_sequence); + + return offset; +} + + +static const per_sequence_t MeasurementData_sequence_of[1] = { + { &hf_e2ap_MeasurementData_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_MeasurementDataItem }, +}; + +static int +dissect_e2ap_MeasurementData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_MeasurementData, MeasurementData_sequence_of, + 1, maxnoofMeasurementRecord, FALSE); + + return offset; +} + + +static const per_sequence_t MeasurementInfo_Action_Item_sequence[] = { + { &hf_e2ap_measName , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_MeasurementTypeName }, + { &hf_e2ap_measID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_MeasurementTypeID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_MeasurementInfo_Action_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_MeasurementInfo_Action_Item, MeasurementInfo_Action_Item_sequence); + + return offset; +} + + +static const per_sequence_t MeasurementInfo_Action_List_sequence_of[1] = { + { &hf_e2ap_MeasurementInfo_Action_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_MeasurementInfo_Action_Item }, +}; + +static int +dissect_e2ap_MeasurementInfo_Action_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_MeasurementInfo_Action_List, MeasurementInfo_Action_List_sequence_of, + 1, maxnoofMeasurementInfo, FALSE); + + return offset; +} + + +static const value_string e2ap_MatchingCondItem_vals[] = { + { 0, "measLabel" }, + { 1, "testCondInfo" }, + { 0, NULL } +}; + +static const per_choice_t MatchingCondItem_choice[] = { + { 0, &hf_e2ap_measLabel , ASN1_EXTENSION_ROOT , dissect_e2ap_MeasurementLabel }, + { 1, &hf_e2ap_testCondInfo , ASN1_EXTENSION_ROOT , dissect_e2ap_TestCondInfo }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_MatchingCondItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_MatchingCondItem, MatchingCondItem_choice, + NULL); + + return offset; +} + + +static const per_sequence_t MatchingCondList_sequence_of[1] = { + { &hf_e2ap_MatchingCondList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_MatchingCondItem }, +}; + +static int +dissect_e2ap_MatchingCondList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_MatchingCondList, MatchingCondList_sequence_of, + 1, maxnoofConditionInfo, FALSE); + + return offset; +} + + +static const per_sequence_t MeasurementCondItem_sequence[] = { + { &hf_e2ap_measType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_MeasurementType }, + { &hf_e2ap_matchingCond , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_MatchingCondList }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_MeasurementCondItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_MeasurementCondItem, MeasurementCondItem_sequence); + + return offset; +} + + +static const per_sequence_t MeasurementCondList_sequence_of[1] = { + { &hf_e2ap_MeasurementCondList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_MeasurementCondItem }, +}; + +static int +dissect_e2ap_MeasurementCondList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_MeasurementCondList, MeasurementCondList_sequence_of, + 1, maxnoofMeasurementInfo, FALSE); + + return offset; +} + + +static const per_sequence_t MatchingUEidItem_sequence[] = { + { &hf_e2ap_ueID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_UEID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_MatchingUEidItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_MatchingUEidItem, MatchingUEidItem_sequence); + + return offset; +} + + +static const per_sequence_t MatchingUEidList_sequence_of[1] = { + { &hf_e2ap_MatchingUEidList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_MatchingUEidItem }, +}; + +static int +dissect_e2ap_MatchingUEidList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_MatchingUEidList, MatchingUEidList_sequence_of, + 1, maxnoofUEID, FALSE); + + return offset; +} + + +static const per_sequence_t MeasurementCondUEidItem_sequence[] = { + { &hf_e2ap_measType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_MeasurementType }, + { &hf_e2ap_matchingCond , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_MatchingCondList }, + { &hf_e2ap_matchingUEidList, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_MatchingUEidList }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_MeasurementCondUEidItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_MeasurementCondUEidItem, MeasurementCondUEidItem_sequence); + + return offset; +} + + +static const per_sequence_t MeasurementCondUEidList_sequence_of[1] = { + { &hf_e2ap_MeasurementCondUEidList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_MeasurementCondUEidItem }, +}; + +static int +dissect_e2ap_MeasurementCondUEidList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_MeasurementCondUEidList, MeasurementCondUEidList_sequence_of, + 1, maxnoofMeasurementInfo, FALSE); + + return offset; +} + + +static const per_sequence_t MatchingUeCondPerSubItem_sequence[] = { + { &hf_e2ap_testCondInfo , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_TestCondInfo }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_MatchingUeCondPerSubItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_MatchingUeCondPerSubItem, MatchingUeCondPerSubItem_sequence); + + return offset; +} + + +static const per_sequence_t MatchingUeCondPerSubList_sequence_of[1] = { + { &hf_e2ap_MatchingUeCondPerSubList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_MatchingUeCondPerSubItem }, +}; + +static int +dissect_e2ap_MatchingUeCondPerSubList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_MatchingUeCondPerSubList, MatchingUeCondPerSubList_sequence_of, + 1, maxnoofConditionInfoPerSub, FALSE); + + return offset; +} + + +static const per_sequence_t MatchingUEidPerSubItem_sequence[] = { + { &hf_e2ap_ueID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_UEID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_MatchingUEidPerSubItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_MatchingUEidPerSubItem, MatchingUEidPerSubItem_sequence); + + return offset; +} + + +static const per_sequence_t MatchingUEidPerSubList_sequence_of[1] = { + { &hf_e2ap_MatchingUEidPerSubList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_MatchingUEidPerSubItem }, +}; + +static int +dissect_e2ap_MatchingUEidPerSubList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_MatchingUEidPerSubList, MatchingUEidPerSubList_sequence_of, + 2, maxnoofUEIDPerSub, FALSE); + + return offset; +} + + +static const per_sequence_t E2SM_KPM_IndicationMessage_Format1_sequence[] = { + { &hf_e2ap_measData , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_MeasurementData }, + { &hf_e2ap_measInfoList , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_MeasurementInfoList }, + { &hf_e2ap_granulPeriod , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_GranularityPeriod }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_KPM_IndicationMessage_Format1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_KPM_IndicationMessage_Format1, E2SM_KPM_IndicationMessage_Format1_sequence); + + return offset; +} + + +static const per_sequence_t UEMeasurementReportItem_sequence[] = { + { &hf_e2ap_ueID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_UEID }, + { &hf_e2ap_measReport , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_E2SM_KPM_IndicationMessage_Format1 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_UEMeasurementReportItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_UEMeasurementReportItem, UEMeasurementReportItem_sequence); + + return offset; +} + + +static const per_sequence_t UEMeasurementReportList_sequence_of[1] = { + { &hf_e2ap_UEMeasurementReportList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_UEMeasurementReportItem }, +}; + +static int +dissect_e2ap_UEMeasurementReportList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e2ap_UEMeasurementReportList, UEMeasurementReportList_sequence_of, + 1, maxnoofUEMeasReport, FALSE); + + return offset; +} + + + +static int +dissect_e2ap_INTEGER_1_4294967295(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 1U, 4294967295U, NULL, FALSE); return offset; } static const per_sequence_t E2SM_KPM_EventTriggerDefinition_Format1_sequence[] = { - { &hf_e2ap_policyTest_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_SEQUENCE_SIZE_1_maxofMessageProtocolTests_OF_Trigger_ConditionIE_Item }, + { &hf_e2ap_reportingPeriod, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_INTEGER_1_4294967295 }, { NULL, 0, 0, NULL } }; @@ -2499,20 +9375,139 @@ dissect_e2ap_E2SM_KPM_EventTriggerDefinition_Format1(tvbuff_t *tvb _U_, int offs } -static const value_string e2ap_E2SM_KPM_EventTriggerDefinition_vals[] = { +static const value_string e2ap_T_eventDefinition_formats_vals[] = { { 0, "eventDefinition-Format1" }, { 0, NULL } }; -static const per_choice_t E2SM_KPM_EventTriggerDefinition_choice[] = { +static const per_choice_t T_eventDefinition_formats_choice[] = { { 0, &hf_e2ap_eventDefinition_Format1, ASN1_EXTENSION_ROOT , dissect_e2ap_E2SM_KPM_EventTriggerDefinition_Format1 }, { 0, NULL, 0, NULL } }; static int -dissect_e2ap_E2SM_KPM_EventTriggerDefinition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_e2ap_T_eventDefinition_formats(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, - ett_e2ap_E2SM_KPM_EventTriggerDefinition, E2SM_KPM_EventTriggerDefinition_choice, + ett_e2ap_T_eventDefinition_formats, T_eventDefinition_formats_choice, + NULL); + + return offset; +} + + +static const per_sequence_t E2SM_KPM_EventTriggerDefinition_sequence[] = { + { &hf_e2ap_eventDefinition_formats, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_T_eventDefinition_formats }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_KPM_EventTriggerDefinition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_KPM_EventTriggerDefinition, E2SM_KPM_EventTriggerDefinition_sequence); + + return offset; +} + + +static const per_sequence_t E2SM_KPM_ActionDefinition_Format1_sequence[] = { + { &hf_e2ap_measInfoList , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_MeasurementInfoList }, + { &hf_e2ap_granulPeriod , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GranularityPeriod }, + { &hf_e2ap_cellGlobalID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_CGI }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_KPM_ActionDefinition_Format1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_KPM_ActionDefinition_Format1, E2SM_KPM_ActionDefinition_Format1_sequence); + + return offset; +} + + +static const per_sequence_t E2SM_KPM_ActionDefinition_Format2_sequence[] = { + { &hf_e2ap_ueID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_UEID }, + { &hf_e2ap_subscriptInfo , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_E2SM_KPM_ActionDefinition_Format1 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_KPM_ActionDefinition_Format2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_KPM_ActionDefinition_Format2, E2SM_KPM_ActionDefinition_Format2_sequence); + + return offset; +} + + +static const per_sequence_t E2SM_KPM_ActionDefinition_Format3_sequence[] = { + { &hf_e2ap_measCondList , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_MeasurementCondList }, + { &hf_e2ap_granulPeriod , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GranularityPeriod }, + { &hf_e2ap_cellGlobalID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_CGI }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_KPM_ActionDefinition_Format3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_KPM_ActionDefinition_Format3, E2SM_KPM_ActionDefinition_Format3_sequence); + + return offset; +} + + +static const per_sequence_t E2SM_KPM_ActionDefinition_Format4_sequence[] = { + { &hf_e2ap_matchingUeCondList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_MatchingUeCondPerSubList }, + { &hf_e2ap_subscriptionInfo, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_E2SM_KPM_ActionDefinition_Format1 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_KPM_ActionDefinition_Format4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_KPM_ActionDefinition_Format4, E2SM_KPM_ActionDefinition_Format4_sequence); + + return offset; +} + + +static const per_sequence_t E2SM_KPM_ActionDefinition_Format5_sequence[] = { + { &hf_e2ap_matchingUEidList_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_MatchingUEidPerSubList }, + { &hf_e2ap_subscriptionInfo, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_E2SM_KPM_ActionDefinition_Format1 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e2ap_E2SM_KPM_ActionDefinition_Format5(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_KPM_ActionDefinition_Format5, E2SM_KPM_ActionDefinition_Format5_sequence); + + return offset; +} + + +static const value_string e2ap_T_actionDefinition_formats_vals[] = { + { 0, "actionDefinition-Format1" }, + { 1, "actionDefinition-Format2" }, + { 2, "actionDefinition-Format3" }, + { 3, "actionDefinition-Format4" }, + { 4, "actionDefinition-Format5" }, + { 0, NULL } +}; + +static const per_choice_t T_actionDefinition_formats_choice[] = { + { 0, &hf_e2ap_actionDefinition_Format1_01, ASN1_EXTENSION_ROOT , dissect_e2ap_E2SM_KPM_ActionDefinition_Format1 }, + { 1, &hf_e2ap_actionDefinition_Format2_01, ASN1_EXTENSION_ROOT , dissect_e2ap_E2SM_KPM_ActionDefinition_Format2 }, + { 2, &hf_e2ap_actionDefinition_Format3_01, ASN1_EXTENSION_ROOT , dissect_e2ap_E2SM_KPM_ActionDefinition_Format3 }, + { 3, &hf_e2ap_actionDefinition_Format4_01, ASN1_NOT_EXTENSION_ROOT, dissect_e2ap_E2SM_KPM_ActionDefinition_Format4 }, + { 4, &hf_e2ap_actionDefinition_Format5, ASN1_NOT_EXTENSION_ROOT, dissect_e2ap_E2SM_KPM_ActionDefinition_Format5 }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e2ap_T_actionDefinition_formats(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_T_actionDefinition_formats, T_actionDefinition_formats_choice, NULL); return offset; @@ -2521,6 +9516,7 @@ dissect_e2ap_E2SM_KPM_EventTriggerDefinition(tvbuff_t *tvb _U_, int offset _U_, static const per_sequence_t E2SM_KPM_ActionDefinition_sequence[] = { { &hf_e2ap_ric_Style_Type , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Style_Type }, + { &hf_e2ap_actionDefinition_formats, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_T_actionDefinition_formats }, { NULL, 0, 0, NULL } }; @@ -2535,21 +9531,50 @@ dissect_e2ap_E2SM_KPM_ActionDefinition(tvbuff_t *tvb _U_, int offset _U_, asn1_c static int -dissect_e2ap_INTEGER_0_255(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, - 0U, 255U, NULL, FALSE); +dissect_e2ap_PrintableString_SIZE_0_15_(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index, + 0, 15, TRUE); + + return offset; +} + + + +static int +dissect_e2ap_PrintableString_SIZE_0_400_(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index, + 0, 400, TRUE); + + return offset; +} + + + +static int +dissect_e2ap_PrintableString_SIZE_0_8_(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index, + 0, 8, TRUE); + + return offset; +} + + + +static int +dissect_e2ap_PrintableString_SIZE_0_32_(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index, + 0, 32, TRUE); return offset; } static const per_sequence_t E2SM_KPM_IndicationHeader_Format1_sequence[] = { - { &hf_e2ap_id_GlobalKPMnode_ID, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_GlobalKPMnode_ID }, - { &hf_e2ap_nRCGI , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_NRCGI }, - { &hf_e2ap_pLMN_Identity , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_PLMN_Identity }, - { &hf_e2ap_sliceID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_SNSSAI }, - { &hf_e2ap_fiveQI , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER_0_255 }, - { &hf_e2ap_qci , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER_0_255 }, + { &hf_e2ap_colletStartTime, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_TimeStamp }, + { &hf_e2ap_fileFormatversion, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_PrintableString_SIZE_0_15_ }, + { &hf_e2ap_senderName , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_PrintableString_SIZE_0_400_ }, + { &hf_e2ap_senderType , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_PrintableString_SIZE_0_8_ }, + { &hf_e2ap_vendorName , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_PrintableString_SIZE_0_32_ }, { NULL, 0, 0, NULL } }; @@ -2562,653 +9587,109 @@ dissect_e2ap_E2SM_KPM_IndicationHeader_Format1(tvbuff_t *tvb _U_, int offset _U_ } -static const value_string e2ap_E2SM_KPM_IndicationHeader_vals[] = { +static const value_string e2ap_T_indicationHeader_formats_vals[] = { { 0, "indicationHeader-Format1" }, { 0, NULL } }; -static const per_choice_t E2SM_KPM_IndicationHeader_choice[] = { - { 0, &hf_e2ap_indicationHeader_Format1, ASN1_EXTENSION_ROOT , dissect_e2ap_E2SM_KPM_IndicationHeader_Format1 }, +static const per_choice_t T_indicationHeader_formats_choice[] = { + { 0, &hf_e2ap_indicationHeader_Format1_01, ASN1_EXTENSION_ROOT , dissect_e2ap_E2SM_KPM_IndicationHeader_Format1 }, { 0, NULL, 0, NULL } }; +static int +dissect_e2ap_T_indicationHeader_formats(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e2ap_T_indicationHeader_formats, T_indicationHeader_formats_choice, + NULL); + + return offset; +} + + +static const per_sequence_t E2SM_KPM_IndicationHeader_sequence[] = { + { &hf_e2ap_indicationHeader_formats, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_T_indicationHeader_formats }, + { NULL, 0, 0, NULL } +}; + static int dissect_e2ap_E2SM_KPM_IndicationHeader(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, - ett_e2ap_E2SM_KPM_IndicationHeader, E2SM_KPM_IndicationHeader_choice, - NULL); + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e2ap_E2SM_KPM_IndicationHeader, E2SM_KPM_IndicationHeader_sequence); return offset; } - -static int -dissect_e2ap_INTEGER_0_273(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, - 0U, 273U, NULL, FALSE); - - return offset; -} - - -static const per_sequence_t FQIPERSlicesPerPlmnPerCellListItem_sequence[] = { - { &hf_e2ap_fiveQI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_INTEGER_0_255 }, - { &hf_e2ap_dl_PRBUsage , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER_0_273 }, - { &hf_e2ap_ul_PRBUsage , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER_0_273 }, +static const per_sequence_t E2SM_KPM_IndicationMessage_Format2_sequence[] = { + { &hf_e2ap_measData , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_MeasurementData }, + { &hf_e2ap_measCondUEidList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_MeasurementCondUEidList }, + { &hf_e2ap_granulPeriod , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_GranularityPeriod }, { NULL, 0, 0, NULL } }; static int -dissect_e2ap_FQIPERSlicesPerPlmnPerCellListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_e2ap_E2SM_KPM_IndicationMessage_Format2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_FQIPERSlicesPerPlmnPerCellListItem, FQIPERSlicesPerPlmnPerCellListItem_sequence); + ett_e2ap_E2SM_KPM_IndicationMessage_Format2, E2SM_KPM_IndicationMessage_Format2_sequence); return offset; } -static const per_sequence_t SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnPerCellListItem_sequence_of[1] = { - { &hf_e2ap_fQIPERSlicesPerPlmnPerCellList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_FQIPERSlicesPerPlmnPerCellListItem }, -}; - -static int -dissect_e2ap_SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnPerCellListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, - ett_e2ap_SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnPerCellListItem, SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnPerCellListItem_sequence_of, - 1, maxnoofQoSFlows, FALSE); - - return offset; -} - - -static const per_sequence_t SlicePerPlmnPerCellListItem_sequence[] = { - { &hf_e2ap_sliceID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SNSSAI }, - { &hf_e2ap_fQIPERSlicesPerPlmnPerCellList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnPerCellListItem }, +static const per_sequence_t E2SM_KPM_IndicationMessage_Format3_sequence[] = { + { &hf_e2ap_ueMeasReportList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_UEMeasurementReportList }, { NULL, 0, 0, NULL } }; static int -dissect_e2ap_SlicePerPlmnPerCellListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_e2ap_E2SM_KPM_IndicationMessage_Format3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_SlicePerPlmnPerCellListItem, SlicePerPlmnPerCellListItem_sequence); + ett_e2ap_E2SM_KPM_IndicationMessage_Format3, E2SM_KPM_IndicationMessage_Format3_sequence); return offset; } -static const per_sequence_t SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SlicePerPlmnPerCellListItem_sequence_of[1] = { - { &hf_e2ap_slicePerPlmnPerCellList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_SlicePerPlmnPerCellListItem }, -}; - -static int -dissect_e2ap_SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SlicePerPlmnPerCellListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, - ett_e2ap_SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SlicePerPlmnPerCellListItem, SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SlicePerPlmnPerCellListItem_sequence_of, - 1, maxnoofSliceItems, FALSE); - - return offset; -} - - -static const per_sequence_t FGC_DU_PM_Container_sequence[] = { - { &hf_e2ap_slicePerPlmnPerCellList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SlicePerPlmnPerCellListItem }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_e2ap_FGC_DU_PM_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_FGC_DU_PM_Container, FGC_DU_PM_Container_sequence); - - return offset; -} - - - -static int -dissect_e2ap_INTEGER_0_100(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, - 0U, 100U, NULL, FALSE); - - return offset; -} - - -static const per_sequence_t PerQCIReportListItem_sequence[] = { - { &hf_e2ap_qci , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_INTEGER_0_255 }, - { &hf_e2ap_dl_PRBUsage_01 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER_0_100 }, - { &hf_e2ap_ul_PRBUsage_01 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER_0_100 }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_e2ap_PerQCIReportListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_PerQCIReportListItem, PerQCIReportListItem_sequence); - - return offset; -} - - -static const per_sequence_t SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItem_sequence_of[1] = { - { &hf_e2ap_perQCIReportList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_PerQCIReportListItem }, -}; - -static int -dissect_e2ap_SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, - ett_e2ap_SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItem, SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItem_sequence_of, - 1, maxnoofQCI, FALSE); - - return offset; -} - - -static const per_sequence_t EPC_DU_PM_Container_sequence[] = { - { &hf_e2ap_perQCIReportList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItem }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_e2ap_EPC_DU_PM_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_EPC_DU_PM_Container, EPC_DU_PM_Container_sequence); - - return offset; -} - - -static const per_sequence_t ServedPlmnPerCellListItem_sequence[] = { - { &hf_e2ap_pLMN_Identity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_PLMN_Identity }, - { &hf_e2ap_du_PM_5GC , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_FGC_DU_PM_Container }, - { &hf_e2ap_du_PM_EPC , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_EPC_DU_PM_Container }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_e2ap_ServedPlmnPerCellListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_ServedPlmnPerCellListItem, ServedPlmnPerCellListItem_sequence); - - return offset; -} - - -static const per_sequence_t SEQUENCE_SIZE_1_maxPLMN_OF_ServedPlmnPerCellListItem_sequence_of[1] = { - { &hf_e2ap_servedPlmnPerCellList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_ServedPlmnPerCellListItem }, -}; - -static int -dissect_e2ap_SEQUENCE_SIZE_1_maxPLMN_OF_ServedPlmnPerCellListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, - ett_e2ap_SEQUENCE_SIZE_1_maxPLMN_OF_ServedPlmnPerCellListItem, SEQUENCE_SIZE_1_maxPLMN_OF_ServedPlmnPerCellListItem_sequence_of, - 1, maxPLMN, FALSE); - - return offset; -} - - -static const per_sequence_t CellResourceReportListItem_sequence[] = { - { &hf_e2ap_nRCGI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_NRCGI }, - { &hf_e2ap_dl_TotalofAvailablePRBs, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER_0_273 }, - { &hf_e2ap_ul_TotalofAvailablePRBs, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER_0_273 }, - { &hf_e2ap_servedPlmnPerCellList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxPLMN_OF_ServedPlmnPerCellListItem }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_e2ap_CellResourceReportListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_CellResourceReportListItem, CellResourceReportListItem_sequence); - - return offset; -} - - -static const per_sequence_t SEQUENCE_SIZE_1_maxCellingNBDU_OF_CellResourceReportListItem_sequence_of[1] = { - { &hf_e2ap_cellResourceReportList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_CellResourceReportListItem }, -}; - -static int -dissect_e2ap_SEQUENCE_SIZE_1_maxCellingNBDU_OF_CellResourceReportListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, - ett_e2ap_SEQUENCE_SIZE_1_maxCellingNBDU_OF_CellResourceReportListItem, SEQUENCE_SIZE_1_maxCellingNBDU_OF_CellResourceReportListItem_sequence_of, - 1, maxCellingNBDU, FALSE); - - return offset; -} - - -static const per_sequence_t ODU_PF_Container_sequence[] = { - { &hf_e2ap_cellResourceReportList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxCellingNBDU_OF_CellResourceReportListItem }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_e2ap_ODU_PF_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_ODU_PF_Container, ODU_PF_Container_sequence); - - return offset; -} - - - -static int -dissect_e2ap_GNB_CU_CP_Name(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index, - 1, 150, TRUE); - - return offset; -} - - - -static int -dissect_e2ap_INTEGER_1_65536_(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, - 1U, 65536U, NULL, TRUE); - - return offset; -} - - -static const per_sequence_t T_cu_CP_Resource_Status_sequence[] = { - { &hf_e2ap_numberOfActive_UEs, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_e2ap_INTEGER_1_65536_ }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_e2ap_T_cu_CP_Resource_Status(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_T_cu_CP_Resource_Status, T_cu_CP_Resource_Status_sequence); - - return offset; -} - - -static const per_sequence_t OCUCP_PF_Container_sequence[] = { - { &hf_e2ap_gNB_CU_CP_Name , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_e2ap_GNB_CU_CP_Name }, - { &hf_e2ap_cu_CP_Resource_Status, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_T_cu_CP_Resource_Status }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_e2ap_OCUCP_PF_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_OCUCP_PF_Container, OCUCP_PF_Container_sequence); - - return offset; -} - - - -static int -dissect_e2ap_GNB_CU_UP_Name(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index, - 1, 150, TRUE); - - return offset; -} - - -static const value_string e2ap_NI_Type_vals[] = { - { 0, "x2-u" }, - { 1, "xn-u" }, - { 2, "f1-u" }, +static const value_string e2ap_T_indicationMessage_formats_vals[] = { + { 0, "indicationMessage-Format1" }, + { 1, "indicationMessage-Format2" }, + { 2, "indicationMessage-Format3" }, { 0, NULL } }; - -static int -dissect_e2ap_NI_Type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, - 3, NULL, TRUE, 0, NULL); - - return offset; -} - - - -static int -dissect_e2ap_INTEGER_0_10000000000_(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index, - 0U, G_GUINT64_CONSTANT(10000000000), NULL, TRUE); - - return offset; -} - - -static const per_sequence_t FQIPERSlicesPerPlmnListItem_sequence[] = { - { &hf_e2ap_fiveQI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_INTEGER_0_255 }, - { &hf_e2ap_pDCPBytesDL , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER_0_10000000000_ }, - { &hf_e2ap_pDCPBytesUL , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER_0_10000000000_ }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_e2ap_FQIPERSlicesPerPlmnListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_FQIPERSlicesPerPlmnListItem, FQIPERSlicesPerPlmnListItem_sequence); - - return offset; -} - - -static const per_sequence_t SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnListItem_sequence_of[1] = { - { &hf_e2ap_fQIPERSlicesPerPlmnList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_FQIPERSlicesPerPlmnListItem }, -}; - -static int -dissect_e2ap_SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, - ett_e2ap_SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnListItem, SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnListItem_sequence_of, - 1, maxnoofQoSFlows, FALSE); - - return offset; -} - - -static const per_sequence_t SliceToReportListItem_sequence[] = { - { &hf_e2ap_sliceID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SNSSAI }, - { &hf_e2ap_fQIPERSlicesPerPlmnList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnListItem }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_e2ap_SliceToReportListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_SliceToReportListItem, SliceToReportListItem_sequence); - - return offset; -} - - -static const per_sequence_t SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SliceToReportListItem_sequence_of[1] = { - { &hf_e2ap_sliceToReportList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_SliceToReportListItem }, -}; - -static int -dissect_e2ap_SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SliceToReportListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, - ett_e2ap_SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SliceToReportListItem, SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SliceToReportListItem_sequence_of, - 1, maxnoofSliceItems, FALSE); - - return offset; -} - - -static const per_sequence_t FGC_CUUP_PM_Format_sequence[] = { - { &hf_e2ap_sliceToReportList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SliceToReportListItem }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_e2ap_FGC_CUUP_PM_Format(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_FGC_CUUP_PM_Format, FGC_CUUP_PM_Format_sequence); - - return offset; -} - - -static const per_sequence_t PerQCIReportListItemFormat_sequence[] = { - { &hf_e2ap_qci , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_INTEGER_0_255 }, - { &hf_e2ap_pDCPBytesDL , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER_0_10000000000_ }, - { &hf_e2ap_pDCPBytesUL , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER_0_10000000000_ }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_e2ap_PerQCIReportListItemFormat(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_PerQCIReportListItemFormat, PerQCIReportListItemFormat_sequence); - - return offset; -} - - -static const per_sequence_t SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItemFormat_sequence_of[1] = { - { &hf_e2ap_perQCIReportList_item_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_PerQCIReportListItemFormat }, -}; - -static int -dissect_e2ap_SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItemFormat(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, - ett_e2ap_SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItemFormat, SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItemFormat_sequence_of, - 1, maxnoofQCI, FALSE); - - return offset; -} - - -static const per_sequence_t EPC_CUUP_PM_Format_sequence[] = { - { &hf_e2ap_perQCIReportList_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItemFormat }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_e2ap_EPC_CUUP_PM_Format(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_EPC_CUUP_PM_Format, EPC_CUUP_PM_Format_sequence); - - return offset; -} - - -static const per_sequence_t PlmnID_List_sequence[] = { - { &hf_e2ap_pLMN_Identity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_PLMN_Identity }, - { &hf_e2ap_cu_UP_PM_5GC , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_FGC_CUUP_PM_Format }, - { &hf_e2ap_cu_UP_PM_EPC , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_EPC_CUUP_PM_Format }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_e2ap_PlmnID_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_PlmnID_List, PlmnID_List_sequence); - - return offset; -} - - -static const per_sequence_t SEQUENCE_SIZE_1_maxPLMN_OF_PlmnID_List_sequence_of[1] = { - { &hf_e2ap_plmnList_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_PlmnID_List }, -}; - -static int -dissect_e2ap_SEQUENCE_SIZE_1_maxPLMN_OF_PlmnID_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, - ett_e2ap_SEQUENCE_SIZE_1_maxPLMN_OF_PlmnID_List, SEQUENCE_SIZE_1_maxPLMN_OF_PlmnID_List_sequence_of, - 1, maxPLMN, FALSE); - - return offset; -} - - -static const per_sequence_t CUUPMeasurement_Container_sequence[] = { - { &hf_e2ap_plmnList , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxPLMN_OF_PlmnID_List }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_e2ap_CUUPMeasurement_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_CUUPMeasurement_Container, CUUPMeasurement_Container_sequence); - - return offset; -} - - -static const per_sequence_t PF_ContainerListItem_sequence[] = { - { &hf_e2ap_interface_type , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_NI_Type }, - { &hf_e2ap_o_CU_UP_PM_Container, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_CUUPMeasurement_Container }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_e2ap_PF_ContainerListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_PF_ContainerListItem, PF_ContainerListItem_sequence); - - return offset; -} - - -static const per_sequence_t SEQUENCE_SIZE_1_maxnoofContainerListItems_OF_PF_ContainerListItem_sequence_of[1] = { - { &hf_e2ap_pf_ContainerList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_PF_ContainerListItem }, -}; - -static int -dissect_e2ap_SEQUENCE_SIZE_1_maxnoofContainerListItems_OF_PF_ContainerListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, - ett_e2ap_SEQUENCE_SIZE_1_maxnoofContainerListItems_OF_PF_ContainerListItem, SEQUENCE_SIZE_1_maxnoofContainerListItems_OF_PF_ContainerListItem_sequence_of, - 1, maxnoofContainerListItems, FALSE); - - return offset; -} - - -static const per_sequence_t OCUUP_PF_Container_sequence[] = { - { &hf_e2ap_gNB_CU_UP_Name , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_GNB_CU_UP_Name }, - { &hf_e2ap_pf_ContainerList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofContainerListItems_OF_PF_ContainerListItem }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_e2ap_OCUUP_PF_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_OCUUP_PF_Container, OCUUP_PF_Container_sequence); - - return offset; -} - - -static const value_string e2ap_PF_Container_vals[] = { - { 0, "oDU" }, - { 1, "oCU-CP" }, - { 2, "oCU-UP" }, - { 0, NULL } -}; - -static const per_choice_t PF_Container_choice[] = { - { 0, &hf_e2ap_oDU , ASN1_NO_EXTENSIONS , dissect_e2ap_ODU_PF_Container }, - { 1, &hf_e2ap_oCU_CP , ASN1_NO_EXTENSIONS , dissect_e2ap_OCUCP_PF_Container }, - { 2, &hf_e2ap_oCU_UP , ASN1_NO_EXTENSIONS , dissect_e2ap_OCUUP_PF_Container }, +static const per_choice_t T_indicationMessage_formats_choice[] = { + { 0, &hf_e2ap_indicationMessage_Format1_01, ASN1_EXTENSION_ROOT , dissect_e2ap_E2SM_KPM_IndicationMessage_Format1 }, + { 1, &hf_e2ap_indicationMessage_Format2_01, ASN1_EXTENSION_ROOT , dissect_e2ap_E2SM_KPM_IndicationMessage_Format2 }, + { 2, &hf_e2ap_indicationMessage_Format3_01, ASN1_NOT_EXTENSION_ROOT, dissect_e2ap_E2SM_KPM_IndicationMessage_Format3 }, { 0, NULL, 0, NULL } }; static int -dissect_e2ap_PF_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_e2ap_T_indicationMessage_formats(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, - ett_e2ap_PF_Container, PF_Container_choice, + ett_e2ap_T_indicationMessage_formats, T_indicationMessage_formats_choice, NULL); return offset; } - -static int -dissect_e2ap_RAN_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, - NO_BOUND, NO_BOUND, FALSE, NULL); - - return offset; -} - - -static const per_sequence_t PM_Containers_List_sequence[] = { - { &hf_e2ap_performanceContainer, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_PF_Container }, - { &hf_e2ap_theRANContainer, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_RAN_Container }, +static const per_sequence_t E2SM_KPM_IndicationMessage_sequence[] = { + { &hf_e2ap_indicationMessage_formats, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_T_indicationMessage_formats }, { NULL, 0, 0, NULL } }; static int -dissect_e2ap_PM_Containers_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_e2ap_E2SM_KPM_IndicationMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_PM_Containers_List, PM_Containers_List_sequence); + ett_e2ap_E2SM_KPM_IndicationMessage, E2SM_KPM_IndicationMessage_sequence); return offset; } -static const per_sequence_t SEQUENCE_SIZE_1_maxCellingNBDU_OF_PM_Containers_List_sequence_of[1] = { - { &hf_e2ap_pm_Containers_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_PM_Containers_List }, -}; - -static int -dissect_e2ap_SEQUENCE_SIZE_1_maxCellingNBDU_OF_PM_Containers_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, - ett_e2ap_SEQUENCE_SIZE_1_maxCellingNBDU_OF_PM_Containers_List, SEQUENCE_SIZE_1_maxCellingNBDU_OF_PM_Containers_List_sequence_of, - 1, maxCellingNBDU, FALSE); - - return offset; -} - - -static const per_sequence_t E2SM_KPM_IndicationMessage_Format1_sequence[] = { - { &hf_e2ap_pm_Containers , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxCellingNBDU_OF_PM_Containers_List }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_e2ap_E2SM_KPM_IndicationMessage_Format1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_E2SM_KPM_IndicationMessage_Format1, E2SM_KPM_IndicationMessage_Format1_sequence); - - return offset; -} - - - -static int -dissect_e2ap_PrintableString_SIZE_1_150_(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index, - 1, 150, TRUE); - - return offset; -} - - - -static int -dissect_e2ap_PrintableString_SIZE_1_1000_(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index, - 1, 1000, TRUE); - - return offset; -} - - - -static int -dissect_e2ap_INTEGER(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, NULL); - - return offset; -} - - -static const per_sequence_t RANfunction_Name_sequence[] = { - { &hf_e2ap_ranFunction_ShortName, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_PrintableString_SIZE_1_150_ }, - { &hf_e2ap_ranFunction_E2SM_OID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_PrintableString_SIZE_1_1000_ }, - { &hf_e2ap_ranFunction_Description, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_PrintableString_SIZE_1_150_ }, - { &hf_e2ap_ranFunction_Instance, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER }, - { NULL, 0, 0, NULL } -}; - -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_) { - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_RANfunction_Name, RANfunction_Name_sequence); - - return offset; -} - - -static const per_sequence_t RIC_EventTriggerStyle_List_sequence[] = { +static const per_sequence_t RIC_EventTriggerStyle_Item_sequence[] = { { &hf_e2ap_ric_EventTriggerStyle_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Style_Type }, { &hf_e2ap_ric_EventTriggerStyle_Name, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Style_Name }, { &hf_e2ap_ric_EventTriggerFormat_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Format_Type }, @@ -3216,69 +9697,56 @@ static const per_sequence_t RIC_EventTriggerStyle_List_sequence[] = { }; static int -dissect_e2ap_RIC_EventTriggerStyle_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_e2ap_RIC_EventTriggerStyle_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_RIC_EventTriggerStyle_List, RIC_EventTriggerStyle_List_sequence); + ett_e2ap_RIC_EventTriggerStyle_Item, RIC_EventTriggerStyle_Item_sequence); return offset; } -static const per_sequence_t SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_EventTriggerStyle_List_sequence_of[1] = { - { &hf_e2ap_ric_EventTriggerStyle_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_EventTriggerStyle_List }, +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_EventTriggerStyle_Item_sequence_of[1] = { + { &hf_e2ap_ric_EventTriggerStyle_List_item_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_EventTriggerStyle_Item }, }; static int -dissect_e2ap_SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_EventTriggerStyle_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_EventTriggerStyle_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, - ett_e2ap_SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_EventTriggerStyle_List, SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_EventTriggerStyle_List_sequence_of, - 1, maxofRICstyles, FALSE); + ett_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_EventTriggerStyle_Item, SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_EventTriggerStyle_Item_sequence_of, + 1, maxnoofRICStyles, FALSE); return offset; } -static const per_sequence_t RIC_ReportStyle_List_sequence[] = { +static const per_sequence_t RIC_ReportStyle_Item_sequence[] = { { &hf_e2ap_ric_ReportStyle_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Style_Type }, { &hf_e2ap_ric_ReportStyle_Name, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Style_Name }, + { &hf_e2ap_ric_ActionFormat_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Format_Type }, + { &hf_e2ap_measInfo_Action_List, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_MeasurementInfo_Action_List }, { &hf_e2ap_ric_IndicationHeaderFormat_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Format_Type }, { &hf_e2ap_ric_IndicationMessageFormat_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Format_Type }, { NULL, 0, 0, NULL } }; static int -dissect_e2ap_RIC_ReportStyle_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_e2ap_RIC_ReportStyle_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_RIC_ReportStyle_List, RIC_ReportStyle_List_sequence); + ett_e2ap_RIC_ReportStyle_Item, RIC_ReportStyle_Item_sequence); return offset; } -static const per_sequence_t SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_ReportStyle_List_sequence_of[1] = { - { &hf_e2ap_ric_ReportStyle_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_ReportStyle_List }, +static const per_sequence_t SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_ReportStyle_Item_sequence_of[1] = { + { &hf_e2ap_ric_ReportStyle_List_item_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_ReportStyle_Item }, }; static int -dissect_e2ap_SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_ReportStyle_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_ReportStyle_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, - ett_e2ap_SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_ReportStyle_List, SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_ReportStyle_List_sequence_of, - 1, maxofRICstyles, FALSE); - - return offset; -} - - -static const per_sequence_t T_e2SM_KPM_RANfunction_Item_sequence[] = { - { &hf_e2ap_ric_EventTriggerStyle_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_EventTriggerStyle_List }, - { &hf_e2ap_ric_ReportStyle_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_ReportStyle_List }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_e2ap_T_e2SM_KPM_RANfunction_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_e2ap_T_e2SM_KPM_RANfunction_Item, T_e2SM_KPM_RANfunction_Item_sequence); + ett_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_ReportStyle_Item, SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_ReportStyle_Item_sequence_of, + 1, maxnoofRICStyles, FALSE); return offset; } @@ -3286,7 +9754,8 @@ dissect_e2ap_T_e2SM_KPM_RANfunction_Item(tvbuff_t *tvb _U_, int offset _U_, asn1 static const per_sequence_t E2SM_KPM_RANfunction_Description_sequence[] = { { &hf_e2ap_ranFunction_Name, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANfunction_Name }, - { &hf_e2ap_e2SM_KPM_RANfunction_Item, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_T_e2SM_KPM_RANfunction_Item }, + { &hf_e2ap_ric_EventTriggerStyle_List_01, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_EventTriggerStyle_Item }, + { &hf_e2ap_ric_ReportStyle_List_01, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_ReportStyle_Item }, { NULL, 0, 0, NULL } }; @@ -3298,16 +9767,6 @@ dissect_e2ap_E2SM_KPM_RANfunction_Description(tvbuff_t *tvb _U_, int offset _U_, return offset; } - - -static int -dissect_e2ap_RANcallProcess_ID_string(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index, - 1, 150, TRUE); - - return offset; -} - /*--- PDUs ---*/ static int dissect_Cause_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { @@ -3398,14 +9857,6 @@ static int dissect_RICcontrolOutcome_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _ offset += 7; offset >>= 3; return offset; } -static int dissect_RICcontrolStatus_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { - int offset = 0; - asn1_ctx_t asn1_ctx; - asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); - offset = dissect_e2ap_RICcontrolStatus(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICcontrolStatus_PDU); - offset += 7; offset >>= 3; - return offset; -} static int dissect_RICindicationHeader_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; @@ -3454,6 +9905,22 @@ static int dissect_TimeToWait_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, pro offset += 7; offset >>= 3; return offset; } +static int dissect_TNLinformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_TNLinformation(tvb, offset, &asn1_ctx, tree, hf_e2ap_TNLinformation_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_TransactionID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_TransactionID(tvb, offset, &asn1_ctx, tree, hf_e2ap_TransactionID_PDU); + offset += 7; offset >>= 3; + return offset; +} static int dissect_RICsubscriptionRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; @@ -3550,6 +10017,30 @@ static int dissect_RICsubscriptionDeleteFailure_PDU(tvbuff_t *tvb _U_, packet_in offset += 7; offset >>= 3; return offset; } +static int dissect_RICsubscriptionDeleteRequired_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_RICsubscriptionDeleteRequired(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICsubscriptionDeleteRequired_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_RICsubscription_List_withCause_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_RICsubscription_List_withCause(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICsubscription_List_withCause_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_RICsubscription_withCause_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_RICsubscription_withCause_Item(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICsubscription_withCause_Item_PDU); + offset += 7; offset >>= 3; + return offset; +} static int dissect_RICindication_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; @@ -3614,6 +10105,214 @@ static int dissect_E2setupFailure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, offset += 7; offset >>= 3; return offset; } +static int dissect_E2connectionUpdate_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_E2connectionUpdate(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2connectionUpdate_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E2connectionUpdate_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_E2connectionUpdate_List(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2connectionUpdate_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E2connectionUpdate_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_E2connectionUpdate_Item(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2connectionUpdate_Item_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E2connectionUpdateRemove_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_E2connectionUpdateRemove_List(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2connectionUpdateRemove_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E2connectionUpdateRemove_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_E2connectionUpdateRemove_Item(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2connectionUpdateRemove_Item_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E2connectionUpdateAcknowledge_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_E2connectionUpdateAcknowledge(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2connectionUpdateAcknowledge_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E2connectionSetupFailed_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_E2connectionSetupFailed_List(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2connectionSetupFailed_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E2connectionSetupFailed_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_E2connectionSetupFailed_Item(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2connectionSetupFailed_Item_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E2connectionUpdateFailure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_E2connectionUpdateFailure(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2connectionUpdateFailure_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E2nodeConfigurationUpdate_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_E2nodeConfigurationUpdate(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2nodeConfigurationUpdate_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E2nodeComponentConfigAddition_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_E2nodeComponentConfigAddition_List(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2nodeComponentConfigAddition_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E2nodeComponentConfigAddition_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_E2nodeComponentConfigAddition_Item(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2nodeComponentConfigAddition_Item_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E2nodeComponentConfigUpdate_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_E2nodeComponentConfigUpdate_List(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2nodeComponentConfigUpdate_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E2nodeComponentConfigUpdate_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_E2nodeComponentConfigUpdate_Item(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2nodeComponentConfigUpdate_Item_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E2nodeComponentConfigRemoval_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_E2nodeComponentConfigRemoval_List(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2nodeComponentConfigRemoval_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E2nodeComponentConfigRemoval_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_E2nodeComponentConfigRemoval_Item(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2nodeComponentConfigRemoval_Item_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E2nodeTNLassociationRemoval_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_E2nodeTNLassociationRemoval_List(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2nodeTNLassociationRemoval_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E2nodeTNLassociationRemoval_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_E2nodeTNLassociationRemoval_Item(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2nodeTNLassociationRemoval_Item_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E2nodeConfigurationUpdateAcknowledge_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_E2nodeConfigurationUpdateAcknowledge(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2nodeConfigurationUpdateAcknowledge_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E2nodeComponentConfigAdditionAck_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_E2nodeComponentConfigAdditionAck_List(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2nodeComponentConfigAdditionAck_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E2nodeComponentConfigAdditionAck_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_E2nodeComponentConfigAdditionAck_Item(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2nodeComponentConfigAdditionAck_Item_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E2nodeComponentConfigUpdateAck_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_E2nodeComponentConfigUpdateAck_List(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2nodeComponentConfigUpdateAck_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E2nodeComponentConfigUpdateAck_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_E2nodeComponentConfigUpdateAck_Item(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2nodeComponentConfigUpdateAck_Item_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E2nodeComponentConfigRemovalAck_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_E2nodeComponentConfigRemovalAck_List(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2nodeComponentConfigRemovalAck_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E2nodeComponentConfigRemovalAck_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_E2nodeComponentConfigRemovalAck_Item(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2nodeComponentConfigRemovalAck_Item_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E2nodeConfigurationUpdateFailure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_E2nodeConfigurationUpdateFailure(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2nodeConfigurationUpdateFailure_PDU); + offset += 7; offset >>= 3; + return offset; +} static int dissect_ResetRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; @@ -3718,6 +10417,54 @@ static int dissect_E2AP_PDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto offset += 7; offset >>= 3; return offset; } +static int dissect_E2SM_RC_EventTrigger_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_E2SM_RC_EventTrigger(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2SM_RC_EventTrigger_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E2SM_RC_ActionDefinition_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_E2SM_RC_ActionDefinition(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2SM_RC_ActionDefinition_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E2SM_RC_IndicationHeader_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_E2SM_RC_IndicationHeader(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2SM_RC_IndicationHeader_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E2SM_RC_IndicationMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_E2SM_RC_IndicationMessage(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2SM_RC_IndicationMessage_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E2SM_RC_CallProcessID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_E2SM_RC_CallProcessID(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2SM_RC_CallProcessID_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E2SM_RC_RANFunctionDefinition_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e2ap_E2SM_RC_RANFunctionDefinition(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2SM_RC_RANFunctionDefinition_PDU); + offset += 7; offset >>= 3; + return offset; +} static int dissect_E2SM_KPM_EventTriggerDefinition_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; @@ -3742,11 +10489,11 @@ static int dissect_E2SM_KPM_IndicationHeader_PDU(tvbuff_t *tvb _U_, packet_info offset += 7; offset >>= 3; return offset; } -static int dissect_E2SM_KPM_IndicationMessage_Format1_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_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); - offset = dissect_e2ap_E2SM_KPM_IndicationMessage_Format1(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2SM_KPM_IndicationMessage_Format1_PDU); + offset = dissect_e2ap_E2SM_KPM_IndicationMessage(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2SM_KPM_IndicationMessage_PDU); offset += 7; offset >>= 3; return offset; } @@ -3758,18 +10505,10 @@ static int dissect_E2SM_KPM_RANfunction_Description_PDU(tvbuff_t *tvb _U_, packe offset += 7; offset >>= 3; return offset; } -static int dissect_RANcallProcess_ID_string_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { - int offset = 0; - asn1_ctx_t asn1_ctx; - asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); - offset = dissect_e2ap_RANcallProcess_ID_string(tvb, offset, &asn1_ctx, tree, hf_e2ap_RANcallProcess_ID_string_PDU); - offset += 7; offset >>= 3; - return offset; -} /*--- End of included file: packet-e2ap-fn.c ---*/ -#line 118 "./asn1/e2ap/packet-e2ap-template.c" +#line 317 "./asn1/e2ap/packet-e2ap-template.c" static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) { @@ -3783,6 +10522,9 @@ static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto 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) { @@ -3836,7 +10578,6 @@ dissect_e2ap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_ 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); } @@ -3846,12 +10587,6 @@ void proto_reg_handoff_e2ap(void) { dissector_add_uint_with_preference("sctp.port", SCTP_PORT_E2AP, e2ap_handle); -#if 0 - /* TODO: should one or more of these be registered? */ - 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); -#endif /*--- Included file: packet-e2ap-dis-tab.c ---*/ @@ -3880,7 +10615,6 @@ proto_reg_handoff_e2ap(void) dissector_add_uint("e2ap.ies", id_RICcontrolHeader, create_dissector_handle(dissect_RICcontrolHeader_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_RICcontrolMessage, create_dissector_handle(dissect_RICcontrolMessage_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_RICcontrolOutcome, create_dissector_handle(dissect_RICcontrolOutcome_PDU, proto_e2ap)); - dissector_add_uint("e2ap.ies", id_RICcontrolStatus, create_dissector_handle(dissect_RICcontrolStatus_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_RICindicationHeader, create_dissector_handle(dissect_RICindicationHeader_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_RICindicationMessage, create_dissector_handle(dissect_RICindicationMessage_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_RICindicationSN, create_dissector_handle(dissect_RICindicationSN_PDU, proto_e2ap)); @@ -3888,6 +10622,38 @@ proto_reg_handoff_e2ap(void) dissector_add_uint("e2ap.ies", id_RICrequestID, create_dissector_handle(dissect_RICrequestID_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_RICsubscriptionDetails, create_dissector_handle(dissect_RICsubscriptionDetails_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_TimeToWait, create_dissector_handle(dissect_TimeToWait_PDU, proto_e2ap)); + dissector_add_uint("e2ap.ies", id_E2nodeComponentConfigUpdate, create_dissector_handle(dissect_E2nodeComponentConfigUpdate_List_PDU, proto_e2ap)); + dissector_add_uint("e2ap.ies", id_E2nodeComponentConfigUpdate_Item, create_dissector_handle(dissect_E2nodeComponentConfigUpdate_Item_PDU, proto_e2ap)); + dissector_add_uint("e2ap.ies", id_E2nodeComponentConfigUpdateAck, create_dissector_handle(dissect_E2nodeComponentConfigUpdateAck_List_PDU, proto_e2ap)); + dissector_add_uint("e2ap.ies", id_E2nodeComponentConfigUpdateAck_Item, create_dissector_handle(dissect_E2nodeComponentConfigUpdateAck_Item_PDU, proto_e2ap)); + dissector_add_uint("e2ap.ies", id_E2connectionSetup, create_dissector_handle(dissect_E2connectionUpdate_List_PDU, proto_e2ap)); + dissector_add_uint("e2ap.ies", id_E2connectionSetupFailed, create_dissector_handle(dissect_E2connectionSetupFailed_List_PDU, proto_e2ap)); + dissector_add_uint("e2ap.ies", id_E2connectionSetupFailed_Item, create_dissector_handle(dissect_E2connectionSetupFailed_Item_PDU, proto_e2ap)); + dissector_add_uint("e2ap.ies", id_E2connectionUpdate_Item, create_dissector_handle(dissect_E2connectionUpdate_Item_PDU, proto_e2ap)); + dissector_add_uint("e2ap.ies", id_E2connectionUpdateAdd, create_dissector_handle(dissect_E2connectionUpdate_List_PDU, proto_e2ap)); + dissector_add_uint("e2ap.ies", id_E2connectionUpdateModify, create_dissector_handle(dissect_E2connectionUpdate_List_PDU, proto_e2ap)); + dissector_add_uint("e2ap.ies", id_E2connectionUpdateRemove, create_dissector_handle(dissect_E2connectionUpdateRemove_List_PDU, proto_e2ap)); + dissector_add_uint("e2ap.ies", id_E2connectionUpdateRemove_Item, create_dissector_handle(dissect_E2connectionUpdateRemove_Item_PDU, proto_e2ap)); + dissector_add_uint("e2ap.ies", id_TNLinformation, create_dissector_handle(dissect_TNLinformation_PDU, proto_e2ap)); + dissector_add_uint("e2ap.ies", id_TransactionID, create_dissector_handle(dissect_TransactionID_PDU, proto_e2ap)); + dissector_add_uint("e2ap.ies", id_E2nodeComponentConfigAddition, create_dissector_handle(dissect_E2nodeComponentConfigAddition_List_PDU, proto_e2ap)); + dissector_add_uint("e2ap.ies", id_E2nodeComponentConfigAddition_Item, create_dissector_handle(dissect_E2nodeComponentConfigAddition_Item_PDU, proto_e2ap)); + dissector_add_uint("e2ap.ies", id_E2nodeComponentConfigAdditionAck, create_dissector_handle(dissect_E2nodeComponentConfigAdditionAck_List_PDU, proto_e2ap)); + dissector_add_uint("e2ap.ies", id_E2nodeComponentConfigAdditionAck_Item, create_dissector_handle(dissect_E2nodeComponentConfigAdditionAck_Item_PDU, proto_e2ap)); + dissector_add_uint("e2ap.ies", id_E2nodeComponentConfigRemoval, create_dissector_handle(dissect_E2nodeComponentConfigRemoval_List_PDU, proto_e2ap)); + dissector_add_uint("e2ap.ies", id_E2nodeComponentConfigRemoval_Item, create_dissector_handle(dissect_E2nodeComponentConfigRemoval_Item_PDU, proto_e2ap)); + dissector_add_uint("e2ap.ies", id_E2nodeComponentConfigRemovalAck, create_dissector_handle(dissect_E2nodeComponentConfigRemovalAck_List_PDU, proto_e2ap)); + dissector_add_uint("e2ap.ies", id_E2nodeComponentConfigRemovalAck_Item, create_dissector_handle(dissect_E2nodeComponentConfigRemovalAck_Item_PDU, proto_e2ap)); + dissector_add_uint("e2ap.ies", id_E2nodeTNLassociationRemoval, create_dissector_handle(dissect_E2nodeTNLassociationRemoval_List_PDU, proto_e2ap)); + dissector_add_uint("e2ap.ies", id_E2nodeTNLassociationRemoval_Item, create_dissector_handle(dissect_E2nodeTNLassociationRemoval_Item_PDU, proto_e2ap)); + dissector_add_uint("e2ap.ies", id_RICsubscriptionToBeRemoved, create_dissector_handle(dissect_RICsubscription_List_withCause_PDU, proto_e2ap)); + dissector_add_uint("e2ap.ies", id_RICsubscription_withCause_Item, create_dissector_handle(dissect_RICsubscription_withCause_Item_PDU, proto_e2ap)); + dissector_add_uint("e2ap.proc.imsg", id_E2connectionUpdate, create_dissector_handle(dissect_E2connectionUpdate_PDU, proto_e2ap)); + dissector_add_uint("e2ap.proc.sout", id_E2connectionUpdate, create_dissector_handle(dissect_E2connectionUpdateAcknowledge_PDU, proto_e2ap)); + dissector_add_uint("e2ap.proc.uout", id_E2connectionUpdate, create_dissector_handle(dissect_E2connectionUpdateFailure_PDU, proto_e2ap)); + dissector_add_uint("e2ap.proc.imsg", id_E2nodeConfigurationUpdate, create_dissector_handle(dissect_E2nodeConfigurationUpdate_PDU, proto_e2ap)); + dissector_add_uint("e2ap.proc.sout", id_E2nodeConfigurationUpdate, create_dissector_handle(dissect_E2nodeConfigurationUpdateAcknowledge_PDU, proto_e2ap)); + dissector_add_uint("e2ap.proc.uout", id_E2nodeConfigurationUpdate, create_dissector_handle(dissect_E2nodeConfigurationUpdateFailure_PDU, proto_e2ap)); dissector_add_uint("e2ap.proc.uout", id_E2setup, create_dissector_handle(dissect_E2setupFailure_PDU, proto_e2ap)); dissector_add_uint("e2ap.proc.imsg", id_E2setup, create_dissector_handle(dissect_E2setupRequest_PDU, proto_e2ap)); dissector_add_uint("e2ap.proc.sout", id_E2setup, create_dissector_handle(dissect_E2setupResponse_PDU, proto_e2ap)); @@ -3908,13 +10674,15 @@ proto_reg_handoff_e2ap(void) dissector_add_uint("e2ap.proc.uout", id_RICsubscriptionDelete, create_dissector_handle(dissect_RICsubscriptionDeleteFailure_PDU, proto_e2ap)); dissector_add_uint("e2ap.proc.imsg", id_RICsubscriptionDelete, create_dissector_handle(dissect_RICsubscriptionDeleteRequest_PDU, proto_e2ap)); dissector_add_uint("e2ap.proc.sout", id_RICsubscriptionDelete, create_dissector_handle(dissect_RICsubscriptionDeleteResponse_PDU, proto_e2ap)); + dissector_add_uint("e2ap.proc.sout", id_RICsubscriptionDeleteRequired, create_dissector_handle(dissect_RICsubscriptionDeleteRequired_PDU, proto_e2ap)); /*--- End of included file: packet-e2ap-dis-tab.c ---*/ -#line 202 "./asn1/e2ap/packet-e2ap-template.c" - +#line 397 "./asn1/e2ap/packet-e2ap-template.c" } + + /*--- proto_register_e2ap -------------------------------------------*/ void proto_register_e2ap(void) { @@ -3968,10 +10736,6 @@ void proto_register_e2ap(void) { { "RICcontrolOutcome", "e2ap.RICcontrolOutcome", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_e2ap_RICcontrolStatus_PDU, - { "RICcontrolStatus", "e2ap.RICcontrolStatus", - FT_UINT32, BASE_DEC, VALS(e2ap_RICcontrolStatus_vals), 0, - NULL, HFILL }}, { &hf_e2ap_RICindicationHeader_PDU, { "RICindicationHeader", "e2ap.RICindicationHeader", FT_BYTES, BASE_NONE, NULL, 0, @@ -3996,6 +10760,14 @@ void proto_register_e2ap(void) { { "TimeToWait", "e2ap.TimeToWait", FT_UINT32, BASE_DEC, VALS(e2ap_TimeToWait_vals), 0, NULL, HFILL }}, + { &hf_e2ap_TNLinformation_PDU, + { "TNLinformation", "e2ap.TNLinformation_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_TransactionID_PDU, + { "TransactionID", "e2ap.TransactionID", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, { &hf_e2ap_RICsubscriptionRequest_PDU, { "RICsubscriptionRequest", "e2ap.RICsubscriptionRequest_element", FT_NONE, BASE_NONE, NULL, 0, @@ -4044,6 +10816,18 @@ void proto_register_e2ap(void) { { "RICsubscriptionDeleteFailure", "e2ap.RICsubscriptionDeleteFailure_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_e2ap_RICsubscriptionDeleteRequired_PDU, + { "RICsubscriptionDeleteRequired", "e2ap.RICsubscriptionDeleteRequired_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_RICsubscription_List_withCause_PDU, + { "RICsubscription-List-withCause", "e2ap.RICsubscription_List_withCause", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_RICsubscription_withCause_Item_PDU, + { "RICsubscription-withCause-Item", "e2ap.RICsubscription_withCause_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_e2ap_RICindication_PDU, { "RICindication", "e2ap.RICindication_element", FT_NONE, BASE_NONE, NULL, 0, @@ -4076,6 +10860,110 @@ void proto_register_e2ap(void) { { "E2setupFailure", "e2ap.E2setupFailure_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_e2ap_E2connectionUpdate_PDU, + { "E2connectionUpdate", "e2ap.E2connectionUpdate_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2connectionUpdate_List_PDU, + { "E2connectionUpdate-List", "e2ap.E2connectionUpdate_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2connectionUpdate_Item_PDU, + { "E2connectionUpdate-Item", "e2ap.E2connectionUpdate_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2connectionUpdateRemove_List_PDU, + { "E2connectionUpdateRemove-List", "e2ap.E2connectionUpdateRemove_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2connectionUpdateRemove_Item_PDU, + { "E2connectionUpdateRemove-Item", "e2ap.E2connectionUpdateRemove_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2connectionUpdateAcknowledge_PDU, + { "E2connectionUpdateAcknowledge", "e2ap.E2connectionUpdateAcknowledge_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2connectionSetupFailed_List_PDU, + { "E2connectionSetupFailed-List", "e2ap.E2connectionSetupFailed_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2connectionSetupFailed_Item_PDU, + { "E2connectionSetupFailed-Item", "e2ap.E2connectionSetupFailed_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2connectionUpdateFailure_PDU, + { "E2connectionUpdateFailure", "e2ap.E2connectionUpdateFailure_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2nodeConfigurationUpdate_PDU, + { "E2nodeConfigurationUpdate", "e2ap.E2nodeConfigurationUpdate_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2nodeComponentConfigAddition_List_PDU, + { "E2nodeComponentConfigAddition-List", "e2ap.E2nodeComponentConfigAddition_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2nodeComponentConfigAddition_Item_PDU, + { "E2nodeComponentConfigAddition-Item", "e2ap.E2nodeComponentConfigAddition_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2nodeComponentConfigUpdate_List_PDU, + { "E2nodeComponentConfigUpdate-List", "e2ap.E2nodeComponentConfigUpdate_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2nodeComponentConfigUpdate_Item_PDU, + { "E2nodeComponentConfigUpdate-Item", "e2ap.E2nodeComponentConfigUpdate_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2nodeComponentConfigRemoval_List_PDU, + { "E2nodeComponentConfigRemoval-List", "e2ap.E2nodeComponentConfigRemoval_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2nodeComponentConfigRemoval_Item_PDU, + { "E2nodeComponentConfigRemoval-Item", "e2ap.E2nodeComponentConfigRemoval_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2nodeTNLassociationRemoval_List_PDU, + { "E2nodeTNLassociationRemoval-List", "e2ap.E2nodeTNLassociationRemoval_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2nodeTNLassociationRemoval_Item_PDU, + { "E2nodeTNLassociationRemoval-Item", "e2ap.E2nodeTNLassociationRemoval_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2nodeConfigurationUpdateAcknowledge_PDU, + { "E2nodeConfigurationUpdateAcknowledge", "e2ap.E2nodeConfigurationUpdateAcknowledge_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2nodeComponentConfigAdditionAck_List_PDU, + { "E2nodeComponentConfigAdditionAck-List", "e2ap.E2nodeComponentConfigAdditionAck_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2nodeComponentConfigAdditionAck_Item_PDU, + { "E2nodeComponentConfigAdditionAck-Item", "e2ap.E2nodeComponentConfigAdditionAck_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2nodeComponentConfigUpdateAck_List_PDU, + { "E2nodeComponentConfigUpdateAck-List", "e2ap.E2nodeComponentConfigUpdateAck_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2nodeComponentConfigUpdateAck_Item_PDU, + { "E2nodeComponentConfigUpdateAck-Item", "e2ap.E2nodeComponentConfigUpdateAck_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2nodeComponentConfigRemovalAck_List_PDU, + { "E2nodeComponentConfigRemovalAck-List", "e2ap.E2nodeComponentConfigRemovalAck_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2nodeComponentConfigRemovalAck_Item_PDU, + { "E2nodeComponentConfigRemovalAck-Item", "e2ap.E2nodeComponentConfigRemovalAck_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2nodeConfigurationUpdateFailure_PDU, + { "E2nodeConfigurationUpdateFailure", "e2ap.E2nodeConfigurationUpdateFailure_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_e2ap_ResetRequest_PDU, { "ResetRequest", "e2ap.ResetRequest_element", FT_NONE, BASE_NONE, NULL, 0, @@ -4128,30 +11016,50 @@ void proto_register_e2ap(void) { { "E2AP-PDU", "e2ap.E2AP_PDU", FT_UINT32, BASE_DEC, VALS(e2ap_E2AP_PDU_vals), 0, NULL, HFILL }}, + { &hf_e2ap_E2SM_RC_EventTrigger_PDU, + { "E2SM-RC-EventTrigger", "e2ap.E2SM_RC_EventTrigger_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2SM_RC_ActionDefinition_PDU, + { "E2SM-RC-ActionDefinition", "e2ap.E2SM_RC_ActionDefinition_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2SM_RC_IndicationHeader_PDU, + { "E2SM-RC-IndicationHeader", "e2ap.E2SM_RC_IndicationHeader_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2SM_RC_IndicationMessage_PDU, + { "E2SM-RC-IndicationMessage", "e2ap.E2SM_RC_IndicationMessage_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2SM_RC_CallProcessID_PDU, + { "E2SM-RC-CallProcessID", "e2ap.E2SM_RC_CallProcessID_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2SM_RC_RANFunctionDefinition_PDU, + { "E2SM-RC-RANFunctionDefinition", "e2ap.E2SM_RC_RANFunctionDefinition_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_e2ap_E2SM_KPM_EventTriggerDefinition_PDU, - { "E2SM-KPM-EventTriggerDefinition", "e2ap.E2SM_KPM_EventTriggerDefinition", - FT_UINT32, BASE_DEC, VALS(e2ap_E2SM_KPM_EventTriggerDefinition_vals), 0, + { "E2SM-KPM-EventTriggerDefinition", "e2ap.E2SM_KPM_EventTriggerDefinition_element", + FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_E2SM_KPM_ActionDefinition_PDU, { "E2SM-KPM-ActionDefinition", "e2ap.E2SM_KPM_ActionDefinition_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_E2SM_KPM_IndicationHeader_PDU, - { "E2SM-KPM-IndicationHeader", "e2ap.E2SM_KPM_IndicationHeader", - FT_UINT32, BASE_DEC, VALS(e2ap_E2SM_KPM_IndicationHeader_vals), 0, + { "E2SM-KPM-IndicationHeader", "e2ap.E2SM_KPM_IndicationHeader_element", + FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_e2ap_E2SM_KPM_IndicationMessage_Format1_PDU, - { "E2SM-KPM-IndicationMessage-Format1", "e2ap.E2SM_KPM_IndicationMessage_Format1_element", + { &hf_e2ap_E2SM_KPM_IndicationMessage_PDU, + { "E2SM-KPM-IndicationMessage", "e2ap.E2SM_KPM_IndicationMessage_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_E2SM_KPM_RANfunction_Description_PDU, { "E2SM-KPM-RANfunction-Description", "e2ap.E2SM_KPM_RANfunction_Description_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_e2ap_RANcallProcess_ID_string_PDU, - { "RANcallProcess-ID-string", "e2ap.RANcallProcess_ID_string", - FT_STRING, BASE_NONE, NULL, 0, - NULL, HFILL }}, { &hf_e2ap_ProtocolIE_Container_item, { "ProtocolIE-Field", "e2ap.ProtocolIE_Field_element", FT_NONE, BASE_NONE, NULL, 0, @@ -4170,12 +11078,16 @@ void proto_register_e2ap(void) { NULL, HFILL }}, { &hf_e2ap_ricRequest, { "ricRequest", "e2ap.ricRequest", - FT_UINT32, BASE_DEC, VALS(e2ap_CauseRIC_vals), 0, - "CauseRIC", HFILL }}, + FT_UINT32, BASE_DEC, VALS(e2ap_CauseRICrequest_vals), 0, + "CauseRICrequest", HFILL }}, { &hf_e2ap_ricService, { "ricService", "e2ap.ricService", FT_UINT32, BASE_DEC, VALS(e2ap_CauseRICservice_vals), 0, "CauseRICservice", HFILL }}, + { &hf_e2ap_e2Node, + { "e2Node", "e2ap.e2Node", + FT_UINT32, BASE_DEC, VALS(e2ap_CauseE2node_vals), 0, + "CauseE2node", HFILL }}, { &hf_e2ap_transport, { "transport", "e2ap.transport", FT_UINT32, BASE_DEC, VALS(e2ap_CauseTransport_vals), 0, @@ -4224,6 +11136,82 @@ void proto_register_e2ap(void) { { "typeOfError", "e2ap.typeOfError", FT_UINT32, BASE_DEC, VALS(e2ap_TypeOfError_vals), 0, NULL, HFILL }}, + { &hf_e2ap_e2nodeComponentRequestPart, + { "e2nodeComponentRequestPart", "e2ap.e2nodeComponentRequestPart", + FT_BYTES, BASE_NONE, NULL, 0, + "OCTET_STRING", HFILL }}, + { &hf_e2ap_e2nodeComponentResponsePart, + { "e2nodeComponentResponsePart", "e2ap.e2nodeComponentResponsePart", + FT_BYTES, BASE_NONE, NULL, 0, + "OCTET_STRING", HFILL }}, + { &hf_e2ap_updateOutcome, + { "updateOutcome", "e2ap.updateOutcome", + FT_UINT32, BASE_DEC, VALS(e2ap_T_updateOutcome_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_failureCause, + { "failureCause", "e2ap.failureCause", + FT_UINT32, BASE_DEC, VALS(e2ap_Cause_vals), 0, + "Cause", HFILL }}, + { &hf_e2ap_e2nodeComponentInterfaceTypeNG, + { "e2nodeComponentInterfaceTypeNG", "e2ap.e2nodeComponentInterfaceTypeNG_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2nodeComponentInterfaceNG", HFILL }}, + { &hf_e2ap_e2nodeComponentInterfaceTypeXn, + { "e2nodeComponentInterfaceTypeXn", "e2ap.e2nodeComponentInterfaceTypeXn_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2nodeComponentInterfaceXn", HFILL }}, + { &hf_e2ap_e2nodeComponentInterfaceTypeE1, + { "e2nodeComponentInterfaceTypeE1", "e2ap.e2nodeComponentInterfaceTypeE1_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2nodeComponentInterfaceE1", HFILL }}, + { &hf_e2ap_e2nodeComponentInterfaceTypeF1, + { "e2nodeComponentInterfaceTypeF1", "e2ap.e2nodeComponentInterfaceTypeF1_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2nodeComponentInterfaceF1", HFILL }}, + { &hf_e2ap_e2nodeComponentInterfaceTypeW1, + { "e2nodeComponentInterfaceTypeW1", "e2ap.e2nodeComponentInterfaceTypeW1_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2nodeComponentInterfaceW1", HFILL }}, + { &hf_e2ap_e2nodeComponentInterfaceTypeS1, + { "e2nodeComponentInterfaceTypeS1", "e2ap.e2nodeComponentInterfaceTypeS1_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2nodeComponentInterfaceS1", HFILL }}, + { &hf_e2ap_e2nodeComponentInterfaceTypeX2, + { "e2nodeComponentInterfaceTypeX2", "e2ap.e2nodeComponentInterfaceTypeX2_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2nodeComponentInterfaceX2", HFILL }}, + { &hf_e2ap_gNB_CU_CP_ID, + { "gNB-CU-CP-ID", "e2ap.gNB_CU_CP_ID", + FT_UINT64, BASE_DEC, NULL, 0, + "GNB_CU_UP_ID", HFILL }}, + { &hf_e2ap_gNB_DU_ID, + { "gNB-DU-ID", "e2ap.gNB_DU_ID", + FT_UINT64, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_amf_name, + { "amf-name", "e2ap.amf_name", + FT_STRING, BASE_NONE, NULL, 0, + "AMFName", HFILL }}, + { &hf_e2ap_mme_name, + { "mme-name", "e2ap.mme_name", + FT_STRING, BASE_NONE, NULL, 0, + "MMEname", HFILL }}, + { &hf_e2ap_global_eNB_ID, + { "global-eNB-ID", "e2ap.global_eNB_ID_element", + FT_NONE, BASE_NONE, NULL, 0, + "GlobalENB_ID", HFILL }}, + { &hf_e2ap_global_en_gNB_ID, + { "global-en-gNB-ID", "e2ap.global_en_gNB_ID_element", + FT_NONE, BASE_NONE, NULL, 0, + "GlobalenGNB_ID", HFILL }}, + { &hf_e2ap_global_NG_RAN_Node_ID, + { "global-NG-RAN-Node-ID", "e2ap.global_NG_RAN_Node_ID", + FT_UINT32, BASE_DEC, VALS(e2ap_GlobalNG_RANNode_ID_vals), 0, + "GlobalNG_RANNode_ID", HFILL }}, + { &hf_e2ap_ng_eNB_DU_ID, + { "ng-eNB-DU-ID", "e2ap.ng_eNB_DU_ID", + FT_UINT64, BASE_DEC, NULL, 0, + "NGENB_DU_ID", HFILL }}, { &hf_e2ap_macro_eNB_ID, { "macro-eNB-ID", "e2ap.macro_eNB_ID", FT_BYTES, BASE_NONE, NULL, 0, @@ -4272,15 +11260,15 @@ void proto_register_e2ap(void) { { "eNB", "e2ap.eNB_element", FT_NONE, BASE_NONE, NULL, 0, "GlobalE2node_eNB_ID", HFILL }}, + { &hf_e2ap_en_gNB_CU_UP_ID, + { "en-gNB-CU-UP-ID", "e2ap.en_gNB_CU_UP_ID", + FT_UINT64, BASE_DEC, NULL, 0, + "GNB_CU_UP_ID", HFILL }}, + { &hf_e2ap_en_gNB_DU_ID, + { "en-gNB-DU-ID", "e2ap.en_gNB_DU_ID", + FT_UINT64, BASE_DEC, NULL, 0, + "GNB_DU_ID", HFILL }}, { &hf_e2ap_global_gNB_ID, - { "global-gNB-ID", "e2ap.global_gNB_ID_element", - FT_NONE, BASE_NONE, NULL, 0, - "GlobalenGNB_ID", HFILL }}, - { &hf_e2ap_global_eNB_ID, - { "global-eNB-ID", "e2ap.global_eNB_ID_element", - FT_NONE, BASE_NONE, NULL, 0, - "GlobalENB_ID", HFILL }}, - { &hf_e2ap_global_gNB_ID_01, { "global-gNB-ID", "e2ap.global_gNB_ID_element", FT_NONE, BASE_NONE, NULL, 0, "GlobalgNB_ID", HFILL }}, @@ -4288,14 +11276,14 @@ void proto_register_e2ap(void) { { "gNB-CU-UP-ID", "e2ap.gNB_CU_UP_ID", FT_UINT64, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_e2ap_gNB_DU_ID, - { "gNB-DU-ID", "e2ap.gNB_DU_ID", - FT_UINT64, BASE_DEC, NULL, 0, - NULL, HFILL }}, { &hf_e2ap_global_ng_eNB_ID, { "global-ng-eNB-ID", "e2ap.global_ng_eNB_ID_element", FT_NONE, BASE_NONE, NULL, 0, "GlobalngeNB_ID", HFILL }}, + { &hf_e2ap_ngENB_DU_ID, + { "ngENB-DU-ID", "e2ap.ngENB_DU_ID", + FT_UINT64, BASE_DEC, NULL, 0, + NULL, HFILL }}, { &hf_e2ap_pLMN_Identity, { "pLMN-Identity", "e2ap.pLMN_Identity", FT_BYTES, BASE_NONE, NULL, 0, @@ -4320,6 +11308,14 @@ void proto_register_e2ap(void) { { "enb-id", "e2ap.enb_id", FT_UINT32, BASE_DEC, VALS(e2ap_ENB_ID_Choice_vals), 0, "ENB_ID_Choice", HFILL }}, + { &hf_e2ap_gNB_01, + { "gNB", "e2ap.gNB_element", + FT_NONE, BASE_NONE, NULL, 0, + "GlobalgNB_ID", HFILL }}, + { &hf_e2ap_ng_eNB_01, + { "ng-eNB", "e2ap.ng_eNB_element", + FT_NONE, BASE_NONE, NULL, 0, + "GlobalngeNB_ID", HFILL }}, { &hf_e2ap_ric_ID, { "ric-ID", "e2ap.ric_ID", FT_BYTES, BASE_NONE, NULL, 0, @@ -4344,6 +11340,14 @@ void proto_register_e2ap(void) { { "ricTimeToWait", "e2ap.ricTimeToWait", FT_UINT32, BASE_DEC, VALS(e2ap_RICtimeToWait_vals), 0, NULL, HFILL }}, + { &hf_e2ap_tnlAddress, + { "tnlAddress", "e2ap.tnlAddress", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_1_160_", HFILL }}, + { &hf_e2ap_tnlPort, + { "tnlPort", "e2ap.tnlPort", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_16", HFILL }}, { &hf_e2ap_protocolIEs, { "protocolIEs", "e2ap.protocolIEs", FT_UINT32, BASE_DEC, NULL, 0, @@ -4388,14 +11392,90 @@ void proto_register_e2ap(void) { { "cause", "e2ap.cause", FT_UINT32, BASE_DEC, VALS(e2ap_Cause_vals), 0, NULL, HFILL }}, - { &hf_e2ap_RANfunctions_List_item, + { &hf_e2ap_RICsubscription_List_withCause_item, { "ProtocolIE-SingleContainer", "e2ap.ProtocolIE_SingleContainer_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_e2ap_ricRequestID, + { "ricRequestID", "e2ap.ricRequestID_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_e2ap_ranFunctionID, { "ranFunctionID", "e2ap.ranFunctionID", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_e2ap_E2connectionUpdate_List_item, + { "ProtocolIE-SingleContainer", "e2ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_tnlInformation, + { "tnlInformation", "e2ap.tnlInformation_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_tnlUsage, + { "tnlUsage", "e2ap.tnlUsage", + FT_UINT32, BASE_DEC, VALS(e2ap_TNLusage_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_E2connectionUpdateRemove_List_item, + { "ProtocolIE-SingleContainer", "e2ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2connectionSetupFailed_List_item, + { "ProtocolIE-SingleContainer", "e2ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2nodeComponentConfigAddition_List_item, + { "ProtocolIE-SingleContainer", "e2ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_e2nodeComponentInterfaceType, + { "e2nodeComponentInterfaceType", "e2ap.e2nodeComponentInterfaceType", + FT_UINT32, BASE_DEC, VALS(e2ap_E2nodeComponentInterfaceType_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_e2nodeComponentID, + { "e2nodeComponentID", "e2ap.e2nodeComponentID", + FT_UINT32, BASE_DEC, VALS(e2ap_E2nodeComponentID_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_e2nodeComponentConfiguration, + { "e2nodeComponentConfiguration", "e2ap.e2nodeComponentConfiguration_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2nodeComponentConfigUpdate_List_item, + { "ProtocolIE-SingleContainer", "e2ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2nodeComponentConfigRemoval_List_item, + { "ProtocolIE-SingleContainer", "e2ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2nodeTNLassociationRemoval_List_item, + { "ProtocolIE-SingleContainer", "e2ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_tnlInformationRIC, + { "tnlInformationRIC", "e2ap.tnlInformationRIC_element", + FT_NONE, BASE_NONE, NULL, 0, + "TNLinformation", HFILL }}, + { &hf_e2ap_E2nodeComponentConfigAdditionAck_List_item, + { "ProtocolIE-SingleContainer", "e2ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_e2nodeComponentConfigurationAck, + { "e2nodeComponentConfigurationAck", "e2ap.e2nodeComponentConfigurationAck_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2nodeComponentConfigUpdateAck_List_item, + { "ProtocolIE-SingleContainer", "e2ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_E2nodeComponentConfigRemovalAck_List_item, + { "ProtocolIE-SingleContainer", "e2ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_RANfunctions_List_item, + { "ProtocolIE-SingleContainer", "e2ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_e2ap_ranFunctionDefinition, { "ranFunctionDefinition", "e2ap.ranFunctionDefinition", FT_BYTES, BASE_NONE, NULL, 0, @@ -4404,6 +11484,10 @@ void proto_register_e2ap(void) { { "ranFunctionRevision", "e2ap.ranFunctionRevision", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_e2ap_ranFunctionOID, + { "ranFunctionOID", "e2ap.ranFunctionOID", + FT_STRING, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_e2ap_RANfunctionsID_List_item, { "ProtocolIE-SingleContainer", "e2ap.ProtocolIE_SingleContainer_element", FT_NONE, BASE_NONE, NULL, 0, @@ -4436,122 +11520,78 @@ void proto_register_e2ap(void) { { "value", "e2ap.value_element", FT_NONE, BASE_NONE, NULL, 0, "UnsuccessfulOutcome_value", HFILL }}, - { &hf_e2ap_gNB_01, - { "gNB", "e2ap.gNB_element", - FT_NONE, BASE_NONE, NULL, 0, - "GlobalKPMnode_gNB_ID", HFILL }}, - { &hf_e2ap_en_gNB_01, - { "en-gNB", "e2ap.en_gNB_element", - FT_NONE, BASE_NONE, NULL, 0, - "GlobalKPMnode_en_gNB_ID", HFILL }}, - { &hf_e2ap_ng_eNB_01, - { "ng-eNB", "e2ap.ng_eNB_element", - FT_NONE, BASE_NONE, NULL, 0, - "GlobalKPMnode_ng_eNB_ID", HFILL }}, - { &hf_e2ap_eNB_01, - { "eNB", "e2ap.eNB_element", - FT_NONE, BASE_NONE, NULL, 0, - "GlobalKPMnode_eNB_ID", HFILL }}, - { &hf_e2ap_nRCellIdentity, - { "nRCellIdentity", "e2ap.nRCellIdentity", - FT_BYTES, BASE_NONE, NULL, 0, - NULL, HFILL }}, - { &hf_e2ap_sST, - { "sST", "e2ap.sST", - FT_BYTES, BASE_NONE, NULL, 0, - "OCTET_STRING_SIZE_1", HFILL }}, - { &hf_e2ap_sD, - { "sD", "e2ap.sD", - FT_BYTES, BASE_NONE, NULL, 0, - "OCTET_STRING_SIZE_3", HFILL }}, - { &hf_e2ap_eventDefinition_Format1, - { "eventDefinition-Format1", "e2ap.eventDefinition_Format1_element", - FT_NONE, BASE_NONE, NULL, 0, - "E2SM_KPM_EventTriggerDefinition_Format1", HFILL }}, - { &hf_e2ap_policyTest_List, - { "policyTest-List", "e2ap.policyTest_List", - FT_UINT32, BASE_DEC, NULL, 0, - "SEQUENCE_SIZE_1_maxofMessageProtocolTests_OF_Trigger_ConditionIE_Item", HFILL }}, - { &hf_e2ap_policyTest_List_item, - { "Trigger-ConditionIE-Item", "e2ap.Trigger_ConditionIE_Item_element", + { &hf_e2ap_nR_CGI, + { "nR-CGI", "e2ap.nR_CGI_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_e2ap_ric_Style_Type, - { "ric-Style-Type", "e2ap.ric_Style_Type", + { &hf_e2ap_eUTRA_CGI, + { "eUTRA-CGI", "e2ap.eUTRA_CGI_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_nG, + { "nG", "e2ap.nG_element", + FT_NONE, BASE_NONE, NULL, 0, + "InterfaceID_NG", HFILL }}, + { &hf_e2ap_xN, + { "xN", "e2ap.xN_element", + FT_NONE, BASE_NONE, NULL, 0, + "InterfaceID_Xn", HFILL }}, + { &hf_e2ap_f1, + { "f1", "e2ap.f1_element", + FT_NONE, BASE_NONE, NULL, 0, + "InterfaceID_F1", HFILL }}, + { &hf_e2ap_e1, + { "e1", "e2ap.e1_element", + FT_NONE, BASE_NONE, NULL, 0, + "InterfaceID_E1", HFILL }}, + { &hf_e2ap_s1, + { "s1", "e2ap.s1_element", + FT_NONE, BASE_NONE, NULL, 0, + "InterfaceID_S1", HFILL }}, + { &hf_e2ap_x2, + { "x2", "e2ap.x2_element", + FT_NONE, BASE_NONE, NULL, 0, + "InterfaceID_X2", HFILL }}, + { &hf_e2ap_w1, + { "w1", "e2ap.w1_element", + FT_NONE, BASE_NONE, NULL, 0, + "InterfaceID_W1", HFILL }}, + { &hf_e2ap_guami, + { "guami", "e2ap.guami_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_global_NG_RAN_ID, + { "global-NG-RAN-ID", "e2ap.global_NG_RAN_ID", + FT_UINT32, BASE_DEC, VALS(e2ap_GlobalNGRANNodeID_vals), 0, + "GlobalNGRANNodeID", HFILL }}, + { &hf_e2ap_globalGNB_ID, + { "globalGNB-ID", "e2ap.globalGNB_ID_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_gUMMEI, + { "gUMMEI", "e2ap.gUMMEI_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_nodeType, + { "nodeType", "e2ap.nodeType", + FT_UINT32, BASE_DEC, VALS(e2ap_T_nodeType_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_global_ng_eNB_ID_01, + { "global-ng-eNB-ID", "e2ap.global_ng_eNB_ID_element", + FT_NONE, BASE_NONE, NULL, 0, + "GlobalNgENB_ID", HFILL }}, + { &hf_e2ap_interfaceProcedureID, + { "interfaceProcedureID", "e2ap.interfaceProcedureID", FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, + { &hf_e2ap_messageType, + { "messageType", "e2ap.messageType", + FT_UINT32, BASE_DEC, VALS(e2ap_T_messageType_vals), 0, NULL, HFILL }}, - { &hf_e2ap_indicationHeader_Format1, - { "indicationHeader-Format1", "e2ap.indicationHeader_Format1_element", - FT_NONE, BASE_NONE, NULL, 0, - "E2SM_KPM_IndicationHeader_Format1", HFILL }}, - { &hf_e2ap_id_GlobalKPMnode_ID, - { "id-GlobalKPMnode-ID", "e2ap.id_GlobalKPMnode_ID", - FT_UINT32, BASE_DEC, VALS(e2ap_GlobalKPMnode_ID_vals), 0, - "GlobalKPMnode_ID", HFILL }}, - { &hf_e2ap_nRCGI, - { "nRCGI", "e2ap.nRCGI_element", - FT_NONE, BASE_NONE, NULL, 0, - NULL, HFILL }}, - { &hf_e2ap_sliceID, - { "sliceID", "e2ap.sliceID_element", - FT_NONE, BASE_NONE, NULL, 0, - "SNSSAI", HFILL }}, - { &hf_e2ap_fiveQI, - { "fiveQI", "e2ap.fiveQI", - FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_0_255", HFILL }}, - { &hf_e2ap_qci, - { "qci", "e2ap.qci", - FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_0_255", HFILL }}, - { &hf_e2ap_pm_Containers, - { "pm-Containers", "e2ap.pm_Containers", - FT_UINT32, BASE_DEC, NULL, 0, - "SEQUENCE_SIZE_1_maxCellingNBDU_OF_PM_Containers_List", HFILL }}, - { &hf_e2ap_pm_Containers_item, - { "PM-Containers-List", "e2ap.PM_Containers_List_element", - FT_NONE, BASE_NONE, NULL, 0, - NULL, HFILL }}, - { &hf_e2ap_performanceContainer, - { "performanceContainer", "e2ap.performanceContainer", - FT_UINT32, BASE_DEC, VALS(e2ap_PF_Container_vals), 0, - "PF_Container", HFILL }}, - { &hf_e2ap_theRANContainer, - { "theRANContainer", "e2ap.theRANContainer", - FT_BYTES, BASE_NONE, NULL, 0, - "RAN_Container", HFILL }}, - { &hf_e2ap_ranFunction_Name, - { "ranFunction-Name", "e2ap.ranFunction_Name_element", - FT_NONE, BASE_NONE, NULL, 0, - NULL, HFILL }}, - { &hf_e2ap_e2SM_KPM_RANfunction_Item, - { "e2SM-KPM-RANfunction-Item", "e2ap.e2SM_KPM_RANfunction_Item_element", - FT_NONE, BASE_NONE, NULL, 0, - NULL, HFILL }}, - { &hf_e2ap_ric_EventTriggerStyle_List, - { "ric-EventTriggerStyle-List", "e2ap.ric_EventTriggerStyle_List", - FT_UINT32, BASE_DEC, NULL, 0, - "SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_EventTriggerStyle_List", HFILL }}, - { &hf_e2ap_ric_EventTriggerStyle_List_item, - { "RIC-EventTriggerStyle-List", "e2ap.RIC_EventTriggerStyle_List_element", - FT_NONE, BASE_NONE, NULL, 0, - NULL, HFILL }}, - { &hf_e2ap_ric_ReportStyle_List, - { "ric-ReportStyle-List", "e2ap.ric_ReportStyle_List", - FT_UINT32, BASE_DEC, NULL, 0, - "SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_ReportStyle_List", HFILL }}, - { &hf_e2ap_ric_ReportStyle_List_item, - { "RIC-ReportStyle-List", "e2ap.RIC_ReportStyle_List_element", - FT_NONE, BASE_NONE, NULL, 0, - NULL, HFILL }}, - { &hf_e2ap_report_Period_IE, - { "report-Period-IE", "e2ap.report_Period_IE", - FT_UINT32, BASE_DEC, VALS(e2ap_RT_Period_IE_vals), 0, - "RT_Period_IE", HFILL }}, { &hf_e2ap_ranFunction_ShortName, { "ranFunction-ShortName", "e2ap.ranFunction_ShortName", FT_STRING, BASE_NONE, NULL, 0, - "PrintableString_SIZE_1_150_", HFILL }}, + NULL, HFILL }}, { &hf_e2ap_ranFunction_E2SM_OID, { "ranFunction-E2SM-OID", "e2ap.ranFunction_E2SM_OID", FT_STRING, BASE_NONE, NULL, 0, @@ -4564,6 +11604,1030 @@ void proto_register_e2ap(void) { { "ranFunction-Instance", "e2ap.ranFunction_Instance", FT_INT32, BASE_DEC, NULL, 0, "INTEGER", HFILL }}, + { &hf_e2ap_rrcType, + { "rrcType", "e2ap.rrcType", + FT_UINT32, BASE_DEC, VALS(e2ap_T_rrcType_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_lTE, + { "lTE", "e2ap.lTE", + FT_UINT32, BASE_DEC, VALS(e2ap_RRCclass_LTE_vals), 0, + "RRCclass_LTE", HFILL }}, + { &hf_e2ap_nR, + { "nR", "e2ap.nR", + FT_UINT32, BASE_DEC, VALS(e2ap_RRCclass_NR_vals), 0, + "RRCclass_NR", HFILL }}, + { &hf_e2ap_messageID, + { "messageID", "e2ap.messageID", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, + { &hf_e2ap_nR_01, + { "nR", "e2ap.nR_element", + FT_NONE, BASE_NONE, NULL, 0, + "NR_ARFCN", HFILL }}, + { &hf_e2ap_eUTRA, + { "eUTRA", "e2ap.eUTRA", + FT_UINT32, BASE_DEC, NULL, 0, + "E_UTRA_ARFCN", HFILL }}, + { &hf_e2ap_nR_02, + { "nR", "e2ap.nR", + FT_UINT32, BASE_DEC, NULL, 0, + "NR_PCI", HFILL }}, + { &hf_e2ap_eUTRA_01, + { "eUTRA", "e2ap.eUTRA", + FT_UINT32, BASE_DEC, NULL, 0, + "E_UTRA_PCI", HFILL }}, + { &hf_e2ap_gNB_UEID, + { "gNB-UEID", "e2ap.gNB_UEID_element", + FT_NONE, BASE_NONE, NULL, 0, + "UEID_GNB", HFILL }}, + { &hf_e2ap_gNB_DU_UEID, + { "gNB-DU-UEID", "e2ap.gNB_DU_UEID_element", + FT_NONE, BASE_NONE, NULL, 0, + "UEID_GNB_DU", HFILL }}, + { &hf_e2ap_gNB_CU_UP_UEID, + { "gNB-CU-UP-UEID", "e2ap.gNB_CU_UP_UEID_element", + FT_NONE, BASE_NONE, NULL, 0, + "UEID_GNB_CU_UP", HFILL }}, + { &hf_e2ap_ng_eNB_UEID, + { "ng-eNB-UEID", "e2ap.ng_eNB_UEID_element", + FT_NONE, BASE_NONE, NULL, 0, + "UEID_NG_ENB", HFILL }}, + { &hf_e2ap_ng_eNB_DU_UEID, + { "ng-eNB-DU-UEID", "e2ap.ng_eNB_DU_UEID_element", + FT_NONE, BASE_NONE, NULL, 0, + "UEID_NG_ENB_DU", HFILL }}, + { &hf_e2ap_en_gNB_UEID, + { "en-gNB-UEID", "e2ap.en_gNB_UEID_element", + FT_NONE, BASE_NONE, NULL, 0, + "UEID_EN_GNB", HFILL }}, + { &hf_e2ap_eNB_UEID, + { "eNB-UEID", "e2ap.eNB_UEID_element", + FT_NONE, BASE_NONE, NULL, 0, + "UEID_ENB", HFILL }}, + { &hf_e2ap_amf_UE_NGAP_ID, + { "amf-UE-NGAP-ID", "e2ap.amf_UE_NGAP_ID", + FT_UINT64, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_gNB_CU_UE_F1AP_ID_List, + { "gNB-CU-UE-F1AP-ID-List", "e2ap.gNB_CU_UE_F1AP_ID_List", + FT_UINT32, BASE_DEC, NULL, 0, + "UEID_GNB_CU_F1AP_ID_List", HFILL }}, + { &hf_e2ap_gNB_CU_CP_UE_E1AP_ID_List, + { "gNB-CU-CP-UE-E1AP-ID-List", "e2ap.gNB_CU_CP_UE_E1AP_ID_List", + FT_UINT32, BASE_DEC, NULL, 0, + "UEID_GNB_CU_CP_E1AP_ID_List", HFILL }}, + { &hf_e2ap_ran_UEID, + { "ran-UEID", "e2ap.ran_UEID", + FT_BYTES, BASE_NONE, NULL, 0, + "RANUEID", HFILL }}, + { &hf_e2ap_m_NG_RAN_UE_XnAP_ID, + { "m-NG-RAN-UE-XnAP-ID", "e2ap.m_NG_RAN_UE_XnAP_ID", + FT_UINT32, BASE_DEC, NULL, 0, + "NG_RANnodeUEXnAPID", HFILL }}, + { &hf_e2ap_globalNG_RANNode_ID, + { "globalNG-RANNode-ID", "e2ap.globalNG_RANNode_ID", + FT_UINT32, BASE_DEC, VALS(e2ap_GlobalNGRANNodeID_vals), 0, + "GlobalNGRANNodeID", HFILL }}, + { &hf_e2ap_UEID_GNB_CU_CP_E1AP_ID_List_item, + { "UEID-GNB-CU-CP-E1AP-ID-Item", "e2ap.UEID_GNB_CU_CP_E1AP_ID_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_gNB_CU_CP_UE_E1AP_ID, + { "gNB-CU-CP-UE-E1AP-ID", "e2ap.gNB_CU_CP_UE_E1AP_ID", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_UEID_GNB_CU_F1AP_ID_List_item, + { "UEID-GNB-CU-CP-F1AP-ID-Item", "e2ap.UEID_GNB_CU_CP_F1AP_ID_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_gNB_CU_UE_F1AP_ID, + { "gNB-CU-UE-F1AP-ID", "e2ap.gNB_CU_UE_F1AP_ID", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ng_eNB_CU_UE_W1AP_ID, + { "ng-eNB-CU-UE-W1AP-ID", "e2ap.ng_eNB_CU_UE_W1AP_ID", + FT_UINT32, BASE_DEC, NULL, 0, + "NGENB_CU_UE_W1AP_ID", HFILL }}, + { &hf_e2ap_globalNgENB_ID, + { "globalNgENB-ID", "e2ap.globalNgENB_ID_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_m_eNB_UE_X2AP_ID, + { "m-eNB-UE-X2AP-ID", "e2ap.m_eNB_UE_X2AP_ID", + FT_UINT32, BASE_DEC, NULL, 0, + "ENB_UE_X2AP_ID", HFILL }}, + { &hf_e2ap_m_eNB_UE_X2AP_ID_Extension, + { "m-eNB-UE-X2AP-ID-Extension", "e2ap.m_eNB_UE_X2AP_ID_Extension", + FT_UINT32, BASE_DEC, NULL, 0, + "ENB_UE_X2AP_ID_Extension", HFILL }}, + { &hf_e2ap_globalENB_ID, + { "globalENB-ID", "e2ap.globalENB_ID_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_mME_UE_S1AP_ID, + { "mME-UE-S1AP-ID", "e2ap.mME_UE_S1AP_ID", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_pLMN_Identity_01, + { "pLMN-Identity", "e2ap.pLMN_Identity", + FT_BYTES, BASE_NONE, NULL, 0, + "PLMNIdentity", HFILL }}, + { &hf_e2ap_mME_Group_ID, + { "mME-Group-ID", "e2ap.mME_Group_ID", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_mME_Code, + { "mME-Code", "e2ap.mME_Code", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_pLMNIdentity, + { "pLMNIdentity", "e2ap.pLMNIdentity", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_eUTRACellIdentity, + { "eUTRACellIdentity", "e2ap.eUTRACellIdentity", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_gNB_ID_02, + { "gNB-ID", "e2ap.gNB_ID", + FT_UINT32, BASE_DEC, VALS(e2ap_GNB_ID_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_ngENB_ID, + { "ngENB-ID", "e2ap.ngENB_ID", + FT_UINT32, BASE_DEC, VALS(e2ap_NgENB_ID_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_aMFRegionID, + { "aMFRegionID", "e2ap.aMFRegionID", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_aMFSetID, + { "aMFSetID", "e2ap.aMFSetID", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_aMFPointer, + { "aMFPointer", "e2ap.aMFPointer", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_macroNgENB_ID, + { "macroNgENB-ID", "e2ap.macroNgENB_ID", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_20", HFILL }}, + { &hf_e2ap_shortMacroNgENB_ID, + { "shortMacroNgENB-ID", "e2ap.shortMacroNgENB_ID", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_18", HFILL }}, + { &hf_e2ap_longMacroNgENB_ID, + { "longMacroNgENB-ID", "e2ap.longMacroNgENB_ID", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_21", HFILL }}, + { &hf_e2ap_gNB_02, + { "gNB", "e2ap.gNB_element", + FT_NONE, BASE_NONE, NULL, 0, + "GlobalGNB_ID", HFILL }}, + { &hf_e2ap_ng_eNB_02, + { "ng-eNB", "e2ap.ng_eNB_element", + FT_NONE, BASE_NONE, NULL, 0, + "GlobalNgENB_ID", HFILL }}, + { &hf_e2ap_nRARFCN, + { "nRARFCN", "e2ap.nRARFCN", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_maxNRARFCN", HFILL }}, + { &hf_e2ap_NRFrequencyBand_List_item, + { "NRFrequencyBandItem", "e2ap.NRFrequencyBandItem_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_freqBandIndicatorNr, + { "freqBandIndicatorNr", "e2ap.freqBandIndicatorNr", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_1_1024_", HFILL }}, + { &hf_e2ap_supportedSULBandList, + { "supportedSULBandList", "e2ap.supportedSULBandList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_nrARFCN, + { "nrARFCN", "e2ap.nrARFCN_element", + FT_NONE, BASE_NONE, NULL, 0, + "NR_ARFCN", HFILL }}, + { &hf_e2ap_frequencyBand_List, + { "frequencyBand-List", "e2ap.frequencyBand_List", + FT_UINT32, BASE_DEC, NULL, 0, + "NRFrequencyBand_List", HFILL }}, + { &hf_e2ap_frequencyShift7p5khz, + { "frequencyShift7p5khz", "e2ap.frequencyShift7p5khz", + FT_UINT32, BASE_DEC, VALS(e2ap_NRFrequencyShift7p5khz_vals), 0, + "NRFrequencyShift7p5khz", HFILL }}, + { &hf_e2ap_SupportedSULBandList_item, + { "SupportedSULFreqBandItem", "e2ap.SupportedSULFreqBandItem_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_nRCellIdentity, + { "nRCellIdentity", "e2ap.nRCellIdentity", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_NeighborCell_List_item, + { "NeighborCell-Item", "e2ap.NeighborCell_Item", + FT_UINT32, BASE_DEC, VALS(e2ap_NeighborCell_Item_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_ranType_Choice_NR, + { "ranType-Choice-NR", "e2ap.ranType_Choice_NR_element", + FT_NONE, BASE_NONE, NULL, 0, + "NeighborCell_Item_Choice_NR", HFILL }}, + { &hf_e2ap_ranType_Choice_EUTRA, + { "ranType-Choice-EUTRA", "e2ap.ranType_Choice_EUTRA_element", + FT_NONE, BASE_NONE, NULL, 0, + "NeighborCell_Item_Choice_E_UTRA", HFILL }}, + { &hf_e2ap_nR_PCI, + { "nR-PCI", "e2ap.nR_PCI", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_fiveGS_TAC, + { "fiveGS-TAC", "e2ap.fiveGS_TAC", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_nR_mode_info, + { "nR-mode-info", "e2ap.nR_mode_info", + FT_UINT32, BASE_DEC, VALS(e2ap_T_nR_mode_info_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_nR_FreqInfo, + { "nR-FreqInfo", "e2ap.nR_FreqInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + "NRFrequencyInfo", HFILL }}, + { &hf_e2ap_x2_Xn_established, + { "x2-Xn-established", "e2ap.x2_Xn_established", + FT_UINT32, BASE_DEC, VALS(e2ap_T_x2_Xn_established_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_hO_validated, + { "hO-validated", "e2ap.hO_validated", + FT_UINT32, BASE_DEC, VALS(e2ap_T_hO_validated_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_version, + { "version", "e2ap.version", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_1_65535_", HFILL }}, + { &hf_e2ap_eUTRA_PCI, + { "eUTRA-PCI", "e2ap.eUTRA_PCI", + FT_UINT32, BASE_DEC, NULL, 0, + "E_UTRA_PCI", HFILL }}, + { &hf_e2ap_eUTRA_ARFCN, + { "eUTRA-ARFCN", "e2ap.eUTRA_ARFCN", + FT_UINT32, BASE_DEC, NULL, 0, + "E_UTRA_ARFCN", HFILL }}, + { &hf_e2ap_eUTRA_TAC, + { "eUTRA-TAC", "e2ap.eUTRA_TAC", + FT_BYTES, BASE_NONE, NULL, 0, + "E_UTRA_TAC", HFILL }}, + { &hf_e2ap_x2_Xn_established_01, + { "x2-Xn-established", "e2ap.x2_Xn_established", + FT_UINT32, BASE_DEC, VALS(e2ap_T_x2_Xn_established_01_vals), 0, + "T_x2_Xn_established_01", HFILL }}, + { &hf_e2ap_hO_validated_01, + { "hO-validated", "e2ap.hO_validated", + FT_UINT32, BASE_DEC, VALS(e2ap_T_hO_validated_01_vals), 0, + "T_hO_validated_01", HFILL }}, + { &hf_e2ap_servingCellPCI, + { "servingCellPCI", "e2ap.servingCellPCI", + FT_UINT32, BASE_DEC, VALS(e2ap_ServingCell_PCI_vals), 0, + "ServingCell_PCI", HFILL }}, + { &hf_e2ap_servingCellARFCN, + { "servingCellARFCN", "e2ap.servingCellARFCN", + FT_UINT32, BASE_DEC, VALS(e2ap_ServingCell_ARFCN_vals), 0, + "ServingCell_ARFCN", HFILL }}, + { &hf_e2ap_neighborCell_List, + { "neighborCell-List", "e2ap.neighborCell_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_cellInfo_List, + { "cellInfo-List", "e2ap.cellInfo_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofCellInfo_OF_EventTrigger_Cell_Info_Item", HFILL }}, + { &hf_e2ap_cellInfo_List_item, + { "EventTrigger-Cell-Info-Item", "e2ap.EventTrigger_Cell_Info_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_eventTriggerCellID, + { "eventTriggerCellID", "e2ap.eventTriggerCellID", + FT_UINT32, BASE_DEC, NULL, 0, + "RIC_EventTrigger_Cell_ID", HFILL }}, + { &hf_e2ap_cellType, + { "cellType", "e2ap.cellType", + FT_UINT32, BASE_DEC, VALS(e2ap_T_cellType_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_cellType_Choice_Individual, + { "cellType-Choice-Individual", "e2ap.cellType_Choice_Individual_element", + FT_NONE, BASE_NONE, NULL, 0, + "EventTrigger_Cell_Info_Item_Choice_Individual", HFILL }}, + { &hf_e2ap_cellType_Choice_Group, + { "cellType-Choice-Group", "e2ap.cellType_Choice_Group_element", + FT_NONE, BASE_NONE, NULL, 0, + "EventTrigger_Cell_Info_Item_Choice_Group", HFILL }}, + { &hf_e2ap_logicalOR, + { "logicalOR", "e2ap.logicalOR", + FT_UINT32, BASE_DEC, VALS(e2ap_LogicalOR_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_cellGlobalID, + { "cellGlobalID", "e2ap.cellGlobalID", + FT_UINT32, BASE_DEC, VALS(e2ap_CGI_vals), 0, + "CGI", HFILL }}, + { &hf_e2ap_ranParameterTesting, + { "ranParameterTesting", "e2ap.ranParameterTesting", + FT_UINT32, BASE_DEC, NULL, 0, + "RANParameter_Testing", HFILL }}, + { &hf_e2ap_ueInfo_List, + { "ueInfo-List", "e2ap.ueInfo_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofUEInfo_OF_EventTrigger_UE_Info_Item", HFILL }}, + { &hf_e2ap_ueInfo_List_item, + { "EventTrigger-UE-Info-Item", "e2ap.EventTrigger_UE_Info_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_eventTriggerUEID, + { "eventTriggerUEID", "e2ap.eventTriggerUEID", + FT_UINT32, BASE_DEC, NULL, 0, + "RIC_EventTrigger_UE_ID", HFILL }}, + { &hf_e2ap_ueType, + { "ueType", "e2ap.ueType", + FT_UINT32, BASE_DEC, VALS(e2ap_T_ueType_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_ueType_Choice_Individual, + { "ueType-Choice-Individual", "e2ap.ueType_Choice_Individual_element", + FT_NONE, BASE_NONE, NULL, 0, + "EventTrigger_UE_Info_Item_Choice_Individual", HFILL }}, + { &hf_e2ap_ueType_Choice_Group, + { "ueType-Choice-Group", "e2ap.ueType_Choice_Group_element", + FT_NONE, BASE_NONE, NULL, 0, + "EventTrigger_UE_Info_Item_Choice_Group", HFILL }}, + { &hf_e2ap_ueID, + { "ueID", "e2ap.ueID", + FT_UINT32, BASE_DEC, VALS(e2ap_UEID_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_ueEvent_List, + { "ueEvent-List", "e2ap.ueEvent_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofUEeventInfo_OF_EventTrigger_UEevent_Info_Item", HFILL }}, + { &hf_e2ap_ueEvent_List_item, + { "EventTrigger-UEevent-Info-Item", "e2ap.EventTrigger_UEevent_Info_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ueEventID, + { "ueEventID", "e2ap.ueEventID", + FT_UINT32, BASE_DEC, NULL, 0, + "RIC_EventTrigger_UEevent_ID", HFILL }}, + { &hf_e2ap_ranParameter_Definition_Choice, + { "ranParameter-Definition-Choice", "e2ap.ranParameter_Definition_Choice", + FT_UINT32, BASE_DEC, VALS(e2ap_RANParameter_Definition_Choice_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_choiceLIST, + { "choiceLIST", "e2ap.choiceLIST_element", + FT_NONE, BASE_NONE, NULL, 0, + "RANParameter_Definition_Choice_LIST", HFILL }}, + { &hf_e2ap_choiceSTRUCTURE, + { "choiceSTRUCTURE", "e2ap.choiceSTRUCTURE_element", + FT_NONE, BASE_NONE, NULL, 0, + "RANParameter_Definition_Choice_STRUCTURE", HFILL }}, + { &hf_e2ap_ranParameter_List, + { "ranParameter-List", "e2ap.ranParameter_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofItemsinList_OF_RANParameter_Definition_Choice_LIST_Item", HFILL }}, + { &hf_e2ap_ranParameter_List_item, + { "RANParameter-Definition-Choice-LIST-Item", "e2ap.RANParameter_Definition_Choice_LIST_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ranParameter_ID, + { "ranParameter-ID", "e2ap.ranParameter_ID", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ranParameter_name, + { "ranParameter-name", "e2ap.ranParameter_name", + FT_STRING, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ranParameter_Definition, + { "ranParameter-Definition", "e2ap.ranParameter_Definition_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ranParameter_STRUCTURE, + { "ranParameter-STRUCTURE", "e2ap.ranParameter_STRUCTURE", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofParametersinStructure_OF_RANParameter_Definition_Choice_STRUCTURE_Item", HFILL }}, + { &hf_e2ap_ranParameter_STRUCTURE_item, + { "RANParameter-Definition-Choice-STRUCTURE-Item", "e2ap.RANParameter_Definition_Choice_STRUCTURE_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_valueBoolean, + { "valueBoolean", "e2ap.valueBoolean", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_e2ap_valueInt, + { "valueInt", "e2ap.valueInt", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, + { &hf_e2ap_valueReal, + { "valueReal", "e2ap.valueReal", + FT_DOUBLE, BASE_NONE, NULL, 0, + "REAL", HFILL }}, + { &hf_e2ap_valueBitS, + { "valueBitS", "e2ap.valueBitS", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING", HFILL }}, + { &hf_e2ap_valueOctS, + { "valueOctS", "e2ap.valueOctS", + FT_BYTES, BASE_NONE, NULL, 0, + "OCTET_STRING", HFILL }}, + { &hf_e2ap_valuePrintableString, + { "valuePrintableString", "e2ap.valuePrintableString", + FT_STRING, BASE_NONE, NULL, 0, + "PrintableString", HFILL }}, + { &hf_e2ap_ranP_Choice_ElementTrue, + { "ranP-Choice-ElementTrue", "e2ap.ranP_Choice_ElementTrue_element", + FT_NONE, BASE_NONE, NULL, 0, + "RANParameter_ValueType_Choice_ElementTrue", HFILL }}, + { &hf_e2ap_ranP_Choice_ElementFalse, + { "ranP-Choice-ElementFalse", "e2ap.ranP_Choice_ElementFalse_element", + FT_NONE, BASE_NONE, NULL, 0, + "RANParameter_ValueType_Choice_ElementFalse", HFILL }}, + { &hf_e2ap_ranP_Choice_Structure, + { "ranP-Choice-Structure", "e2ap.ranP_Choice_Structure_element", + FT_NONE, BASE_NONE, NULL, 0, + "RANParameter_ValueType_Choice_Structure", HFILL }}, + { &hf_e2ap_ranP_Choice_List, + { "ranP-Choice-List", "e2ap.ranP_Choice_List_element", + FT_NONE, BASE_NONE, NULL, 0, + "RANParameter_ValueType_Choice_List", HFILL }}, + { &hf_e2ap_ranParameter_value, + { "ranParameter-value", "e2ap.ranParameter_value", + FT_UINT32, BASE_DEC, VALS(e2ap_RANParameter_Value_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_ranParameter_Structure, + { "ranParameter-Structure", "e2ap.ranParameter_Structure_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ranParameter_List_01, + { "ranParameter-List", "e2ap.ranParameter_List_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_sequence_of_ranParameters, + { "sequence-of-ranParameters", "e2ap.sequence_of_ranParameters", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofParametersinStructure_OF_RANParameter_STRUCTURE_Item", HFILL }}, + { &hf_e2ap_sequence_of_ranParameters_item, + { "RANParameter-STRUCTURE-Item", "e2ap.RANParameter_STRUCTURE_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ranParameter_valueType, + { "ranParameter-valueType", "e2ap.ranParameter_valueType", + FT_UINT32, BASE_DEC, VALS(e2ap_RANParameter_ValueType_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_list_of_ranParameter, + { "list-of-ranParameter", "e2ap.list_of_ranParameter", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofItemsinList_OF_RANParameter_STRUCTURE", HFILL }}, + { &hf_e2ap_list_of_ranParameter_item, + { "RANParameter-STRUCTURE", "e2ap.RANParameter_STRUCTURE_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_RANParameter_Testing_item, + { "RANParameter-Testing-Item", "e2ap.RANParameter_Testing_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ranP_Choice_comparison, + { "ranP-Choice-comparison", "e2ap.ranP_Choice_comparison", + FT_UINT32, BASE_DEC, VALS(e2ap_T_ranP_Choice_comparison_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_ranP_Choice_presence, + { "ranP-Choice-presence", "e2ap.ranP_Choice_presence", + FT_UINT32, BASE_DEC, VALS(e2ap_T_ranP_Choice_presence_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_ranParameter_Type, + { "ranParameter-Type", "e2ap.ranParameter_Type", + FT_UINT32, BASE_DEC, VALS(e2ap_T_ranParameter_Type_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_ranP_Choice_List_01, + { "ranP-Choice-List", "e2ap.ranP_Choice_List_element", + FT_NONE, BASE_NONE, NULL, 0, + "RANParameter_Testing_Item_Choice_List", HFILL }}, + { &hf_e2ap_ranP_Choice_Structure_01, + { "ranP-Choice-Structure", "e2ap.ranP_Choice_Structure_element", + FT_NONE, BASE_NONE, NULL, 0, + "RANParameter_Testing_Item_Choice_Structure", HFILL }}, + { &hf_e2ap_ranP_Choice_ElementTrue_01, + { "ranP-Choice-ElementTrue", "e2ap.ranP_Choice_ElementTrue_element", + FT_NONE, BASE_NONE, NULL, 0, + "RANParameter_Testing_Item_Choice_ElementTrue", HFILL }}, + { &hf_e2ap_ranP_Choice_ElementFalse_01, + { "ranP-Choice-ElementFalse", "e2ap.ranP_Choice_ElementFalse_element", + FT_NONE, BASE_NONE, NULL, 0, + "RANParameter_Testing_Item_Choice_ElementFalse", HFILL }}, + { &hf_e2ap_ranParameter_List_02, + { "ranParameter-List", "e2ap.ranParameter_List", + FT_UINT32, BASE_DEC, NULL, 0, + "RANParameter_Testing_LIST", HFILL }}, + { &hf_e2ap_ranParameter_Structure_01, + { "ranParameter-Structure", "e2ap.ranParameter_Structure", + FT_UINT32, BASE_DEC, NULL, 0, + "RANParameter_Testing_STRUCTURE", HFILL }}, + { &hf_e2ap_ranParameter_TestCondition, + { "ranParameter-TestCondition", "e2ap.ranParameter_TestCondition", + FT_UINT32, BASE_DEC, VALS(e2ap_RANParameter_TestingCondition_vals), 0, + "RANParameter_TestingCondition", HFILL }}, + { &hf_e2ap_ranParameter_Value, + { "ranParameter-Value", "e2ap.ranParameter_Value", + FT_UINT32, BASE_DEC, VALS(e2ap_RANParameter_Value_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_RANParameter_Testing_LIST_item, + { "RANParameter-Testing-Item", "e2ap.RANParameter_Testing_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_RANParameter_Testing_STRUCTURE_item, + { "RANParameter-Testing-Item", "e2ap.RANParameter_Testing_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ric_PolicyAction_ID, + { "ric-PolicyAction-ID", "e2ap.ric_PolicyAction_ID", + FT_UINT32, BASE_DEC, NULL, 0, + "RIC_ControlAction_ID", HFILL }}, + { &hf_e2ap_ranParameters_List, + { "ranParameters-List", "e2ap.ranParameters_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_RIC_PolicyAction_RANParameter_Item", HFILL }}, + { &hf_e2ap_ranParameters_List_item, + { "RIC-PolicyAction-RANParameter-Item", "e2ap.RIC_PolicyAction_RANParameter_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ric_PolicyDecision, + { "ric-PolicyDecision", "e2ap.ric_PolicyDecision", + FT_UINT32, BASE_DEC, VALS(e2ap_T_ric_PolicyDecision_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_ric_eventTrigger_formats, + { "ric-eventTrigger-formats", "e2ap.ric_eventTrigger_formats", + FT_UINT32, BASE_DEC, VALS(e2ap_T_ric_eventTrigger_formats_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_eventTrigger_Format1, + { "eventTrigger-Format1", "e2ap.eventTrigger_Format1_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2SM_RC_EventTrigger_Format1", HFILL }}, + { &hf_e2ap_eventTrigger_Format2, + { "eventTrigger-Format2", "e2ap.eventTrigger_Format2_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2SM_RC_EventTrigger_Format2", HFILL }}, + { &hf_e2ap_eventTrigger_Format3, + { "eventTrigger-Format3", "e2ap.eventTrigger_Format3_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2SM_RC_EventTrigger_Format3", HFILL }}, + { &hf_e2ap_eventTrigger_Format4, + { "eventTrigger-Format4", "e2ap.eventTrigger_Format4_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2SM_RC_EventTrigger_Format4", HFILL }}, + { &hf_e2ap_eventTrigger_Format5, + { "eventTrigger-Format5", "e2ap.eventTrigger_Format5_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2SM_RC_EventTrigger_Format5", HFILL }}, + { &hf_e2ap_message_List, + { "message-List", "e2ap.message_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofMessages_OF_E2SM_RC_EventTrigger_Format1_Item", HFILL }}, + { &hf_e2ap_message_List_item, + { "E2SM-RC-EventTrigger-Format1-Item", "e2ap.E2SM_RC_EventTrigger_Format1_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_globalAssociatedUEInfo, + { "globalAssociatedUEInfo", "e2ap.globalAssociatedUEInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + "EventTrigger_UE_Info", HFILL }}, + { &hf_e2ap_ric_eventTriggerCondition_ID, + { "ric-eventTriggerCondition-ID", "e2ap.ric_eventTriggerCondition_ID", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_messageType_01, + { "messageType", "e2ap.messageType", + FT_UINT32, BASE_DEC, VALS(e2ap_MessageType_Choice_vals), 0, + "MessageType_Choice", HFILL }}, + { &hf_e2ap_messageDirection, + { "messageDirection", "e2ap.messageDirection", + FT_UINT32, BASE_DEC, VALS(e2ap_T_messageDirection_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_associatedUEInfo, + { "associatedUEInfo", "e2ap.associatedUEInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + "EventTrigger_UE_Info", HFILL }}, + { &hf_e2ap_associatedUEEvent, + { "associatedUEEvent", "e2ap.associatedUEEvent_element", + FT_NONE, BASE_NONE, NULL, 0, + "EventTrigger_UEevent_Info", HFILL }}, + { &hf_e2ap_messageType_Choice_NI, + { "messageType-Choice-NI", "e2ap.messageType_Choice_NI_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_messageType_Choice_RRC, + { "messageType-Choice-RRC", "e2ap.messageType_Choice_RRC_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_nI_Type, + { "nI-Type", "e2ap.nI_Type", + FT_UINT32, BASE_DEC, VALS(e2ap_InterfaceType_vals), 0, + "InterfaceType", HFILL }}, + { &hf_e2ap_nI_Identifier, + { "nI-Identifier", "e2ap.nI_Identifier", + FT_UINT32, BASE_DEC, VALS(e2ap_InterfaceIdentifier_vals), 0, + "InterfaceIdentifier", HFILL }}, + { &hf_e2ap_nI_Message, + { "nI-Message", "e2ap.nI_Message_element", + FT_NONE, BASE_NONE, NULL, 0, + "Interface_MessageID", HFILL }}, + { &hf_e2ap_rRC_Message, + { "rRC-Message", "e2ap.rRC_Message_element", + FT_NONE, BASE_NONE, NULL, 0, + "RRC_MessageID", HFILL }}, + { &hf_e2ap_ric_callProcessType_ID, + { "ric-callProcessType-ID", "e2ap.ric_callProcessType_ID", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ric_callProcessBreakpoint_ID, + { "ric-callProcessBreakpoint-ID", "e2ap.ric_callProcessBreakpoint_ID", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_associatedE2NodeInfo, + { "associatedE2NodeInfo", "e2ap.associatedE2NodeInfo", + FT_UINT32, BASE_DEC, NULL, 0, + "RANParameter_Testing", HFILL }}, + { &hf_e2ap_e2NodeInfoChange_List, + { "e2NodeInfoChange-List", "e2ap.e2NodeInfoChange_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofE2InfoChanges_OF_E2SM_RC_EventTrigger_Format3_Item", HFILL }}, + { &hf_e2ap_e2NodeInfoChange_List_item, + { "E2SM-RC-EventTrigger-Format3-Item", "e2ap.E2SM_RC_EventTrigger_Format3_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_e2NodeInfoChange_ID, + { "e2NodeInfoChange-ID", "e2ap.e2NodeInfoChange_ID", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_1_512_", HFILL }}, + { &hf_e2ap_associatedCellInfo, + { "associatedCellInfo", "e2ap.associatedCellInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + "EventTrigger_Cell_Info", HFILL }}, + { &hf_e2ap_uEInfoChange_List, + { "uEInfoChange-List", "e2ap.uEInfoChange_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofUEInfoChanges_OF_E2SM_RC_EventTrigger_Format4_Item", HFILL }}, + { &hf_e2ap_uEInfoChange_List_item, + { "E2SM-RC-EventTrigger-Format4-Item", "e2ap.E2SM_RC_EventTrigger_Format4_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_triggerType, + { "triggerType", "e2ap.triggerType", + FT_UINT32, BASE_DEC, VALS(e2ap_TriggerType_Choice_vals), 0, + "TriggerType_Choice", HFILL }}, + { &hf_e2ap_triggerType_Choice_RRCstate, + { "triggerType-Choice-RRCstate", "e2ap.triggerType_Choice_RRCstate_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_triggerType_Choice_UEID, + { "triggerType-Choice-UEID", "e2ap.triggerType_Choice_UEID_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_triggerType_Choice_L2state, + { "triggerType-Choice-L2state", "e2ap.triggerType_Choice_L2state_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_rrcState_List, + { "rrcState-List", "e2ap.rrcState_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofRRCstate_OF_TriggerType_Choice_RRCstate_Item", HFILL }}, + { &hf_e2ap_rrcState_List_item, + { "TriggerType-Choice-RRCstate-Item", "e2ap.TriggerType_Choice_RRCstate_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_stateChangedTo, + { "stateChangedTo", "e2ap.stateChangedTo", + FT_UINT32, BASE_DEC, VALS(e2ap_RRC_State_vals), 0, + "RRC_State", HFILL }}, + { &hf_e2ap_ueIDchange_ID, + { "ueIDchange-ID", "e2ap.ueIDchange_ID", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_1_512_", HFILL }}, + { &hf_e2ap_associatedL2variables, + { "associatedL2variables", "e2ap.associatedL2variables", + FT_UINT32, BASE_DEC, NULL, 0, + "RANParameter_Testing", HFILL }}, + { &hf_e2ap_onDemand, + { "onDemand", "e2ap.onDemand", + FT_UINT32, BASE_DEC, VALS(e2ap_T_onDemand_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_ric_Style_Type, + { "ric-Style-Type", "e2ap.ric_Style_Type", + FT_INT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ric_actionDefinition_formats, + { "ric-actionDefinition-formats", "e2ap.ric_actionDefinition_formats", + FT_UINT32, BASE_DEC, VALS(e2ap_T_ric_actionDefinition_formats_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_actionDefinition_Format1, + { "actionDefinition-Format1", "e2ap.actionDefinition_Format1_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2SM_RC_ActionDefinition_Format1", HFILL }}, + { &hf_e2ap_actionDefinition_Format2, + { "actionDefinition-Format2", "e2ap.actionDefinition_Format2_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2SM_RC_ActionDefinition_Format2", HFILL }}, + { &hf_e2ap_actionDefinition_Format3, + { "actionDefinition-Format3", "e2ap.actionDefinition_Format3_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2SM_RC_ActionDefinition_Format3", HFILL }}, + { &hf_e2ap_actionDefinition_Format4, + { "actionDefinition-Format4", "e2ap.actionDefinition_Format4_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2SM_RC_ActionDefinition_Format4", HFILL }}, + { &hf_e2ap_ranP_ToBeReported_List, + { "ranP-ToBeReported-List", "e2ap.ranP_ToBeReported_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofParametersToReport_OF_E2SM_RC_ActionDefinition_Format1_Item", HFILL }}, + { &hf_e2ap_ranP_ToBeReported_List_item, + { "E2SM-RC-ActionDefinition-Format1-Item", "e2ap.E2SM_RC_ActionDefinition_Format1_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ric_PolicyConditions_List, + { "ric-PolicyConditions-List", "e2ap.ric_PolicyConditions_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofPolicyConditions_OF_E2SM_RC_ActionDefinition_Format2_Item", HFILL }}, + { &hf_e2ap_ric_PolicyConditions_List_item, + { "E2SM-RC-ActionDefinition-Format2-Item", "e2ap.E2SM_RC_ActionDefinition_Format2_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ric_PolicyAction, + { "ric-PolicyAction", "e2ap.ric_PolicyAction_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ric_PolicyConditionDefinition, + { "ric-PolicyConditionDefinition", "e2ap.ric_PolicyConditionDefinition", + FT_UINT32, BASE_DEC, NULL, 0, + "RANParameter_Testing", HFILL }}, + { &hf_e2ap_ric_InsertIndication_ID, + { "ric-InsertIndication-ID", "e2ap.ric_InsertIndication_ID", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ranP_InsertIndication_List, + { "ranP-InsertIndication-List", "e2ap.ranP_InsertIndication_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_ActionDefinition_Format3_Item", HFILL }}, + { &hf_e2ap_ranP_InsertIndication_List_item, + { "E2SM-RC-ActionDefinition-Format3-Item", "e2ap.E2SM_RC_ActionDefinition_Format3_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ric_InsertStyle_List, + { "ric-InsertStyle-List", "e2ap.ric_InsertStyle_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofRICStyles_OF_E2SM_RC_ActionDefinition_Format4_Style_Item", HFILL }}, + { &hf_e2ap_ric_InsertStyle_List_item, + { "E2SM-RC-ActionDefinition-Format4-Style-Item", "e2ap.E2SM_RC_ActionDefinition_Format4_Style_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_requested_Insert_Style_Type, + { "requested-Insert-Style-Type", "e2ap.requested_Insert_Style_Type", + FT_INT32, BASE_DEC, NULL, 0, + "RIC_Style_Type", HFILL }}, + { &hf_e2ap_ric_InsertIndication_List, + { "ric-InsertIndication-List", "e2ap.ric_InsertIndication_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofInsertIndicationActions_OF_E2SM_RC_ActionDefinition_Format4_Indication_Item", HFILL }}, + { &hf_e2ap_ric_InsertIndication_List_item, + { "E2SM-RC-ActionDefinition-Format4-Indication-Item", "e2ap.E2SM_RC_ActionDefinition_Format4_Indication_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ranP_InsertIndication_List_01, + { "ranP-InsertIndication-List", "e2ap.ranP_InsertIndication_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_ActionDefinition_Format4_RANP_Item", HFILL }}, + { &hf_e2ap_ranP_InsertIndication_List_item_01, + { "E2SM-RC-ActionDefinition-Format4-RANP-Item", "e2ap.E2SM_RC_ActionDefinition_Format4_RANP_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ric_indicationHeader_formats, + { "ric-indicationHeader-formats", "e2ap.ric_indicationHeader_formats", + FT_UINT32, BASE_DEC, VALS(e2ap_T_ric_indicationHeader_formats_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_indicationHeader_Format1, + { "indicationHeader-Format1", "e2ap.indicationHeader_Format1_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2SM_RC_IndicationHeader_Format1", HFILL }}, + { &hf_e2ap_indicationHeader_Format2, + { "indicationHeader-Format2", "e2ap.indicationHeader_Format2_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2SM_RC_IndicationHeader_Format2", HFILL }}, + { &hf_e2ap_indicationHeader_Format3, + { "indicationHeader-Format3", "e2ap.indicationHeader_Format3_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2SM_RC_IndicationHeader_Format3", HFILL }}, + { &hf_e2ap_ric_InsertStyle_Type, + { "ric-InsertStyle-Type", "e2ap.ric_InsertStyle_Type", + FT_INT32, BASE_DEC, NULL, 0, + "RIC_Style_Type", HFILL }}, + { &hf_e2ap_ric_indicationMessage_formats, + { "ric-indicationMessage-formats", "e2ap.ric_indicationMessage_formats", + FT_UINT32, BASE_DEC, VALS(e2ap_T_ric_indicationMessage_formats_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_indicationMessage_Format1, + { "indicationMessage-Format1", "e2ap.indicationMessage_Format1_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2SM_RC_IndicationMessage_Format1", HFILL }}, + { &hf_e2ap_indicationMessage_Format2, + { "indicationMessage-Format2", "e2ap.indicationMessage_Format2_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2SM_RC_IndicationMessage_Format2", HFILL }}, + { &hf_e2ap_indicationMessage_Format3, + { "indicationMessage-Format3", "e2ap.indicationMessage_Format3_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2SM_RC_IndicationMessage_Format3", HFILL }}, + { &hf_e2ap_indicationMessage_Format4, + { "indicationMessage-Format4", "e2ap.indicationMessage_Format4_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2SM_RC_IndicationMessage_Format4", HFILL }}, + { &hf_e2ap_indicationMessage_Format5, + { "indicationMessage-Format5", "e2ap.indicationMessage_Format5_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2SM_RC_IndicationMessage_Format5", HFILL }}, + { &hf_e2ap_indicationMessage_Format6, + { "indicationMessage-Format6", "e2ap.indicationMessage_Format6_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2SM_RC_IndicationMessage_Format6", HFILL }}, + { &hf_e2ap_ranP_Reported_List, + { "ranP-Reported-List", "e2ap.ranP_Reported_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format1_Item", HFILL }}, + { &hf_e2ap_ranP_Reported_List_item, + { "E2SM-RC-IndicationMessage-Format1-Item", "e2ap.E2SM_RC_IndicationMessage_Format1_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ueParameter_List, + { "ueParameter-List", "e2ap.ueParameter_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofUEID_OF_E2SM_RC_IndicationMessage_Format2_Item", HFILL }}, + { &hf_e2ap_ueParameter_List_item, + { "E2SM-RC-IndicationMessage-Format2-Item", "e2ap.E2SM_RC_IndicationMessage_Format2_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ranP_List, + { "ranP-List", "e2ap.ranP_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format2_RANParameter_Item", HFILL }}, + { &hf_e2ap_ranP_List_item, + { "E2SM-RC-IndicationMessage-Format2-RANParameter-Item", "e2ap.E2SM_RC_IndicationMessage_Format2_RANParameter_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_cellInfo_List_01, + { "cellInfo-List", "e2ap.cellInfo_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofCellID_OF_E2SM_RC_IndicationMessage_Format3_Item", HFILL }}, + { &hf_e2ap_cellInfo_List_item_01, + { "E2SM-RC-IndicationMessage-Format3-Item", "e2ap.E2SM_RC_IndicationMessage_Format3_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_cellGlobal_ID, + { "cellGlobal-ID", "e2ap.cellGlobal_ID", + FT_UINT32, BASE_DEC, VALS(e2ap_CGI_vals), 0, + "CGI", HFILL }}, + { &hf_e2ap_cellContextInfo, + { "cellContextInfo", "e2ap.cellContextInfo", + FT_BYTES, BASE_NONE, NULL, 0, + "OCTET_STRING", HFILL }}, + { &hf_e2ap_cellDeleted, + { "cellDeleted", "e2ap.cellDeleted", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_e2ap_neighborRelation_Table, + { "neighborRelation-Table", "e2ap.neighborRelation_Table_element", + FT_NONE, BASE_NONE, NULL, 0, + "NeighborRelation_Info", HFILL }}, + { &hf_e2ap_ueInfo_List_01, + { "ueInfo-List", "e2ap.ueInfo_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_0_maxnoofUEID_OF_E2SM_RC_IndicationMessage_Format4_ItemUE", HFILL }}, + { &hf_e2ap_ueInfo_List_item_01, + { "E2SM-RC-IndicationMessage-Format4-ItemUE", "e2ap.E2SM_RC_IndicationMessage_Format4_ItemUE_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_cellInfo_List_02, + { "cellInfo-List", "e2ap.cellInfo_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_0_maxnoofCellID_OF_E2SM_RC_IndicationMessage_Format4_ItemCell", HFILL }}, + { &hf_e2ap_cellInfo_List_item_02, + { "E2SM-RC-IndicationMessage-Format4-ItemCell", "e2ap.E2SM_RC_IndicationMessage_Format4_ItemCell_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ueContextInfo, + { "ueContextInfo", "e2ap.ueContextInfo", + FT_BYTES, BASE_NONE, NULL, 0, + "OCTET_STRING", HFILL }}, + { &hf_e2ap_ranP_Requested_List, + { "ranP-Requested-List", "e2ap.ranP_Requested_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_0_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format5_Item", HFILL }}, + { &hf_e2ap_ranP_Requested_List_item, + { "E2SM-RC-IndicationMessage-Format5-Item", "e2ap.E2SM_RC_IndicationMessage_Format5_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ric_InsertStyle_List_01, + { "ric-InsertStyle-List", "e2ap.ric_InsertStyle_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofRICStyles_OF_E2SM_RC_IndicationMessage_Format6_Style_Item", HFILL }}, + { &hf_e2ap_ric_InsertStyle_List_item_01, + { "E2SM-RC-IndicationMessage-Format6-Style-Item", "e2ap.E2SM_RC_IndicationMessage_Format6_Style_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_indicated_Insert_Style_Type, + { "indicated-Insert-Style-Type", "e2ap.indicated_Insert_Style_Type", + FT_INT32, BASE_DEC, NULL, 0, + "RIC_Style_Type", HFILL }}, + { &hf_e2ap_ric_InsertIndication_List_01, + { "ric-InsertIndication-List", "e2ap.ric_InsertIndication_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofInsertIndicationActions_OF_E2SM_RC_IndicationMessage_Format6_Indication_Item", HFILL }}, + { &hf_e2ap_ric_InsertIndication_List_item_01, + { "E2SM-RC-IndicationMessage-Format6-Indication-Item", "e2ap.E2SM_RC_IndicationMessage_Format6_Indication_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ranP_InsertIndication_List_02, + { "ranP-InsertIndication-List", "e2ap.ranP_InsertIndication_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_0_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format6_RANP_Item", HFILL }}, + { &hf_e2ap_ranP_InsertIndication_List_item_02, + { "E2SM-RC-IndicationMessage-Format6-RANP-Item", "e2ap.E2SM_RC_IndicationMessage_Format6_RANP_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ric_callProcessID_formats, + { "ric-callProcessID-formats", "e2ap.ric_callProcessID_formats", + FT_UINT32, BASE_DEC, VALS(e2ap_T_ric_callProcessID_formats_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_callProcessID_Format1, + { "callProcessID-Format1", "e2ap.callProcessID_Format1_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2SM_RC_CallProcessID_Format1", HFILL }}, + { &hf_e2ap_ric_callProcess_ID, + { "ric-callProcess-ID", "e2ap.ric_callProcess_ID", + FT_UINT32, BASE_DEC, NULL, 0, + "RAN_CallProcess_ID", HFILL }}, + { &hf_e2ap_ranFunction_Name, + { "ranFunction-Name", "e2ap.ranFunction_Name_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ranFunctionDefinition_EventTrigger, + { "ranFunctionDefinition-EventTrigger", "e2ap.ranFunctionDefinition_EventTrigger_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ranFunctionDefinition_Report, + { "ranFunctionDefinition-Report", "e2ap.ranFunctionDefinition_Report_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ranFunctionDefinition_Insert, + { "ranFunctionDefinition-Insert", "e2ap.ranFunctionDefinition_Insert_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ranFunctionDefinition_Control, + { "ranFunctionDefinition-Control", "e2ap.ranFunctionDefinition_Control_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ranFunctionDefinition_Policy, + { "ranFunctionDefinition-Policy", "e2ap.ranFunctionDefinition_Policy_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ric_EventTriggerStyle_List, + { "ric-EventTriggerStyle-List", "e2ap.ric_EventTriggerStyle_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_EventTrigger_Style_Item", HFILL }}, + { &hf_e2ap_ric_EventTriggerStyle_List_item, + { "RANFunctionDefinition-EventTrigger-Style-Item", "e2ap.RANFunctionDefinition_EventTrigger_Style_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ran_L2Parameters_List, + { "ran-L2Parameters-List", "e2ap.ran_L2Parameters_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_L2Parameters_RANParameter_Item", HFILL }}, + { &hf_e2ap_ran_L2Parameters_List_item, + { "L2Parameters-RANParameter-Item", "e2ap.L2Parameters_RANParameter_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ran_CallProcessTypes_List, + { "ran-CallProcessTypes-List", "e2ap.ran_CallProcessTypes_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofCallProcessTypes_OF_RANFunctionDefinition_EventTrigger_CallProcess_Item", HFILL }}, + { &hf_e2ap_ran_CallProcessTypes_List_item, + { "RANFunctionDefinition-EventTrigger-CallProcess-Item", "e2ap.RANFunctionDefinition_EventTrigger_CallProcess_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ran_UEIdentificationParameters_List, + { "ran-UEIdentificationParameters-List", "e2ap.ran_UEIdentificationParameters_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_UEIdentification_RANParameter_Item", HFILL }}, + { &hf_e2ap_ran_UEIdentificationParameters_List_item, + { "UEIdentification-RANParameter-Item", "e2ap.UEIdentification_RANParameter_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ran_CellIdentificationParameters_List, + { "ran-CellIdentificationParameters-List", "e2ap.ran_CellIdentificationParameters_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_CellIdentification_RANParameter_Item", HFILL }}, + { &hf_e2ap_ran_CellIdentificationParameters_List_item, + { "CellIdentification-RANParameter-Item", "e2ap.CellIdentification_RANParameter_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_e2ap_ric_EventTriggerStyle_Type, { "ric-EventTriggerStyle-Type", "e2ap.ric_EventTriggerStyle_Type", FT_INT32, BASE_DEC, NULL, 0, @@ -4576,6 +12640,46 @@ void proto_register_e2ap(void) { { "ric-EventTriggerFormat-Type", "e2ap.ric_EventTriggerFormat_Type", FT_INT32, BASE_DEC, NULL, 0, "RIC_Format_Type", HFILL }}, + { &hf_e2ap_callProcessType_ID, + { "callProcessType-ID", "e2ap.callProcessType_ID", + FT_UINT32, BASE_DEC, NULL, 0, + "RIC_CallProcessType_ID", HFILL }}, + { &hf_e2ap_callProcessType_Name, + { "callProcessType-Name", "e2ap.callProcessType_Name", + FT_STRING, BASE_NONE, NULL, 0, + "RIC_CallProcessType_Name", HFILL }}, + { &hf_e2ap_callProcessBreakpoints_List, + { "callProcessBreakpoints-List", "e2ap.callProcessBreakpoints_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofCallProcessBreakpoints_OF_RANFunctionDefinition_EventTrigger_Breakpoint_Item", HFILL }}, + { &hf_e2ap_callProcessBreakpoints_List_item, + { "RANFunctionDefinition-EventTrigger-Breakpoint-Item", "e2ap.RANFunctionDefinition_EventTrigger_Breakpoint_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_callProcessBreakpoint_ID, + { "callProcessBreakpoint-ID", "e2ap.callProcessBreakpoint_ID", + FT_UINT32, BASE_DEC, NULL, 0, + "RIC_CallProcessBreakpoint_ID", HFILL }}, + { &hf_e2ap_callProcessBreakpoint_Name, + { "callProcessBreakpoint-Name", "e2ap.callProcessBreakpoint_Name", + FT_STRING, BASE_NONE, NULL, 0, + "RIC_CallProcessBreakpoint_Name", HFILL }}, + { &hf_e2ap_ran_CallProcessBreakpointParameters_List, + { "ran-CallProcessBreakpointParameters-List", "e2ap.ran_CallProcessBreakpointParameters_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_CallProcessBreakpoint_RANParameter_Item", HFILL }}, + { &hf_e2ap_ran_CallProcessBreakpointParameters_List_item, + { "CallProcessBreakpoint-RANParameter-Item", "e2ap.CallProcessBreakpoint_RANParameter_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ric_ReportStyle_List, + { "ric-ReportStyle-List", "e2ap.ric_ReportStyle_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Report_Item", HFILL }}, + { &hf_e2ap_ric_ReportStyle_List_item, + { "RANFunctionDefinition-Report-Item", "e2ap.RANFunctionDefinition_Report_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_e2ap_ric_ReportStyle_Type, { "ric-ReportStyle-Type", "e2ap.ric_ReportStyle_Type", FT_INT32, BASE_DEC, NULL, 0, @@ -4584,6 +12688,14 @@ void proto_register_e2ap(void) { { "ric-ReportStyle-Name", "e2ap.ric_ReportStyle_Name", FT_STRING, BASE_NONE, NULL, 0, "RIC_Style_Name", HFILL }}, + { &hf_e2ap_ric_SupportedEventTriggerStyle_Type, + { "ric-SupportedEventTriggerStyle-Type", "e2ap.ric_SupportedEventTriggerStyle_Type", + FT_INT32, BASE_DEC, NULL, 0, + "RIC_Style_Type", HFILL }}, + { &hf_e2ap_ric_ReportActionFormat_Type, + { "ric-ReportActionFormat-Type", "e2ap.ric_ReportActionFormat_Type", + FT_INT32, BASE_DEC, NULL, 0, + "RIC_Format_Type", HFILL }}, { &hf_e2ap_ric_IndicationHeaderFormat_Type, { "ric-IndicationHeaderFormat-Type", "e2ap.ric_IndicationHeaderFormat_Type", FT_INT32, BASE_DEC, NULL, 0, @@ -4592,174 +12704,581 @@ void proto_register_e2ap(void) { { "ric-IndicationMessageFormat-Type", "e2ap.ric_IndicationMessageFormat_Type", FT_INT32, BASE_DEC, NULL, 0, "RIC_Format_Type", HFILL }}, - { &hf_e2ap_oDU, - { "oDU", "e2ap.oDU_element", - FT_NONE, BASE_NONE, NULL, 0, - "ODU_PF_Container", HFILL }}, - { &hf_e2ap_oCU_CP, - { "oCU-CP", "e2ap.oCU_CP_element", - FT_NONE, BASE_NONE, NULL, 0, - "OCUCP_PF_Container", HFILL }}, - { &hf_e2ap_oCU_UP, - { "oCU-UP", "e2ap.oCU_UP_element", - FT_NONE, BASE_NONE, NULL, 0, - "OCUUP_PF_Container", HFILL }}, - { &hf_e2ap_cellResourceReportList, - { "cellResourceReportList", "e2ap.cellResourceReportList", + { &hf_e2ap_ran_ReportParameters_List, + { "ran-ReportParameters-List", "e2ap.ran_ReportParameters_List", FT_UINT32, BASE_DEC, NULL, 0, - "SEQUENCE_SIZE_1_maxCellingNBDU_OF_CellResourceReportListItem", HFILL }}, - { &hf_e2ap_cellResourceReportList_item, - { "CellResourceReportListItem", "e2ap.CellResourceReportListItem_element", + "SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_Report_RANParameter_Item", HFILL }}, + { &hf_e2ap_ran_ReportParameters_List_item, + { "Report-RANParameter-Item", "e2ap.Report_RANParameter_Item_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_e2ap_dl_TotalofAvailablePRBs, - { "dl-TotalofAvailablePRBs", "e2ap.dl_TotalofAvailablePRBs", + { &hf_e2ap_ric_InsertStyle_List_02, + { "ric-InsertStyle-List", "e2ap.ric_InsertStyle_List", FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_0_273", HFILL }}, - { &hf_e2ap_ul_TotalofAvailablePRBs, - { "ul-TotalofAvailablePRBs", "e2ap.ul_TotalofAvailablePRBs", - FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_0_273", HFILL }}, - { &hf_e2ap_servedPlmnPerCellList, - { "servedPlmnPerCellList", "e2ap.servedPlmnPerCellList", - FT_UINT32, BASE_DEC, NULL, 0, - "SEQUENCE_SIZE_1_maxPLMN_OF_ServedPlmnPerCellListItem", HFILL }}, - { &hf_e2ap_servedPlmnPerCellList_item, - { "ServedPlmnPerCellListItem", "e2ap.ServedPlmnPerCellListItem_element", + "SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Insert_Item", HFILL }}, + { &hf_e2ap_ric_InsertStyle_List_item_02, + { "RANFunctionDefinition-Insert-Item", "e2ap.RANFunctionDefinition_Insert_Item_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_e2ap_du_PM_5GC, - { "du-PM-5GC", "e2ap.du_PM_5GC_element", - FT_NONE, BASE_NONE, NULL, 0, - "FGC_DU_PM_Container", HFILL }}, - { &hf_e2ap_du_PM_EPC, - { "du-PM-EPC", "e2ap.du_PM_EPC_element", - FT_NONE, BASE_NONE, NULL, 0, - "EPC_DU_PM_Container", HFILL }}, - { &hf_e2ap_slicePerPlmnPerCellList, - { "slicePerPlmnPerCellList", "e2ap.slicePerPlmnPerCellList", + { &hf_e2ap_ric_InsertStyle_Name, + { "ric-InsertStyle-Name", "e2ap.ric_InsertStyle_Name", + FT_STRING, BASE_NONE, NULL, 0, + "RIC_Style_Name", HFILL }}, + { &hf_e2ap_ric_ActionDefinitionFormat_Type, + { "ric-ActionDefinitionFormat-Type", "e2ap.ric_ActionDefinitionFormat_Type", + FT_INT32, BASE_DEC, NULL, 0, + "RIC_Format_Type", HFILL }}, + { &hf_e2ap_ric_InsertIndication_List_02, + { "ric-InsertIndication-List", "e2ap.ric_InsertIndication_List", FT_UINT32, BASE_DEC, NULL, 0, - "SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SlicePerPlmnPerCellListItem", HFILL }}, - { &hf_e2ap_slicePerPlmnPerCellList_item, - { "SlicePerPlmnPerCellListItem", "e2ap.SlicePerPlmnPerCellListItem_element", + "SEQUENCE_SIZE_1_maxnoofInsertIndication_OF_RANFunctionDefinition_Insert_Indication_Item", HFILL }}, + { &hf_e2ap_ric_InsertIndication_List_item_02, + { "RANFunctionDefinition-Insert-Indication-Item", "e2ap.RANFunctionDefinition_Insert_Indication_Item_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_e2ap_fQIPERSlicesPerPlmnPerCellList, - { "fQIPERSlicesPerPlmnPerCellList", "e2ap.fQIPERSlicesPerPlmnPerCellList", - FT_UINT32, BASE_DEC, NULL, 0, - "SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnPerCellListItem", HFILL }}, - { &hf_e2ap_fQIPERSlicesPerPlmnPerCellList_item, - { "FQIPERSlicesPerPlmnPerCellListItem", "e2ap.FQIPERSlicesPerPlmnPerCellListItem_element", - FT_NONE, BASE_NONE, NULL, 0, - NULL, HFILL }}, - { &hf_e2ap_dl_PRBUsage, - { "dl-PRBUsage", "e2ap.dl_PRBUsage", - FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_0_273", HFILL }}, - { &hf_e2ap_ul_PRBUsage, - { "ul-PRBUsage", "e2ap.ul_PRBUsage", - FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_0_273", HFILL }}, - { &hf_e2ap_perQCIReportList, - { "perQCIReportList", "e2ap.perQCIReportList", - FT_UINT32, BASE_DEC, NULL, 0, - "SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItem", HFILL }}, - { &hf_e2ap_perQCIReportList_item, - { "PerQCIReportListItem", "e2ap.PerQCIReportListItem_element", - FT_NONE, BASE_NONE, NULL, 0, - NULL, HFILL }}, - { &hf_e2ap_dl_PRBUsage_01, - { "dl-PRBUsage", "e2ap.dl_PRBUsage", - FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_0_100", HFILL }}, - { &hf_e2ap_ul_PRBUsage_01, - { "ul-PRBUsage", "e2ap.ul_PRBUsage", - FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_0_100", HFILL }}, - { &hf_e2ap_gNB_CU_CP_Name, - { "gNB-CU-CP-Name", "e2ap.gNB_CU_CP_Name", + { &hf_e2ap_ric_CallProcessIDFormat_Type, + { "ric-CallProcessIDFormat-Type", "e2ap.ric_CallProcessIDFormat_Type", + FT_INT32, BASE_DEC, NULL, 0, + "RIC_Format_Type", HFILL }}, + { &hf_e2ap_ric_InsertIndication_Name, + { "ric-InsertIndication-Name", "e2ap.ric_InsertIndication_Name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_e2ap_cu_CP_Resource_Status, - { "cu-CP-Resource-Status", "e2ap.cu_CP_Resource_Status_element", + { &hf_e2ap_ran_InsertIndicationParameters_List, + { "ran-InsertIndicationParameters-List", "e2ap.ran_InsertIndicationParameters_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_InsertIndication_RANParameter_Item", HFILL }}, + { &hf_e2ap_ran_InsertIndicationParameters_List_item, + { "InsertIndication-RANParameter-Item", "e2ap.InsertIndication_RANParameter_Item_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_e2ap_numberOfActive_UEs, - { "numberOfActive-UEs", "e2ap.numberOfActive_UEs", + { &hf_e2ap_ric_ControlStyle_List, + { "ric-ControlStyle-List", "e2ap.ric_ControlStyle_List", FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_1_65536_", HFILL }}, - { &hf_e2ap_gNB_CU_UP_Name, - { "gNB-CU-UP-Name", "e2ap.gNB_CU_UP_Name", + "SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Control_Item", HFILL }}, + { &hf_e2ap_ric_ControlStyle_List_item, + { "RANFunctionDefinition-Control-Item", "e2ap.RANFunctionDefinition_Control_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ric_ControlStyle_Type, + { "ric-ControlStyle-Type", "e2ap.ric_ControlStyle_Type", + FT_INT32, BASE_DEC, NULL, 0, + "RIC_Style_Type", HFILL }}, + { &hf_e2ap_ric_ControlStyle_Name, + { "ric-ControlStyle-Name", "e2ap.ric_ControlStyle_Name", + FT_STRING, BASE_NONE, NULL, 0, + "RIC_Style_Name", HFILL }}, + { &hf_e2ap_ric_ControlAction_List, + { "ric-ControlAction-List", "e2ap.ric_ControlAction_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofControlAction_OF_RANFunctionDefinition_Control_Action_Item", HFILL }}, + { &hf_e2ap_ric_ControlAction_List_item, + { "RANFunctionDefinition-Control-Action-Item", "e2ap.RANFunctionDefinition_Control_Action_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ric_ControlHeaderFormat_Type, + { "ric-ControlHeaderFormat-Type", "e2ap.ric_ControlHeaderFormat_Type", + FT_INT32, BASE_DEC, NULL, 0, + "RIC_Format_Type", HFILL }}, + { &hf_e2ap_ric_ControlMessageFormat_Type, + { "ric-ControlMessageFormat-Type", "e2ap.ric_ControlMessageFormat_Type", + FT_INT32, BASE_DEC, NULL, 0, + "RIC_Format_Type", HFILL }}, + { &hf_e2ap_ric_ControlOutcomeFormat_Type, + { "ric-ControlOutcomeFormat-Type", "e2ap.ric_ControlOutcomeFormat_Type", + FT_INT32, BASE_DEC, NULL, 0, + "RIC_Format_Type", HFILL }}, + { &hf_e2ap_ran_ControlOutcomeParameters_List, + { "ran-ControlOutcomeParameters-List", "e2ap.ran_ControlOutcomeParameters_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofRANOutcomeParameters_OF_ControlOutcome_RANParameter_Item", HFILL }}, + { &hf_e2ap_ran_ControlOutcomeParameters_List_item, + { "ControlOutcome-RANParameter-Item", "e2ap.ControlOutcome_RANParameter_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ric_ControlAction_ID, + { "ric-ControlAction-ID", "e2ap.ric_ControlAction_ID", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ric_ControlAction_Name, + { "ric-ControlAction-Name", "e2ap.ric_ControlAction_Name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_e2ap_pf_ContainerList, - { "pf-ContainerList", "e2ap.pf_ContainerList", + { &hf_e2ap_ran_ControlActionParameters_List, + { "ran-ControlActionParameters-List", "e2ap.ran_ControlActionParameters_List", FT_UINT32, BASE_DEC, NULL, 0, - "SEQUENCE_SIZE_1_maxnoofContainerListItems_OF_PF_ContainerListItem", HFILL }}, - { &hf_e2ap_pf_ContainerList_item, - { "PF-ContainerListItem", "e2ap.PF_ContainerListItem_element", + "SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_ControlAction_RANParameter_Item", HFILL }}, + { &hf_e2ap_ran_ControlActionParameters_List_item, + { "ControlAction-RANParameter-Item", "e2ap.ControlAction_RANParameter_Item_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_e2ap_interface_type, - { "interface-type", "e2ap.interface_type", - FT_UINT32, BASE_DEC, VALS(e2ap_NI_Type_vals), 0, - "NI_Type", HFILL }}, - { &hf_e2ap_o_CU_UP_PM_Container, - { "o-CU-UP-PM-Container", "e2ap.o_CU_UP_PM_Container_element", - FT_NONE, BASE_NONE, NULL, 0, - "CUUPMeasurement_Container", HFILL }}, - { &hf_e2ap_plmnList, - { "plmnList", "e2ap.plmnList", + { &hf_e2ap_ric_PolicyStyle_List, + { "ric-PolicyStyle-List", "e2ap.ric_PolicyStyle_List", FT_UINT32, BASE_DEC, NULL, 0, - "SEQUENCE_SIZE_1_maxPLMN_OF_PlmnID_List", HFILL }}, - { &hf_e2ap_plmnList_item, - { "PlmnID-List", "e2ap.PlmnID_List_element", + "SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Policy_Item", HFILL }}, + { &hf_e2ap_ric_PolicyStyle_List_item, + { "RANFunctionDefinition-Policy-Item", "e2ap.RANFunctionDefinition_Policy_Item_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_e2ap_cu_UP_PM_5GC, - { "cu-UP-PM-5GC", "e2ap.cu_UP_PM_5GC_element", - FT_NONE, BASE_NONE, NULL, 0, - "FGC_CUUP_PM_Format", HFILL }}, - { &hf_e2ap_cu_UP_PM_EPC, - { "cu-UP-PM-EPC", "e2ap.cu_UP_PM_EPC_element", - FT_NONE, BASE_NONE, NULL, 0, - "EPC_CUUP_PM_Format", HFILL }}, - { &hf_e2ap_sliceToReportList, - { "sliceToReportList", "e2ap.sliceToReportList", + { &hf_e2ap_ric_PolicyStyle_Type, + { "ric-PolicyStyle-Type", "e2ap.ric_PolicyStyle_Type", + FT_INT32, BASE_DEC, NULL, 0, + "RIC_Style_Type", HFILL }}, + { &hf_e2ap_ric_PolicyStyle_Name, + { "ric-PolicyStyle-Name", "e2ap.ric_PolicyStyle_Name", + FT_STRING, BASE_NONE, NULL, 0, + "RIC_Style_Name", HFILL }}, + { &hf_e2ap_ric_PolicyAction_List, + { "ric-PolicyAction-List", "e2ap.ric_PolicyAction_List", FT_UINT32, BASE_DEC, NULL, 0, - "SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SliceToReportListItem", HFILL }}, - { &hf_e2ap_sliceToReportList_item, - { "SliceToReportListItem", "e2ap.SliceToReportListItem_element", + "SEQUENCE_SIZE_1_maxnoofPolicyAction_OF_RANFunctionDefinition_Policy_Action_Item", HFILL }}, + { &hf_e2ap_ric_PolicyAction_List_item, + { "RANFunctionDefinition-Policy-Action-Item", "e2ap.RANFunctionDefinition_Policy_Action_Item_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_e2ap_fQIPERSlicesPerPlmnList, - { "fQIPERSlicesPerPlmnList", "e2ap.fQIPERSlicesPerPlmnList", + { &hf_e2ap_ric_PolicyAction_Name, + { "ric-PolicyAction-Name", "e2ap.ric_PolicyAction_Name", + FT_STRING, BASE_NONE, NULL, 0, + "RIC_ControlAction_Name", HFILL }}, + { &hf_e2ap_ran_PolicyActionParameters_List, + { "ran-PolicyActionParameters-List", "e2ap.ran_PolicyActionParameters_List", FT_UINT32, BASE_DEC, NULL, 0, - "SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnListItem", HFILL }}, - { &hf_e2ap_fQIPERSlicesPerPlmnList_item, - { "FQIPERSlicesPerPlmnListItem", "e2ap.FQIPERSlicesPerPlmnListItem_element", + "SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_PolicyAction_RANParameter_Item", HFILL }}, + { &hf_e2ap_ran_PolicyActionParameters_List_item, + { "PolicyAction-RANParameter-Item", "e2ap.PolicyAction_RANParameter_Item_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_e2ap_pDCPBytesDL, - { "pDCPBytesDL", "e2ap.pDCPBytesDL", - FT_UINT64, BASE_DEC, NULL, 0, - "INTEGER_0_10000000000_", HFILL }}, - { &hf_e2ap_pDCPBytesUL, - { "pDCPBytesUL", "e2ap.pDCPBytesUL", - FT_UINT64, BASE_DEC, NULL, 0, - "INTEGER_0_10000000000_", HFILL }}, - { &hf_e2ap_perQCIReportList_01, - { "perQCIReportList", "e2ap.perQCIReportList", + { &hf_e2ap_ran_PolicyConditionParameters_List, + { "ran-PolicyConditionParameters-List", "e2ap.ran_PolicyConditionParameters_List", FT_UINT32, BASE_DEC, NULL, 0, - "SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItemFormat", HFILL }}, - { &hf_e2ap_perQCIReportList_item_01, - { "PerQCIReportListItemFormat", "e2ap.PerQCIReportListItemFormat_element", + "SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_PolicyCondition_RANParameter_Item", HFILL }}, + { &hf_e2ap_ran_PolicyConditionParameters_List_item, + { "PolicyCondition-RANParameter-Item", "e2ap.PolicyCondition_RANParameter_Item_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_e2ap_measName, + { "measName", "e2ap.measName", + FT_STRING, BASE_NONE, NULL, 0, + "MeasurementTypeName", HFILL }}, + { &hf_e2ap_measID, + { "measID", "e2ap.measID", + FT_UINT32, BASE_DEC, NULL, 0, + "MeasurementTypeID", HFILL }}, + { &hf_e2ap_sST, + { "sST", "e2ap.sST", + FT_BYTES, BASE_NONE, NULL, 0, + "OCTET_STRING_SIZE_1", HFILL }}, + { &hf_e2ap_sD, + { "sD", "e2ap.sD", + FT_BYTES, BASE_NONE, NULL, 0, + "OCTET_STRING_SIZE_3", HFILL }}, + { &hf_e2ap_noLabel, + { "noLabel", "e2ap.noLabel", + FT_UINT32, BASE_DEC, VALS(e2ap_T_noLabel_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_plmnID, + { "plmnID", "e2ap.plmnID", + FT_BYTES, BASE_NONE, NULL, 0, + "PLMN_Identity", HFILL }}, + { &hf_e2ap_sliceID, + { "sliceID", "e2ap.sliceID_element", + FT_NONE, BASE_NONE, NULL, 0, + "SNSSAI", HFILL }}, + { &hf_e2ap_fiveQI, + { "fiveQI", "e2ap.fiveQI", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_qFI, + { "qFI", "e2ap.qFI", + FT_UINT32, BASE_DEC, NULL, 0, + "QosFlowIdentifier", HFILL }}, + { &hf_e2ap_qCI, + { "qCI", "e2ap.qCI", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_qCImax, + { "qCImax", "e2ap.qCImax", + FT_UINT32, BASE_DEC, NULL, 0, + "QCI", HFILL }}, + { &hf_e2ap_qCImin, + { "qCImin", "e2ap.qCImin", + FT_UINT32, BASE_DEC, NULL, 0, + "QCI", HFILL }}, + { &hf_e2ap_aRPmax, + { "aRPmax", "e2ap.aRPmax", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_1_15_", HFILL }}, + { &hf_e2ap_aRPmin, + { "aRPmin", "e2ap.aRPmin", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_1_15_", HFILL }}, + { &hf_e2ap_bitrateRange, + { "bitrateRange", "e2ap.bitrateRange", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_1_65535_", HFILL }}, + { &hf_e2ap_layerMU_MIMO, + { "layerMU-MIMO", "e2ap.layerMU_MIMO", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_1_65535_", HFILL }}, + { &hf_e2ap_sUM, + { "sUM", "e2ap.sUM", + FT_UINT32, BASE_DEC, VALS(e2ap_T_sUM_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_distBinX, + { "distBinX", "e2ap.distBinX", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_1_65535_", HFILL }}, + { &hf_e2ap_distBinY, + { "distBinY", "e2ap.distBinY", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_1_65535_", HFILL }}, + { &hf_e2ap_distBinZ, + { "distBinZ", "e2ap.distBinZ", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_1_65535_", HFILL }}, + { &hf_e2ap_preLabelOverride, + { "preLabelOverride", "e2ap.preLabelOverride", + FT_UINT32, BASE_DEC, VALS(e2ap_T_preLabelOverride_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_startEndInd, + { "startEndInd", "e2ap.startEndInd", + FT_UINT32, BASE_DEC, VALS(e2ap_T_startEndInd_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_min, + { "min", "e2ap.min", + FT_UINT32, BASE_DEC, VALS(e2ap_T_min_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_max, + { "max", "e2ap.max", + FT_UINT32, BASE_DEC, VALS(e2ap_T_max_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_avg, + { "avg", "e2ap.avg", + FT_UINT32, BASE_DEC, VALS(e2ap_T_avg_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_testType, + { "testType", "e2ap.testType", + FT_UINT32, BASE_DEC, VALS(e2ap_TestCond_Type_vals), 0, + "TestCond_Type", HFILL }}, + { &hf_e2ap_testExpr, + { "testExpr", "e2ap.testExpr", + FT_UINT32, BASE_DEC, VALS(e2ap_TestCond_Expression_vals), 0, + "TestCond_Expression", HFILL }}, + { &hf_e2ap_testValue, + { "testValue", "e2ap.testValue", + FT_UINT32, BASE_DEC, VALS(e2ap_TestCond_Value_vals), 0, + "TestCond_Value", HFILL }}, + { &hf_e2ap_gBR, + { "gBR", "e2ap.gBR", + FT_UINT32, BASE_DEC, VALS(e2ap_T_gBR_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_aMBR, + { "aMBR", "e2ap.aMBR", + FT_UINT32, BASE_DEC, VALS(e2ap_T_aMBR_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_isStat, + { "isStat", "e2ap.isStat", + FT_UINT32, BASE_DEC, VALS(e2ap_T_isStat_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_isCatM, + { "isCatM", "e2ap.isCatM", + FT_UINT32, BASE_DEC, VALS(e2ap_T_isCatM_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_rSRP, + { "rSRP", "e2ap.rSRP", + FT_UINT32, BASE_DEC, VALS(e2ap_T_rSRP_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_rSRQ, + { "rSRQ", "e2ap.rSRQ", + FT_UINT32, BASE_DEC, VALS(e2ap_T_rSRQ_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_ul_rSRP, + { "ul-rSRP", "e2ap.ul_rSRP", + FT_UINT32, BASE_DEC, VALS(e2ap_T_ul_rSRP_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_cQI, + { "cQI", "e2ap.cQI", + FT_UINT32, BASE_DEC, VALS(e2ap_T_cQI_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_fiveQI_01, + { "fiveQI", "e2ap.fiveQI", + FT_UINT32, BASE_DEC, VALS(e2ap_T_fiveQI_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_qCI_01, + { "qCI", "e2ap.qCI", + FT_UINT32, BASE_DEC, VALS(e2ap_T_qCI_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_sNSSAI, + { "sNSSAI", "e2ap.sNSSAI", + FT_UINT32, BASE_DEC, VALS(e2ap_T_sNSSAI_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_valueEnum, + { "valueEnum", "e2ap.valueEnum", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, + { &hf_e2ap_valueBool, + { "valueBool", "e2ap.valueBool", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_e2ap_valuePrtS, + { "valuePrtS", "e2ap.valuePrtS", + FT_STRING, BASE_NONE, NULL, 0, + "PrintableString", HFILL }}, + { &hf_e2ap_MeasurementInfoList_item, + { "MeasurementInfoItem", "e2ap.MeasurementInfoItem_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_measType, + { "measType", "e2ap.measType", + FT_UINT32, BASE_DEC, VALS(e2ap_MeasurementType_vals), 0, + "MeasurementType", HFILL }}, + { &hf_e2ap_labelInfoList, + { "labelInfoList", "e2ap.labelInfoList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_LabelInfoList_item, + { "LabelInfoItem", "e2ap.LabelInfoItem_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_measLabel, + { "measLabel", "e2ap.measLabel_element", + FT_NONE, BASE_NONE, NULL, 0, + "MeasurementLabel", HFILL }}, + { &hf_e2ap_MeasurementData_item, + { "MeasurementDataItem", "e2ap.MeasurementDataItem_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_measRecord, + { "measRecord", "e2ap.measRecord", + FT_UINT32, BASE_DEC, NULL, 0, + "MeasurementRecord", HFILL }}, + { &hf_e2ap_incompleteFlag, + { "incompleteFlag", "e2ap.incompleteFlag", + FT_UINT32, BASE_DEC, VALS(e2ap_T_incompleteFlag_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_MeasurementRecord_item, + { "MeasurementRecordItem", "e2ap.MeasurementRecordItem", + FT_UINT32, BASE_DEC, VALS(e2ap_MeasurementRecordItem_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_integer, + { "integer", "e2ap.integer", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_4294967295", HFILL }}, + { &hf_e2ap_real, + { "real", "e2ap.real", + FT_DOUBLE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_noValue, + { "noValue", "e2ap.noValue_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_MeasurementInfo_Action_List_item, + { "MeasurementInfo-Action-Item", "e2ap.MeasurementInfo_Action_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_MeasurementCondList_item, + { "MeasurementCondItem", "e2ap.MeasurementCondItem_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_matchingCond, + { "matchingCond", "e2ap.matchingCond", + FT_UINT32, BASE_DEC, NULL, 0, + "MatchingCondList", HFILL }}, + { &hf_e2ap_MeasurementCondUEidList_item, + { "MeasurementCondUEidItem", "e2ap.MeasurementCondUEidItem_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_matchingUEidList, + { "matchingUEidList", "e2ap.matchingUEidList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_MatchingCondList_item, + { "MatchingCondItem", "e2ap.MatchingCondItem", + FT_UINT32, BASE_DEC, VALS(e2ap_MatchingCondItem_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_testCondInfo, + { "testCondInfo", "e2ap.testCondInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_MatchingUEidList_item, + { "MatchingUEidItem", "e2ap.MatchingUEidItem_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_MatchingUeCondPerSubList_item, + { "MatchingUeCondPerSubItem", "e2ap.MatchingUeCondPerSubItem_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_MatchingUEidPerSubList_item, + { "MatchingUEidPerSubItem", "e2ap.MatchingUEidPerSubItem_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_UEMeasurementReportList_item, + { "UEMeasurementReportItem", "e2ap.UEMeasurementReportItem_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_measReport, + { "measReport", "e2ap.measReport_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2SM_KPM_IndicationMessage_Format1", HFILL }}, + { &hf_e2ap_eventDefinition_formats, + { "eventDefinition-formats", "e2ap.eventDefinition_formats", + FT_UINT32, BASE_DEC, VALS(e2ap_T_eventDefinition_formats_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_eventDefinition_Format1, + { "eventDefinition-Format1", "e2ap.eventDefinition_Format1_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2SM_KPM_EventTriggerDefinition_Format1", HFILL }}, + { &hf_e2ap_reportingPeriod, + { "reportingPeriod", "e2ap.reportingPeriod", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_1_4294967295", HFILL }}, + { &hf_e2ap_actionDefinition_formats, + { "actionDefinition-formats", "e2ap.actionDefinition_formats", + FT_UINT32, BASE_DEC, VALS(e2ap_T_actionDefinition_formats_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_actionDefinition_Format1_01, + { "actionDefinition-Format1", "e2ap.actionDefinition_Format1_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2SM_KPM_ActionDefinition_Format1", HFILL }}, + { &hf_e2ap_actionDefinition_Format2_01, + { "actionDefinition-Format2", "e2ap.actionDefinition_Format2_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2SM_KPM_ActionDefinition_Format2", HFILL }}, + { &hf_e2ap_actionDefinition_Format3_01, + { "actionDefinition-Format3", "e2ap.actionDefinition_Format3_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2SM_KPM_ActionDefinition_Format3", HFILL }}, + { &hf_e2ap_actionDefinition_Format4_01, + { "actionDefinition-Format4", "e2ap.actionDefinition_Format4_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2SM_KPM_ActionDefinition_Format4", HFILL }}, + { &hf_e2ap_actionDefinition_Format5, + { "actionDefinition-Format5", "e2ap.actionDefinition_Format5_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2SM_KPM_ActionDefinition_Format5", HFILL }}, + { &hf_e2ap_measInfoList, + { "measInfoList", "e2ap.measInfoList", + FT_UINT32, BASE_DEC, NULL, 0, + "MeasurementInfoList", HFILL }}, + { &hf_e2ap_granulPeriod, + { "granulPeriod", "e2ap.granulPeriod", + FT_UINT32, BASE_DEC, NULL, 0, + "GranularityPeriod", HFILL }}, + { &hf_e2ap_subscriptInfo, + { "subscriptInfo", "e2ap.subscriptInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2SM_KPM_ActionDefinition_Format1", HFILL }}, + { &hf_e2ap_measCondList, + { "measCondList", "e2ap.measCondList", + FT_UINT32, BASE_DEC, NULL, 0, + "MeasurementCondList", HFILL }}, + { &hf_e2ap_matchingUeCondList, + { "matchingUeCondList", "e2ap.matchingUeCondList", + FT_UINT32, BASE_DEC, NULL, 0, + "MatchingUeCondPerSubList", HFILL }}, + { &hf_e2ap_subscriptionInfo, + { "subscriptionInfo", "e2ap.subscriptionInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2SM_KPM_ActionDefinition_Format1", HFILL }}, + { &hf_e2ap_matchingUEidList_01, + { "matchingUEidList", "e2ap.matchingUEidList", + FT_UINT32, BASE_DEC, NULL, 0, + "MatchingUEidPerSubList", HFILL }}, + { &hf_e2ap_indicationHeader_formats, + { "indicationHeader-formats", "e2ap.indicationHeader_formats", + FT_UINT32, BASE_DEC, VALS(e2ap_T_indicationHeader_formats_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_indicationHeader_Format1_01, + { "indicationHeader-Format1", "e2ap.indicationHeader_Format1_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2SM_KPM_IndicationHeader_Format1", HFILL }}, + { &hf_e2ap_colletStartTime, + { "colletStartTime", "e2ap.colletStartTime", + FT_BYTES, BASE_NONE, NULL, 0, + "TimeStamp", HFILL }}, + { &hf_e2ap_fileFormatversion, + { "fileFormatversion", "e2ap.fileFormatversion", + FT_STRING, BASE_NONE, NULL, 0, + "PrintableString_SIZE_0_15_", HFILL }}, + { &hf_e2ap_senderName, + { "senderName", "e2ap.senderName", + FT_STRING, BASE_NONE, NULL, 0, + "PrintableString_SIZE_0_400_", HFILL }}, + { &hf_e2ap_senderType, + { "senderType", "e2ap.senderType", + FT_STRING, BASE_NONE, NULL, 0, + "PrintableString_SIZE_0_8_", HFILL }}, + { &hf_e2ap_vendorName, + { "vendorName", "e2ap.vendorName", + FT_STRING, BASE_NONE, NULL, 0, + "PrintableString_SIZE_0_32_", HFILL }}, + { &hf_e2ap_indicationMessage_formats, + { "indicationMessage-formats", "e2ap.indicationMessage_formats", + FT_UINT32, BASE_DEC, VALS(e2ap_T_indicationMessage_formats_vals), 0, + NULL, HFILL }}, + { &hf_e2ap_indicationMessage_Format1_01, + { "indicationMessage-Format1", "e2ap.indicationMessage_Format1_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2SM_KPM_IndicationMessage_Format1", HFILL }}, + { &hf_e2ap_indicationMessage_Format2_01, + { "indicationMessage-Format2", "e2ap.indicationMessage_Format2_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2SM_KPM_IndicationMessage_Format2", HFILL }}, + { &hf_e2ap_indicationMessage_Format3_01, + { "indicationMessage-Format3", "e2ap.indicationMessage_Format3_element", + FT_NONE, BASE_NONE, NULL, 0, + "E2SM_KPM_IndicationMessage_Format3", HFILL }}, + { &hf_e2ap_measData, + { "measData", "e2ap.measData", + FT_UINT32, BASE_DEC, NULL, 0, + "MeasurementData", HFILL }}, + { &hf_e2ap_measCondUEidList, + { "measCondUEidList", "e2ap.measCondUEidList", + FT_UINT32, BASE_DEC, NULL, 0, + "MeasurementCondUEidList", HFILL }}, + { &hf_e2ap_ueMeasReportList, + { "ueMeasReportList", "e2ap.ueMeasReportList", + FT_UINT32, BASE_DEC, NULL, 0, + "UEMeasurementReportList", HFILL }}, + { &hf_e2ap_ric_EventTriggerStyle_List_01, + { "ric-EventTriggerStyle-List", "e2ap.ric_EventTriggerStyle_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_EventTriggerStyle_Item", HFILL }}, + { &hf_e2ap_ric_EventTriggerStyle_List_item_01, + { "RIC-EventTriggerStyle-Item", "e2ap.RIC_EventTriggerStyle_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ric_ReportStyle_List_01, + { "ric-ReportStyle-List", "e2ap.ric_ReportStyle_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_ReportStyle_Item", HFILL }}, + { &hf_e2ap_ric_ReportStyle_List_item_01, + { "RIC-ReportStyle-Item", "e2ap.RIC_ReportStyle_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e2ap_ric_ActionFormat_Type, + { "ric-ActionFormat-Type", "e2ap.ric_ActionFormat_Type", + FT_INT32, BASE_DEC, NULL, 0, + "RIC_Format_Type", HFILL }}, + { &hf_e2ap_measInfo_Action_List, + { "measInfo-Action-List", "e2ap.measInfo_Action_List", + FT_UINT32, BASE_DEC, NULL, 0, + "MeasurementInfo_Action_List", HFILL }}, /*--- End of included file: packet-e2ap-hfarr.c ---*/ -#line 212 "./asn1/e2ap/packet-e2ap-template.c" - +#line 408 "./asn1/e2ap/packet-e2ap-template.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 }} }; /* List of subtrees */ @@ -4774,6 +13293,16 @@ void proto_register_e2ap(void) { &ett_e2ap_CriticalityDiagnostics, &ett_e2ap_CriticalityDiagnostics_IE_List, &ett_e2ap_CriticalityDiagnostics_IE_Item, + &ett_e2ap_E2nodeComponentConfiguration, + &ett_e2ap_E2nodeComponentConfigurationAck, + &ett_e2ap_E2nodeComponentID, + &ett_e2ap_E2nodeComponentInterfaceE1, + &ett_e2ap_E2nodeComponentInterfaceF1, + &ett_e2ap_E2nodeComponentInterfaceNG, + &ett_e2ap_E2nodeComponentInterfaceS1, + &ett_e2ap_E2nodeComponentInterfaceX2, + &ett_e2ap_E2nodeComponentInterfaceXn, + &ett_e2ap_E2nodeComponentInterfaceW1, &ett_e2ap_ENB_ID, &ett_e2ap_ENB_ID_Choice, &ett_e2ap_ENGNB_ID, @@ -4786,10 +13315,12 @@ void proto_register_e2ap(void) { &ett_e2ap_GlobalenGNB_ID, &ett_e2ap_GlobalgNB_ID, &ett_e2ap_GlobalngeNB_ID, + &ett_e2ap_GlobalNG_RANNode_ID, &ett_e2ap_GlobalRIC_ID, &ett_e2ap_GNB_ID_Choice, &ett_e2ap_RICrequestID, &ett_e2ap_RICsubsequentAction, + &ett_e2ap_TNLinformation, &ett_e2ap_RICsubscriptionRequest, &ett_e2ap_RICsubscriptionDetails, &ett_e2ap_RICactions_ToBeSetup_List, @@ -4803,6 +13334,9 @@ void proto_register_e2ap(void) { &ett_e2ap_RICsubscriptionDeleteRequest, &ett_e2ap_RICsubscriptionDeleteResponse, &ett_e2ap_RICsubscriptionDeleteFailure, + &ett_e2ap_RICsubscriptionDeleteRequired, + &ett_e2ap_RICsubscription_List_withCause, + &ett_e2ap_RICsubscription_withCause_Item, &ett_e2ap_RICindication, &ett_e2ap_RICcontrolRequest, &ett_e2ap_RICcontrolAcknowledge, @@ -4811,6 +13345,32 @@ void proto_register_e2ap(void) { &ett_e2ap_E2setupRequest, &ett_e2ap_E2setupResponse, &ett_e2ap_E2setupFailure, + &ett_e2ap_E2connectionUpdate, + &ett_e2ap_E2connectionUpdate_List, + &ett_e2ap_E2connectionUpdate_Item, + &ett_e2ap_E2connectionUpdateRemove_List, + &ett_e2ap_E2connectionUpdateRemove_Item, + &ett_e2ap_E2connectionUpdateAcknowledge, + &ett_e2ap_E2connectionSetupFailed_List, + &ett_e2ap_E2connectionSetupFailed_Item, + &ett_e2ap_E2connectionUpdateFailure, + &ett_e2ap_E2nodeConfigurationUpdate, + &ett_e2ap_E2nodeComponentConfigAddition_List, + &ett_e2ap_E2nodeComponentConfigAddition_Item, + &ett_e2ap_E2nodeComponentConfigUpdate_List, + &ett_e2ap_E2nodeComponentConfigUpdate_Item, + &ett_e2ap_E2nodeComponentConfigRemoval_List, + &ett_e2ap_E2nodeComponentConfigRemoval_Item, + &ett_e2ap_E2nodeTNLassociationRemoval_List, + &ett_e2ap_E2nodeTNLassociationRemoval_Item, + &ett_e2ap_E2nodeConfigurationUpdateAcknowledge, + &ett_e2ap_E2nodeComponentConfigAdditionAck_List, + &ett_e2ap_E2nodeComponentConfigAdditionAck_Item, + &ett_e2ap_E2nodeComponentConfigUpdateAck_List, + &ett_e2ap_E2nodeComponentConfigUpdateAck_Item, + &ett_e2ap_E2nodeComponentConfigRemovalAck_List, + &ett_e2ap_E2nodeComponentConfigRemovalAck_Item, + &ett_e2ap_E2nodeConfigurationUpdateFailure, &ett_e2ap_ResetRequest, &ett_e2ap_ResetResponse, &ett_e2ap_RICserviceUpdate, @@ -4827,67 +13387,287 @@ void proto_register_e2ap(void) { &ett_e2ap_InitiatingMessage, &ett_e2ap_SuccessfulOutcome, &ett_e2ap_UnsuccessfulOutcome, - &ett_e2ap_GlobalKPMnode_ID, - &ett_e2ap_GlobalKPMnode_gNB_ID, - &ett_e2ap_GlobalKPMnode_en_gNB_ID, - &ett_e2ap_GlobalKPMnode_ng_eNB_ID, - &ett_e2ap_GlobalKPMnode_eNB_ID, - &ett_e2ap_NRCGI, - &ett_e2ap_SNSSAI, - &ett_e2ap_E2SM_KPM_EventTriggerDefinition, - &ett_e2ap_E2SM_KPM_EventTriggerDefinition_Format1, - &ett_e2ap_SEQUENCE_SIZE_1_maxofMessageProtocolTests_OF_Trigger_ConditionIE_Item, - &ett_e2ap_E2SM_KPM_ActionDefinition, - &ett_e2ap_E2SM_KPM_IndicationHeader, - &ett_e2ap_E2SM_KPM_IndicationHeader_Format1, - &ett_e2ap_E2SM_KPM_IndicationMessage_Format1, - &ett_e2ap_SEQUENCE_SIZE_1_maxCellingNBDU_OF_PM_Containers_List, - &ett_e2ap_PM_Containers_List, - &ett_e2ap_E2SM_KPM_RANfunction_Description, - &ett_e2ap_T_e2SM_KPM_RANfunction_Item, - &ett_e2ap_SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_EventTriggerStyle_List, - &ett_e2ap_SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_ReportStyle_List, - &ett_e2ap_Trigger_ConditionIE_Item, + &ett_e2ap_CGI, + &ett_e2ap_InterfaceIdentifier, + &ett_e2ap_InterfaceID_NG, + &ett_e2ap_InterfaceID_Xn, + &ett_e2ap_InterfaceID_F1, + &ett_e2ap_InterfaceID_E1, + &ett_e2ap_InterfaceID_S1, + &ett_e2ap_InterfaceID_X2, + &ett_e2ap_T_nodeType, + &ett_e2ap_InterfaceID_W1, + &ett_e2ap_Interface_MessageID, &ett_e2ap_RANfunction_Name, - &ett_e2ap_RIC_EventTriggerStyle_List, - &ett_e2ap_RIC_ReportStyle_List, - &ett_e2ap_PF_Container, - &ett_e2ap_ODU_PF_Container, - &ett_e2ap_SEQUENCE_SIZE_1_maxCellingNBDU_OF_CellResourceReportListItem, - &ett_e2ap_CellResourceReportListItem, - &ett_e2ap_SEQUENCE_SIZE_1_maxPLMN_OF_ServedPlmnPerCellListItem, - &ett_e2ap_ServedPlmnPerCellListItem, - &ett_e2ap_FGC_DU_PM_Container, - &ett_e2ap_SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SlicePerPlmnPerCellListItem, - &ett_e2ap_SlicePerPlmnPerCellListItem, - &ett_e2ap_SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnPerCellListItem, - &ett_e2ap_FQIPERSlicesPerPlmnPerCellListItem, - &ett_e2ap_EPC_DU_PM_Container, - &ett_e2ap_SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItem, - &ett_e2ap_PerQCIReportListItem, - &ett_e2ap_OCUCP_PF_Container, - &ett_e2ap_T_cu_CP_Resource_Status, - &ett_e2ap_OCUUP_PF_Container, - &ett_e2ap_SEQUENCE_SIZE_1_maxnoofContainerListItems_OF_PF_ContainerListItem, - &ett_e2ap_PF_ContainerListItem, - &ett_e2ap_CUUPMeasurement_Container, - &ett_e2ap_SEQUENCE_SIZE_1_maxPLMN_OF_PlmnID_List, - &ett_e2ap_PlmnID_List, - &ett_e2ap_FGC_CUUP_PM_Format, - &ett_e2ap_SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SliceToReportListItem, - &ett_e2ap_SliceToReportListItem, - &ett_e2ap_SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnListItem, - &ett_e2ap_FQIPERSlicesPerPlmnListItem, - &ett_e2ap_EPC_CUUP_PM_Format, - &ett_e2ap_SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItemFormat, - &ett_e2ap_PerQCIReportListItemFormat, + &ett_e2ap_RRC_MessageID, + &ett_e2ap_T_rrcType, + &ett_e2ap_ServingCell_ARFCN, + &ett_e2ap_ServingCell_PCI, + &ett_e2ap_UEID, + &ett_e2ap_UEID_GNB, + &ett_e2ap_UEID_GNB_CU_CP_E1AP_ID_List, + &ett_e2ap_UEID_GNB_CU_CP_E1AP_ID_Item, + &ett_e2ap_UEID_GNB_CU_F1AP_ID_List, + &ett_e2ap_UEID_GNB_CU_CP_F1AP_ID_Item, + &ett_e2ap_UEID_GNB_DU, + &ett_e2ap_UEID_GNB_CU_UP, + &ett_e2ap_UEID_NG_ENB, + &ett_e2ap_UEID_NG_ENB_DU, + &ett_e2ap_UEID_EN_GNB, + &ett_e2ap_UEID_ENB, + &ett_e2ap_GUMMEI, + &ett_e2ap_EUTRA_CGI, + &ett_e2ap_GlobalGNB_ID, + &ett_e2ap_GlobalNgENB_ID, + &ett_e2ap_GNB_ID, + &ett_e2ap_GUAMI, + &ett_e2ap_NgENB_ID, + &ett_e2ap_GlobalNGRANNodeID, + &ett_e2ap_NR_ARFCN, + &ett_e2ap_NRFrequencyBand_List, + &ett_e2ap_NRFrequencyBandItem, + &ett_e2ap_NRFrequencyInfo, + &ett_e2ap_SupportedSULBandList, + &ett_e2ap_SupportedSULFreqBandItem, + &ett_e2ap_NR_CGI, + &ett_e2ap_NeighborCell_List, + &ett_e2ap_NeighborCell_Item, + &ett_e2ap_NeighborCell_Item_Choice_NR, + &ett_e2ap_NeighborCell_Item_Choice_E_UTRA, + &ett_e2ap_NeighborRelation_Info, + &ett_e2ap_EventTrigger_Cell_Info, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofCellInfo_OF_EventTrigger_Cell_Info_Item, + &ett_e2ap_EventTrigger_Cell_Info_Item, + &ett_e2ap_T_cellType, + &ett_e2ap_EventTrigger_Cell_Info_Item_Choice_Individual, + &ett_e2ap_EventTrigger_Cell_Info_Item_Choice_Group, + &ett_e2ap_EventTrigger_UE_Info, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofUEInfo_OF_EventTrigger_UE_Info_Item, + &ett_e2ap_EventTrigger_UE_Info_Item, + &ett_e2ap_T_ueType, + &ett_e2ap_EventTrigger_UE_Info_Item_Choice_Individual, + &ett_e2ap_EventTrigger_UE_Info_Item_Choice_Group, + &ett_e2ap_EventTrigger_UEevent_Info, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofUEeventInfo_OF_EventTrigger_UEevent_Info_Item, + &ett_e2ap_EventTrigger_UEevent_Info_Item, + &ett_e2ap_RANParameter_Definition, + &ett_e2ap_RANParameter_Definition_Choice, + &ett_e2ap_RANParameter_Definition_Choice_LIST, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofItemsinList_OF_RANParameter_Definition_Choice_LIST_Item, + &ett_e2ap_RANParameter_Definition_Choice_LIST_Item, + &ett_e2ap_RANParameter_Definition_Choice_STRUCTURE, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofParametersinStructure_OF_RANParameter_Definition_Choice_STRUCTURE_Item, + &ett_e2ap_RANParameter_Definition_Choice_STRUCTURE_Item, + &ett_e2ap_RANParameter_Value, + &ett_e2ap_RANParameter_ValueType, + &ett_e2ap_RANParameter_ValueType_Choice_ElementTrue, + &ett_e2ap_RANParameter_ValueType_Choice_ElementFalse, + &ett_e2ap_RANParameter_ValueType_Choice_Structure, + &ett_e2ap_RANParameter_ValueType_Choice_List, + &ett_e2ap_RANParameter_STRUCTURE, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofParametersinStructure_OF_RANParameter_STRUCTURE_Item, + &ett_e2ap_RANParameter_STRUCTURE_Item, + &ett_e2ap_RANParameter_LIST, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofItemsinList_OF_RANParameter_STRUCTURE, + &ett_e2ap_RANParameter_Testing, + &ett_e2ap_RANParameter_TestingCondition, + &ett_e2ap_RANParameter_Testing_Item, + &ett_e2ap_T_ranParameter_Type, + &ett_e2ap_RANParameter_Testing_Item_Choice_List, + &ett_e2ap_RANParameter_Testing_Item_Choice_Structure, + &ett_e2ap_RANParameter_Testing_Item_Choice_ElementTrue, + &ett_e2ap_RANParameter_Testing_Item_Choice_ElementFalse, + &ett_e2ap_RANParameter_Testing_LIST, + &ett_e2ap_RANParameter_Testing_STRUCTURE, + &ett_e2ap_RIC_PolicyAction, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_RIC_PolicyAction_RANParameter_Item, + &ett_e2ap_RIC_PolicyAction_RANParameter_Item, + &ett_e2ap_E2SM_RC_EventTrigger, + &ett_e2ap_T_ric_eventTrigger_formats, + &ett_e2ap_E2SM_RC_EventTrigger_Format1, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofMessages_OF_E2SM_RC_EventTrigger_Format1_Item, + &ett_e2ap_E2SM_RC_EventTrigger_Format1_Item, + &ett_e2ap_MessageType_Choice, + &ett_e2ap_MessageType_Choice_NI, + &ett_e2ap_MessageType_Choice_RRC, + &ett_e2ap_E2SM_RC_EventTrigger_Format2, + &ett_e2ap_E2SM_RC_EventTrigger_Format3, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofE2InfoChanges_OF_E2SM_RC_EventTrigger_Format3_Item, + &ett_e2ap_E2SM_RC_EventTrigger_Format3_Item, + &ett_e2ap_E2SM_RC_EventTrigger_Format4, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofUEInfoChanges_OF_E2SM_RC_EventTrigger_Format4_Item, + &ett_e2ap_E2SM_RC_EventTrigger_Format4_Item, + &ett_e2ap_TriggerType_Choice, + &ett_e2ap_TriggerType_Choice_RRCstate, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofRRCstate_OF_TriggerType_Choice_RRCstate_Item, + &ett_e2ap_TriggerType_Choice_RRCstate_Item, + &ett_e2ap_TriggerType_Choice_UEID, + &ett_e2ap_TriggerType_Choice_L2state, + &ett_e2ap_E2SM_RC_EventTrigger_Format5, + &ett_e2ap_E2SM_RC_ActionDefinition, + &ett_e2ap_T_ric_actionDefinition_formats, + &ett_e2ap_E2SM_RC_ActionDefinition_Format1, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofParametersToReport_OF_E2SM_RC_ActionDefinition_Format1_Item, + &ett_e2ap_E2SM_RC_ActionDefinition_Format1_Item, + &ett_e2ap_E2SM_RC_ActionDefinition_Format2, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofPolicyConditions_OF_E2SM_RC_ActionDefinition_Format2_Item, + &ett_e2ap_E2SM_RC_ActionDefinition_Format2_Item, + &ett_e2ap_E2SM_RC_ActionDefinition_Format3, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_ActionDefinition_Format3_Item, + &ett_e2ap_E2SM_RC_ActionDefinition_Format3_Item, + &ett_e2ap_E2SM_RC_ActionDefinition_Format4, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_E2SM_RC_ActionDefinition_Format4_Style_Item, + &ett_e2ap_E2SM_RC_ActionDefinition_Format4_Style_Item, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofInsertIndicationActions_OF_E2SM_RC_ActionDefinition_Format4_Indication_Item, + &ett_e2ap_E2SM_RC_ActionDefinition_Format4_Indication_Item, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_ActionDefinition_Format4_RANP_Item, + &ett_e2ap_E2SM_RC_ActionDefinition_Format4_RANP_Item, + &ett_e2ap_E2SM_RC_IndicationHeader, + &ett_e2ap_T_ric_indicationHeader_formats, + &ett_e2ap_E2SM_RC_IndicationHeader_Format1, + &ett_e2ap_E2SM_RC_IndicationHeader_Format2, + &ett_e2ap_E2SM_RC_IndicationHeader_Format3, + &ett_e2ap_E2SM_RC_IndicationMessage, + &ett_e2ap_T_ric_indicationMessage_formats, + &ett_e2ap_E2SM_RC_IndicationMessage_Format1, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format1_Item, + &ett_e2ap_E2SM_RC_IndicationMessage_Format1_Item, + &ett_e2ap_E2SM_RC_IndicationMessage_Format2, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofUEID_OF_E2SM_RC_IndicationMessage_Format2_Item, + &ett_e2ap_E2SM_RC_IndicationMessage_Format2_Item, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format2_RANParameter_Item, + &ett_e2ap_E2SM_RC_IndicationMessage_Format2_RANParameter_Item, + &ett_e2ap_E2SM_RC_IndicationMessage_Format3, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofCellID_OF_E2SM_RC_IndicationMessage_Format3_Item, + &ett_e2ap_E2SM_RC_IndicationMessage_Format3_Item, + &ett_e2ap_E2SM_RC_IndicationMessage_Format4, + &ett_e2ap_SEQUENCE_SIZE_0_maxnoofUEID_OF_E2SM_RC_IndicationMessage_Format4_ItemUE, + &ett_e2ap_SEQUENCE_SIZE_0_maxnoofCellID_OF_E2SM_RC_IndicationMessage_Format4_ItemCell, + &ett_e2ap_E2SM_RC_IndicationMessage_Format4_ItemUE, + &ett_e2ap_E2SM_RC_IndicationMessage_Format4_ItemCell, + &ett_e2ap_E2SM_RC_IndicationMessage_Format5, + &ett_e2ap_SEQUENCE_SIZE_0_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format5_Item, + &ett_e2ap_E2SM_RC_IndicationMessage_Format5_Item, + &ett_e2ap_E2SM_RC_IndicationMessage_Format6, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_E2SM_RC_IndicationMessage_Format6_Style_Item, + &ett_e2ap_E2SM_RC_IndicationMessage_Format6_Style_Item, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofInsertIndicationActions_OF_E2SM_RC_IndicationMessage_Format6_Indication_Item, + &ett_e2ap_E2SM_RC_IndicationMessage_Format6_Indication_Item, + &ett_e2ap_SEQUENCE_SIZE_0_maxnoofAssociatedRANParameters_OF_E2SM_RC_IndicationMessage_Format6_RANP_Item, + &ett_e2ap_E2SM_RC_IndicationMessage_Format6_RANP_Item, + &ett_e2ap_E2SM_RC_CallProcessID, + &ett_e2ap_T_ric_callProcessID_formats, + &ett_e2ap_E2SM_RC_CallProcessID_Format1, + &ett_e2ap_E2SM_RC_RANFunctionDefinition, + &ett_e2ap_RANFunctionDefinition_EventTrigger, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_EventTrigger_Style_Item, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_L2Parameters_RANParameter_Item, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofCallProcessTypes_OF_RANFunctionDefinition_EventTrigger_CallProcess_Item, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_UEIdentification_RANParameter_Item, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_CellIdentification_RANParameter_Item, + &ett_e2ap_RANFunctionDefinition_EventTrigger_Style_Item, + &ett_e2ap_L2Parameters_RANParameter_Item, + &ett_e2ap_UEIdentification_RANParameter_Item, + &ett_e2ap_CellIdentification_RANParameter_Item, + &ett_e2ap_RANFunctionDefinition_EventTrigger_CallProcess_Item, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofCallProcessBreakpoints_OF_RANFunctionDefinition_EventTrigger_Breakpoint_Item, + &ett_e2ap_RANFunctionDefinition_EventTrigger_Breakpoint_Item, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_CallProcessBreakpoint_RANParameter_Item, + &ett_e2ap_CallProcessBreakpoint_RANParameter_Item, + &ett_e2ap_RANFunctionDefinition_Report, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Report_Item, + &ett_e2ap_RANFunctionDefinition_Report_Item, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_Report_RANParameter_Item, + &ett_e2ap_Report_RANParameter_Item, + &ett_e2ap_RANFunctionDefinition_Insert, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Insert_Item, + &ett_e2ap_RANFunctionDefinition_Insert_Item, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofInsertIndication_OF_RANFunctionDefinition_Insert_Indication_Item, + &ett_e2ap_RANFunctionDefinition_Insert_Indication_Item, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_InsertIndication_RANParameter_Item, + &ett_e2ap_InsertIndication_RANParameter_Item, + &ett_e2ap_RANFunctionDefinition_Control, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Control_Item, + &ett_e2ap_RANFunctionDefinition_Control_Item, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofControlAction_OF_RANFunctionDefinition_Control_Action_Item, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofRANOutcomeParameters_OF_ControlOutcome_RANParameter_Item, + &ett_e2ap_ControlOutcome_RANParameter_Item, + &ett_e2ap_RANFunctionDefinition_Control_Action_Item, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_ControlAction_RANParameter_Item, + &ett_e2ap_ControlAction_RANParameter_Item, + &ett_e2ap_RANFunctionDefinition_Policy, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RANFunctionDefinition_Policy_Item, + &ett_e2ap_RANFunctionDefinition_Policy_Item, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofPolicyAction_OF_RANFunctionDefinition_Policy_Action_Item, + &ett_e2ap_RANFunctionDefinition_Policy_Action_Item, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_PolicyAction_RANParameter_Item, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofAssociatedRANParameters_OF_PolicyCondition_RANParameter_Item, + &ett_e2ap_PolicyAction_RANParameter_Item, + &ett_e2ap_PolicyCondition_RANParameter_Item, + &ett_e2ap_MeasurementType, + &ett_e2ap_SNSSAI, + &ett_e2ap_MeasurementLabel, + &ett_e2ap_TestCondInfo, + &ett_e2ap_TestCond_Type, + &ett_e2ap_TestCond_Value, + &ett_e2ap_MeasurementInfoList, + &ett_e2ap_MeasurementInfoItem, + &ett_e2ap_LabelInfoList, + &ett_e2ap_LabelInfoItem, + &ett_e2ap_MeasurementData, + &ett_e2ap_MeasurementDataItem, + &ett_e2ap_MeasurementRecord, + &ett_e2ap_MeasurementRecordItem, + &ett_e2ap_MeasurementInfo_Action_List, + &ett_e2ap_MeasurementInfo_Action_Item, + &ett_e2ap_MeasurementCondList, + &ett_e2ap_MeasurementCondItem, + &ett_e2ap_MeasurementCondUEidList, + &ett_e2ap_MeasurementCondUEidItem, + &ett_e2ap_MatchingCondList, + &ett_e2ap_MatchingCondItem, + &ett_e2ap_MatchingUEidList, + &ett_e2ap_MatchingUEidItem, + &ett_e2ap_MatchingUeCondPerSubList, + &ett_e2ap_MatchingUeCondPerSubItem, + &ett_e2ap_MatchingUEidPerSubList, + &ett_e2ap_MatchingUEidPerSubItem, + &ett_e2ap_UEMeasurementReportList, + &ett_e2ap_UEMeasurementReportItem, + &ett_e2ap_E2SM_KPM_EventTriggerDefinition, + &ett_e2ap_T_eventDefinition_formats, + &ett_e2ap_E2SM_KPM_EventTriggerDefinition_Format1, + &ett_e2ap_E2SM_KPM_ActionDefinition, + &ett_e2ap_T_actionDefinition_formats, + &ett_e2ap_E2SM_KPM_ActionDefinition_Format1, + &ett_e2ap_E2SM_KPM_ActionDefinition_Format2, + &ett_e2ap_E2SM_KPM_ActionDefinition_Format3, + &ett_e2ap_E2SM_KPM_ActionDefinition_Format4, + &ett_e2ap_E2SM_KPM_ActionDefinition_Format5, + &ett_e2ap_E2SM_KPM_IndicationHeader, + &ett_e2ap_T_indicationHeader_formats, + &ett_e2ap_E2SM_KPM_IndicationHeader_Format1, + &ett_e2ap_E2SM_KPM_IndicationMessage, + &ett_e2ap_T_indicationMessage_formats, + &ett_e2ap_E2SM_KPM_IndicationMessage_Format1, + &ett_e2ap_E2SM_KPM_IndicationMessage_Format2, + &ett_e2ap_E2SM_KPM_IndicationMessage_Format3, + &ett_e2ap_E2SM_KPM_RANfunction_Description, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_EventTriggerStyle_Item, + &ett_e2ap_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_ReportStyle_Item, + &ett_e2ap_RIC_EventTriggerStyle_Item, + &ett_e2ap_RIC_ReportStyle_Item, /*--- End of included file: packet-e2ap-ettarr.c ---*/ -#line 219 "./asn1/e2ap/packet-e2ap-template.c" +#line 426 "./asn1/e2ap/packet-e2ap-template.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 }}, + }; - /* module_t *e2ap_module; */ + expert_module_t* expert_e2ap; /* Register protocol */ proto_e2ap = proto_register_protocol(PNAME, PSNAME, PFNAME); @@ -4899,19 +13679,19 @@ void proto_register_e2ap(void) { /* 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_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, FALSE); - - /* Register configuration options for ports */ - /* e2ap_module = prefs_register_protocol(proto_e2ap, NULL); */ - } /* diff --git a/tools/asn2wrs.py b/tools/asn2wrs.py index 4124de716c..3e4aa1ea71 100755 --- a/tools/asn2wrs.py +++ b/tools/asn2wrs.py @@ -815,7 +815,7 @@ class EthCtx: #--- eth_reg_assign --------------------------------------------------------- def eth_reg_assign(self, ident, val, virt=False): - #print "eth_reg_assign(ident='%s')" % (ident) + #print("eth_reg_assign(ident='%s')" % (ident), 'module=', self.Module()) if ident in self.assign: raise DuplicateError("assignment", ident) self.assign[ident] = { 'val' : val , 'virt' : virt } @@ -935,13 +935,14 @@ class EthCtx: #--- eth_reg_type ----------------------------------------------------------- def eth_reg_type(self, ident, val, mod=None): - #print "eth_reg_type(ident='%s', type='%s')" % (ident, val.type) + #print("eth_reg_type(ident='%s', type='%s')" % (ident, val.type)) if ident in self.type: if self.type[ident]['import'] and (self.type[ident]['import'] == self.Module()) : # replace imported type del self.type[ident] self.type_imp.remove(ident) else: + #print('DuplicateError: import=', self.type[ident]['import'], 'module=', self.Module()) raise DuplicateError("type", ident) val.ident = ident self.type[ident] = { 'val' : val, 'import' : None }