diff options
author | Pascal Quantin <pascal.quantin@gmail.com> | 2018-07-06 14:37:48 +0200 |
---|---|---|
committer | Pascal Quantin <pascal.quantin@gmail.com> | 2018-07-06 13:40:50 +0000 |
commit | fed08d380f04e706fa6da9d5c3a4fb8a2e09f724 (patch) | |
tree | de580fe9c9a8738be30f41e99f0b09e385d5a1dc | |
parent | caa8efa0d2435c527bb947c3fb3f1b4a610ef515 (diff) |
E1AP: add dissector based on v15.0.0
Change-Id: Ic939d5f614de9c3b1204c92007b2aa3ee1e45f8f
Reviewed-on: https://code.wireshark.org/review/28649
Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com>
Tested-by: Petri Dish Buildbot
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
-rw-r--r-- | docbook/release-notes.asciidoc | 1 | ||||
-rw-r--r-- | epan/dissectors/CMakeLists.txt | 3 | ||||
-rw-r--r-- | epan/dissectors/asn1/CMakeLists.txt | 1 | ||||
-rw-r--r-- | epan/dissectors/asn1/e1ap/CMakeLists.txt | 43 | ||||
-rw-r--r-- | epan/dissectors/asn1/e1ap/E1AP-CommonDataTypes.asn | 51 | ||||
-rw-r--r-- | epan/dissectors/asn1/e1ap/E1AP-Constants.asn | 102 | ||||
-rw-r--r-- | epan/dissectors/asn1/e1ap/E1AP-Containers.asn | 152 | ||||
-rw-r--r-- | epan/dissectors/asn1/e1ap/E1AP-IEs.asn | 1270 | ||||
-rw-r--r-- | epan/dissectors/asn1/e1ap/E1AP-PDU-Contents.asn | 1008 | ||||
-rw-r--r-- | epan/dissectors/asn1/e1ap/E1AP-PDU-Descriptions.asn | 290 | ||||
-rw-r--r-- | epan/dissectors/asn1/e1ap/e1ap.cnf | 389 | ||||
-rw-r--r-- | epan/dissectors/asn1/e1ap/packet-e1ap-template.c | 233 | ||||
-rw-r--r-- | epan/dissectors/packet-e1ap.c | 7102 | ||||
-rw-r--r-- | epan/sctpppids.h | 2 |
14 files changed, 10646 insertions, 1 deletions
diff --git a/docbook/release-notes.asciidoc b/docbook/release-notes.asciidoc index a55c49c759..548bdf06ef 100644 --- a/docbook/release-notes.asciidoc +++ b/docbook/release-notes.asciidoc @@ -78,6 +78,7 @@ Exablaze trailers Ubiquiti Discovery Protocol (UBDP) Cisco Meraki Discovery Protocol (MDP) XnAP (5G) protocol +E1AP (5G) protocol -- === Updated Protocol Support diff --git a/epan/dissectors/CMakeLists.txt b/epan/dissectors/CMakeLists.txt index 2420123f9c..3bbcca5e86 100644 --- a/epan/dissectors/CMakeLists.txt +++ b/epan/dissectors/CMakeLists.txt @@ -92,7 +92,7 @@ set(CLEAN_ASN1_DISSECTOR_SRC ${CMAKE_CURRENT_SOURCE_DIR}/packet-disp.c ${CMAKE_CURRENT_SOURCE_DIR}/packet-dop.c ${CMAKE_CURRENT_SOURCE_DIR}/packet-dsp.c - ${CMAKE_CURRENT_SOURCE_DIR}/packet-ecp.c + ${CMAKE_CURRENT_SOURCE_DIR}/packet-e1ap.c ${CMAKE_CURRENT_SOURCE_DIR}/packet-ess.c ${CMAKE_CURRENT_SOURCE_DIR}/packet-f1ap.c ${CMAKE_CURRENT_SOURCE_DIR}/packet-ftam.c @@ -938,6 +938,7 @@ set(DISSECTOR_SRC ${CMAKE_CURRENT_SOURCE_DIR}/packet-eapol.c ${CMAKE_CURRENT_SOURCE_DIR}/packet-echo.c ${CMAKE_CURRENT_SOURCE_DIR}/packet-ecmp.c + ${CMAKE_CURRENT_SOURCE_DIR}/packet-ecp.c ${CMAKE_CURRENT_SOURCE_DIR}/packet-ecp-oui.c ${CMAKE_CURRENT_SOURCE_DIR}/packet-edonkey.c ${CMAKE_CURRENT_SOURCE_DIR}/packet-egd.c diff --git a/epan/dissectors/asn1/CMakeLists.txt b/epan/dissectors/asn1/CMakeLists.txt index 149e744b37..49f6bb37dc 100644 --- a/epan/dissectors/asn1/CMakeLists.txt +++ b/epan/dissectors/asn1/CMakeLists.txt @@ -31,6 +31,7 @@ set(ASN1_SRC_DIRS disp dop dsp + e1ap ess f1ap ftam diff --git a/epan/dissectors/asn1/e1ap/CMakeLists.txt b/epan/dissectors/asn1/e1ap/CMakeLists.txt new file mode 100644 index 0000000000..df3aafdec7 --- /dev/null +++ b/epan/dissectors/asn1/e1ap/CMakeLists.txt @@ -0,0 +1,43 @@ +# CMakeLists.txt +# +# Wireshark - Network traffic analyzer +# By Gerald Combs <gerald@wireshark.org> +# Copyright 1998 Gerald Combs +# +# SPDX-License-Identifier: GPL-2.0-or-later +# + +set( PROTOCOL_NAME e1ap ) + +set( PROTO_OPT ) + +set( EXPORT_FILES + ${PROTOCOL_NAME}-exp.cnf +) + +set( EXT_ASN_FILE_LIST +) + +set( ASN_FILE_LIST + E1AP-CommonDataTypes.asn + E1AP-Constants.asn + E1AP-Containers.asn + E1AP-IEs.asn + E1AP-PDU-Contents.asn + E1AP-PDU-Descriptions.asn +) + +set( EXTRA_DIST + ${ASN_FILE_LIST} + packet-${PROTOCOL_NAME}-template.c + ${PROTOCOL_NAME}.cnf +) + +set( SRC_FILES + ${EXTRA_DIST} + ${EXT_ASN_FILE_LIST} +) + +set( A2W_FLAGS ) + +ASN2WRS() diff --git a/epan/dissectors/asn1/e1ap/E1AP-CommonDataTypes.asn b/epan/dissectors/asn1/e1ap/E1AP-CommonDataTypes.asn new file mode 100644 index 0000000000..cec41de7ec --- /dev/null +++ b/epan/dissectors/asn1/e1ap/E1AP-CommonDataTypes.asn @@ -0,0 +1,51 @@ +-- 3GPP TS 38.463 V15.0.0 (2018-06) +-- ************************************************************** +-- +-- Common definitions +-- +-- ************************************************************** + +E1AP-CommonDataTypes { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +ngran-access (22) modules (3) e1ap (5) version1 (1) e1ap-CommonDataTypes (3)} + + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + + +-- ************************************************************** +-- +-- Extension constants +-- +-- ************************************************************** + +maxPrivateIEs INTEGER ::= 65535 +maxProtocolExtensions INTEGER ::= 65535 +maxProtocolIEs INTEGER ::= 65535 + +-- ************************************************************** +-- +-- Common Data Types +-- +-- ************************************************************** + +Criticality ::= ENUMERATED { reject, ignore, notify } + +Presence ::= ENUMERATED { optional, conditional, mandatory } + +PrivateIE-ID ::= CHOICE { + local INTEGER (0.. maxPrivateIEs), + global OBJECT IDENTIFIER +} + +ProcedureCode ::= INTEGER (0..255) + +ProtocolExtensionID ::= INTEGER (0..maxProtocolExtensions) + +ProtocolIE-ID ::= INTEGER (0..maxProtocolIEs) + +TriggeringMessage ::= ENUMERATED { initiating-message, successful-outcome, unsuccessful-outcome} + +END diff --git a/epan/dissectors/asn1/e1ap/E1AP-Constants.asn b/epan/dissectors/asn1/e1ap/E1AP-Constants.asn new file mode 100644 index 0000000000..6839eb6f3b --- /dev/null +++ b/epan/dissectors/asn1/e1ap/E1AP-Constants.asn @@ -0,0 +1,102 @@ +-- 3GPP TS 38.463 V15.0.0 (2018-06) +-- ************************************************************** +-- +-- Constant definitions +-- +-- ************************************************************** + + +E1AP-Constants { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +ngran-access (22) modules (3) e1ap (5) version1 (1) e1ap-Constants (4) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +IMPORTS + + ProcedureCode, + ProtocolIE-ID + +FROM E1AP-CommonDataTypes; + +-- ************************************************************** +-- +-- Elementary Procedures +-- +-- ************************************************************** + +id-reset ProcedureCode ::= 0 +id-errorIndication ProcedureCode ::= 1 +id-privateMessage ProcedureCode ::= 2 +id-gNB-CU-UP-E1Setup ProcedureCode ::= 3 +id-gNB-CU-CP-E1Setup ProcedureCode ::= 4 +id-gNB-CU-UP-ConfigurationUpdate ProcedureCode ::= 5 +id-gNB-CU-CP-ConfigurationUpdate ProcedureCode ::= 6 +id-e1Release ProcedureCode ::= 7 +id-bearerContextSetup ProcedureCode ::= 8 +id-bearerContextModification ProcedureCode ::= 9 +id-bearerContextModificationRequired ProcedureCode ::= 10 +id-bearerContextRelease ProcedureCode ::= 11 +id-bearerContextReleaseRequest ProcedureCode ::= 12 +id-bearerContextInactivityNotification ProcedureCode ::= 13 +id-dLDataNotification ProcedureCode ::= 14 +id-dataUsageReport ProcedureCode ::= 15 + +-- ************************************************************** +-- +-- Lists +-- +-- ************************************************************** + +maxnoofErrors INTEGER ::= 256 +maxnoofSPLMNs INTEGER ::= 6 +maxnoofSliceItems INTEGER ::= 1024 +maxnoofIndividualE1ConnectionsToReset INTEGER ::= 65536 +maxnoofEUTRANQOSParameters INTEGER ::= 256 +maxnoofNGRANQOSParameters INTEGER ::= 256 +maxnoofDRBs INTEGER ::= 32 +maxnoofNRCGI INTEGER ::= 512 +maxnoofPDUSessionResource INTEGER ::= 256 +maxnoofQoSFlows INTEGER ::= 64 +maxnoofUPParameters INTEGER ::= 4 +maxnoofCellGroups INTEGER ::= 4 +maxnooftimeperiods INTEGER ::= 2 + +-- ************************************************************** +-- +-- IEs +-- +-- ************************************************************** + +id-Cause ProtocolIE-ID ::= 0 +id-CriticalityDiagnostics ProtocolIE-ID ::= 1 +id-gNB-CU-CP-UE-E1AP-ID ProtocolIE-ID ::= 2 +id-gNB-CU-UP-UE-E1AP-ID ProtocolIE-ID ::= 3 +id-ResetType ProtocolIE-ID ::= 4 +id-UE-associatedLogicalE1-ConnectionItem ProtocolIE-ID ::= 5 +id-UE-associatedLogicalE1-ConnectionListResAck ProtocolIE-ID ::= 6 +id-gNB-CU-UP-ID ProtocolIE-ID ::= 7 +id-gNB-CU-UP-Name ProtocolIE-ID ::= 8 +id-gNB-CU-CP-Name ProtocolIE-ID ::= 9 +id-CNSupport ProtocolIE-ID ::= 10 +id-SupportedPLMNs ProtocolIE-ID ::= 11 +id-SupportedPLMNs-Item ProtocolIE-ID ::= 12 +id-TimeToWait ProtocolIE-ID ::= 13 +id-SecurityInformation ProtocolIE-ID ::= 14 +id-UEDLAggregateMaximumBitRate ProtocolIE-ID ::= 15 +id-System-BearerContextSetupRequest ProtocolIE-ID ::= 16 +id-System-BearerContextSetupResponse ProtocolIE-ID ::= 17 +id-BearerContextStatusChange ProtocolIE-ID ::= 18 +id-System-BearerContextModificationRequest ProtocolIE-ID ::= 19 +id-System-BearerContextModificationResponse ProtocolIE-ID ::= 20 +id-System-BearerContextModificationConfirm ProtocolIE-ID ::= 21 +id-System-BearerContextModificationRequired ProtocolIE-ID ::= 22 +id-DRB-Status-List ProtocolIE-ID ::= 23 +id-DRB-Status-Item ProtocolIE-ID ::= 24 +id-DRB-Activity-List ProtocolIE-ID ::= 25 +id-DRB-Activity-Item ProtocolIE-ID ::= 26 +id-Data-Usage-Report-List ProtocolIE-ID ::= 27 + +END diff --git a/epan/dissectors/asn1/e1ap/E1AP-Containers.asn b/epan/dissectors/asn1/e1ap/E1AP-Containers.asn new file mode 100644 index 0000000000..c339429f28 --- /dev/null +++ b/epan/dissectors/asn1/e1ap/E1AP-Containers.asn @@ -0,0 +1,152 @@ +-- 3GPP TS 38.463 V15.0.0 (2018-06) +-- ************************************************************** +-- +-- Container definitions +-- +-- ************************************************************** + +E1AP-Containers { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +ngran-access (22) modules (3) e1ap (5) version1 (1) e1ap-Containers (5) } + + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** + +IMPORTS + maxPrivateIEs, + maxProtocolExtensions, + maxProtocolIEs, + Criticality, + Presence, + PrivateIE-ID, + ProtocolIE-ID + +FROM E1AP-CommonDataTypes; + +-- ************************************************************** +-- +-- Class Definition for Protocol IEs +-- +-- ************************************************************** + +E1AP-PROTOCOL-IES ::= CLASS { + &id ProtocolIE-ID UNIQUE, + &criticality Criticality, + &Value, + &presence Presence +} +WITH SYNTAX { + ID &id + CRITICALITY &criticality + TYPE &Value + PRESENCE &presence +} + +-- ************************************************************** +-- +-- Class Definition for Protocol Extensions +-- +-- ************************************************************** + +E1AP-PROTOCOL-EXTENSION ::= CLASS { + &id ProtocolIE-ID UNIQUE, + &criticality Criticality, + &Extension, + &presence Presence +} +WITH SYNTAX { + ID &id + CRITICALITY &criticality + EXTENSION &Extension + PRESENCE &presence +} + +-- ************************************************************** +-- +-- Class Definition for Private IEs +-- +-- ************************************************************** + +E1AP-PRIVATE-IES ::= CLASS { + &id PrivateIE-ID, + &criticality Criticality, + &Value, + &presence Presence +} +WITH SYNTAX { + ID &id + CRITICALITY &criticality + TYPE &Value + PRESENCE &presence +} + +-- ************************************************************** +-- +-- Container for Protocol IEs +-- +-- ************************************************************** + +ProtocolIE-Container { E1AP-PROTOCOL-IES : IEsSetParam} ::= + SEQUENCE (SIZE (0..maxProtocolIEs)) OF + ProtocolIE-Field {{IEsSetParam}} + +ProtocolIE-SingleContainer { E1AP-PROTOCOL-IES : IEsSetParam} ::= + ProtocolIE-Field {{IEsSetParam}} + +ProtocolIE-Field { E1AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE { + id E1AP-PROTOCOL-IES.&id ({IEsSetParam}), + criticality E1AP-PROTOCOL-IES.&criticality ({IEsSetParam}{@id}), + value E1AP-PROTOCOL-IES.&Value ({IEsSetParam}{@id}) +} + +-- ************************************************************** +-- +-- Container Lists for Protocol IE Containers +-- +-- ************************************************************** + +ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, E1AP-PROTOCOL-IES : IEsSetParam} ::= + SEQUENCE (SIZE (lowerBound..upperBound)) OF + ProtocolIE-Container {{IEsSetParam}} + +-- ************************************************************** +-- +-- Container for Protocol Extensions +-- +-- ************************************************************** + +ProtocolExtensionContainer { E1AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= + SEQUENCE (SIZE (1..maxProtocolExtensions)) OF + ProtocolExtensionField {{ExtensionSetParam}} + +ProtocolExtensionField { E1AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE { + id E1AP-PROTOCOL-EXTENSION.&id ({ExtensionSetParam}), + criticality E1AP-PROTOCOL-EXTENSION.&criticality ({ExtensionSetParam}{@id}), + extensionValue E1AP-PROTOCOL-EXTENSION.&Extension ({ExtensionSetParam}{@id}) +} + +-- ************************************************************** +-- +-- Container for Private IEs +-- +-- ************************************************************** + +PrivateIE-Container { E1AP-PRIVATE-IES : IEsSetParam} ::= + SEQUENCE (SIZE (1..maxPrivateIEs)) OF + PrivateIE-Field {{IEsSetParam}} + +PrivateIE-Field { E1AP-PRIVATE-IES : IEsSetParam} ::= SEQUENCE { + id E1AP-PRIVATE-IES.&id ({IEsSetParam}), + criticality E1AP-PRIVATE-IES.&criticality ({IEsSetParam}{@id}), + value E1AP-PRIVATE-IES.&Value ({IEsSetParam}{@id}) +} + +END diff --git a/epan/dissectors/asn1/e1ap/E1AP-IEs.asn b/epan/dissectors/asn1/e1ap/E1AP-IEs.asn new file mode 100644 index 0000000000..b6c8d80c96 --- /dev/null +++ b/epan/dissectors/asn1/e1ap/E1AP-IEs.asn @@ -0,0 +1,1270 @@ +-- 3GPP TS 38.463 V15.0.0 (2018-06) +-- ************************************************************** +-- +-- Information Element Definitions +-- +-- ************************************************************** + +E1AP-IEs { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +ngran-access (22) modules (3) e1ap (5) version1 (1) e1ap-IEs (2) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +IMPORTS + + maxnoofErrors, + maxnoofSliceItems, + maxnoofEUTRANQOSParameters, + maxnoofNGRANQOSParameters, + maxnoofDRBs, + maxnoofPDUSessionResource, + maxnoofQoSFlows, + maxnoofUPParameters, + maxnoofCellGroups, + maxnooftimeperiods, + maxnoofNRCGI + +FROM E1AP-Constants + + Criticality, + ProcedureCode, + ProtocolIE-ID, + TriggeringMessage + +FROM E1AP-CommonDataTypes + + ProtocolExtensionContainer{}, + ProtocolIE-SingleContainer{}, + E1AP-PROTOCOL-EXTENSION, + E1AP-PROTOCOL-IES + + +FROM E1AP-Containers; + +-- A + +AveragingWindow ::= INTEGER (0..63) -- this IE may need to be refined + +-- B + +BearerContextStatusChange ::= ENUMERATED { + suspend, + resume, + ... +} + +BitRate ::= INTEGER (0..4000000000000,...) + +-- C + +Cause ::= CHOICE { + radioNetwork CauseRadioNetwork, + transport CauseTransport, + protocol CauseProtocol, + misc CauseMisc, + ... +} + +CauseMisc ::= ENUMERATED { + control-processing-overload, + not-enough-user-plane-processing-resources, + hardware-failure, + om-intervention, + unspecified, + ... +} + +CauseProtocol ::= ENUMERATED { + transfer-syntax-error, + abstract-syntax-error-reject, + abstract-syntax-error-ignore-and-notify, + message-not-compatible-with-receiver-state, + semantic-error, + abstract-syntax-error-falsely-constructed-message, + unspecified, + ... +} + +CauseRadioNetwork ::= ENUMERATED { + unspecified, + unknown-or-already-allocated-gnb-cu-cp-ue-e1ap-id, + unknown-or-already-allocated-gnb-cu-up-ue-e1ap-id, + unknown-or-inconsistent-pair-of-ue-e1ap-id, + interaction-with-other-procedure, + ... +} + +CauseTransport ::= ENUMERATED { + unspecified, + transport-resource-unavailable, + ... +} + +Cell-Group-Information ::= SEQUENCE (SIZE(1.. maxnoofCellGroups)) OF Cell-Group-Information-Item + +Cell-Group-Information-Item ::= SEQUENCE { + cell-Group-ID Cell-Gorup-ID, + uL-Configuration UL-Configuration OPTIONAL, + dL-TX-Stop DL-TX-Stop OPTIONAL, + rAT-Type RAT-Type OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { Cell-Group-Information-Item-ExtIEs } } OPTIONAL, + ... +} + +Cell-Group-Information-Item-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +Cell-Gorup-ID ::= INTEGER (0..3, ...) + +CipheringAlgorithm ::= ENUMERATED { + nEA0, + c-128-NEA1, + c-128-NEA2, + c-128-NEA3, + ... +} + +CNSupport ::= ENUMERATED { + c-epc, + c-5gc, + both, + ... +} + +ConfidentialityProtectionIndication ::= ENUMERATED { + required, + preferred, + not-needed, + ... +} + +CP-TNL-Information ::= CHOICE { + endpoint-IP-Address TransportLayerAddress, + ... +} + +CriticalityDiagnostics ::= SEQUENCE { + procedureCode ProcedureCode OPTIONAL, + triggeringMessage TriggeringMessage OPTIONAL, + procedureCriticality Criticality OPTIONAL, + iEsCriticalityDiagnostics CriticalityDiagnostics-IE-List OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {CriticalityDiagnostics-ExtIEs} } OPTIONAL, + ... +} + + +CriticalityDiagnostics-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +CriticalityDiagnostics-IE-List ::= SEQUENCE (SIZE (1..maxnoofErrors)) OF + SEQUENCE { + iECriticality Criticality, + iE-ID ProtocolIE-ID, + typeOfError TypeOfError, + iE-Extensions ProtocolExtensionContainer { {CriticalityDiagnostics-IE-List-ExtIEs} } OPTIONAL, + ... +} + +CriticalityDiagnostics-IE-List-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- D + +Data-Forwarding-Information-Request ::= SEQUENCE { + data-Forwarding-Request Data-Forwarding-Request, + uL-Data-Forwarding UP-TNL-Information OPTIONAL, + dL-Data-Forwarding UP-TNL-Information OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { Data-Forwarding-Information-Request-ExtIEs } } OPTIONAL, + ... +} + +Data-Forwarding-Information-Request-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +Data-Forwarding-Information-Response ::= SEQUENCE { + uL-Data-Forwarding UP-TNL-Information OPTIONAL, + dL-Data-Forwarding UP-TNL-Information OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { Data-Forwarding-Information-Response-ExtIEs } } OPTIONAL, + ... +} + +Data-Forwarding-Information-Response-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +Data-Forwarding-Request ::= ENUMERATED { + uL, + dL, + both, + ... +} + +Data-Usage-Report-List ::= SEQUENCE (SIZE(1.. maxnoofDRBs)) OF Data-Usage-Report-Item + +Data-Usage-Report-Item ::= SEQUENCE { + dRB-ID DRB-ID, + rAT-Type RAT-Type, + dRB-Usage-Report-List DRB-Usage-Report-List, + iE-Extensions ProtocolExtensionContainer { { Data-Usage-Report-ItemExtIEs } } OPTIONAL, + ... +} + +Data-Usage-Report-ItemExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +DefaultDRB ::= ENUMERATED { + true, + false, + ... +} + +DiscardTimer ::= ENUMERATED {ms10, ms20, ms30, ms40, ms50, ms75, ms100, ms150, ms200, ms250, ms300, ms500, ms750, ms1500, infinity, ...} + +DL-TX-Stop ::= ENUMERATED { + stop, + ... +} + +DRB-Acivity ::= ENUMERATED { + active, + not-active, + ... +} + +DRB-Activity-Item ::= SEQUENCE { + dRB-ID DRB-ID, + dRB-Activity DRB-Acivity, + iE-Extensions ProtocolExtensionContainer { { DRB-Activity-ItemExtIEs } } OPTIONAL, + ... +} + +DRB-Activity-ItemExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +DRB-Confirm-Modified-List-EUTRAN ::= SEQUENCE (SIZE(1.. maxnoofDRBs)) OF DRB-Confirm-Modified-Item-EUTRAN + +DRB-Confirm-Modified-Item-EUTRAN ::= SEQUENCE { + dRB-ID DRB-ID, + cell-Group-Information Cell-Group-Information OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { DRB-Confirm-Modified-Item-EUTRAN-ExtIEs } } OPTIONAL, + ... +} + +DRB-Confirm-Modified-Item-EUTRAN-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +DRB-Confirm-Modified-List-NG-RAN ::= SEQUENCE (SIZE(1.. maxnoofDRBs)) OF DRB-Confirm-Modified-Item-NG-RAN + +DRB-Confirm-Modified-Item-NG-RAN ::= SEQUENCE { + dRB-ID DRB-ID, + cell-Group-Information Cell-Group-Information OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { DRB-Confirm-Modified-Item-NG-RAN-ExtIEs } } OPTIONAL, + ... +} + +DRB-Confirm-Modified-Item-NG-RAN-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +DRB-Failed-List-EUTRAN ::= SEQUENCE (SIZE(1.. maxnoofDRBs)) OF DRB-Failed-Item-EUTRAN + +DRB-Failed-Item-EUTRAN ::= SEQUENCE { + dRB-ID DRB-ID, + cause Cause, + iE-Extensions ProtocolExtensionContainer { { DRB-Failed-Item-EUTRAN-ExtIEs } } OPTIONAL, + ... +} + +DRB-Failed-Item-EUTRAN-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +DRB-Failed-List-NG-RAN ::= SEQUENCE (SIZE(1.. maxnoofDRBs)) OF DRB-Failed-Item-NG-RAN + +DRB-Failed-Item-NG-RAN ::= SEQUENCE { + dRB-ID DRB-ID, + cause Cause, + iE-Extensions ProtocolExtensionContainer { { DRB-Failed-Item-NG-RAN-ExtIEs } } OPTIONAL, + ... +} + +DRB-Failed-Item-NG-RAN-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +DRB-Failed-To-Modify-List-EUTRAN ::= SEQUENCE (SIZE(1.. maxnoofDRBs)) OF DRB-Failed-To-Modify-Item-EUTRAN + +DRB-Failed-To-Modify-Item-EUTRAN ::= SEQUENCE { + dRB-ID DRB-ID, + cause Cause, + iE-Extensions ProtocolExtensionContainer { { DRB-Failed-To-Modify-Item-EUTRAN-ExtIEs } } OPTIONAL, + ... +} + +DRB-Failed-To-Modify-Item-EUTRAN-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +DRB-Failed-To-Modify-List-NG-RAN ::= SEQUENCE (SIZE(1.. maxnoofDRBs)) OF DRB-Failed-To-Modify-Item-NG-RAN + +DRB-Failed-To-Modify-Item-NG-RAN ::= SEQUENCE { + dRB-ID DRB-ID, + cause Cause, + iE-Extensions ProtocolExtensionContainer { { DRB-Failed-To-Modify-Item-NG-RAN-ExtIEs } } OPTIONAL, + ... +} + +DRB-Failed-To-Modify-Item-NG-RAN-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +DRB-ID ::= INTEGER (1..32, ...) + +DRB-Modified-List-EUTRAN ::= SEQUENCE (SIZE(1.. maxnoofDRBs)) OF DRB-Modified-Item-EUTRAN + +DRB-Modified-Item-EUTRAN ::= SEQUENCE { + dRB-ID DRB-ID, + pDCP-UL-Count PDCP-Count OPTIONAL, + pDCP-DL-Count PDCP-Count OPTIONAL, + uL-UP-Transport-Parameters UP-Parameters OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { DRB-Modified-Item-EUTRAN-ExtIEs } } OPTIONAL, + ... +} + +DRB-Modified-Item-EUTRAN-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +DRB-Modified-List-NG-RAN ::= SEQUENCE (SIZE(1.. maxnoofDRBs)) OF DRB-Modified-Item-NG-RAN + +DRB-Modified-Item-NG-RAN ::= SEQUENCE { + dRB-ID DRB-ID, + pDCP-UL-Count PDCP-Count OPTIONAL, + pDCP-DL-Count PDCP-Count OPTIONAL, + uL-UP-Transport-Parameters UP-Parameters OPTIONAL, + flow-Setup-List QoS-Flow-List OPTIONAL, + flow-Failed-List QoS-Flow-Failed-List OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { DRB-Modified-Item-NG-RAN-ExtIEs } } OPTIONAL, + ... +} + +DRB-Modified-Item-NG-RAN-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +DRB-Required-To-Modify-List-EUTRAN ::= SEQUENCE (SIZE(1.. maxnoofDRBs)) OF DRB-Required-To-Modify-Item-EUTRAN + +DRB-Required-To-Modify-Item-EUTRAN ::= SEQUENCE { + dRB-ID DRB-ID, + s1-DL-UP-TNL-Information UP-TNL-Information OPTIONAL, + data-Forwarding-Information-Response Data-Forwarding-Information-Response OPTIONAL, + gNB-CU-UP-CellGroupRelatedConfiguration GNB-CU-UP-CellGroupRelatedConfiguration OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { DRB-Required-To-Modify-Item-EUTRAN-ExtIEs } } OPTIONAL, + ... +} + +DRB-Required-To-Modify-Item-EUTRAN-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +DRB-Required-To-Modify-List-NG-RAN ::= SEQUENCE (SIZE(1.. maxnoofDRBs)) OF DRB-Required-To-Modify-Item-NG-RAN + +DRB-Required-To-Modify-Item-NG-RAN ::= SEQUENCE { + dRB-ID DRB-ID, + data-Forwarding-Information-Response Data-Forwarding-Information-Response OPTIONAL, + gNB-CU-UP-CellGroupRelatedConfiguration GNB-CU-UP-CellGroupRelatedConfiguration OPTIONAL, + flow-To-Remove QoS-Flow-List OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { DRB-Required-To-Modify-Item-NG-RAN-ExtIEs } } OPTIONAL, + ... +} + +DRB-Required-To-Modify-Item-NG-RAN-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +DRB-Setup-List-EUTRAN ::= SEQUENCE (SIZE(1.. maxnoofDRBs)) OF DRB-Setup-Item-EUTRAN + +DRB-Setup-Item-EUTRAN ::= SEQUENCE { + dRB-ID DRB-ID, + s1-DL-UP-TNL-Information UP-TNL-Information, + data-Forwarding-Information-Response Data-Forwarding-Information-Response OPTIONAL, + uL-UP-Transport-Parameters UP-Parameters, + iE-Extensions ProtocolExtensionContainer { { DRB-Setup-Item-EUTRAN-ExtIEs } } OPTIONAL, + ... +} + +DRB-Setup-Item-EUTRAN-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +DRB-Setup-List-NG-RAN ::= SEQUENCE (SIZE(1.. maxnoofDRBs)) OF DRB-Setup-Item-NG-RAN + +DRB-Setup-Item-NG-RAN ::= SEQUENCE { + dRB-ID DRB-ID, + dRB-data-Forwarding-Information-Response Data-Forwarding-Information-Response OPTIONAL, + uL-UP-Transport-Parameters UP-Parameters, + flow-Setup-List QoS-Flow-List, + flow-Failed-List QoS-Flow-Failed-List OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { DRB-Setup-Item-NG-RAN-ExtIEs } } OPTIONAL, + ... +} + +DRB-Setup-Item-NG-RAN-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +DRB-Status-Item ::= SEQUENCE { + dRB-ID DRB-ID, + pDCP-DL-Count PDCP-Count OPTIONAL, + pDCP-UL-Count PDCP-Count OPTIONAL, + data-Forwarding-Information-Response Data-Forwarding-Information-Response OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { DRB-Status-ItemExtIEs } } OPTIONAL, + ... +} + +DRB-Status-ItemExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +DRB-To-Modify-List-EUTRAN ::= SEQUENCE (SIZE(1.. maxnoofDRBs)) OF DRB-To-Modify-Item-EUTRAN + +DRB-To-Modify-Item-EUTRAN ::= SEQUENCE { + dRB-ID DRB-ID, + pDCP-Configuration PDCP-Configuration OPTIONAL, + eUTRAN-QoS EUTRAN-QoS OPTIONAL, + s1-UL-UP-TNL-Information UP-TNL-Information OPTIONAL, + data-Forwarding-Information-Request Data-Forwarding-Information-Request OPTIONAL, + pDCP-Count-Request PDCP-Count-Request OPTIONAL, + pDCP-UL-Count PDCP-Count OPTIONAL, + pDCP-DL-Count PDCP-Count OPTIONAL, + dL-UP-Parameters UP-Parameters OPTIONAL, + cell-Group-To-Add Cell-Group-Information OPTIONAL, + cell-Group-To-Modify Cell-Group-Information OPTIONAL, + cell-Group-To-Remove Cell-Group-Information OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { DRB-To-Modify-Item-EUTRAN-ExtIEs } } OPTIONAL, + ... +} + +DRB-To-Modify-Item-EUTRAN-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +DRB-To-Modify-List-NG-RAN ::= SEQUENCE (SIZE(1.. maxnoofDRBs)) OF DRB-To-Modify-Item-NG-RAN + +DRB-To-Modify-Item-NG-RAN ::= SEQUENCE { + dRB-ID DRB-ID, + sDAP-Configuration SDAP-Configuration OPTIONAL, + pDCP-Configuration PDCP-Configuration OPTIONAL, + dRB-Data-Forwarding-Information-Request Data-Forwarding-Information-Request OPTIONAL, + pDCP-Count-Request PDCP-Count-Request OPTIONAL, + pDCP-UL-Count PDCP-Count OPTIONAL, + pDCP-DL-Count PDCP-Count OPTIONAL, + dL-UP-Parameters UP-Parameters OPTIONAL, + cell-Group-To-Add Cell-Group-Information OPTIONAL, + cell-Group-To-Modify Cell-Group-Information OPTIONAL, + cell-Group-To-Remove Cell-Group-Information OPTIONAL, + flow-Mapping-Information QoS-Flow-QoS-Parameter-List OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { DRB-To-Modify-Item-NG-RAN-ExtIEs } } OPTIONAL, + ... +} + +DRB-To-Modify-Item-NG-RAN-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +DRB-To-Remove-List-EUTRAN ::= SEQUENCE (SIZE(1.. maxnoofDRBs)) OF DRB-To-Remove-Item-EUTRAN + +DRB-To-Remove-Item-EUTRAN ::= SEQUENCE { + dRB-ID DRB-ID, + iE-Extensions ProtocolExtensionContainer { { DRB-To-Remove-Item-EUTRAN-ExtIEs } } OPTIONAL, + ... +} + +DRB-To-Remove-Item-EUTRAN-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +DRB-To-Remove-List-NG-RAN ::= SEQUENCE (SIZE(1.. maxnoofDRBs)) OF DRB-To-Remove-Item-NG-RAN + +DRB-To-Remove-Item-NG-RAN ::= SEQUENCE { + dRB-ID DRB-ID, + iE-Extensions ProtocolExtensionContainer { { DRB-To-Remove-Item-NG-RAN-ExtIEs } } OPTIONAL, + ... +} + +DRB-To-Remove-Item-NG-RAN-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +DRB-To-Setup-List-EUTRAN ::= SEQUENCE (SIZE(1.. maxnoofDRBs)) OF DRB-To-Setup-Item-EUTRAN + +DRB-To-Setup-Item-EUTRAN ::= SEQUENCE { + dRB-ID DRB-ID, + pDCP-Configuration PDCP-Configuration, + eUTRAN-QoS EUTRAN-QoS, + s1-UL-UP-TNL-Information UP-TNL-Information, + data-Forwarding-Information-Request Data-Forwarding-Information-Request OPTIONAL, + cell-Group-Information Cell-Group-Information, + iE-Extensions ProtocolExtensionContainer { { DRB-To-Setup-Item-EUTRAN-ExtIEs } } OPTIONAL, + ... +} + +DRB-To-Setup-Item-EUTRAN-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +DRB-To-Setup-List-NG-RAN ::= SEQUENCE (SIZE(1.. maxnoofDRBs)) OF DRB-To-Setup-Item-NG-RAN + +DRB-To-Setup-Item-NG-RAN ::= SEQUENCE { + dRB-ID DRB-ID, + sDAP-Configuration SDAP-Configuration, + pDCP-Configuration PDCP-Configuration, + cell-Group-Information Cell-Group-Information, + flow-Mapping-Information QoS-Flow-QoS-Parameter-List, + dRB-Data-Forwarding-Information-Request Data-Forwarding-Information-Request OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { DRB-To-Setup-Item-NG-RAN-ExtIEs } } OPTIONAL, + ... +} + +DRB-To-Setup-Item-NG-RAN-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +DRB-Usage-Report-List ::= SEQUENCE (SIZE(1..maxnooftimeperiods)) OF DRB-Usage-Report-Item + +DRB-Usage-Report-Item ::= SEQUENCE { + startTimeStamp OCTET STRING (SIZE(4)), + endTimeStamp OCTET STRING (SIZE(4)), + usageCountUL INTEGER (0..18446744073709551615), + usageCountDL INTEGER (0..18446744073709551615), + iE-Extensions ProtocolExtensionContainer { { DRB-Usage-Report-Item-ExtIEs} } OPTIONAL, + ... +} + +DRB-Usage-Report-Item-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + + + +Dynamic5QIDescriptor ::= SEQUENCE { + qoSPriorityLevel INTEGER (1..127), + packetDelayBudget PacketDelayBudget, + packetErrorRate PacketErrorRate, + delayCritical ENUMERATED {delay-critical, non-delay-critical} OPTIONAL, + averagingWindow AveragingWindow OPTIONAL, + maxDataBurstVolume MaxDataBurstVolume OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { Dynamic5QIDescriptor-ExtIEs } } OPTIONAL +} + +Dynamic5QIDescriptor-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- E + +EncryptionKey ::= OCTET STRING + +EUTRANAllocationAndRetentionPriority ::= SEQUENCE { + priorityLevel PriorityLevel, + pre-emptionCapability Pre-emptionCapability, + pre-emptionVulnerability Pre-emptionVulnerability, + iE-Extensions ProtocolExtensionContainer { {EUTRANAllocationAndRetentionPriority-ExtIEs} } OPTIONAL, + ... +} + +EUTRANAllocationAndRetentionPriority-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +EUTRAN-QoS-Support-List ::= SEQUENCE (SIZE(1.. maxnoofEUTRANQOSParameters)) OF EUTRAN-QoS-Support-Item + +EUTRAN-QoS-Support-Item ::= SEQUENCE { + eUTRAN-QoS EUTRAN-QoS, + iE-Extensions ProtocolExtensionContainer { { EUTRAN-QoS-Support-Item-ExtIEs } } OPTIONAL +} + +EUTRAN-QoS-Support-Item-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +EUTRAN-QoS ::= SEQUENCE { + qCI QCI, + eUTRANallocationAndRetentionPriority EUTRANAllocationAndRetentionPriority, + gbrQosInformation GBR-QosInformation OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { EUTRAN-QoS-ExtIEs } } OPTIONAL, + ... +} + +EUTRAN-QoS-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- F + +-- G + +GNB-CU-CP-Name ::= PrintableString(SIZE(1..150,...)) + +GNB-CU-CP-UE-E1AP-ID ::= INTEGER (0..4294967295) + +GNB-CU-UP-CellGroupRelatedConfiguration ::= SEQUENCE (SIZE(1.. maxnoofUPParameters)) OF GNB-CU-UP-CellGroupRelatedConfiguration-Item + +GNB-CU-UP-CellGroupRelatedConfiguration-Item ::= SEQUENCE { + cell-Group-ID Cell-Gorup-ID, + uP-TNL-Information UP-TNL-Information, + uL-Configuration UL-Configuration OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {GNB-CU-UP-CellGroupRelatedConfiguration-Item-ExtIEs } } OPTIONAL +} + +GNB-CU-UP-CellGroupRelatedConfiguration-Item-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +GNB-CU-UP-ID ::= INTEGER (0..68719476735) + +GNB-CU-UP-Name ::= PrintableString(SIZE(1..150,...)) + +GNB-CU-UP-UE-E1AP-ID ::= INTEGER (0..4294967295) + +GBR-QosInformation ::= SEQUENCE { + e-RAB-MaximumBitrateDL BitRate, + e-RAB-MaximumBitrateUL BitRate, + e-RAB-GuaranteedBitrateDL BitRate, + e-RAB-GuaranteedBitrateUL BitRate, + iE-Extensions ProtocolExtensionContainer { { GBR-QosInformation-ExtIEs} } OPTIONAL, + ... +} + +GBR-QosInformation-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +GBR-QoSFlowInformation::= SEQUENCE { + maxFlowBitRateDownlink BitRate, + maxFlowBitRateUplink BitRate, + guaranteedFlowBitRateDownlink BitRate, + guaranteedFlowBitRateUplink BitRate, + notificationControl ENUMERATED {notification-enabled, ...} OPTIONAL, + maxPacketLossRateDownlink MaxPacketLossRate OPTIONAL, + maxPacketLossRateUplink MaxPacketLossRate OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { GBR-QosFlowInformation-ExtIEs} } OPTIONAL, + ... +} + +GBR-QosFlowInformation-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +GTP-TEID ::= OCTET STRING (SIZE (4)) + +GTPTunnel ::= SEQUENCE { + transportLayerAddress TransportLayerAddress, + gTP-TEID GTP-TEID, + iE-Extensions ProtocolExtensionContainer { { GTPTunnel-ExtIEs} } OPTIONAL, + ... +} + +GTPTunnel-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- H + +HFN ::= INTEGER (0..4294967295) + +-- I + +IntegrityProtectionIndication ::= ENUMERATED { + required, + preferred, + not-needed, + ... +} + +IntegrityProtectionAlgorithm ::= ENUMERATED { + nIA0, + i-128-NIA1, + i-128-NIA2, + i-128-NIA3, + ... +} + +IntegrityProtectionKey ::= OCTET STRING + +-- J + +-- K + +-- L + +-- M + +MaxDataBurstVolume ::= INTEGER (0..63) -- this IE may need to be refined + +MaxPacketLossRate ::= INTEGER (0..1000) + +-- N + +NGRANAllocationAndRetentionPriority ::= SEQUENCE { + priorityLevel PriorityLevel, + pre-emptionCapability Pre-emptionCapability, + pre-emptionVulnerability Pre-emptionVulnerability, + iE-Extensions ProtocolExtensionContainer { {NGRANAllocationAndRetentionPriority-ExtIEs} } OPTIONAL +} + +NGRANAllocationAndRetentionPriority-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +NG-RAN-QoS-Support-List ::= SEQUENCE (SIZE(1.. maxnoofNGRANQOSParameters)) OF NG-RAN-QoS-Support-Item + +NG-RAN-QoS-Support-Item ::= SEQUENCE { + non-Dynamic5QIDescriptor Non-Dynamic5QIDescriptor, + iE-Extensions ProtocolExtensionContainer { { NG-RAN-QoS-Support-Item-ExtIEs } } OPTIONAL +} + +NG-RAN-QoS-Support-Item-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +Non-Dynamic5QIDescriptor ::= SEQUENCE { + fiveQI INTEGER (0..255, ...), + qoSPriorityLevel INTEGER (1..127, ...) OPTIONAL, + averagingWindow AveragingWindow OPTIONAL, + maxDataBurstVolume MaxDataBurstVolume OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { Non-Dynamic5QIDescriptor-ExtIEs } } OPTIONAL +} + +Non-Dynamic5QIDescriptor-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +NR-Cell-Identity ::= BIT STRING (SIZE(36)) + +NR-CGI ::= SEQUENCE { + pLMN-Identity PLMN-Identity, + nR-Cell-Identity NR-Cell-Identity, + iE-Extensions ProtocolExtensionContainer { { NR-CGI-ExtIEs } } OPTIONAL +} + +NR-CGI-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +NR-CGI-Support-List ::= SEQUENCE (SIZE(1.. maxnoofNRCGI)) OF NR-CGI-Support-Item + +NR-CGI-Support-Item ::= SEQUENCE { + nR-CGI NR-CGI, + iE-Extensions ProtocolExtensionContainer { { NR-CGI-Support-Item-ExtIEs } } OPTIONAL +} + +NR-CGI-Support-Item-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- O + +-- P + +PacketDelayBudget ::= INTEGER (0..63) -- this IE may need to be refined + +PacketErrorRate ::= INTEGER (0..63) -- this IE may need to be refined + +PDCP-Configuration ::= SEQUENCE { + pDCP-SN-Size PDCP-SN-Size, + rLC-Mode RLC-Mode, + rOHC-Parameters ROHC-Parameters OPTIONAL, + t-ReorderingTimer T-ReorderingTimer OPTIONAL, + discardTimer DiscardTimer OPTIONAL, + uLDataSplitThreshold ULDataSplitThreshold OPTIONAL, + pDCP-Duplication PDCP-Duplication OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { PDCP-Configuration-ExtIEs } } OPTIONAL, + ... +} + +PDCP-Configuration-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +PDCP-Count ::= SEQUENCE { + pDCP-SN PDCP-SN, + hFN HFN, + iE-Extensions ProtocolExtensionContainer { { PDCP-Count-ExtIEs } } OPTIONAL, + ... +} + +PDCP-Count-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +PDCP-Count-Request ::= ENUMERATED { + requested, + ... +} + +PDCP-Duplication ::= ENUMERATED { + true, + ... +} + +PDCP-SN ::= INTEGER (0..262143) + +PDCP-SN-Size ::= ENUMERATED { + s-12, + s-18, + ... +} + +PDU-Session-ID ::= INTEGER (0..255) + +PDU-Session-Resource-Confirm-Modified-List ::= SEQUENCE (SIZE(1.. maxnoofPDUSessionResource)) OF PDU-Session-Resource-Confirm-Modified-Item + +PDU-Session-Resource-Confirm-Modified-Item ::= SEQUENCE { + pDU-Session-ID PDU-Session-ID, + dRB-Confirm-Modified-List-NG-RAN DRB-Confirm-Modified-List-NG-RAN OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { PDU-Session-Resource-Confirm-Modified-Item-ExtIEs } } OPTIONAL, + ... +} + +PDU-Session-Resource-Confirm-Modified-Item-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +PDU-Session-Resource-Failed-List ::= SEQUENCE (SIZE(1.. maxnoofPDUSessionResource)) OF PDU-Session-Resource-Failed-Item + +PDU-Session-Resource-Failed-Item ::= SEQUENCE { + pDU-Session-ID PDU-Session-ID, + casue Cause, + iE-Extensions ProtocolExtensionContainer { { PDU-Session-Resource-Failed-Item-ExtIEs } } OPTIONAL, + ... +} + +PDU-Session-Resource-Failed-Item-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +PDU-Session-Resource-Failed-To-Modify-List ::= SEQUENCE (SIZE(1.. maxnoofPDUSessionResource)) OF PDU-Session-Resource-Failed-To-Modify-Item + +PDU-Session-Resource-Failed-To-Modify-Item ::= SEQUENCE { + pDU-Session-ID PDU-Session-ID, + casue Cause, + iE-Extensions ProtocolExtensionContainer { { PDU-Session-Resource-Failed-To-Modify-Item-ExtIEs } } OPTIONAL, + ... +} + +PDU-Session-Resource-Failed-To-Modify-Item-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +PDU-Session-Resource-Modified-List ::= SEQUENCE (SIZE(1.. maxnoofPDUSessionResource)) OF PDU-Session-Resource-Modified-Item + +PDU-Session-Resource-Modified-Item ::= SEQUENCE { + pDU-Session-ID PDU-Session-ID, + dRB-Setup-List-NG-RAN DRB-Setup-List-NG-RAN OPTIONAL, + dRB-Failed-List-NG-RAN DRB-Failed-List-NG-RAN OPTIONAL, + dRB-Modified-List-NG-RAN DRB-Modified-List-NG-RAN OPTIONAL, + dRB-Failed-To-Modify-List-NG-RAN DRB-Failed-To-Modify-List-NG-RAN OPTIONAL, + dRB-To-Remove-List-NG-RAN DRB-To-Remove-List-NG-RAN OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { PDU-Session-Resource-Modified-Item-ExtIEs } } OPTIONAL, + ... +} + +PDU-Session-Resource-Modified-Item-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +PDU-Session-Resource-Required-To-Modify-List ::= SEQUENCE (SIZE(1.. maxnoofPDUSessionResource)) OF PDU-Session-Resource-Required-To-Modify-Item + +PDU-Session-Resource-Required-To-Modify-Item ::= SEQUENCE { + pDU-Session-ID PDU-Session-ID, + nG-DL-UP-TNL-Information UP-TNL-Information OPTIONAL, + pDU-Session-Data-Forwarding-Information-Response Data-Forwarding-Information-Response OPTIONAL, + dRB-Required-To-Modify-List-NG-RAN DRB-Required-To-Modify-List-NG-RAN OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { PDU-Session-Resource-Required-To-Modify-Item-ExtIEs } } OPTIONAL, + ... +} + +PDU-Session-Resource-Required-To-Modify-Item-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +PDU-Session-Resource-Setup-List ::= SEQUENCE (SIZE(1.. maxnoofPDUSessionResource)) OF PDU-Session-Resource-Setup-Item + +PDU-Session-Resource-Setup-Item ::= SEQUENCE { + pDU-Session-ID PDU-Session-ID, + nG-DL-UP-TNL-Information UP-TNL-Information OPTIONAL, + pDU-Session-Data-Forwarding-Information-Response Data-Forwarding-Information-Response OPTIONAL, + dRB-Setup-List-NG-RAN DRB-Setup-List-NG-RAN, + dRB-Failed-List-NG-RAN DRB-Failed-List-NG-RAN OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { PDU-Session-Resource-Setup-Item-ExtIEs } } OPTIONAL, + ... +} + +PDU-Session-Resource-Setup-Item-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +PDU-Session-Resource-To-Modify-List ::= SEQUENCE (SIZE(1.. maxnoofPDUSessionResource)) OF PDU-Session-Resource-To-Modify-Item + +PDU-Session-Resource-To-Modify-Item ::= SEQUENCE { + pDU-Session-ID PDU-Session-ID, + pDU-Session-Type PDU-Session-Type OPTIONAL, + sNSSAI SNSSAI OPTIONAL, + securityIndication SecurityIndication OPTIONAL, + pDU-Session-Resource-AMBR BitRate OPTIONAL, + nG-UL-UP-TNL-Information UP-TNL-Information OPTIONAL, + pDU-Session-Data-Forwarding-Information-Request Data-Forwarding-Information-Request OPTIONAL, + dRB-To-Setup-List-NG-RAN DRB-To-Setup-List-NG-RAN OPTIONAL, + dRB-To-Modify-List-NG-RAN DRB-To-Modify-List-NG-RAN OPTIONAL, + dRB-To-Remove-List-NG-RAN DRB-To-Remove-List-NG-RAN OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { PDU-Session-Resource-To-Modify-Item-ExtIEs } } OPTIONAL, + ... +} + +PDU-Session-Resource-To-Modify-Item-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +PDU-Session-Resource-To-Remove-List ::= SEQUENCE (SIZE(1.. maxnoofPDUSessionResource)) OF PDU-Session-Resource-To-Remove-Item + +PDU-Session-Resource-To-Remove-Item ::= SEQUENCE { + pDU-Session-ID PDU-Session-ID, + iE-Extensions ProtocolExtensionContainer { { PDU-Session-Resource-To-Remove-Item-ExtIEs } } OPTIONAL, + ... +} + +PDU-Session-Resource-To-Remove-Item-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +PDU-Session-Resource-To-Setup-List ::= SEQUENCE (SIZE(1.. maxnoofPDUSessionResource)) OF PDU-Session-Resource-To-Setup-Item + +PDU-Session-Resource-To-Setup-Item ::= SEQUENCE { + pDU-Session-ID PDU-Session-ID, + pDU-Session-Type PDU-Session-Type, + sNSSAI SNSSAI, + securityIndication SecurityIndication, + pDU-Session-Resource-AMBR BitRate OPTIONAL, + nG-UL-UP-TNL-Information UP-TNL-Information, + pDU-Session-Data-Forwarding-Information-Request Data-Forwarding-Information-Request OPTIONAL, + dRB-To-Setup-List-NG-RAN DRB-To-Setup-List-NG-RAN, + iE-Extensions ProtocolExtensionContainer { { PDU-Session-Resource-To-Setup-Item-ExtIEs } } OPTIONAL, + ... +} + +PDU-Session-Resource-To-Setup-Item-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +PDU-Session-Type ::= ENUMERATED { + ipv4, + ipv6, + ipv4v6, + ethernet, + unstructured, + ... +} + +PLMN-Identity ::= OCTET STRING (SIZE(3)) + +PriorityLevel ::= INTEGER { spare (0), highest (1), lowest (14), no-priority (15) } (0..15) + +Pre-emptionCapability ::= ENUMERATED { + shall-not-trigger-pre-emption, + may-trigger-pre-emption +} + +Pre-emptionVulnerability ::= ENUMERATED { + not-pre-emptable, + pre-emptable +} + +-- Q + +QCI ::= INTEGER (0..255) + +QoS-Characteristics ::= CHOICE { + non-Dynamic-5QI Non-Dynamic5QIDescriptor, + dynamic-5QI Dynamic5QIDescriptor, + ... +} + +QoS-Flow-Indicator ::= INTEGER (0..63) + +QoS-Flow-List ::= SEQUENCE (SIZE(1.. maxnoofQoSFlows)) OF QoS-Flow-Item + +QoS-Flow-Item ::= SEQUENCE { + qoS-Flow-Indicator QoS-Flow-Indicator, + iE-Extensions ProtocolExtensionContainer { { QoS-Flow-Item-ExtIEs } } OPTIONAL, + ... +} + +QoS-Flow-Item-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +QoS-Flow-Failed-List ::= SEQUENCE (SIZE(1.. maxnoofQoSFlows)) OF QoS-Flow-Failed-Item + +QoS-Flow-Failed-Item ::= SEQUENCE { + qoS-Flow-Indicator QoS-Flow-Indicator, + casue Cause, + iE-Extensions ProtocolExtensionContainer { { QoS-Flow-Failed-Item-ExtIEs } } OPTIONAL, + ... +} + +QoS-Flow-Failed-Item-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +QoS-Parameters-Support-List ::= SEQUENCE { + eUTRAN-QoS-Support-List EUTRAN-QoS-Support-List OPTIONAL, + nG-RAN-QoS-Support-List NG-RAN-QoS-Support-List OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { QoS-Parameters-Support-List-ItemExtIEs} } OPTIONAL, + ... +} + +QoS-Parameters-Support-List-ItemExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +QoS-Flow-QoS-Parameter-List ::= SEQUENCE (SIZE(1.. maxnoofQoSFlows)) OF QoS-Flow-QoS-Parameter-Item + +QoS-Flow-QoS-Parameter-Item ::= SEQUENCE { + qoS-Flow-Indicator QoS-Flow-Indicator, + qoSFlowLevelQoSParameters QoSFlowLevelQoSParameters, + iE-Extensions ProtocolExtensionContainer { { QoS-Flow-QoS-Parameter-Item-ExtIEs } } OPTIONAL, + ... +} + +QoS-Flow-QoS-Parameter-Item-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +QoSFlowLevelQoSParameters ::= SEQUENCE { + qoS-Characteristics QoS-Characteristics, + nGRANallocationRetentionPriority NGRANAllocationAndRetentionPriority, + gBR-QoS-Flow-Information GBR-QoSFlowInformation OPTIONAL, + reflective-QoS-Attribute ENUMERATED {subject-to, ...} OPTIONAL, + additional-QoS-Information ENUMERATED {more-likely, ...} OPTIONAL, + paging-Policy-Indicator INTEGER (1..8, ...) OPTIONAL, + reflective-QoS-Indicator ENUMERATED {enabled, ...} OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { QoSFlowLevelQoSParameters-ExtIEs } } OPTIONAL +} + +QoSFlowLevelQoSParameters-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- R + +RAT-Type ::= ENUMERATED { + e-UTRA, + nR, + ... +} + +RLC-Mode ::= ENUMERATED { + tM, + uM, + aM, + ... +} + +ROHC-Parameters ::= SEQUENCE { + rOHC-Profiles ROHC-Profiles, + iE-Extensions ProtocolExtensionContainer { { ROHC-Parameters-ItemExtIEs} } OPTIONAL, + ... +} + +ROHC-Parameters-ItemExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +ROHC-Profiles ::= INTEGER (0..511, ...) + +-- S + +SecurityAlgorithm ::= SEQUENCE { + cipheringAlgorithm CipheringAlgorithm, + integrityProtectionAlgorithm IntegrityProtectionAlgorithm OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { SecurityAlgorithm-ExtIEs } } OPTIONAL, + ... +} + +SecurityAlgorithm-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +SecurityIndication ::= SEQUENCE { + integrityProtectionIndication IntegrityProtectionIndication, + confidentialityProtectionIndication ConfidentialityProtectionIndication, + iE-Extensions ProtocolExtensionContainer { {SecurityIndication-ExtIEs} } OPTIONAL, + ... +} + +SecurityIndication-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +SecurityInformation ::= SEQUENCE { + securityAlgorithm SecurityAlgorithm, + uPSecuritykey UPSecuritykey, + iE-Extensions ProtocolExtensionContainer { { SecurityInformation-ExtIEs } } OPTIONAL, + ... +} + +SecurityInformation-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +Slice-Support-List ::= SEQUENCE (SIZE(1.. maxnoofSliceItems)) OF Slice-Support-Item + +Slice-Support-Item ::= SEQUENCE { + sNSSAI SNSSAI, + iE-Extensions ProtocolExtensionContainer { { Slice-Support-Item-ExtIEs } } OPTIONAL +} + +Slice-Support-Item-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +SNSSAI ::= SEQUENCE { + sST OCTET STRING (SIZE(1)), + sD OCTET STRING (SIZE(3)) OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { SNSSAI-ExtIEs } } OPTIONAL, + ... +} + +SNSSAI-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +SDAP-Configuration ::= SEQUENCE { + defaultDRB DefaultDRB, + sDAP-Header-UL SDAP-Header-UL, + sDAP-Header-DL SDAP-Header-DL, + iE-Extensions ProtocolExtensionContainer { { SDAP-Configuration-ExtIEs } } OPTIONAL, + ... +} + +SDAP-Configuration-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +SDAP-Header-DL ::= ENUMERATED { + present, + absent, + ... +} + +SDAP-Header-UL ::= ENUMERATED { + present, + absent, + ... +} + +-- T + +TimeToWait ::= ENUMERATED {v1s, v2s, v5s, v10s, v20s, v60s, ...} + +TransportLayerAddress ::= BIT STRING (SIZE(1..160, ...)) + +T-ReorderingDL ::= ENUMERATED {ms0, ms5, ms10, ms15, ms20, ms25, ms30, ms35, ms40, ms45, ms50, ms55, ms60, ms65, ms70, ms75, ms80, ms85, ms90, ms95, ms100, ms110, ms120, ms130, ms140, ms150, ms160, ms170, ms180, ms190, ms200, ms220, ms240, ms260, ms280, ms300, ms500, ms750, ms1000, ms1500, ms3000, ...} + +T-ReorderingTimer ::= SEQUENCE { + t-ReorderingUL T-ReorderingUL, + t-ReorderingDL T-ReorderingDL, + iE-Extensions ProtocolExtensionContainer { { T-ReorderingTimer-ExtIEs } } OPTIONAL, + ... +} + +T-ReorderingTimer-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +T-ReorderingUL ::= ENUMERATED {ms0, ms5, ms10, ms15, ms20, ms25, ms30, ms35, ms40, ms45, ms50, ms55, ms60, ms65, ms70, ms75, ms80, ms85, ms90, ms95, ms100, ms110, ms120, ms130, ms140, ms150, ms160, ms170, ms180, ms190, ms200, ms220, ms240, ms260, ms280, ms300, ms500, ms750, ms1000, ms1500, ms3000, ...} + +TypeOfError ::= ENUMERATED { + not-understood, + missing, + ... +} + +-- U + +UE-associatedLogicalE1-ConnectionItem ::= SEQUENCE { + gNB-CU-CP-UE-E1AP-ID GNB-CU-CP-UE-E1AP-ID OPTIONAL, + gNB-CU-UP-UE-E1AP-ID GNB-CU-UP-UE-E1AP-ID OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { UE-associatedLogicalE1-ConnectionItemExtIEs} } OPTIONAL, + ... +} + +UE-associatedLogicalE1-ConnectionItemExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +UL-Configuration ::= ENUMERATED { + no-data, + shared, + only, + ... +} + +ULDataSplitThreshold ::= ENUMERATED {b0, b100, b200, b400, b800, b1600, b3200, b6400, b12800, b25600, b51200, b102400, b204800, b409600, b819200, b1228800, b1638400, b2457600, b3276800, b4096000, b4915200, b5734400, b6553600, infinity, ...} + +UP-Parameters ::= SEQUENCE (SIZE(1.. maxnoofUPParameters)) OF UP-Parameters-Item + +UP-Parameters-Item ::= SEQUENCE { + uP-TNL-Information UP-TNL-Information, + cell-Group-ID Cell-Gorup-ID, + iE-Extensions ProtocolExtensionContainer { { UP-Parameters-Item-ExtIEs } } OPTIONAL, + ... +} + +UP-Parameters-Item-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +UPSecuritykey ::= SEQUENCE { + encryptionKey EncryptionKey, + integrityProtectionKey IntegrityProtectionKey OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { UPSecuritykey-ExtIEs } } OPTIONAL, + ... +} + +UPSecuritykey-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +UP-TNL-Information ::= CHOICE { + gTPTunnel GTPTunnel, + ... +} + +-- V + +-- W + +-- X + +-- Y + +-- Z + +END diff --git a/epan/dissectors/asn1/e1ap/E1AP-PDU-Contents.asn b/epan/dissectors/asn1/e1ap/E1AP-PDU-Contents.asn new file mode 100644 index 0000000000..615c86888d --- /dev/null +++ b/epan/dissectors/asn1/e1ap/E1AP-PDU-Contents.asn @@ -0,0 +1,1008 @@ +-- 3GPP TS 38.463 V15.0.0 (2018-06) +-- ************************************************************** +-- +-- PDU definitions for E1AP +-- +-- ************************************************************** + +E1AP-PDU-Contents { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +ngran-access (22) modules (3) e1ap (5) version1 (1) e1ap-PDU-Contents (1) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules +-- +-- ************************************************************** + +IMPORTS + + Cause, + CriticalityDiagnostics, + GNB-CU-CP-UE-E1AP-ID, + GNB-CU-UP-UE-E1AP-ID, + UE-associatedLogicalE1-ConnectionItem, + GNB-CU-UP-ID, + GNB-CU-UP-Name, + GNB-CU-CP-Name, + CNSupport, + PLMN-Identity, + Slice-Support-List, + NR-CGI-Support-List, + QoS-Parameters-Support-List, + SecurityInformation, + BitRate, + BearerContextStatusChange, + DRB-To-Setup-List-EUTRAN, + DRB-Setup-List-EUTRAN, + DRB-Failed-List-EUTRAN, + DRB-To-Modify-List-EUTRAN, + DRB-Modified-List-EUTRAN, + DRB-Failed-To-Modify-List-EUTRAN, + DRB-To-Remove-List-EUTRAN, + DRB-Required-To-Modify-List-EUTRAN, + DRB-Confirm-Modified-List-EUTRAN, + PDU-Session-Resource-To-Setup-List, + PDU-Session-Resource-Setup-List, + PDU-Session-Resource-Failed-List, + PDU-Session-Resource-To-Modify-List, + PDU-Session-Resource-Modified-List, + PDU-Session-Resource-Failed-To-Modify-List, + PDU-Session-Resource-To-Remove-List, + PDU-Session-Resource-Required-To-Modify-List, + PDU-Session-Resource-Confirm-Modified-List, + DRB-Status-Item, + DRB-Activity-Item, + Data-Usage-Report-List, + TimeToWait + + +FROM E1AP-IEs + + PrivateIE-Container{}, + ProtocolExtensionContainer{}, + ProtocolIE-Container{}, + ProtocolIE-ContainerList{}, + ProtocolIE-SingleContainer{}, + E1AP-PRIVATE-IES, + E1AP-PROTOCOL-EXTENSION, + E1AP-PROTOCOL-IES + + +FROM E1AP-Containers + + id-Cause, + id-CriticalityDiagnostics, + id-gNB-CU-CP-UE-E1AP-ID, + id-gNB-CU-UP-UE-E1AP-ID, + id-ResetType, + id-UE-associatedLogicalE1-ConnectionItem, + id-UE-associatedLogicalE1-ConnectionListResAck, + id-gNB-CU-UP-ID, + id-gNB-CU-UP-Name, + id-gNB-CU-CP-Name, + id-CNSupport, + id-SupportedPLMNs, + id-SupportedPLMNs-Item, + id-SecurityInformation, + id-UEDLAggregateMaximumBitRate, + id-BearerContextStatusChange, + id-System-BearerContextSetupRequest, + id-System-BearerContextSetupResponse, + id-System-BearerContextModificationRequest, + id-System-BearerContextModificationResponse, + id-System-BearerContextModificationConfirm, + id-System-BearerContextModificationRequired, + id-DRB-Status-List, + id-DRB-Status-Item, + id-DRB-Activity-List, + id-DRB-Activity-Item, + id-Data-Usage-Report-List, + id-TimeToWait, + + maxnoofErrors, + maxnoofSPLMNs, + maxnoofDRBs, + maxnoofIndividualE1ConnectionsToReset + + +FROM E1AP-Constants; + +-- ************************************************************** +-- +-- RESET +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Reset +-- +-- ************************************************************** + +Reset ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {ResetIEs} }, + ... +} + +ResetIEs E1AP-PROTOCOL-IES ::= { + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-ResetType CRITICALITY reject TYPE ResetType PRESENCE mandatory }, + ... +} + +ResetType ::= CHOICE { + e1-Interface ResetAll, + partOfE1-Interface UE-associatedLogicalE1-ConnectionListRes, + ... +} + + +ResetAll ::= ENUMERATED { + reset-all, + ... +} + +UE-associatedLogicalE1-ConnectionListRes ::= SEQUENCE (SIZE(1.. maxnoofIndividualE1ConnectionsToReset)) OF ProtocolIE-SingleContainer { { UE-associatedLogicalE1-ConnectionItemRes } } + +UE-associatedLogicalE1-ConnectionItemRes E1AP-PROTOCOL-IES ::= { + + { ID id-UE-associatedLogicalE1-ConnectionItem CRITICALITY reject TYPE UE-associatedLogicalE1-ConnectionItem PRESENCE mandatory}, + ... +} + +-- ************************************************************** +-- +-- Reset Acknowledge +-- +-- ************************************************************** + +ResetAcknowledge ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {ResetAcknowledgeIEs} }, + ... +} + +ResetAcknowledgeIEs E1AP-PROTOCOL-IES ::= { + { ID id-UE-associatedLogicalE1-ConnectionListResAck CRITICALITY ignore TYPE UE-associatedLogicalE1-ConnectionListResAck PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +UE-associatedLogicalE1-ConnectionListResAck ::= SEQUENCE (SIZE(1.. maxnoofIndividualE1ConnectionsToReset)) OF ProtocolIE-SingleContainer { { UE-associatedLogicalE1-ConnectionItemResAck } } + +UE-associatedLogicalE1-ConnectionItemResAck E1AP-PROTOCOL-IES ::= { + { ID id-UE-associatedLogicalE1-ConnectionItem CRITICALITY ignore TYPE UE-associatedLogicalE1-ConnectionItem PRESENCE mandatory }, + ... +} + + +-- ************************************************************** +-- +-- ERROR INDICATION +-- +-- ************************************************************** + +ErrorIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{ErrorIndication-IEs}}, + ... +} + +ErrorIndication-IEs E1AP-PROTOCOL-IES ::= { + { ID id-gNB-CU-CP-UE-E1AP-ID CRITICALITY ignore TYPE GNB-CU-CP-UE-E1AP-ID PRESENCE optional}| + { ID id-gNB-CU-UP-UE-E1AP-ID CRITICALITY ignore TYPE GNB-CU-UP-UE-E1AP-ID PRESENCE optional}| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE optional}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- GNB-CU-UP E1 SETUP +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- GNB-CU-UP E1 Setup Request +-- +-- ************************************************************** + +GNB-CU-UP-E1SetupRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {GNB-CU-UP-E1SetupRequestIEs} }, + ... +} + +GNB-CU-UP-E1SetupRequestIEs E1AP-PROTOCOL-IES ::= { + { ID id-gNB-CU-UP-ID CRITICALITY reject TYPE GNB-CU-UP-ID PRESENCE mandatory }| + { ID id-gNB-CU-UP-Name CRITICALITY ignore TYPE GNB-CU-UP-Name PRESENCE optional }| + { ID id-CNSupport CRITICALITY reject TYPE CNSupport PRESENCE mandatory }| + { ID id-SupportedPLMNs CRITICALITY reject TYPE SupportedPLMNs-List PRESENCE mandatory }, + ... +} + +SupportedPLMNs-List ::= SEQUENCE (SIZE (1..maxnoofSPLMNs)) OF ProtocolIE-SingleContainer { {SupportedPLMNs-ItemIEs} } + +SupportedPLMNs-ItemIEs E1AP-PROTOCOL-IES ::= { + { ID id-SupportedPLMNs-Item CRITICALITY reject TYPE SupportedPLMNs-Item PRESENCE mandatory } +} + +SupportedPLMNs-Item ::= SEQUENCE { + pLMN-Identity PLMN-Identity, + slice-Support-List Slice-Support-List OPTIONAL, + nR-CGI-Support-List NR-CGI-Support-List OPTIONAL, + qoS-Parameters-Support-List QoS-Parameters-Support-List OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { SupportedPLMNs-ExtIEs } } OPTIONAL, + ... +} + +SupportedPLMNs-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- ************************************************************** +-- +-- GNB-CU-UP E1 Setup Response +-- +-- ************************************************************** + +GNB-CU-UP-E1SetupResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {GNB-CU-UP-E1SetupResponseIEs} }, + ... +} + +GNB-CU-UP-E1SetupResponseIEs + E1AP-PROTOCOL-IES ::= { + { ID id-gNB-CU-CP-Name CRITICALITY ignore TYPE GNB-CU-CP-Name PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- GNB-CU-UP E1 Setup Failure +-- +-- ************************************************************** + +GNB-CU-UP-E1SetupFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {GNB-CU-UP-E1SetupFailureIEs} }, + ... +} + +GNB-CU-UP-E1SetupFailureIEs E1AP-PROTOCOL-IES ::= { + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- GNB-CU-CP E1 SETUP +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- GNB-CU-CP E1 Setup Request +-- +-- ************************************************************** + +GNB-CU-CP-E1SetupRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {GNB-CU-CP-E1SetupRequestIEs} }, + ... +} + +GNB-CU-CP-E1SetupRequestIEs E1AP-PROTOCOL-IES ::= { + { ID id-gNB-CU-CP-Name CRITICALITY ignore TYPE GNB-CU-CP-Name PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- GNB-CU-CP E1 Setup Response +-- +-- ************************************************************** + +GNB-CU-CP-E1SetupResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {GNB-CU-CP-E1SetupResponseIEs} }, + ... +} + +GNB-CU-CP-E1SetupResponseIEs + E1AP-PROTOCOL-IES ::= { + { ID id-gNB-CU-UP-ID CRITICALITY reject TYPE GNB-CU-UP-ID PRESENCE mandatory }| + { ID id-gNB-CU-UP-Name CRITICALITY ignore TYPE GNB-CU-UP-Name PRESENCE optional }| + { ID id-CNSupport CRITICALITY reject TYPE CNSupport PRESENCE mandatory }| + { ID id-SupportedPLMNs CRITICALITY reject TYPE SupportedPLMNs-List PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- GNB-CU-CP E1 Setup Failure +-- +-- ************************************************************** + +GNB-CU-CP-E1SetupFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {GNB-CU-CP-E1SetupFailureIEs} }, + ... +} + +GNB-CU-CP-E1SetupFailureIEs E1AP-PROTOCOL-IES ::= { + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- GNB-CU-UP CONFIGURATION UPDATE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- GNB-CU-UP Configuration Update +-- +-- ************************************************************** + +GNB-CU-UP-ConfigurationUpdate ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {GNB-CU-UP-ConfigurationUpdateIEs} }, + ... +} + +GNB-CU-UP-ConfigurationUpdateIEs E1AP-PROTOCOL-IES ::= { + { ID id-gNB-CU-UP-ID CRITICALITY reject TYPE GNB-CU-UP-ID PRESENCE mandatory }| + { ID id-gNB-CU-UP-Name CRITICALITY ignore TYPE GNB-CU-UP-Name PRESENCE optional }| + { ID id-SupportedPLMNs CRITICALITY reject TYPE SupportedPLMNs-List PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- GNB-CU-UP Configuration Update Acknowledge +-- +-- ************************************************************** + +GNB-CU-UP-ConfigurationUpdateAcknowledge ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {GNB-CU-UP-ConfigurationUpdateAcknowledgeIEs} }, + ... +} + +GNB-CU-UP-ConfigurationUpdateAcknowledgeIEs + E1AP-PROTOCOL-IES ::= { + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- GNB-CU-UP Configuration Update Failure +-- +-- ************************************************************** + +GNB-CU-UP-ConfigurationUpdateFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {GNB-CU-UP-ConfigurationUpdateFailureIEs} }, + ... +} + +GNB-CU-UP-ConfigurationUpdateFailureIEs E1AP-PROTOCOL-IES ::= { + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- GNB-CU-CP CONFIGURATION UPDATE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- GNB-CU-CP Configuration Update +-- +-- ************************************************************** + +GNB-CU-CP-ConfigurationUpdate ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {GNB-CU-CP-ConfigurationUpdateIEs} }, + ... +} + +GNB-CU-CP-ConfigurationUpdateIEs E1AP-PROTOCOL-IES ::= { +-- WS modification: fix a typo +-- { ID id-gNB-CU-CP-Name CRITICALITY ignore TYPE GNB-CU-UP-Name PRESENCE optional }, + { ID id-gNB-CU-CP-Name CRITICALITY ignore TYPE GNB-CU-CP-Name PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- GNB-CU-CP Configuration Update Acknowledge +-- +-- ************************************************************** + +GNB-CU-CP-ConfigurationUpdateAcknowledge ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {GNB-CU-CP-ConfigurationUpdateAcknowledgeIEs} }, + ... +} + +GNB-CU-CP-ConfigurationUpdateAcknowledgeIEs + E1AP-PROTOCOL-IES ::= { + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- GNB-CU-CP Configuration Update Failure +-- +-- ************************************************************** + +GNB-CU-CP-ConfigurationUpdateFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {GNB-CU-CP-ConfigurationUpdateFailureIEs} }, + ... +} + +GNB-CU-CP-ConfigurationUpdateFailureIEs E1AP-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 }, + ... +} + +-- ************************************************************** +-- +-- E1 RELEASE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- E1 Release Request +-- +-- ************************************************************** + +E1ReleaseRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {E1ReleaseRequestIEs} }, + ... +} + +E1ReleaseRequestIEs E1AP-PROTOCOL-IES ::= { + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- E1 Release Response +-- +-- ************************************************************** + +E1ReleaseResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {E1ReleaseResponseIEs} }, + ... +} + +E1ReleaseResponseIEs E1AP-PROTOCOL-IES ::= { + ... +} + +-- ************************************************************** +-- +-- BEARER CONTEXT SETUP +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Bearer Context Setup Request +-- +-- ************************************************************** + +BearerContextSetupRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { BearerContextSetupRequestIEs} }, + ... +} + +BearerContextSetupRequestIEs E1AP-PROTOCOL-IES ::= { + { ID id-gNB-CU-CP-UE-E1AP-ID CRITICALITY reject TYPE GNB-CU-CP-UE-E1AP-ID PRESENCE mandatory }| + { ID id-SecurityInformation CRITICALITY reject TYPE SecurityInformation PRESENCE mandatory }| + { ID id-UEDLAggregateMaximumBitRate CRITICALITY reject TYPE BitRate PRESENCE mandatory }| + { ID id-System-BearerContextSetupRequest CRITICALITY reject TYPE System-BearerContextSetupRequest PRESENCE mandatory }, + ... +} + +System-BearerContextSetupRequest ::= CHOICE { + e-UTRAN-BearerContextSetupRequest EUTRAN-BearerContextSetupRequest, + nG-RAN-BearerContextSetupRequest NG-RAN-BearerContextSetupRequest, + ... +} + +EUTRAN-BearerContextSetupRequest ::= SEQUENCE { + + dRB-To-Setup-List-EUTRAN DRB-To-Setup-List-EUTRAN, + iE-Extensions ProtocolExtensionContainer { { EUTRAN-BearerContextSetupRequest-ExtIEs } } OPTIONAL, + ... +} + +EUTRAN-BearerContextSetupRequest-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +NG-RAN-BearerContextSetupRequest ::= SEQUENCE { + pDU-Session-Resource-To-Setup-List PDU-Session-Resource-To-Setup-List, + iE-Extensions ProtocolExtensionContainer { { NG-RAN-BearerContextSetupRequest-ExtIEs } } OPTIONAL, + ... +} + +NG-RAN-BearerContextSetupRequest-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- ************************************************************** +-- +-- Bearer Context Setup Response +-- +-- ************************************************************** + +BearerContextSetupResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { BearerContextSetupResponseIEs} }, + ... +} + + +BearerContextSetupResponseIEs E1AP-PROTOCOL-IES ::= { + { ID id-gNB-CU-CP-UE-E1AP-ID CRITICALITY reject TYPE GNB-CU-CP-UE-E1AP-ID PRESENCE mandatory }| + { ID id-gNB-CU-UP-UE-E1AP-ID CRITICALITY reject TYPE GNB-CU-UP-UE-E1AP-ID PRESENCE mandatory }| +-- WS modification: fix wrong IE type +-- { ID id-System-BearerContextSetupResponse CRITICALITY ignore TYPE System-BearerContextSetupRequest PRESENCE mandatory }, + { ID id-System-BearerContextSetupResponse CRITICALITY ignore TYPE System-BearerContextSetupResponse PRESENCE mandatory }, + ... +} + +System-BearerContextSetupResponse::= CHOICE { + e-UTRAN-BearerContextSetupResponse EUTRAN-BearerContextSetupResponse, + nG-RAN-BearerContextSetupResponse NG-RAN-BearerContextSetupResponse, + ... +} + +EUTRAN-BearerContextSetupResponse ::= SEQUENCE { + dRB-Setup-List-EUTRAN DRB-Setup-List-EUTRAN, + dRB-Failed-List-EUTRAN DRB-Failed-List-EUTRAN OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { EUTRAN-BearerContextSetupResponse-ExtIEs } } OPTIONAL, + ... +} + +EUTRAN-BearerContextSetupResponse-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +NG-RAN-BearerContextSetupResponse ::= SEQUENCE { + pDU-Session-Resource-Setup-List PDU-Session-Resource-Setup-List, + pDU-Session-Resource-Failed-List PDU-Session-Resource-Failed-List OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { NG-RAN-BearerContextSetupResponse-ExtIEs } } OPTIONAL, + ... +} + +NG-RAN-BearerContextSetupResponse-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- ************************************************************** +-- +-- Bearer Context Setup Failure +-- +-- ************************************************************** + +BearerContextSetupFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { BearerContextSetupFailureIEs} }, + ... +} + +BearerContextSetupFailureIEs E1AP-PROTOCOL-IES ::= { + { ID id-gNB-CU-CP-UE-E1AP-ID CRITICALITY reject TYPE GNB-CU-CP-UE-E1AP-ID PRESENCE mandatory }| + { ID id-gNB-CU-UP-UE-E1AP-ID CRITICALITY ignore TYPE GNB-CU-UP-UE-E1AP-ID PRESENCE optional }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- BEARER CONTEXT MODIFICATION +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Bearer Context Modification Request +-- +-- ************************************************************** + +BearerContextModificationRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { BearerContextModificationRequestIEs} }, + ... +} + +BearerContextModificationRequestIEs E1AP-PROTOCOL-IES ::= { + { ID id-gNB-CU-CP-UE-E1AP-ID CRITICALITY reject TYPE GNB-CU-CP-UE-E1AP-ID PRESENCE mandatory }| + { ID id-gNB-CU-UP-UE-E1AP-ID CRITICALITY reject TYPE GNB-CU-UP-UE-E1AP-ID PRESENCE mandatory }| + { ID id-SecurityInformation CRITICALITY reject TYPE SecurityInformation PRESENCE optional }| + { ID id-UEDLAggregateMaximumBitRate CRITICALITY reject TYPE BitRate PRESENCE optional }| + { ID id-BearerContextStatusChange CRITICALITY reject TYPE BearerContextStatusChange PRESENCE optional }| + { ID id-System-BearerContextModificationRequest CRITICALITY reject TYPE System-BearerContextModificationRequest PRESENCE optional }, + ... +} + +System-BearerContextModificationRequest ::= CHOICE { + e-UTRAN-BearerContextModificationRequest EUTRAN-BearerContextModificationRequest, + nG-RAN-BearerContextModificationRequest NG-RAN-BearerContextModificationRequest, + ... +} + +EUTRAN-BearerContextModificationRequest ::= SEQUENCE { + dRB-To-Setup-List-EUTRAN DRB-To-Setup-List-EUTRAN OPTIONAL, + dRB-To-Modify-List-EUTRAN DRB-To-Modify-List-EUTRAN OPTIONAL, + dRB-To-Remove-List-EUTRAN DRB-To-Remove-List-EUTRAN OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { EUTRAN-BearerContextModificationRequest-ExtIEs } } OPTIONAL, + ... +} + +EUTRAN-BearerContextModificationRequest-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +NG-RAN-BearerContextModificationRequest ::= SEQUENCE { + pDU-Session-Resource-To-Setup-List PDU-Session-Resource-To-Setup-List OPTIONAL, + pDU-Session-Resource-To-Modify-List PDU-Session-Resource-To-Modify-List OPTIONAL, + pDU-Session-Resource-To-Remove-List PDU-Session-Resource-To-Remove-List OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { NG-RAN-BearerContextModificationRequest-ExtIEs } } OPTIONAL, + ... +} + +NG-RAN-BearerContextModificationRequest-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- ************************************************************** +-- +-- Bearer Context Modification Response +-- +-- ************************************************************** + +BearerContextModificationResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { BearerContextModificationResponseIEs} }, + ... +} + + +BearerContextModificationResponseIEs E1AP-PROTOCOL-IES ::= { + { ID id-gNB-CU-CP-UE-E1AP-ID CRITICALITY reject TYPE GNB-CU-CP-UE-E1AP-ID PRESENCE mandatory }| + { ID id-gNB-CU-UP-UE-E1AP-ID CRITICALITY reject TYPE GNB-CU-UP-UE-E1AP-ID PRESENCE mandatory }| + { ID id-System-BearerContextModificationResponse CRITICALITY ignore TYPE System-BearerContextModificationResponse PRESENCE optional }, + ... +} + +System-BearerContextModificationResponse ::= CHOICE { + e-UTRAN-BearerContextModificationResponse EUTRAN-BearerContextModificationResponse, + nG-RAN-BearerContextModificationResponse NG-RAN-BearerContextModificationResponse, + ... +} + +EUTRAN-BearerContextModificationResponse ::= SEQUENCE { + dRB-Setup-List-EUTRAN DRB-Setup-List-EUTRAN OPTIONAL, + dRB-Failed-List-EUTRAN DRB-Failed-List-EUTRAN OPTIONAL, + dRB-Modified-List-EUTRAN DRB-Modified-List-EUTRAN OPTIONAL, + dRB-Failed-To-Modify-List-EUTRAN DRB-Failed-To-Modify-List-EUTRAN OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { EUTRAN-BearerContextModificationResponse-ExtIEs } } OPTIONAL, + ... +} + +EUTRAN-BearerContextModificationResponse-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +NG-RAN-BearerContextModificationResponse ::= SEQUENCE { + pDU-Session-Resource-Setup-List PDU-Session-Resource-Setup-List OPTIONAL, + pDU-Session-Resource-Failed-List PDU-Session-Resource-Failed-List OPTIONAL, + pDU-Session-Resource-Modified-List PDU-Session-Resource-Modified-List OPTIONAL, + pDU-Session-Resource-Failed-To-Modify-List PDU-Session-Resource-Failed-To-Modify-List OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { NG-RAN-BearerContextModificationResponse-ExtIEs } } OPTIONAL, + ... +} + +NG-RAN-BearerContextModificationResponse-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- ************************************************************** +-- +-- Bearer Context Modification Failure +-- +-- ************************************************************** + +BearerContextModificationFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { BearerContextModificationFailureIEs} }, + ... +} + +BearerContextModificationFailureIEs E1AP-PROTOCOL-IES ::= { + { ID id-gNB-CU-CP-UE-E1AP-ID CRITICALITY reject TYPE GNB-CU-CP-UE-E1AP-ID PRESENCE mandatory }| + { ID id-gNB-CU-UP-UE-E1AP-ID CRITICALITY reject TYPE GNB-CU-UP-UE-E1AP-ID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- BEARER CONTEXT MODIFICATION REQUIRED +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Bearer Context Modification Required +-- +-- ************************************************************** + +BearerContextModificationRequired ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { BearerContextModificationRequiredIEs} }, + ... +} + +BearerContextModificationRequiredIEs E1AP-PROTOCOL-IES ::= { + { ID id-gNB-CU-CP-UE-E1AP-ID CRITICALITY reject TYPE GNB-CU-CP-UE-E1AP-ID PRESENCE mandatory }| + { ID id-gNB-CU-UP-UE-E1AP-ID CRITICALITY reject TYPE GNB-CU-UP-UE-E1AP-ID PRESENCE mandatory }| + { ID id-System-BearerContextModificationRequired CRITICALITY reject TYPE System-BearerContextModificationRequired PRESENCE mandatory }, + ... +} + +System-BearerContextModificationRequired ::= CHOICE { + e-UTRAN-BearerContextModificationRequired EUTRAN-BearerContextModificationRequired, + nG-RAN-BearerContextModificationRequired NG-RAN-BearerContextModificationRequired, + ... +} + +EUTRAN-BearerContextModificationRequired ::= SEQUENCE { + dRB-Required-To-Modify-List-EUTRAN DRB-Required-To-Modify-List-EUTRAN OPTIONAL, + dRB-To-Remove-List-EUTRAN DRB-To-Remove-List-EUTRAN OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { EUTRAN-BearerContextModificationRequired-ExtIEs } } OPTIONAL, + ... +} + +EUTRAN-BearerContextModificationRequired-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +NG-RAN-BearerContextModificationRequired ::= SEQUENCE { + pDU-Session-Resource-Required-To-Modify-List PDU-Session-Resource-Required-To-Modify-List OPTIONAL, + pDU-Session-Resource-To-Remove-List PDU-Session-Resource-To-Remove-List OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { NG-RAN-BearerContextModificationRequired-ExtIEs } } OPTIONAL, + ... +} + +NG-RAN-BearerContextModificationRequired-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- ************************************************************** +-- +-- Bearer Context Modification Confirm +-- +-- ************************************************************** + +BearerContextModificationConfirm ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { BearerContextModificationConfirmIEs} }, + ... +} + + +BearerContextModificationConfirmIEs E1AP-PROTOCOL-IES ::= { + { ID id-gNB-CU-CP-UE-E1AP-ID CRITICALITY reject TYPE GNB-CU-CP-UE-E1AP-ID PRESENCE mandatory }| + { ID id-gNB-CU-UP-UE-E1AP-ID CRITICALITY reject TYPE GNB-CU-UP-UE-E1AP-ID PRESENCE mandatory }| + { ID id-System-BearerContextModificationConfirm CRITICALITY ignore TYPE System-BearerContextModificationConfirm PRESENCE optional }, + ... +} + +System-BearerContextModificationConfirm ::= CHOICE { + e-UTRAN-BearerContextModificationConfirm EUTRAN-BearerContextModificationConfirm, + nG-RAN-BearerContextModificationConfirm NG-RAN-BearerContextModificationConfirm, + ... +} + +EUTRAN-BearerContextModificationConfirm ::= SEQUENCE { + dRB-Confirm-Modified-List-EUTRAN DRB-Confirm-Modified-List-EUTRAN OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { EUTRAN-BearerContextModificationConfirm-ExtIEs } } OPTIONAL, + ... +} + +EUTRAN-BearerContextModificationConfirm-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +NG-RAN-BearerContextModificationConfirm ::= SEQUENCE { + pDU-Session-Resource-Confirm-Modified-List PDU-Session-Resource-Confirm-Modified-List OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { NG-RAN-BearerContextModificationConfirm-ExtIEs } } OPTIONAL, + ... +} + +NG-RAN-BearerContextModificationConfirm-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- ************************************************************** +-- +-- BEARER CONTEXT RELEASE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Bearer Context Release Command +-- +-- ************************************************************** + +BearerContextReleaseCommand ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { BearerContextReleaseCommandIEs} }, + ... +} + +BearerContextReleaseCommandIEs E1AP-PROTOCOL-IES ::= { + { ID id-gNB-CU-CP-UE-E1AP-ID CRITICALITY reject TYPE GNB-CU-CP-UE-E1AP-ID PRESENCE mandatory }| + { ID id-gNB-CU-UP-UE-E1AP-ID CRITICALITY reject TYPE GNB-CU-UP-UE-E1AP-ID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- Bearer Context Release Complete +-- +-- ************************************************************** + +BearerContextReleaseComplete ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { BearerContextReleaseCompleteIEs} }, + ... +} + + +BearerContextReleaseCompleteIEs E1AP-PROTOCOL-IES ::= { + { ID id-gNB-CU-CP-UE-E1AP-ID CRITICALITY reject TYPE GNB-CU-CP-UE-E1AP-ID PRESENCE mandatory }| + { ID id-gNB-CU-UP-UE-E1AP-ID CRITICALITY reject TYPE GNB-CU-UP-UE-E1AP-ID PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- BEARER CONTEXT RELEASE REQUEST +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Bearer Context Release Request +-- +-- ************************************************************** + +BearerContextReleaseRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { BearerContextReleaseRequestIEs} }, + ... +} + +BearerContextReleaseRequestIEs E1AP-PROTOCOL-IES ::= { + { ID id-gNB-CU-CP-UE-E1AP-ID CRITICALITY reject TYPE GNB-CU-CP-UE-E1AP-ID PRESENCE mandatory }| + { ID id-gNB-CU-UP-UE-E1AP-ID CRITICALITY reject TYPE GNB-CU-UP-UE-E1AP-ID PRESENCE mandatory }| + { ID id-DRB-Status-List CRITICALITY ignore TYPE DRB-Status-List PRESENCE optional }, + ... +} + +DRB-Status-List ::= SEQUENCE (SIZE(1..maxnoofDRBs)) OF ProtocolIE-SingleContainer { { DRB-Status-ItemIEs} } + +DRB-Status-ItemIEs E1AP-PROTOCOL-IES ::= { + { ID id-DRB-Status-Item CRITICALITY ignore TYPE DRB-Status-Item PRESENCE mandatory}, + ... +} + +-- ************************************************************** +-- +-- BEARER CONTEXT INACTIVITY NOTIFICATION +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Bearer Context Inactivity Notification +-- +-- ************************************************************** + +BearerContextInactivityNotification ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { BearerContextInactivityNotificationIEs } }, + ... +} + +BearerContextInactivityNotificationIEs E1AP-PROTOCOL-IES ::= { + { ID id-gNB-CU-CP-UE-E1AP-ID CRITICALITY reject TYPE GNB-CU-CP-UE-E1AP-ID PRESENCE mandatory }| + { ID id-gNB-CU-UP-UE-E1AP-ID CRITICALITY reject TYPE GNB-CU-UP-UE-E1AP-ID PRESENCE mandatory }| + { ID id-DRB-Activity-List CRITICALITY reject TYPE DRB-Activity-List PRESENCE mandatory }, + ... +} + +DRB-Activity-List ::= SEQUENCE (SIZE(1..maxnoofDRBs)) OF ProtocolIE-SingleContainer { { DRB-Activity-ItemIEs} } + +DRB-Activity-ItemIEs E1AP-PROTOCOL-IES ::= { + { ID id-DRB-Activity-Item CRITICALITY reject TYPE DRB-Activity-Item PRESENCE mandatory}, + ... +} + +-- ************************************************************** +-- +-- DL DATA NOTIFICATION +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- DL Data Notification +-- +-- ************************************************************** + +DLDataNotification ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { DLDataNotificationIEs } }, + ... +} + +DLDataNotificationIEs E1AP-PROTOCOL-IES ::= { + { ID id-gNB-CU-CP-UE-E1AP-ID CRITICALITY reject TYPE GNB-CU-CP-UE-E1AP-ID PRESENCE mandatory }| + { ID id-gNB-CU-UP-UE-E1AP-ID CRITICALITY reject TYPE GNB-CU-UP-UE-E1AP-ID PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- DATA USAGE REPORT +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Data Usage Report +-- +-- ************************************************************** + +DataUsageReport ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { DataUsageReportIEs } }, + ... +} + +DataUsageReportIEs E1AP-PROTOCOL-IES ::= { + { ID id-gNB-CU-CP-UE-E1AP-ID CRITICALITY reject TYPE GNB-CU-CP-UE-E1AP-ID PRESENCE mandatory }| + { ID id-gNB-CU-UP-UE-E1AP-ID CRITICALITY reject TYPE GNB-CU-UP-UE-E1AP-ID PRESENCE mandatory }| + { ID id-Data-Usage-Report-List CRITICALITY ignore TYPE Data-Usage-Report-List PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- PRIVATE MESSAGE +-- +-- ************************************************************** + + +PrivateMessage ::= SEQUENCE { + privateIEs PrivateIE-Container {{PrivateMessage-IEs}}, + ... +} + +PrivateMessage-IEs E1AP-PRIVATE-IES ::= { + ... +} + +END diff --git a/epan/dissectors/asn1/e1ap/E1AP-PDU-Descriptions.asn b/epan/dissectors/asn1/e1ap/E1AP-PDU-Descriptions.asn new file mode 100644 index 0000000000..598ea007c5 --- /dev/null +++ b/epan/dissectors/asn1/e1ap/E1AP-PDU-Descriptions.asn @@ -0,0 +1,290 @@ +-- 3GPP TS 38.463 V15.0.0 (2018-06) +-- ************************************************************** +-- +-- Elementary Procedure definitions +-- +-- ************************************************************** + +E1AP-PDU-Descriptions { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +ngran-access (22) modules (3) e1ap (5) version1 (1) e1ap-PDU-Descriptions (0) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules +-- +-- ************************************************************** + +IMPORTS + Criticality, + ProcedureCode + +FROM E1AP-CommonDataTypes + Reset, + ResetAcknowledge, + ErrorIndication, + GNB-CU-UP-E1SetupRequest, + GNB-CU-UP-E1SetupResponse, + GNB-CU-UP-E1SetupFailure, + GNB-CU-CP-E1SetupRequest, + GNB-CU-CP-E1SetupResponse, + GNB-CU-CP-E1SetupFailure, + GNB-CU-UP-ConfigurationUpdate, + GNB-CU-UP-ConfigurationUpdateAcknowledge, + GNB-CU-UP-ConfigurationUpdateFailure, + GNB-CU-CP-ConfigurationUpdate, + GNB-CU-CP-ConfigurationUpdateAcknowledge, + GNB-CU-CP-ConfigurationUpdateFailure, + BearerContextSetupRequest, + BearerContextSetupResponse, + BearerContextSetupFailure, + BearerContextModificationRequest, + BearerContextModificationResponse, + BearerContextModificationFailure, + BearerContextModificationRequired, + +BearerContextModificationConfirm, + BearerContextReleaseCommand, + BearerContextReleaseComplete, + BearerContextReleaseRequest, + BearerContextInactivityNotification, + DLDataNotification, + DataUsageReport, + E1ReleaseRequest, + E1ReleaseResponse, + PrivateMessage + +FROM E1AP-PDU-Contents + id-reset, + id-errorIndication, + id-gNB-CU-UP-E1Setup, + id-gNB-CU-CP-E1Setup, + id-gNB-CU-UP-ConfigurationUpdate, + id-gNB-CU-CP-ConfigurationUpdate, + id-e1Release, + id-bearerContextSetup, + id-bearerContextModification, + id-bearerContextModificationRequired, + id-bearerContextRelease, + id-bearerContextReleaseRequest, + id-bearerContextInactivityNotification, + id-dLDataNotification, + id-dataUsageReport, + id-privateMessage + +FROM E1AP-Constants; + +-- ************************************************************** +-- +-- Interface Elementary Procedure Class +-- +-- ************************************************************** + +E1AP-ELEMENTARY-PROCEDURE ::= CLASS { + &InitiatingMessage , + &SuccessfulOutcome OPTIONAL, + +&UnsuccessfulOutcome OPTIONAL, + &procedureCode ProcedureCode UNIQUE, + &criticality Criticality DEFAULT ignore +} +WITH SYNTAX { + INITIATING MESSAGE &InitiatingMessage + [SUCCESSFUL OUTCOME &SuccessfulOutcome] + [UNSUCCESSFUL OUTCOME &UnsuccessfulOutcome] + PROCEDURE CODE &procedureCode + [CRITICALITY &criticality] +} + +-- ************************************************************** +-- +-- Interface PDU Definition +-- +-- ************************************************************** + +E1AP-PDU ::= CHOICE { + initiatingMessage InitiatingMessage, + successfulOutcome SuccessfulOutcome, + unsuccessfulOutcome UnsuccessfulOutcome, + ... +} + +InitiatingMessage ::= SEQUENCE { + procedureCode E1AP-ELEMENTARY-PROCEDURE.&procedureCode ({E1AP-ELEMENTARY-PROCEDURES}), + criticality E1AP-ELEMENTARY-PROCEDURE.&criticality ({E1AP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value E1AP-ELEMENTARY-PROCEDURE.&InitiatingMessage ({E1AP-ELEMENTARY-PROCEDURES}{@procedureCode}) +} + +SuccessfulOutcome ::= SEQUENCE { + procedureCode E1AP-ELEMENTARY-PROCEDURE.&procedureCode ({E1AP-ELEMENTARY-PROCEDURES}), + criticality E1AP-ELEMENTARY-PROCEDURE.&criticality ({E1AP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value E1AP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({E1AP-ELEMENTARY-PROCEDURES}{@procedureCode}) +} + +UnsuccessfulOutcome ::= SEQUENCE { + procedureCode E1AP-ELEMENTARY-PROCEDURE.&procedureCode ({E1AP-ELEMENTARY-PROCEDURES}), + criticality E1AP-ELEMENTARY-PROCEDURE.&criticality ({E1AP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value E1AP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({E1AP-ELEMENTARY-PROCEDURES}{@procedureCode}) +} + +-- ************************************************************** +-- +-- Interface Elementary Procedure List +-- +-- ************************************************************** + +E1AP-ELEMENTARY-PROCEDURES E1AP-ELEMENTARY-PROCEDURE ::= { + E1AP-ELEMENTARY-PROCEDURES-CLASS-1 | + E1AP-ELEMENTARY-PROCEDURES-CLASS-2 , + + ... +} + +E1AP-ELEMENTARY-PROCEDURES-CLASS-1 E1AP-ELEMENTARY-PROCEDURE ::= { + reset | + gNB-CU-UP-E1Setup | + gNB-CU-CP-E1Setup | + gNB-CU-UP-ConfigurationUpdate | + gNB-CU-CP-ConfigurationUpdate | + e1Release | + bearerContextSetup | + bearerContextModification | + bearerContextModificationRequired | + bearerContextRelease , + ... +} + +E1AP-ELEMENTARY-PROCEDURES-CLASS-2 E1AP-ELEMENTARY-PROCEDURE ::= { + errorIndication | + bearerContextReleaseRequest | + bearerContextInactivityNotification | + dLDataNotification | + dataUsageReport | + privateMessage , + ... +} + +-- ************************************************************** +-- +-- Interface Elementary Procedures +-- +-- ************************************************************** + +reset E1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE Reset + SUCCESSFUL OUTCOME ResetAcknowledge + PROCEDURE CODE id-reset + CRITICALITY reject +} + +errorIndication E1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE ErrorIndication + PROCEDURE CODE id-errorIndication + CRITICALITY ignore +} + +gNB-CU-UP-E1Setup E1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE GNB-CU-UP-E1SetupRequest + SUCCESSFUL OUTCOME GNB-CU-UP-E1SetupResponse + UNSUCCESSFUL OUTCOME GNB-CU-UP-E1SetupFailure + PROCEDURE CODE id-gNB-CU-UP-E1Setup + CRITICALITY reject +} + +gNB-CU-CP-E1Setup E1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE GNB-CU-CP-E1SetupRequest + SUCCESSFUL OUTCOME GNB-CU-CP-E1SetupResponse + UNSUCCESSFUL OUTCOME GNB-CU-CP-E1SetupFailure + PROCEDURE CODE id-gNB-CU-CP-E1Setup + CRITICALITY reject +} + +gNB-CU-UP-ConfigurationUpdate E1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE GNB-CU-UP-ConfigurationUpdate + SUCCESSFUL OUTCOME GNB-CU-UP-ConfigurationUpdateAcknowledge + UNSUCCESSFUL OUTCOME GNB-CU-UP-ConfigurationUpdateFailure + PROCEDURE CODE id-gNB-CU-UP-ConfigurationUpdate + CRITICALITY reject +} + +gNB-CU-CP-ConfigurationUpdate E1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE GNB-CU-CP-ConfigurationUpdate + SUCCESSFUL OUTCOME GNB-CU-CP-ConfigurationUpdateAcknowledge + UNSUCCESSFUL OUTCOME GNB-CU-CP-ConfigurationUpdateFailure + PROCEDURE CODE id-gNB-CU-CP-ConfigurationUpdate + CRITICALITY reject +} + +e1Release E1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE E1ReleaseRequest + SUCCESSFUL OUTCOME E1ReleaseResponse + PROCEDURE CODE id-e1Release + CRITICALITY reject +} + +bearerContextSetup E1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE BearerContextSetupRequest + SUCCESSFUL OUTCOME BearerContextSetupResponse + UNSUCCESSFUL OUTCOME BearerContextSetupFailure + PROCEDURE CODE id-bearerContextSetup + CRITICALITY reject +} + +bearerContextModification E1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE BearerContextModificationRequest + SUCCESSFUL OUTCOME BearerContextModificationResponse + UNSUCCESSFUL OUTCOME BearerContextModificationFailure + PROCEDURE CODE id-bearerContextModification + CRITICALITY reject +} + +bearerContextModificationRequired E1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE BearerContextModificationRequired + SUCCESSFUL OUTCOME BearerContextModificationConfirm + PROCEDURE CODE id-bearerContextModificationRequired + CRITICALITY reject +} + +bearerContextRelease E1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE BearerContextReleaseCommand + SUCCESSFUL OUTCOME BearerContextReleaseComplete + PROCEDURE CODE id-bearerContextRelease + CRITICALITY reject +} + +bearerContextReleaseRequest E1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE BearerContextReleaseRequest + PROCEDURE CODE id-bearerContextReleaseRequest + CRITICALITY ignore +} + +bearerContextInactivityNotification E1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE BearerContextInactivityNotification + PROCEDURE CODE id-bearerContextInactivityNotification + CRITICALITY ignore +} + +dLDataNotification E1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE DLDataNotification + PROCEDURE CODE id-dLDataNotification + CRITICALITY ignore +} + +dataUsageReport E1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE DataUsageReport + PROCEDURE CODE id-dataUsageReport + CRITICALITY ignore +} + + +privateMessage E1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE PrivateMessage + PROCEDURE CODE id-privateMessage + CRITICALITY ignore +} + +END diff --git a/epan/dissectors/asn1/e1ap/e1ap.cnf b/epan/dissectors/asn1/e1ap/e1ap.cnf new file mode 100644 index 0000000000..7f70c03440 --- /dev/null +++ b/epan/dissectors/asn1/e1ap/e1ap.cnf @@ -0,0 +1,389 @@ +# e1ap.cnf +# e1ap conformation file + +#.OPT +PER +ALIGNED +#.END + +#.USE_VALS_EXT +ProcedureCode +ProtocolIE-ID + +#.EXPORTS + +#.PDU +E1AP-PDU + +#.MAKE_ENUM +ProcedureCode +ProtocolIE-ID + +#.NO_EMIT + +#.OMIT_ASSIGNMENT +# Get rid of unused code warnings +CP-TNL-Information +Presence +ProtocolIE-ContainerList +ProtocolExtensionID +#.END + + +#.TYPE_RENAME +InitiatingMessage/value InitiatingMessage_value +SuccessfulOutcome/value SuccessfulOutcome_value +UnsuccessfulOutcome/value UnsuccessfulOutcome_value + +#.FIELD_RENAME +InitiatingMessage/value initiatingMessagevalue +UnsuccessfulOutcome/value unsuccessfulOutcome_value +SuccessfulOutcome/value successfulOutcome_value +PrivateIE-Field/id private_id +ProtocolExtensionField/id ext_id +#PrivateIE-Field/value private_value +ProtocolIE-Field/value ie_field_value + +#--- Parameterization is not supported in asn2wrs --- + +#ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, E1AP-PROTOCOL-IES : IEsSetParam} ::= +# SEQUENCE (SIZE (lowerBound..upperBound)) OF +# ProtocolIE-Container {{IEsSetParam}} + +# #.FN_PARS ProtocolIE-ContainerList +# MIN_VAL = asn1_param_get_integer(%(ACTX)s,"lowerBound") +# MAX_VAL = asn1_param_get_integer(%(ACTX)s,"upperBound") +# #.FN_HDR ProtocolIE-ContainerList +# static const asn1_par_def_t ProtocolIE_ContainerList_pars[] = { +# { "lowerBound", ASN1_PAR_INTEGER }, +# { "upperBound", ASN1_PAR_INTEGER }, +# { NULL, (asn1_par_type)0 } +# }; +# asn1_stack_frame_check(actx, "ProtocolIE-ContainerList", ProtocolIE_ContainerList_pars); +# #.END + +#.FN_BODY ProtocolIE-ID VAL_PTR=&e1ap_data->protocol_ie_id + e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo); +%(DEFAULT_BODY)s + +#.FN_FTR ProtocolIE-ID + if (tree) { + proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", + val_to_str_ext(e1ap_data->protocol_ie_id, &e1ap_ProtocolIE_ID_vals_ext, "unknown (%d)")); + } + +#.FN_PARS ProtocolIE-Field/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolIEFieldValue + +# #.FN_BODY ProtocolExtensionID VAL_PTR=&e1ap_data->protocol_extension_id +# e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo); +# %(DEFAULT_BODY)s +# +# #.FN_PARS ProtocolExtensionField/extensionValue FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolExtensionFieldExtensionValue + +#.FN_BODY ProcedureCode VAL_PTR = &e1ap_data->procedure_code + e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo); +%(DEFAULT_BODY)s +#.END + +#.FN_PARS InitiatingMessage/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_InitiatingMessageValue +#.FN_HDR InitiatingMessage/value + e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo); + e1ap_data->message_type = INITIATING_MESSAGE; +#.FN_PARS SuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_SuccessfulOutcomeValue +#.FN_HDR SuccessfulOutcome/value + e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo); + e1ap_data->message_type = SUCCESSFUL_OUTCOME; +#.FN_PARS UnsuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_UnsuccessfulOutcomeValue +#.FN_HDR UnsuccessfulOutcome/value + e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo); + e1ap_data->message_type = UNSUCCESSFUL_OUTCOME; +#.END + +#.FN_HDR PrivateIE-ID + e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo); + e1ap_data->obj_id = NULL; + +#.FN_BODY PrivateIE-ID/global FN_VARIANT = _str VAL_PTR = &e1ap_data->obj_id + e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo); +%(DEFAULT_BODY)s + +#.FN_BODY PrivateIE-Field/value + e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo); + if (e1ap_data->obj_id) { + offset = call_per_oid_callback(e1ap_data->obj_id, tvb, actx->pinfo, tree, offset, actx, hf_index); + } else { +%(DEFAULT_BODY)s + } + +#.ASSIGN_VALUE_TO_TYPE # E1AP does not have constants assigned to types, they are pure INTEGER +# ProcedureCode +id-reset ProcedureCode +id-errorIndication ProcedureCode +id-privateMessage ProcedureCode +id-gNB-CU-UP-E1Setup ProcedureCode +id-gNB-CU-CP-E1Setup ProcedureCode +id-gNB-CU-UP-ConfigurationUpdate ProcedureCode +id-gNB-CU-CP-ConfigurationUpdate ProcedureCode +id-e1Release ProcedureCode +id-bearerContextSetup ProcedureCode +id-bearerContextModification ProcedureCode +id-bearerContextModificationRequired ProcedureCode +id-bearerContextRelease ProcedureCode +id-bearerContextReleaseRequest ProcedureCode +id-bearerContextInactivityNotification ProcedureCode +id-dLDataNotification ProcedureCode +id-dataUsageReport ProcedureCode + +# ProtocolIE-ID +id-Cause ProtocolIE-ID +id-CriticalityDiagnostics ProtocolIE-ID +id-gNB-CU-CP-UE-E1AP-ID ProtocolIE-ID +id-gNB-CU-UP-UE-E1AP-ID ProtocolIE-ID +id-ResetType ProtocolIE-ID +id-UE-associatedLogicalE1-ConnectionItem ProtocolIE-ID +id-UE-associatedLogicalE1-ConnectionListResAck ProtocolIE-ID +id-gNB-CU-UP-ID ProtocolIE-ID +id-gNB-CU-UP-Name ProtocolIE-ID +id-gNB-CU-CP-Name ProtocolIE-ID +id-CNSupport ProtocolIE-ID +id-SupportedPLMNs ProtocolIE-ID +id-SupportedPLMNs-Item ProtocolIE-ID +id-TimeToWait ProtocolIE-ID +id-SecurityInformation ProtocolIE-ID +id-UEDLAggregateMaximumBitRate ProtocolIE-ID +id-System-BearerContextSetupRequest ProtocolIE-ID +id-System-BearerContextSetupResponse ProtocolIE-ID +id-BearerContextStatusChange ProtocolIE-ID +id-System-BearerContextModificationRequest ProtocolIE-ID +id-System-BearerContextModificationResponse ProtocolIE-ID +id-System-BearerContextModificationConfirm ProtocolIE-ID +id-System-BearerContextModificationRequired ProtocolIE-ID +id-DRB-Status-List ProtocolIE-ID +id-DRB-Status-Item ProtocolIE-ID +id-DRB-Activity-List ProtocolIE-ID +id-DRB-Activity-Item ProtocolIE-ID +id-Data-Usage-Report-List ProtocolIE-ID +#.END + +#.REGISTER + +#E1AP-PROTOCOL-IES +Cause N e1ap.ies id-Cause +CriticalityDiagnostics N e1ap.ies id-CriticalityDiagnostics +GNB-CU-CP-UE-E1AP-ID N e1ap.ies id-gNB-CU-CP-UE-E1AP-ID +GNB-CU-UP-UE-E1AP-ID N e1ap.ies id-gNB-CU-UP-UE-E1AP-ID +ResetType N e1ap.ies id-ResetType +UE-associatedLogicalE1-ConnectionItem N e1ap.ies id-UE-associatedLogicalE1-ConnectionItem +UE-associatedLogicalE1-ConnectionListResAck N e1ap.ies id-UE-associatedLogicalE1-ConnectionListResAck +GNB-CU-UP-ID N e1ap.ies id-gNB-CU-UP-ID +GNB-CU-UP-Name N e1ap.ies id-gNB-CU-UP-Name +GNB-CU-CP-Name N e1ap.ies id-gNB-CU-CP-Name +CNSupport N e1ap.ies id-CNSupport +SupportedPLMNs-List N e1ap.ies id-SupportedPLMNs +SupportedPLMNs-Item N e1ap.ies id-SupportedPLMNs-Item +TimeToWait N e1ap.ies id-TimeToWait +SecurityInformation N e1ap.ies id-SecurityInformation +BitRate N e1ap.ies id-UEDLAggregateMaximumBitRate +System-BearerContextSetupRequest N e1ap.ies id-System-BearerContextSetupRequest +System-BearerContextSetupResponse N e1ap.ies id-System-BearerContextSetupResponse +BearerContextStatusChange N e1ap.ies id-BearerContextStatusChange +System-BearerContextModificationRequest N e1ap.ies id-System-BearerContextModificationRequest +System-BearerContextModificationResponse N e1ap.ies id-System-BearerContextModificationResponse +System-BearerContextModificationConfirm N e1ap.ies id-System-BearerContextModificationConfirm +System-BearerContextModificationRequired N e1ap.ies id-System-BearerContextModificationRequired +DRB-Status-List N e1ap.ies id-DRB-Status-List +DRB-Status-Item N e1ap.ies id-DRB-Status-Item +DRB-Activity-List N e1ap.ies id-DRB-Activity-List +DRB-Activity-Item N e1ap.ies id-DRB-Activity-Item +Data-Usage-Report-List N e1ap.ies id-Data-Usage-Report-List + +#E1AP-PROTOCOL-EXTENSION + +#E1AP-ELEMENTARY-PROCEDURE +Reset N e1ap.proc.imsg id-reset +ResetAcknowledge N e1ap.proc.sout id-reset + +ErrorIndication N e1ap.proc.imsg id-errorIndication + +GNB-CU-UP-E1SetupRequest N e1ap.proc.imsg id-gNB-CU-UP-E1Setup +GNB-CU-UP-E1SetupResponse N e1ap.proc.sout id-gNB-CU-UP-E1Setup +GNB-CU-UP-E1SetupFailure N e1ap.proc.uout id-gNB-CU-UP-E1Setup + +GNB-CU-CP-E1SetupRequest N e1ap.proc.imsg id-gNB-CU-CP-E1Setup +GNB-CU-CP-E1SetupResponse N e1ap.proc.sout id-gNB-CU-CP-E1Setup +GNB-CU-CP-E1SetupFailure N e1ap.proc.uout id-gNB-CU-CP-E1Setup + +GNB-CU-UP-ConfigurationUpdate N e1ap.proc.imsg id-gNB-CU-UP-ConfigurationUpdate +GNB-CU-UP-ConfigurationUpdateAcknowledge N e1ap.proc.sout id-gNB-CU-UP-ConfigurationUpdate +GNB-CU-UP-ConfigurationUpdateFailure N e1ap.proc.uout id-gNB-CU-UP-ConfigurationUpdate + +GNB-CU-CP-ConfigurationUpdate N e1ap.proc.imsg id-gNB-CU-CP-ConfigurationUpdate +GNB-CU-CP-ConfigurationUpdateAcknowledge N e1ap.proc.sout id-gNB-CU-CP-ConfigurationUpdate +GNB-CU-CP-ConfigurationUpdateFailure N e1ap.proc.uout id-gNB-CU-CP-ConfigurationUpdate + +E1ReleaseRequest N e1ap.proc.imsg id-e1Release +E1ReleaseResponse N e1ap.proc.sout id-e1Release + +BearerContextSetupRequest N e1ap.proc.imsg id-bearerContextSetup +BearerContextSetupResponse N e1ap.proc.sout id-bearerContextSetup +BearerContextSetupFailure N e1ap.proc.uout id-bearerContextSetup + +BearerContextModificationRequest N e1ap.proc.imsg id-bearerContextModification +BearerContextModificationResponse N e1ap.proc.sout id-bearerContextModification +BearerContextModificationFailure N e1ap.proc.uout id-bearerContextModification + +BearerContextModificationRequired N e1ap.proc.imsg id-bearerContextModificationRequired +BearerContextModificationConfirm N e1ap.proc.sout id-bearerContextModificationRequired + +BearerContextReleaseCommand N e1ap.proc.imsg id-bearerContextRelease +BearerContextReleaseComplete N e1ap.proc.sout id-bearerContextRelease + +BearerContextReleaseRequest N e1ap.proc.imsg id-bearerContextReleaseRequest + +BearerContextInactivityNotification N e1ap.proc.imsg id-bearerContextInactivityNotification + +DLDataNotification N e1ap.proc.imsg id-dLDataNotification + +DataUsageReport N e1ap.proc.imsg id-dataUsageReport + +PrivateMessage N e1ap.proc.imsg id-privateMessage + +#.FN_BODY PLMN-Identity VAL_PTR = ¶m_tvb + tvbuff_t *param_tvb = NULL; +%(DEFAULT_BODY)s + if (param_tvb) { + proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_e1ap_PLMN_Identity); + dissect_e212_mcc_mnc(param_tvb, actx->pinfo, subtree, 0, E212_NONE, FALSE); + } + +#.TYPE_ATTR +BitRate DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_bit_sec + +#.FN_BODY DRB-Usage-Report-Item/startTimeStamp VAL_PTR = ×tamp_tvb + tvbuff_t *timestamp_tvb = NULL; +%(DEFAULT_BODY)s + +#.FN_FTR DRB-Usage-Report-Item/startTimeStamp + if (timestamp_tvb) { + proto_item_append_text(actx->created_item, " (%s)", tvb_ntp_fmt_ts_sec(timestamp_tvb, 0)); + } + +#.FN_BODY DRB-Usage-Report-Item/endTimeStamp VAL_PTR = ×tamp_tvb + tvbuff_t *timestamp_tvb = NULL; +%(DEFAULT_BODY)s + +#.FN_FTR DRB-Usage-Report-Item/endTimeStamp + if (timestamp_tvb) { + proto_item_append_text(actx->created_item, " (%s)", tvb_ntp_fmt_ts_sec(timestamp_tvb, 0)); + } + +#.TYPE_ATTR +DRB-Usage-Report-Item/usageCountUL DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_octet_octets + +#.TYPE_ATTR +DRB-Usage-Report-Item/usageCountDL DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_octet_octets + +#.TYPE_ATTR +MaxPacketLossRate DISPLAY = BASE_CUSTOM STRINGS = CF_FUNC(e1ap_MaxPacketLossRate_fmt) + +#.FN_BODY TransportLayerAddress VAL_PTR = ¶m_tvb + tvbuff_t *param_tvb = NULL; +%(DEFAULT_BODY)s + if (param_tvb) { + proto_tree *subtree; + gint tvb_len; + + tvb_len = tvb_reported_length(param_tvb); + subtree = proto_item_add_subtree(actx->created_item, ett_e1ap_TransportLayerAddress); + if (tvb_len == 4) { + /* IPv4 */ + proto_tree_add_item(subtree, hf_e1ap_transportLayerAddressIPv4, param_tvb, 0, 4, ENC_BIG_ENDIAN); + } else if (tvb_len == 16) { + /* IPv6 */ + proto_tree_add_item(subtree, hf_e1ap_transportLayerAddressIPv6, param_tvb, 0, 16, ENC_NA); + } else if (tvb_len == 20) { + /* IPv4 */ + proto_tree_add_item(subtree, hf_e1ap_transportLayerAddressIPv4, param_tvb, 0, 4, ENC_BIG_ENDIAN); + /* IPv6 */ + proto_tree_add_item(subtree, hf_e1ap_transportLayerAddressIPv6, param_tvb, 4, 16, ENC_NA); + } + } + +#.FN_HDR Reset + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Reset"); +#.FN_HDR ResetAcknowledge + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ResetAcknowledge"); +#.FN_HDR ErrorIndication + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ErrorIndication"); +#.FN_HDR GNB-CU-UP-E1SetupRequest + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-UP-E1SetupRequest"); +#.FN_HDR GNB-CU-UP-E1SetupResponse + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-UP-E1SetupResponse"); +#.FN_HDR GNB-CU-UP-E1SetupFailure + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-UP-E1SetupFailure"); +#.FN_HDR GNB-CU-CP-E1SetupRequest + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-CP-E1SetupRequest"); +#.FN_HDR GNB-CU-CP-E1SetupResponse + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-CP-E1SetupResponse"); +#.FN_HDR GNB-CU-CP-E1SetupFailure + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-CP-E1SetupFailure"); +#.FN_HDR GNB-CU-UP-ConfigurationUpdate + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-UP-ConfigurationUpdate"); +#.FN_HDR GNB-CU-UP-ConfigurationUpdateAcknowledge + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-UP-ConfigurationUpdateAcknowledge"); +#.FN_HDR GNB-CU-UP-ConfigurationUpdateFailure + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-UP-ConfigurationUpdateFailure"); +#.FN_HDR GNB-CU-CP-ConfigurationUpdate + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-CP-ConfigurationUpdate"); +#.FN_HDR GNB-CU-CP-ConfigurationUpdateAcknowledge + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-CP-ConfigurationUpdateAcknowledge"); +#.FN_HDR GNB-CU-CP-ConfigurationUpdateFailure + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-CP-ConfigurationUpdateFailure"); +#.FN_HDR E1ReleaseRequest + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E1ReleaseRequest"); +#.FN_HDR E1ReleaseResponse + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E1ReleaseResponse"); +#.FN_HDR BearerContextSetupRequest + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextSetupRequest"); +#.FN_HDR BearerContextSetupResponse + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextSetupResponse"); +#.FN_HDR BearerContextSetupFailure + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextSetupFailure"); +#.FN_HDR BearerContextModificationRequest + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextModificationRequest"); +#.FN_HDR BearerContextModificationResponse + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextModificationResponse"); +#.FN_HDR BearerContextModificationFailure + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextModificationFailure"); +#.FN_HDR BearerContextModificationRequired + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextModificationRequired"); +#.FN_HDR BearerContextModificationConfirm + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextModificationConfirm"); +#.FN_HDR BearerContextReleaseCommand + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextReleaseCommand"); +#.FN_HDR BearerContextReleaseComplete + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextReleaseComplete"); +#.FN_HDR BearerContextReleaseRequest + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextReleaseRequest"); +#.FN_HDR BearerContextInactivityNotification + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextInactivityNotification"); +#.FN_HDR DLDataNotification + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "DLDataNotification"); +#.FN_HDR DataUsageReport + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "DataUsageReport"); +#.FN_HDR PrivateMessage + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "PrivateMessage"); +#.END + +# +# Editor modelines - http://www.wireshark.org/tools/modelines.html +# +# Local variables: +# c-basic-offset: 2 +# tab-width: 8 +# indent-tabs-mode: nil +# End: +# +# vi: set shiftwidth=2 tabstop=8 expandtab: +# :indentSize=2:tabSize=8:noTabs=true: +# diff --git a/epan/dissectors/asn1/e1ap/packet-e1ap-template.c b/epan/dissectors/asn1/e1ap/packet-e1ap-template.c new file mode 100644 index 0000000000..91f819f080 --- /dev/null +++ b/epan/dissectors/asn1/e1ap/packet-e1ap-template.c @@ -0,0 +1,233 @@ +/* packet-e1ap.c + * Routines for E-UTRAN E1 Application Protocol (E1AP) packet dissection + * Copyright 2018, Pascal Quantin <pascal.quantin@gmail.com> + * + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> + * Copyright 1998 Gerald Combs + * + * SPDX-License-Identifier: GPL-2.0-or-later + * + * References: 3GPP TS 38.463 V15.0.0 (2018-06) + */ + +#include "config.h" + +#include <epan/packet.h> + +#include <epan/asn1.h> +#include <epan/sctpppids.h> +#include <epan/proto_data.h> + +#include "packet-per.h" +#include "packet-e212.h" +#include "packet-ntp.h" + +#define PNAME "E1 Application Protocol" +#define PSNAME "E1AP" +#define PFNAME "e1ap" + +// port number not assigned by IANA yet +//#define SCTP_PORT_E1AP 38462 + +void proto_register_e1ap(void); +void proto_reg_handoff_e1ap(void); + +#include "packet-e1ap-val.h" + +/* Initialize the protocol and registered fields */ +static int proto_e1ap = -1; + +static int hf_e1ap_transportLayerAddressIPv4 = -1; +static int hf_e1ap_transportLayerAddressIPv6 = -1; +#include "packet-e1ap-hf.c" + +/* Initialize the subtree pointers */ +static gint ett_e1ap = -1; +static gint ett_e1ap_PLMN_Identity = -1; +static gint ett_e1ap_TransportLayerAddress = -1; +#include "packet-e1ap-ett.c" + +enum{ + INITIATING_MESSAGE, + SUCCESSFUL_OUTCOME, + UNSUCCESSFUL_OUTCOME +}; + +typedef struct { + guint32 message_type; + guint32 procedure_code; + guint32 protocol_ie_id; + guint32 protocol_extension_id; + const char *obj_id; +} e1ap_private_data_t; + +typedef struct { + guint32 message_type; + guint32 ProcedureCode; + guint32 ProtocolIE_ID; + guint32 ProtocolExtensionID; +} e1ap_ctx_t; + +/* Global variables */ +static dissector_handle_t e1ap_handle; + +/* Dissector tables */ +static dissector_table_t e1ap_ies_dissector_table; +static dissector_table_t e1ap_extension_dissector_table; +static dissector_table_t e1ap_proc_imsg_dissector_table; +static dissector_table_t e1ap_proc_sout_dissector_table; +static dissector_table_t e1ap_proc_uout_dissector_table; + +static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); +//static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); +static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); +static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); +static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); + +static void +e1ap_MaxPacketLossRate_fmt(gchar *s, guint32 v) +{ + g_snprintf(s, ITEM_LABEL_LENGTH, "%.1f %% (%u)", (float)v/10, v); +} + +static e1ap_private_data_t* +e1ap_get_private_data(packet_info *pinfo) +{ + e1ap_private_data_t *e1ap_data = (e1ap_private_data_t*)p_get_proto_data(pinfo->pool, pinfo, proto_e1ap, 0); + if (!e1ap_data) { + e1ap_data = wmem_new0(pinfo->pool, e1ap_private_data_t); + p_add_proto_data(pinfo->pool, pinfo, proto_e1ap, 0, e1ap_data); + } + return e1ap_data; +} + +#include "packet-e1ap-fn.c" + +static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) +{ + e1ap_ctx_t e1ap_ctx; + e1ap_private_data_t *e1ap_data = e1ap_get_private_data(pinfo); + + e1ap_ctx.message_type = e1ap_data->message_type; + e1ap_ctx.ProcedureCode = e1ap_data->procedure_code; + e1ap_ctx.ProtocolIE_ID = e1ap_data->protocol_ie_id; + e1ap_ctx.ProtocolExtensionID = e1ap_data->protocol_extension_id; + + return (dissector_try_uint_new(e1ap_ies_dissector_table, e1ap_data->protocol_ie_id, tvb, pinfo, tree, FALSE, &e1ap_ctx)) ? tvb_captured_length(tvb) : 0; +} + +//static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) +//{ +// e1ap_ctx_t e1ap_ctx; +// e1ap_private_data_t *e1ap_data = e1ap_get_private_data(pinfo); +// +// e1ap_ctx.message_type = e1ap_data->message_type; +// e1ap_ctx.ProcedureCode = e1ap_data->procedure_code; +// e1ap_ctx.ProtocolIE_ID = e1ap_data->protocol_ie_id; +// e1ap_ctx.ProtocolExtensionID = e1ap_data->protocol_extension_id; +// +// return (dissector_try_uint_new(e1ap_extension_dissector_table, e1ap_data->protocol_extension_id, tvb, pinfo, tree, FALSE, &e1ap_ctx)) ? tvb_captured_length(tvb) : 0; +//} + +static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) +{ + e1ap_private_data_t *e1ap_data = e1ap_get_private_data(pinfo); + + return (dissector_try_uint_new(e1ap_proc_imsg_dissector_table, e1ap_data->procedure_code, tvb, pinfo, tree, FALSE, data)) ? tvb_captured_length(tvb) : 0; +} + +static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) +{ + e1ap_private_data_t *e1ap_data = e1ap_get_private_data(pinfo); + + return (dissector_try_uint_new(e1ap_proc_sout_dissector_table, e1ap_data->procedure_code, tvb, pinfo, tree, FALSE, data)) ? tvb_captured_length(tvb) : 0; +} + +static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) +{ + e1ap_private_data_t *e1ap_data = e1ap_get_private_data(pinfo); + + return (dissector_try_uint_new(e1ap_proc_uout_dissector_table, e1ap_data->procedure_code, tvb, pinfo, tree, FALSE, data)) ? tvb_captured_length(tvb) : 0; +} + + +static int +dissect_e1ap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_) +{ + proto_item *e1ap_item = NULL; + proto_tree *e1ap_tree = NULL; + + /* make entry in the Protocol column on summary display */ + col_set_str(pinfo->cinfo, COL_PROTOCOL, "E1AP"); + col_clear(pinfo->cinfo, COL_INFO); + + /* create the e1ap protocol tree */ + e1ap_item = proto_tree_add_item(tree, proto_e1ap, tvb, 0, -1, ENC_NA); + e1ap_tree = proto_item_add_subtree(e1ap_item, ett_e1ap); + + dissect_E1AP_PDU_PDU(tvb, pinfo, e1ap_tree, NULL); + return tvb_captured_length(tvb); +} + +void proto_register_e1ap(void) { + + /* List of fields */ + + static hf_register_info hf[] = { + { &hf_e1ap_transportLayerAddressIPv4, + { "IPv4 transportLayerAddress", "e1ap.transportLayerAddressIPv4", + FT_IPv4, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_transportLayerAddressIPv6, + { "IPv6 transportLayerAddress", "e1ap.transportLayerAddressIPv6", + FT_IPv6, BASE_NONE, NULL, 0, + NULL, HFILL }}, +#include "packet-e1ap-hfarr.c" + }; + + /* List of subtrees */ + static gint *ett[] = { + &ett_e1ap, + &ett_e1ap_PLMN_Identity, + &ett_e1ap_TransportLayerAddress, +#include "packet-e1ap-ettarr.c" + }; + + /* Register protocol */ + proto_e1ap = proto_register_protocol(PNAME, PSNAME, PFNAME); + /* Register fields and subtrees */ + proto_register_field_array(proto_e1ap, hf, array_length(hf)); + proto_register_subtree_array(ett, array_length(ett)); + + /* Register dissector */ + e1ap_handle = register_dissector("e1ap", dissect_e1ap, proto_e1ap); + + /* Register dissector tables */ + e1ap_ies_dissector_table = register_dissector_table("e1ap.ies", "E1AP-PROTOCOL-IES", proto_e1ap, FT_UINT32, BASE_DEC); + e1ap_extension_dissector_table = register_dissector_table("e1ap.extension", "E1AP-PROTOCOL-EXTENSION", proto_e1ap, FT_UINT32, BASE_DEC); + e1ap_proc_imsg_dissector_table = register_dissector_table("e1ap.proc.imsg", "E1AP-ELEMENTARY-PROCEDURE InitiatingMessage", proto_e1ap, FT_UINT32, BASE_DEC); + e1ap_proc_sout_dissector_table = register_dissector_table("e1ap.proc.sout", "E1AP-ELEMENTARY-PROCEDURE SuccessfulOutcome", proto_e1ap, FT_UINT32, BASE_DEC); + e1ap_proc_uout_dissector_table = register_dissector_table("e1ap.proc.uout", "E1AP-ELEMENTARY-PROCEDURE UnsuccessfulOutcome", proto_e1ap, FT_UINT32, BASE_DEC); +} + +void +proto_reg_handoff_e1ap(void) +{ + //dissector_add_uint_with_preference("sctp.port", SCTP_PORT_E1AP, e1ap_handle); + dissector_add_uint("sctp.ppi", E1AP_PROTOCOL_ID, e1ap_handle); +#include "packet-e1ap-dis-tab.c" +} + +/* + * Editor modelines + * + * Local Variables: + * c-basic-offset: 2 + * tab-width: 8 + * indent-tabs-mode: nil + * End: + * + * ex: set shiftwidth=2 tabstop=8 expandtab: + * :indentSize=2:tabSize=8:noTabs=true: + */ diff --git a/epan/dissectors/packet-e1ap.c b/epan/dissectors/packet-e1ap.c new file mode 100644 index 0000000000..ee910cdcb7 --- /dev/null +++ b/epan/dissectors/packet-e1ap.c @@ -0,0 +1,7102 @@ +/* Do not modify this file. Changes will be overwritten. */ +/* Generated automatically by the ASN.1 to Wireshark dissector compiler */ +/* packet-e1ap.c */ +/* asn2wrs.py -p e1ap -c ./e1ap.cnf -s ./packet-e1ap-template -D . -O ../.. E1AP-CommonDataTypes.asn E1AP-Constants.asn E1AP-Containers.asn E1AP-IEs.asn E1AP-PDU-Contents.asn E1AP-PDU-Descriptions.asn */ + +/* Input file: packet-e1ap-template.c */ + +#line 1 "./asn1/e1ap/packet-e1ap-template.c" +/* packet-e1ap.c + * Routines for E-UTRAN E1 Application Protocol (E1AP) packet dissection + * Copyright 2018, Pascal Quantin <pascal.quantin@gmail.com> + * + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> + * Copyright 1998 Gerald Combs + * + * SPDX-License-Identifier: GPL-2.0-or-later + * + * References: 3GPP TS 38.463 V15.0.0 (2018-06) + */ + +#include "config.h" + +#include <epan/packet.h> + +#include <epan/asn1.h> +#include <epan/sctpppids.h> +#include <epan/proto_data.h> + +#include "packet-per.h" +#include "packet-e212.h" +#include "packet-ntp.h" + +#define PNAME "E1 Application Protocol" +#define PSNAME "E1AP" +#define PFNAME "e1ap" + +// port number not assigned by IANA yet +//#define SCTP_PORT_E1AP 38462 + +void proto_register_e1ap(void); +void proto_reg_handoff_e1ap(void); + + +/*--- Included file: packet-e1ap-val.h ---*/ +#line 1 "./asn1/e1ap/packet-e1ap-val.h" +#define maxPrivateIEs 65535 +#define maxProtocolExtensions 65535 +#define maxProtocolIEs 65535 +#define maxnoofErrors 256 +#define maxnoofSPLMNs 6 +#define maxnoofSliceItems 1024 +#define maxnoofIndividualE1ConnectionsToReset 65536 +#define maxnoofEUTRANQOSParameters 256 +#define maxnoofNGRANQOSParameters 256 +#define maxnoofDRBs 32 +#define maxnoofNRCGI 512 +#define maxnoofPDUSessionResource 256 +#define maxnoofQoSFlows 64 +#define maxnoofUPParameters 4 +#define maxnoofCellGroups 4 +#define maxnooftimeperiods 2 + +typedef enum _ProcedureCode_enum { + id_reset = 0, + id_errorIndication = 1, + id_privateMessage = 2, + id_gNB_CU_UP_E1Setup = 3, + id_gNB_CU_CP_E1Setup = 4, + id_gNB_CU_UP_ConfigurationUpdate = 5, + id_gNB_CU_CP_ConfigurationUpdate = 6, + id_e1Release = 7, + id_bearerContextSetup = 8, + id_bearerContextModification = 9, + id_bearerContextModificationRequired = 10, + id_bearerContextRelease = 11, + id_bearerContextReleaseRequest = 12, + id_bearerContextInactivityNotification = 13, + id_dLDataNotification = 14, + id_dataUsageReport = 15 +} ProcedureCode_enum; + +typedef enum _ProtocolIE_ID_enum { + id_Cause = 0, + id_CriticalityDiagnostics = 1, + id_gNB_CU_CP_UE_E1AP_ID = 2, + id_gNB_CU_UP_UE_E1AP_ID = 3, + id_ResetType = 4, + id_UE_associatedLogicalE1_ConnectionItem = 5, + id_UE_associatedLogicalE1_ConnectionListResAck = 6, + id_gNB_CU_UP_ID = 7, + id_gNB_CU_UP_Name = 8, + id_gNB_CU_CP_Name = 9, + id_CNSupport = 10, + id_SupportedPLMNs = 11, + id_SupportedPLMNs_Item = 12, + id_TimeToWait = 13, + id_SecurityInformation = 14, + id_UEDLAggregateMaximumBitRate = 15, + id_System_BearerContextSetupRequest = 16, + id_System_BearerContextSetupResponse = 17, + id_BearerContextStatusChange = 18, + id_System_BearerContextModificationRequest = 19, + id_System_BearerContextModificationResponse = 20, + id_System_BearerContextModificationConfirm = 21, + id_System_BearerContextModificationRequired = 22, + id_DRB_Status_List = 23, + id_DRB_Status_Item = 24, + id_DRB_Activity_List = 25, + id_DRB_Activity_Item = 26, + id_Data_Usage_Report_List = 27 +} ProtocolIE_ID_enum; + +/*--- End of included file: packet-e1ap-val.h ---*/ +#line 37 "./asn1/e1ap/packet-e1ap-template.c" + +/* Initialize the protocol and registered fields */ +static int proto_e1ap = -1; + +static int hf_e1ap_transportLayerAddressIPv4 = -1; +static int hf_e1ap_transportLayerAddressIPv6 = -1; + +/*--- Included file: packet-e1ap-hf.c ---*/ +#line 1 "./asn1/e1ap/packet-e1ap-hf.c" +static int hf_e1ap_BearerContextStatusChange_PDU = -1; /* BearerContextStatusChange */ +static int hf_e1ap_BitRate_PDU = -1; /* BitRate */ +static int hf_e1ap_Cause_PDU = -1; /* Cause */ +static int hf_e1ap_CNSupport_PDU = -1; /* CNSupport */ +static int hf_e1ap_CriticalityDiagnostics_PDU = -1; /* CriticalityDiagnostics */ +static int hf_e1ap_Data_Usage_Report_List_PDU = -1; /* Data_Usage_Report_List */ +static int hf_e1ap_DRB_Activity_Item_PDU = -1; /* DRB_Activity_Item */ +static int hf_e1ap_DRB_Status_Item_PDU = -1; /* DRB_Status_Item */ +static int hf_e1ap_GNB_CU_CP_Name_PDU = -1; /* GNB_CU_CP_Name */ +static int hf_e1ap_GNB_CU_CP_UE_E1AP_ID_PDU = -1; /* GNB_CU_CP_UE_E1AP_ID */ +static int hf_e1ap_GNB_CU_UP_ID_PDU = -1; /* GNB_CU_UP_ID */ +static int hf_e1ap_GNB_CU_UP_Name_PDU = -1; /* GNB_CU_UP_Name */ +static int hf_e1ap_GNB_CU_UP_UE_E1AP_ID_PDU = -1; /* GNB_CU_UP_UE_E1AP_ID */ +static int hf_e1ap_SecurityInformation_PDU = -1; /* SecurityInformation */ +static int hf_e1ap_TimeToWait_PDU = -1; /* TimeToWait */ +static int hf_e1ap_UE_associatedLogicalE1_ConnectionItem_PDU = -1; /* UE_associatedLogicalE1_ConnectionItem */ +static int hf_e1ap_Reset_PDU = -1; /* Reset */ +static int hf_e1ap_ResetType_PDU = -1; /* ResetType */ +static int hf_e1ap_ResetAcknowledge_PDU = -1; /* ResetAcknowledge */ +static int hf_e1ap_UE_associatedLogicalE1_ConnectionListResAck_PDU = -1; /* UE_associatedLogicalE1_ConnectionListResAck */ +static int hf_e1ap_ErrorIndication_PDU = -1; /* ErrorIndication */ +static int hf_e1ap_GNB_CU_UP_E1SetupRequest_PDU = -1; /* GNB_CU_UP_E1SetupRequest */ +static int hf_e1ap_SupportedPLMNs_List_PDU = -1; /* SupportedPLMNs_List */ +static int hf_e1ap_SupportedPLMNs_Item_PDU = -1; /* SupportedPLMNs_Item */ +static int hf_e1ap_GNB_CU_UP_E1SetupResponse_PDU = -1; /* GNB_CU_UP_E1SetupResponse */ +static int hf_e1ap_GNB_CU_UP_E1SetupFailure_PDU = -1; /* GNB_CU_UP_E1SetupFailure */ +static int hf_e1ap_GNB_CU_CP_E1SetupRequest_PDU = -1; /* GNB_CU_CP_E1SetupRequest */ +static int hf_e1ap_GNB_CU_CP_E1SetupResponse_PDU = -1; /* GNB_CU_CP_E1SetupResponse */ +static int hf_e1ap_GNB_CU_CP_E1SetupFailure_PDU = -1; /* GNB_CU_CP_E1SetupFailure */ +static int hf_e1ap_GNB_CU_UP_ConfigurationUpdate_PDU = -1; /* GNB_CU_UP_ConfigurationUpdate */ +static int hf_e1ap_GNB_CU_UP_ConfigurationUpdateAcknowledge_PDU = -1; /* GNB_CU_UP_ConfigurationUpdateAcknowledge */ +static int hf_e1ap_GNB_CU_UP_ConfigurationUpdateFailure_PDU = -1; /* GNB_CU_UP_ConfigurationUpdateFailure */ +static int hf_e1ap_GNB_CU_CP_ConfigurationUpdate_PDU = -1; /* GNB_CU_CP_ConfigurationUpdate */ +static int hf_e1ap_GNB_CU_CP_ConfigurationUpdateAcknowledge_PDU = -1; /* GNB_CU_CP_ConfigurationUpdateAcknowledge */ +static int hf_e1ap_GNB_CU_CP_ConfigurationUpdateFailure_PDU = -1; /* GNB_CU_CP_ConfigurationUpdateFailure */ +static int hf_e1ap_E1ReleaseRequest_PDU = -1; /* E1ReleaseRequest */ +static int hf_e1ap_E1ReleaseResponse_PDU = -1; /* E1ReleaseResponse */ +static int hf_e1ap_BearerContextSetupRequest_PDU = -1; /* BearerContextSetupRequest */ +static int hf_e1ap_System_BearerContextSetupRequest_PDU = -1; /* System_BearerContextSetupRequest */ +static int hf_e1ap_BearerContextSetupResponse_PDU = -1; /* BearerContextSetupResponse */ +static int hf_e1ap_System_BearerContextSetupResponse_PDU = -1; /* System_BearerContextSetupResponse */ +static int hf_e1ap_BearerContextSetupFailure_PDU = -1; /* BearerContextSetupFailure */ +static int hf_e1ap_BearerContextModificationRequest_PDU = -1; /* BearerContextModificationRequest */ +static int hf_e1ap_System_BearerContextModificationRequest_PDU = -1; /* System_BearerContextModificationRequest */ +static int hf_e1ap_BearerContextModificationResponse_PDU = -1; /* BearerContextModificationResponse */ +static int hf_e1ap_System_BearerContextModificationResponse_PDU = -1; /* System_BearerContextModificationResponse */ +static int hf_e1ap_BearerContextModificationFailure_PDU = -1; /* BearerContextModificationFailure */ +static int hf_e1ap_BearerContextModificationRequired_PDU = -1; /* BearerContextModificationRequired */ +static int hf_e1ap_System_BearerContextModificationRequired_PDU = -1; /* System_BearerContextModificationRequired */ +static int hf_e1ap_BearerContextModificationConfirm_PDU = -1; /* BearerContextModificationConfirm */ +static int hf_e1ap_System_BearerContextModificationConfirm_PDU = -1; /* System_BearerContextModificationConfirm */ +static int hf_e1ap_BearerContextReleaseCommand_PDU = -1; /* BearerContextReleaseCommand */ +static int hf_e1ap_BearerContextReleaseComplete_PDU = -1; /* BearerContextReleaseComplete */ +static int hf_e1ap_BearerContextReleaseRequest_PDU = -1; /* BearerContextReleaseRequest */ +static int hf_e1ap_DRB_Status_List_PDU = -1; /* DRB_Status_List */ +static int hf_e1ap_BearerContextInactivityNotification_PDU = -1; /* BearerContextInactivityNotification */ +static int hf_e1ap_DRB_Activity_List_PDU = -1; /* DRB_Activity_List */ +static int hf_e1ap_DLDataNotification_PDU = -1; /* DLDataNotification */ +static int hf_e1ap_DataUsageReport_PDU = -1; /* DataUsageReport */ +static int hf_e1ap_PrivateMessage_PDU = -1; /* PrivateMessage */ +static int hf_e1ap_E1AP_PDU_PDU = -1; /* E1AP_PDU */ +static int hf_e1ap_local = -1; /* INTEGER_0_maxPrivateIEs */ +static int hf_e1ap_global = -1; /* T_global */ +static int hf_e1ap_ProtocolIE_Container_item = -1; /* ProtocolIE_Field */ +static int hf_e1ap_id = -1; /* ProtocolIE_ID */ +static int hf_e1ap_criticality = -1; /* Criticality */ +static int hf_e1ap_ie_field_value = -1; /* T_ie_field_value */ +static int hf_e1ap_ProtocolExtensionContainer_item = -1; /* ProtocolExtensionField */ +static int hf_e1ap_ext_id = -1; /* ProtocolIE_ID */ +static int hf_e1ap_extensionValue = -1; /* T_extensionValue */ +static int hf_e1ap_PrivateIE_Container_item = -1; /* PrivateIE_Field */ +static int hf_e1ap_private_id = -1; /* PrivateIE_ID */ +static int hf_e1ap_value = -1; /* T_value */ +static int hf_e1ap_radioNetwork = -1; /* CauseRadioNetwork */ +static int hf_e1ap_transport = -1; /* CauseTransport */ +static int hf_e1ap_protocol = -1; /* CauseProtocol */ +static int hf_e1ap_misc = -1; /* CauseMisc */ +static int hf_e1ap_Cell_Group_Information_item = -1; /* Cell_Group_Information_Item */ +static int hf_e1ap_cell_Group_ID = -1; /* Cell_Gorup_ID */ +static int hf_e1ap_uL_Configuration = -1; /* UL_Configuration */ +static int hf_e1ap_dL_TX_Stop = -1; /* DL_TX_Stop */ +static int hf_e1ap_rAT_Type = -1; /* RAT_Type */ +static int hf_e1ap_iE_Extensions = -1; /* ProtocolExtensionContainer */ +static int hf_e1ap_procedureCode = -1; /* ProcedureCode */ +static int hf_e1ap_triggeringMessage = -1; /* TriggeringMessage */ +static int hf_e1ap_procedureCriticality = -1; /* Criticality */ +static int hf_e1ap_iEsCriticalityDiagnostics = -1; /* CriticalityDiagnostics_IE_List */ +static int hf_e1ap_CriticalityDiagnostics_IE_List_item = -1; /* CriticalityDiagnostics_IE_List_item */ +static int hf_e1ap_iECriticality = -1; /* Criticality */ +static int hf_e1ap_iE_ID = -1; /* ProtocolIE_ID */ +static int hf_e1ap_typeOfError = -1; /* TypeOfError */ +static int hf_e1ap_data_Forwarding_Request = -1; /* Data_Forwarding_Request */ +static int hf_e1ap_uL_Data_Forwarding = -1; /* UP_TNL_Information */ +static int hf_e1ap_dL_Data_Forwarding = -1; /* UP_TNL_Information */ +static int hf_e1ap_Data_Usage_Report_List_item = -1; /* Data_Usage_Report_Item */ +static int hf_e1ap_dRB_ID = -1; /* DRB_ID */ +static int hf_e1ap_dRB_Usage_Report_List = -1; /* DRB_Usage_Report_List */ +static int hf_e1ap_dRB_Activity = -1; /* DRB_Acivity */ +static int hf_e1ap_DRB_Confirm_Modified_List_EUTRAN_item = -1; /* DRB_Confirm_Modified_Item_EUTRAN */ +static int hf_e1ap_cell_Group_Information = -1; /* Cell_Group_Information */ +static int hf_e1ap_DRB_Confirm_Modified_List_NG_RAN_item = -1; /* DRB_Confirm_Modified_Item_NG_RAN */ +static int hf_e1ap_DRB_Failed_List_EUTRAN_item = -1; /* DRB_Failed_Item_EUTRAN */ +static int hf_e1ap_cause = -1; /* Cause */ +static int hf_e1ap_DRB_Failed_List_NG_RAN_item = -1; /* DRB_Failed_Item_NG_RAN */ +static int hf_e1ap_DRB_Failed_To_Modify_List_EUTRAN_item = -1; /* DRB_Failed_To_Modify_Item_EUTRAN */ +static int hf_e1ap_DRB_Failed_To_Modify_List_NG_RAN_item = -1; /* DRB_Failed_To_Modify_Item_NG_RAN */ +static int hf_e1ap_DRB_Modified_List_EUTRAN_item = -1; /* DRB_Modified_Item_EUTRAN */ +static int hf_e1ap_pDCP_UL_Count = -1; /* PDCP_Count */ +static int hf_e1ap_pDCP_DL_Count = -1; /* PDCP_Count */ +static int hf_e1ap_uL_UP_Transport_Parameters = -1; /* UP_Parameters */ +static int hf_e1ap_DRB_Modified_List_NG_RAN_item = -1; /* DRB_Modified_Item_NG_RAN */ +static int hf_e1ap_flow_Setup_List = -1; /* QoS_Flow_List */ +static int hf_e1ap_flow_Failed_List = -1; /* QoS_Flow_Failed_List */ +static int hf_e1ap_DRB_Required_To_Modify_List_EUTRAN_item = -1; /* DRB_Required_To_Modify_Item_EUTRAN */ +static int hf_e1ap_s1_DL_UP_TNL_Information = -1; /* UP_TNL_Information */ +static int hf_e1ap_data_Forwarding_Information_Response = -1; /* Data_Forwarding_Information_Response */ +static int hf_e1ap_gNB_CU_UP_CellGroupRelatedConfiguration = -1; /* GNB_CU_UP_CellGroupRelatedConfiguration */ +static int hf_e1ap_DRB_Required_To_Modify_List_NG_RAN_item = -1; /* DRB_Required_To_Modify_Item_NG_RAN */ +static int hf_e1ap_flow_To_Remove = -1; /* QoS_Flow_List */ +static int hf_e1ap_DRB_Setup_List_EUTRAN_item = -1; /* DRB_Setup_Item_EUTRAN */ +static int hf_e1ap_DRB_Setup_List_NG_RAN_item = -1; /* DRB_Setup_Item_NG_RAN */ +static int hf_e1ap_dRB_data_Forwarding_Information_Response = -1; /* Data_Forwarding_Information_Response */ +static int hf_e1ap_DRB_To_Modify_List_EUTRAN_item = -1; /* DRB_To_Modify_Item_EUTRAN */ +static int hf_e1ap_pDCP_Configuration = -1; /* PDCP_Configuration */ +static int hf_e1ap_eUTRAN_QoS = -1; /* EUTRAN_QoS */ +static int hf_e1ap_s1_UL_UP_TNL_Information = -1; /* UP_TNL_Information */ +static int hf_e1ap_data_Forwarding_Information_Request = -1; /* Data_Forwarding_Information_Request */ +static int hf_e1ap_pDCP_Count_Request = -1; /* PDCP_Count_Request */ +static int hf_e1ap_dL_UP_Parameters = -1; /* UP_Parameters */ +static int hf_e1ap_cell_Group_To_Add = -1; /* Cell_Group_Information */ +static int hf_e1ap_cell_Group_To_Modify = -1; /* Cell_Group_Information */ +static int hf_e1ap_cell_Group_To_Remove = -1; /* Cell_Group_Information */ +static int hf_e1ap_DRB_To_Modify_List_NG_RAN_item = -1; /* DRB_To_Modify_Item_NG_RAN */ +static int hf_e1ap_sDAP_Configuration = -1; /* SDAP_Configuration */ +static int hf_e1ap_dRB_Data_Forwarding_Information_Request = -1; /* Data_Forwarding_Information_Request */ +static int hf_e1ap_flow_Mapping_Information = -1; /* QoS_Flow_QoS_Parameter_List */ +static int hf_e1ap_DRB_To_Remove_List_EUTRAN_item = -1; /* DRB_To_Remove_Item_EUTRAN */ +static int hf_e1ap_DRB_To_Remove_List_NG_RAN_item = -1; /* DRB_To_Remove_Item_NG_RAN */ +static int hf_e1ap_DRB_To_Setup_List_EUTRAN_item = -1; /* DRB_To_Setup_Item_EUTRAN */ +static int hf_e1ap_DRB_To_Setup_List_NG_RAN_item = -1; /* DRB_To_Setup_Item_NG_RAN */ +static int hf_e1ap_DRB_Usage_Report_List_item = -1; /* DRB_Usage_Report_Item */ +static int hf_e1ap_startTimeStamp = -1; /* T_startTimeStamp */ +static int hf_e1ap_endTimeStamp = -1; /* T_endTimeStamp */ +static int hf_e1ap_usageCountUL = -1; /* INTEGER_0_18446744073709551615 */ +static int hf_e1ap_usageCountDL = -1; /* INTEGER_0_18446744073709551615 */ +static int hf_e1ap_qoSPriorityLevel = -1; /* INTEGER_1_127 */ +static int hf_e1ap_packetDelayBudget = -1; /* PacketDelayBudget */ +static int hf_e1ap_packetErrorRate = -1; /* PacketErrorRate */ +static int hf_e1ap_delayCritical = -1; /* T_delayCritical */ +static int hf_e1ap_averagingWindow = -1; /* AveragingWindow */ +static int hf_e1ap_maxDataBurstVolume = -1; /* MaxDataBurstVolume */ +static int hf_e1ap_priorityLevel = -1; /* PriorityLevel */ +static int hf_e1ap_pre_emptionCapability = -1; /* Pre_emptionCapability */ +static int hf_e1ap_pre_emptionVulnerability = -1; /* Pre_emptionVulnerability */ +static int hf_e1ap_EUTRAN_QoS_Support_List_item = -1; /* EUTRAN_QoS_Support_Item */ +static int hf_e1ap_qCI = -1; /* QCI */ +static int hf_e1ap_eUTRANallocationAndRetentionPriority = -1; /* EUTRANAllocationAndRetentionPriority */ +static int hf_e1ap_gbrQosInformation = -1; /* GBR_QosInformation */ +static int hf_e1ap_GNB_CU_UP_CellGroupRelatedConfiguration_item = -1; /* GNB_CU_UP_CellGroupRelatedConfiguration_Item */ +static int hf_e1ap_uP_TNL_Information = -1; /* UP_TNL_Information */ +static int hf_e1ap_e_RAB_MaximumBitrateDL = -1; /* BitRate */ +static int hf_e1ap_e_RAB_MaximumBitrateUL = -1; /* BitRate */ +static int hf_e1ap_e_RAB_GuaranteedBitrateDL = -1; /* BitRate */ +static int hf_e1ap_e_RAB_GuaranteedBitrateUL = -1; /* BitRate */ +static int hf_e1ap_maxFlowBitRateDownlink = -1; /* BitRate */ +static int hf_e1ap_maxFlowBitRateUplink = -1; /* BitRate */ +static int hf_e1ap_guaranteedFlowBitRateDownlink = -1; /* BitRate */ +static int hf_e1ap_guaranteedFlowBitRateUplink = -1; /* BitRate */ +static int hf_e1ap_notificationControl = -1; /* T_notificationControl */ +static int hf_e1ap_maxPacketLossRateDownlink = -1; /* MaxPacketLossRate */ +static int hf_e1ap_maxPacketLossRateUplink = -1; /* MaxPacketLossRate */ +static int hf_e1ap_transportLayerAddress = -1; /* TransportLayerAddress */ +static int hf_e1ap_gTP_TEID = -1; /* GTP_TEID */ +static int hf_e1ap_NG_RAN_QoS_Support_List_item = -1; /* NG_RAN_QoS_Support_Item */ +static int hf_e1ap_non_Dynamic5QIDescriptor = -1; /* Non_Dynamic5QIDescriptor */ +static int hf_e1ap_fiveQI = -1; /* INTEGER_0_255_ */ +static int hf_e1ap_qoSPriorityLevel_01 = -1; /* INTEGER_1_127_ */ +static int hf_e1ap_pLMN_Identity = -1; /* PLMN_Identity */ +static int hf_e1ap_nR_Cell_Identity = -1; /* NR_Cell_Identity */ +static int hf_e1ap_NR_CGI_Support_List_item = -1; /* NR_CGI_Support_Item */ +static int hf_e1ap_nR_CGI = -1; /* NR_CGI */ +static int hf_e1ap_pDCP_SN_Size = -1; /* PDCP_SN_Size */ +static int hf_e1ap_rLC_Mode = -1; /* RLC_Mode */ +static int hf_e1ap_rOHC_Parameters = -1; /* ROHC_Parameters */ +static int hf_e1ap_t_ReorderingTimer = -1; /* T_ReorderingTimer */ +static int hf_e1ap_discardTimer = -1; /* DiscardTimer */ +static int hf_e1ap_uLDataSplitThreshold = -1; /* ULDataSplitThreshold */ +static int hf_e1ap_pDCP_Duplication = -1; /* PDCP_Duplication */ +static int hf_e1ap_pDCP_SN = -1; /* PDCP_SN */ +static int hf_e1ap_hFN = -1; /* HFN */ +static int hf_e1ap_PDU_Session_Resource_Confirm_Modified_List_item = -1; /* PDU_Session_Resource_Confirm_Modified_Item */ +static int hf_e1ap_pDU_Session_ID = -1; /* PDU_Session_ID */ +static int hf_e1ap_dRB_Confirm_Modified_List_NG_RAN = -1; /* DRB_Confirm_Modified_List_NG_RAN */ +static int hf_e1ap_PDU_Session_Resource_Failed_List_item = -1; /* PDU_Session_Resource_Failed_Item */ +static int hf_e1ap_casue = -1; /* Cause */ +static int hf_e1ap_PDU_Session_Resource_Failed_To_Modify_List_item = -1; /* PDU_Session_Resource_Failed_To_Modify_Item */ +static int hf_e1ap_PDU_Session_Resource_Modified_List_item = -1; /* PDU_Session_Resource_Modified_Item */ +static int hf_e1ap_dRB_Setup_List_NG_RAN = -1; /* DRB_Setup_List_NG_RAN */ +static int hf_e1ap_dRB_Failed_List_NG_RAN = -1; /* DRB_Failed_List_NG_RAN */ +static int hf_e1ap_dRB_Modified_List_NG_RAN = -1; /* DRB_Modified_List_NG_RAN */ +static int hf_e1ap_dRB_Failed_To_Modify_List_NG_RAN = -1; /* DRB_Failed_To_Modify_List_NG_RAN */ +static int hf_e1ap_dRB_To_Remove_List_NG_RAN = -1; /* DRB_To_Remove_List_NG_RAN */ +static int hf_e1ap_PDU_Session_Resource_Required_To_Modify_List_item = -1; /* PDU_Session_Resource_Required_To_Modify_Item */ +static int hf_e1ap_nG_DL_UP_TNL_Information = -1; /* UP_TNL_Information */ +static int hf_e1ap_pDU_Session_Data_Forwarding_Information_Response = -1; /* Data_Forwarding_Information_Response */ +static int hf_e1ap_dRB_Required_To_Modify_List_NG_RAN = -1; /* DRB_Required_To_Modify_List_NG_RAN */ +static int hf_e1ap_PDU_Session_Resource_Setup_List_item = -1; /* PDU_Session_Resource_Setup_Item */ +static int hf_e1ap_PDU_Session_Resource_To_Modify_List_item = -1; /* PDU_Session_Resource_To_Modify_Item */ +static int hf_e1ap_pDU_Session_Type = -1; /* PDU_Session_Type */ +static int hf_e1ap_sNSSAI = -1; /* SNSSAI */ +static int hf_e1ap_securityIndication = -1; /* SecurityIndication */ +static int hf_e1ap_pDU_Session_Resource_AMBR = -1; /* BitRate */ +static int hf_e1ap_nG_UL_UP_TNL_Information = -1; /* UP_TNL_Information */ +static int hf_e1ap_pDU_Session_Data_Forwarding_Information_Request = -1; /* Data_Forwarding_Information_Request */ +static int hf_e1ap_dRB_To_Setup_List_NG_RAN = -1; /* DRB_To_Setup_List_NG_RAN */ +static int hf_e1ap_dRB_To_Modify_List_NG_RAN = -1; /* DRB_To_Modify_List_NG_RAN */ +static int hf_e1ap_PDU_Session_Resource_To_Remove_List_item = -1; /* PDU_Session_Resource_To_Remove_Item */ +static int hf_e1ap_PDU_Session_Resource_To_Setup_List_item = -1; /* PDU_Session_Resource_To_Setup_Item */ +static int hf_e1ap_non_Dynamic_5QI = -1; /* Non_Dynamic5QIDescriptor */ +static int hf_e1ap_dynamic_5QI = -1; /* Dynamic5QIDescriptor */ +static int hf_e1ap_QoS_Flow_List_item = -1; /* QoS_Flow_Item */ +static int hf_e1ap_qoS_Flow_Indicator = -1; /* QoS_Flow_Indicator */ +static int hf_e1ap_QoS_Flow_Failed_List_item = -1; /* QoS_Flow_Failed_Item */ +static int hf_e1ap_eUTRAN_QoS_Support_List = -1; /* EUTRAN_QoS_Support_List */ +static int hf_e1ap_nG_RAN_QoS_Support_List = -1; /* NG_RAN_QoS_Support_List */ +static int hf_e1ap_QoS_Flow_QoS_Parameter_List_item = -1; /* QoS_Flow_QoS_Parameter_Item */ +static int hf_e1ap_qoSFlowLevelQoSParameters = -1; /* QoSFlowLevelQoSParameters */ +static int hf_e1ap_qoS_Characteristics = -1; /* QoS_Characteristics */ +static int hf_e1ap_nGRANallocationRetentionPriority = -1; /* NGRANAllocationAndRetentionPriority */ +static int hf_e1ap_gBR_QoS_Flow_Information = -1; /* GBR_QoSFlowInformation */ +static int hf_e1ap_reflective_QoS_Attribute = -1; /* T_reflective_QoS_Attribute */ +static int hf_e1ap_additional_QoS_Information = -1; /* T_additional_QoS_Information */ +static int hf_e1ap_paging_Policy_Indicator = -1; /* INTEGER_1_8_ */ +static int hf_e1ap_reflective_QoS_Indicator = -1; /* T_reflective_QoS_Indicator */ +static int hf_e1ap_rOHC_Profiles = -1; /* ROHC_Profiles */ +static int hf_e1ap_cipheringAlgorithm = -1; /* CipheringAlgorithm */ +static int hf_e1ap_integrityProtectionAlgorithm = -1; /* IntegrityProtectionAlgorithm */ +static int hf_e1ap_integrityProtectionIndication = -1; /* IntegrityProtectionIndication */ +static int hf_e1ap_confidentialityProtectionIndication = -1; /* ConfidentialityProtectionIndication */ +static int hf_e1ap_securityAlgorithm = -1; /* SecurityAlgorithm */ +static int hf_e1ap_uPSecuritykey = -1; /* UPSecuritykey */ +static int hf_e1ap_Slice_Support_List_item = -1; /* Slice_Support_Item */ +static int hf_e1ap_sST = -1; /* OCTET_STRING_SIZE_1 */ +static int hf_e1ap_sD = -1; /* OCTET_STRING_SIZE_3 */ +static int hf_e1ap_defaultDRB = -1; /* DefaultDRB */ +static int hf_e1ap_sDAP_Header_UL = -1; /* SDAP_Header_UL */ +static int hf_e1ap_sDAP_Header_DL = -1; /* SDAP_Header_DL */ +static int hf_e1ap_t_ReorderingUL = -1; /* T_ReorderingUL */ +static int hf_e1ap_t_ReorderingDL = -1; /* T_ReorderingDL */ +static int hf_e1ap_gNB_CU_CP_UE_E1AP_ID = -1; /* GNB_CU_CP_UE_E1AP_ID */ +static int hf_e1ap_gNB_CU_UP_UE_E1AP_ID = -1; /* GNB_CU_UP_UE_E1AP_ID */ +static int hf_e1ap_UP_Parameters_item = -1; /* UP_Parameters_Item */ +static int hf_e1ap_encryptionKey = -1; /* EncryptionKey */ +static int hf_e1ap_integrityProtectionKey = -1; /* IntegrityProtectionKey */ +static int hf_e1ap_gTPTunnel = -1; /* GTPTunnel */ +static int hf_e1ap_protocolIEs = -1; /* ProtocolIE_Container */ +static int hf_e1ap_e1_Interface = -1; /* ResetAll */ +static int hf_e1ap_partOfE1_Interface = -1; /* UE_associatedLogicalE1_ConnectionListRes */ +static int hf_e1ap_UE_associatedLogicalE1_ConnectionListRes_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_e1ap_UE_associatedLogicalE1_ConnectionListResAck_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_e1ap_SupportedPLMNs_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_e1ap_slice_Support_List = -1; /* Slice_Support_List */ +static int hf_e1ap_nR_CGI_Support_List = -1; /* NR_CGI_Support_List */ +static int hf_e1ap_qoS_Parameters_Support_List = -1; /* QoS_Parameters_Support_List */ +static int hf_e1ap_e_UTRAN_BearerContextSetupRequest = -1; /* EUTRAN_BearerContextSetupRequest */ +static int hf_e1ap_nG_RAN_BearerContextSetupRequest = -1; /* NG_RAN_BearerContextSetupRequest */ +static int hf_e1ap_dRB_To_Setup_List_EUTRAN = -1; /* DRB_To_Setup_List_EUTRAN */ +static int hf_e1ap_pDU_Session_Resource_To_Setup_List = -1; /* PDU_Session_Resource_To_Setup_List */ +static int hf_e1ap_e_UTRAN_BearerContextSetupResponse = -1; /* EUTRAN_BearerContextSetupResponse */ +static int hf_e1ap_nG_RAN_BearerContextSetupResponse = -1; /* NG_RAN_BearerContextSetupResponse */ +static int hf_e1ap_dRB_Setup_List_EUTRAN = -1; /* DRB_Setup_List_EUTRAN */ +static int hf_e1ap_dRB_Failed_List_EUTRAN = -1; /* DRB_Failed_List_EUTRAN */ +static int hf_e1ap_pDU_Session_Resource_Setup_List = -1; /* PDU_Session_Resource_Setup_List */ +static int hf_e1ap_pDU_Session_Resource_Failed_List = -1; /* PDU_Session_Resource_Failed_List */ +static int hf_e1ap_e_UTRAN_BearerContextModificationRequest = -1; /* EUTRAN_BearerContextModificationRequest */ +static int hf_e1ap_nG_RAN_BearerContextModificationRequest = -1; /* NG_RAN_BearerContextModificationRequest */ +static int hf_e1ap_dRB_To_Modify_List_EUTRAN = -1; /* DRB_To_Modify_List_EUTRAN */ +static int hf_e1ap_dRB_To_Remove_List_EUTRAN = -1; /* DRB_To_Remove_List_EUTRAN */ +static int hf_e1ap_pDU_Session_Resource_To_Modify_List = -1; /* PDU_Session_Resource_To_Modify_List */ +static int hf_e1ap_pDU_Session_Resource_To_Remove_List = -1; /* PDU_Session_Resource_To_Remove_List */ +static int hf_e1ap_e_UTRAN_BearerContextModificationResponse = -1; /* EUTRAN_BearerContextModificationResponse */ +static int hf_e1ap_nG_RAN_BearerContextModificationResponse = -1; /* NG_RAN_BearerContextModificationResponse */ +static int hf_e1ap_dRB_Modified_List_EUTRAN = -1; /* DRB_Modified_List_EUTRAN */ +static int hf_e1ap_dRB_Failed_To_Modify_List_EUTRAN = -1; /* DRB_Failed_To_Modify_List_EUTRAN */ +static int hf_e1ap_pDU_Session_Resource_Modified_List = -1; /* PDU_Session_Resource_Modified_List */ +static int hf_e1ap_pDU_Session_Resource_Failed_To_Modify_List = -1; /* PDU_Session_Resource_Failed_To_Modify_List */ +static int hf_e1ap_e_UTRAN_BearerContextModificationRequired = -1; /* EUTRAN_BearerContextModificationRequired */ +static int hf_e1ap_nG_RAN_BearerContextModificationRequired = -1; /* NG_RAN_BearerContextModificationRequired */ +static int hf_e1ap_dRB_Required_To_Modify_List_EUTRAN = -1; /* DRB_Required_To_Modify_List_EUTRAN */ +static int hf_e1ap_pDU_Session_Resource_Required_To_Modify_List = -1; /* PDU_Session_Resource_Required_To_Modify_List */ +static int hf_e1ap_e_UTRAN_BearerContextModificationConfirm = -1; /* EUTRAN_BearerContextModificationConfirm */ +static int hf_e1ap_nG_RAN_BearerContextModificationConfirm = -1; /* NG_RAN_BearerContextModificationConfirm */ +static int hf_e1ap_dRB_Confirm_Modified_List_EUTRAN = -1; /* DRB_Confirm_Modified_List_EUTRAN */ +static int hf_e1ap_pDU_Session_Resource_Confirm_Modified_List = -1; /* PDU_Session_Resource_Confirm_Modified_List */ +static int hf_e1ap_DRB_Status_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_e1ap_DRB_Activity_List_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_e1ap_privateIEs = -1; /* PrivateIE_Container */ +static int hf_e1ap_initiatingMessage = -1; /* InitiatingMessage */ +static int hf_e1ap_successfulOutcome = -1; /* SuccessfulOutcome */ +static int hf_e1ap_unsuccessfulOutcome = -1; /* UnsuccessfulOutcome */ +static int hf_e1ap_initiatingMessagevalue = -1; /* InitiatingMessage_value */ +static int hf_e1ap_successfulOutcome_value = -1; /* SuccessfulOutcome_value */ +static int hf_e1ap_unsuccessfulOutcome_value = -1; /* UnsuccessfulOutcome_value */ + +/*--- End of included file: packet-e1ap-hf.c ---*/ +#line 44 "./asn1/e1ap/packet-e1ap-template.c" + +/* Initialize the subtree pointers */ +static gint ett_e1ap = -1; +static gint ett_e1ap_PLMN_Identity = -1; +static gint ett_e1ap_TransportLayerAddress = -1; + +/*--- Included file: packet-e1ap-ett.c ---*/ +#line 1 "./asn1/e1ap/packet-e1ap-ett.c" +static gint ett_e1ap_PrivateIE_ID = -1; +static gint ett_e1ap_ProtocolIE_Container = -1; +static gint ett_e1ap_ProtocolIE_Field = -1; +static gint ett_e1ap_ProtocolExtensionContainer = -1; +static gint ett_e1ap_ProtocolExtensionField = -1; +static gint ett_e1ap_PrivateIE_Container = -1; +static gint ett_e1ap_PrivateIE_Field = -1; +static gint ett_e1ap_Cause = -1; +static gint ett_e1ap_Cell_Group_Information = -1; +static gint ett_e1ap_Cell_Group_Information_Item = -1; +static gint ett_e1ap_CriticalityDiagnostics = -1; +static gint ett_e1ap_CriticalityDiagnostics_IE_List = -1; +static gint ett_e1ap_CriticalityDiagnostics_IE_List_item = -1; +static gint ett_e1ap_Data_Forwarding_Information_Request = -1; +static gint ett_e1ap_Data_Forwarding_Information_Response = -1; +static gint ett_e1ap_Data_Usage_Report_List = -1; +static gint ett_e1ap_Data_Usage_Report_Item = -1; +static gint ett_e1ap_DRB_Activity_Item = -1; +static gint ett_e1ap_DRB_Confirm_Modified_List_EUTRAN = -1; +static gint ett_e1ap_DRB_Confirm_Modified_Item_EUTRAN = -1; +static gint ett_e1ap_DRB_Confirm_Modified_List_NG_RAN = -1; +static gint ett_e1ap_DRB_Confirm_Modified_Item_NG_RAN = -1; +static gint ett_e1ap_DRB_Failed_List_EUTRAN = -1; +static gint ett_e1ap_DRB_Failed_Item_EUTRAN = -1; +static gint ett_e1ap_DRB_Failed_List_NG_RAN = -1; +static gint ett_e1ap_DRB_Failed_Item_NG_RAN = -1; +static gint ett_e1ap_DRB_Failed_To_Modify_List_EUTRAN = -1; +static gint ett_e1ap_DRB_Failed_To_Modify_Item_EUTRAN = -1; +static gint ett_e1ap_DRB_Failed_To_Modify_List_NG_RAN = -1; +static gint ett_e1ap_DRB_Failed_To_Modify_Item_NG_RAN = -1; +static gint ett_e1ap_DRB_Modified_List_EUTRAN = -1; +static gint ett_e1ap_DRB_Modified_Item_EUTRAN = -1; +static gint ett_e1ap_DRB_Modified_List_NG_RAN = -1; +static gint ett_e1ap_DRB_Modified_Item_NG_RAN = -1; +static gint ett_e1ap_DRB_Required_To_Modify_List_EUTRAN = -1; +static gint ett_e1ap_DRB_Required_To_Modify_Item_EUTRAN = -1; +static gint ett_e1ap_DRB_Required_To_Modify_List_NG_RAN = -1; +static gint ett_e1ap_DRB_Required_To_Modify_Item_NG_RAN = -1; +static gint ett_e1ap_DRB_Setup_List_EUTRAN = -1; +static gint ett_e1ap_DRB_Setup_Item_EUTRAN = -1; +static gint ett_e1ap_DRB_Setup_List_NG_RAN = -1; +static gint ett_e1ap_DRB_Setup_Item_NG_RAN = -1; +static gint ett_e1ap_DRB_Status_Item = -1; +static gint ett_e1ap_DRB_To_Modify_List_EUTRAN = -1; +static gint ett_e1ap_DRB_To_Modify_Item_EUTRAN = -1; +static gint ett_e1ap_DRB_To_Modify_List_NG_RAN = -1; +static gint ett_e1ap_DRB_To_Modify_Item_NG_RAN = -1; +static gint ett_e1ap_DRB_To_Remove_List_EUTRAN = -1; +static gint ett_e1ap_DRB_To_Remove_Item_EUTRAN = -1; +static gint ett_e1ap_DRB_To_Remove_List_NG_RAN = -1; +static gint ett_e1ap_DRB_To_Remove_Item_NG_RAN = -1; +static gint ett_e1ap_DRB_To_Setup_List_EUTRAN = -1; +static gint ett_e1ap_DRB_To_Setup_Item_EUTRAN = -1; +static gint ett_e1ap_DRB_To_Setup_List_NG_RAN = -1; +static gint ett_e1ap_DRB_To_Setup_Item_NG_RAN = -1; +static gint ett_e1ap_DRB_Usage_Report_List = -1; +static gint ett_e1ap_DRB_Usage_Report_Item = -1; +static gint ett_e1ap_Dynamic5QIDescriptor = -1; +static gint ett_e1ap_EUTRANAllocationAndRetentionPriority = -1; +static gint ett_e1ap_EUTRAN_QoS_Support_List = -1; +static gint ett_e1ap_EUTRAN_QoS_Support_Item = -1; +static gint ett_e1ap_EUTRAN_QoS = -1; +static gint ett_e1ap_GNB_CU_UP_CellGroupRelatedConfiguration = -1; +static gint ett_e1ap_GNB_CU_UP_CellGroupRelatedConfiguration_Item = -1; +static gint ett_e1ap_GBR_QosInformation = -1; +static gint ett_e1ap_GBR_QoSFlowInformation = -1; +static gint ett_e1ap_GTPTunnel = -1; +static gint ett_e1ap_NGRANAllocationAndRetentionPriority = -1; +static gint ett_e1ap_NG_RAN_QoS_Support_List = -1; +static gint ett_e1ap_NG_RAN_QoS_Support_Item = -1; +static gint ett_e1ap_Non_Dynamic5QIDescriptor = -1; +static gint ett_e1ap_NR_CGI = -1; +static gint ett_e1ap_NR_CGI_Support_List = -1; +static gint ett_e1ap_NR_CGI_Support_Item = -1; +static gint ett_e1ap_PDCP_Configuration = -1; +static gint ett_e1ap_PDCP_Count = -1; +static gint ett_e1ap_PDU_Session_Resource_Confirm_Modified_List = -1; +static gint ett_e1ap_PDU_Session_Resource_Confirm_Modified_Item = -1; +static gint ett_e1ap_PDU_Session_Resource_Failed_List = -1; +static gint ett_e1ap_PDU_Session_Resource_Failed_Item = -1; +static gint ett_e1ap_PDU_Session_Resource_Failed_To_Modify_List = -1; +static gint ett_e1ap_PDU_Session_Resource_Failed_To_Modify_Item = -1; +static gint ett_e1ap_PDU_Session_Resource_Modified_List = -1; +static gint ett_e1ap_PDU_Session_Resource_Modified_Item = -1; +static gint ett_e1ap_PDU_Session_Resource_Required_To_Modify_List = -1; +static gint ett_e1ap_PDU_Session_Resource_Required_To_Modify_Item = -1; +static gint ett_e1ap_PDU_Session_Resource_Setup_List = -1; +static gint ett_e1ap_PDU_Session_Resource_Setup_Item = -1; +static gint ett_e1ap_PDU_Session_Resource_To_Modify_List = -1; +static gint ett_e1ap_PDU_Session_Resource_To_Modify_Item = -1; +static gint ett_e1ap_PDU_Session_Resource_To_Remove_List = -1; +static gint ett_e1ap_PDU_Session_Resource_To_Remove_Item = -1; +static gint ett_e1ap_PDU_Session_Resource_To_Setup_List = -1; +static gint ett_e1ap_PDU_Session_Resource_To_Setup_Item = -1; +static gint ett_e1ap_QoS_Characteristics = -1; +static gint ett_e1ap_QoS_Flow_List = -1; +static gint ett_e1ap_QoS_Flow_Item = -1; +static gint ett_e1ap_QoS_Flow_Failed_List = -1; +static gint ett_e1ap_QoS_Flow_Failed_Item = -1; +static gint ett_e1ap_QoS_Parameters_Support_List = -1; +static gint ett_e1ap_QoS_Flow_QoS_Parameter_List = -1; +static gint ett_e1ap_QoS_Flow_QoS_Parameter_Item = -1; +static gint ett_e1ap_QoSFlowLevelQoSParameters = -1; +static gint ett_e1ap_ROHC_Parameters = -1; +static gint ett_e1ap_SecurityAlgorithm = -1; +static gint ett_e1ap_SecurityIndication = -1; +static gint ett_e1ap_SecurityInformation = -1; +static gint ett_e1ap_Slice_Support_List = -1; +static gint ett_e1ap_Slice_Support_Item = -1; +static gint ett_e1ap_SNSSAI = -1; +static gint ett_e1ap_SDAP_Configuration = -1; +static gint ett_e1ap_T_ReorderingTimer = -1; +static gint ett_e1ap_UE_associatedLogicalE1_ConnectionItem = -1; +static gint ett_e1ap_UP_Parameters = -1; +static gint ett_e1ap_UP_Parameters_Item = -1; +static gint ett_e1ap_UPSecuritykey = -1; +static gint ett_e1ap_UP_TNL_Information = -1; +static gint ett_e1ap_Reset = -1; +static gint ett_e1ap_ResetType = -1; +static gint ett_e1ap_UE_associatedLogicalE1_ConnectionListRes = -1; +static gint ett_e1ap_ResetAcknowledge = -1; +static gint ett_e1ap_UE_associatedLogicalE1_ConnectionListResAck = -1; +static gint ett_e1ap_ErrorIndication = -1; +static gint ett_e1ap_GNB_CU_UP_E1SetupRequest = -1; +static gint ett_e1ap_SupportedPLMNs_List = -1; +static gint ett_e1ap_SupportedPLMNs_Item = -1; +static gint ett_e1ap_GNB_CU_UP_E1SetupResponse = -1; +static gint ett_e1ap_GNB_CU_UP_E1SetupFailure = -1; +static gint ett_e1ap_GNB_CU_CP_E1SetupRequest = -1; +static gint ett_e1ap_GNB_CU_CP_E1SetupResponse = -1; +static gint ett_e1ap_GNB_CU_CP_E1SetupFailure = -1; +static gint ett_e1ap_GNB_CU_UP_ConfigurationUpdate = -1; +static gint ett_e1ap_GNB_CU_UP_ConfigurationUpdateAcknowledge = -1; +static gint ett_e1ap_GNB_CU_UP_ConfigurationUpdateFailure = -1; +static gint ett_e1ap_GNB_CU_CP_ConfigurationUpdate = -1; +static gint ett_e1ap_GNB_CU_CP_ConfigurationUpdateAcknowledge = -1; +static gint ett_e1ap_GNB_CU_CP_ConfigurationUpdateFailure = -1; +static gint ett_e1ap_E1ReleaseRequest = -1; +static gint ett_e1ap_E1ReleaseResponse = -1; +static gint ett_e1ap_BearerContextSetupRequest = -1; +static gint ett_e1ap_System_BearerContextSetupRequest = -1; +static gint ett_e1ap_EUTRAN_BearerContextSetupRequest = -1; +static gint ett_e1ap_NG_RAN_BearerContextSetupRequest = -1; +static gint ett_e1ap_BearerContextSetupResponse = -1; +static gint ett_e1ap_System_BearerContextSetupResponse = -1; +static gint ett_e1ap_EUTRAN_BearerContextSetupResponse = -1; +static gint ett_e1ap_NG_RAN_BearerContextSetupResponse = -1; +static gint ett_e1ap_BearerContextSetupFailure = -1; +static gint ett_e1ap_BearerContextModificationRequest = -1; +static gint ett_e1ap_System_BearerContextModificationRequest = -1; +static gint ett_e1ap_EUTRAN_BearerContextModificationRequest = -1; +static gint ett_e1ap_NG_RAN_BearerContextModificationRequest = -1; +static gint ett_e1ap_BearerContextModificationResponse = -1; +static gint ett_e1ap_System_BearerContextModificationResponse = -1; +static gint ett_e1ap_EUTRAN_BearerContextModificationResponse = -1; +static gint ett_e1ap_NG_RAN_BearerContextModificationResponse = -1; +static gint ett_e1ap_BearerContextModificationFailure = -1; +static gint ett_e1ap_BearerContextModificationRequired = -1; +static gint ett_e1ap_System_BearerContextModificationRequired = -1; +static gint ett_e1ap_EUTRAN_BearerContextModificationRequired = -1; +static gint ett_e1ap_NG_RAN_BearerContextModificationRequired = -1; +static gint ett_e1ap_BearerContextModificationConfirm = -1; +static gint ett_e1ap_System_BearerContextModificationConfirm = -1; +static gint ett_e1ap_EUTRAN_BearerContextModificationConfirm = -1; +static gint ett_e1ap_NG_RAN_BearerContextModificationConfirm = -1; +static gint ett_e1ap_BearerContextReleaseCommand = -1; +static gint ett_e1ap_BearerContextReleaseComplete = -1; +static gint ett_e1ap_BearerContextReleaseRequest = -1; +static gint ett_e1ap_DRB_Status_List = -1; +static gint ett_e1ap_BearerContextInactivityNotification = -1; +static gint ett_e1ap_DRB_Activity_List = -1; +static gint ett_e1ap_DLDataNotification = -1; +static gint ett_e1ap_DataUsageReport = -1; +static gint ett_e1ap_PrivateMessage = -1; +static gint ett_e1ap_E1AP_PDU = -1; +static gint ett_e1ap_InitiatingMessage = -1; +static gint ett_e1ap_SuccessfulOutcome = -1; +static gint ett_e1ap_UnsuccessfulOutcome = -1; + +/*--- End of included file: packet-e1ap-ett.c ---*/ +#line 50 "./asn1/e1ap/packet-e1ap-template.c" + +enum{ + INITIATING_MESSAGE, + SUCCESSFUL_OUTCOME, + UNSUCCESSFUL_OUTCOME +}; + +typedef struct { + guint32 message_type; + guint32 procedure_code; + guint32 protocol_ie_id; + guint32 protocol_extension_id; + const char *obj_id; +} e1ap_private_data_t; + +typedef struct { + guint32 message_type; + guint32 ProcedureCode; + guint32 ProtocolIE_ID; + guint32 ProtocolExtensionID; +} e1ap_ctx_t; + +/* Global variables */ +static dissector_handle_t e1ap_handle; + +/* Dissector tables */ +static dissector_table_t e1ap_ies_dissector_table; +static dissector_table_t e1ap_extension_dissector_table; +static dissector_table_t e1ap_proc_imsg_dissector_table; +static dissector_table_t e1ap_proc_sout_dissector_table; +static dissector_table_t e1ap_proc_uout_dissector_table; + +static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); +//static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); +static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); +static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); +static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); + +static void +e1ap_MaxPacketLossRate_fmt(gchar *s, guint32 v) +{ + g_snprintf(s, ITEM_LABEL_LENGTH, "%.1f %% (%u)", (float)v/10, v); +} + +static e1ap_private_data_t* +e1ap_get_private_data(packet_info *pinfo) +{ + e1ap_private_data_t *e1ap_data = (e1ap_private_data_t*)p_get_proto_data(pinfo->pool, pinfo, proto_e1ap, 0); + if (!e1ap_data) { + e1ap_data = wmem_new0(pinfo->pool, e1ap_private_data_t); + p_add_proto_data(pinfo->pool, pinfo, proto_e1ap, 0, e1ap_data); + } + return e1ap_data; +} + + +/*--- Included file: packet-e1ap-fn.c ---*/ +#line 1 "./asn1/e1ap/packet-e1ap-fn.c" + +static const value_string e1ap_Criticality_vals[] = { + { 0, "reject" }, + { 1, "ignore" }, + { 2, "notify" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_Criticality(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 3, NULL, FALSE, 0, NULL); + + return offset; +} + + + +static int +dissect_e1ap_INTEGER_0_maxPrivateIEs(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, maxPrivateIEs, NULL, FALSE); + + return offset; +} + + + +static int +dissect_e1ap_T_global(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 107 "./asn1/e1ap/e1ap.cnf" + e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo); + offset = dissect_per_object_identifier_str(tvb, offset, actx, tree, hf_index, &e1ap_data->obj_id); + + + + + return offset; +} + + +static const value_string e1ap_PrivateIE_ID_vals[] = { + { 0, "local" }, + { 1, "global" }, + { 0, NULL } +}; + +static const per_choice_t PrivateIE_ID_choice[] = { + { 0, &hf_e1ap_local , ASN1_NO_EXTENSIONS , dissect_e1ap_INTEGER_0_maxPrivateIEs }, + { 1, &hf_e1ap_global , ASN1_NO_EXTENSIONS , dissect_e1ap_T_global }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e1ap_PrivateIE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 103 "./asn1/e1ap/e1ap.cnf" + e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo); + e1ap_data->obj_id = NULL; + + + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e1ap_PrivateIE_ID, PrivateIE_ID_choice, + NULL); + + return offset; +} + + +static const value_string e1ap_ProcedureCode_vals[] = { + { id_reset, "id-reset" }, + { id_errorIndication, "id-errorIndication" }, + { id_privateMessage, "id-privateMessage" }, + { id_gNB_CU_UP_E1Setup, "id-gNB-CU-UP-E1Setup" }, + { id_gNB_CU_CP_E1Setup, "id-gNB-CU-CP-E1Setup" }, + { id_gNB_CU_UP_ConfigurationUpdate, "id-gNB-CU-UP-ConfigurationUpdate" }, + { id_gNB_CU_CP_ConfigurationUpdate, "id-gNB-CU-CP-ConfigurationUpdate" }, + { id_e1Release, "id-e1Release" }, + { id_bearerContextSetup, "id-bearerContextSetup" }, + { id_bearerContextModification, "id-bearerContextModification" }, + { id_bearerContextModificationRequired, "id-bearerContextModificationRequired" }, + { id_bearerContextRelease, "id-bearerContextRelease" }, + { id_bearerContextReleaseRequest, "id-bearerContextReleaseRequest" }, + { id_bearerContextInactivityNotification, "id-bearerContextInactivityNotification" }, + { id_dLDataNotification, "id-dLDataNotification" }, + { id_dataUsageReport, "id-dataUsageReport" }, + { 0, NULL } +}; + +static value_string_ext e1ap_ProcedureCode_vals_ext = VALUE_STRING_EXT_INIT(e1ap_ProcedureCode_vals); + + +static int +dissect_e1ap_ProcedureCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 84 "./asn1/e1ap/e1ap.cnf" + e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo); + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 255U, &e1ap_data->procedure_code, FALSE); + + + + return offset; +} + + +static const value_string e1ap_ProtocolIE_ID_vals[] = { + { id_Cause, "id-Cause" }, + { id_CriticalityDiagnostics, "id-CriticalityDiagnostics" }, + { id_gNB_CU_CP_UE_E1AP_ID, "id-gNB-CU-CP-UE-E1AP-ID" }, + { id_gNB_CU_UP_UE_E1AP_ID, "id-gNB-CU-UP-UE-E1AP-ID" }, + { id_ResetType, "id-ResetType" }, + { id_UE_associatedLogicalE1_ConnectionItem, "id-UE-associatedLogicalE1-ConnectionItem" }, + { id_UE_associatedLogicalE1_ConnectionListResAck, "id-UE-associatedLogicalE1-ConnectionListResAck" }, + { id_gNB_CU_UP_ID, "id-gNB-CU-UP-ID" }, + { id_gNB_CU_UP_Name, "id-gNB-CU-UP-Name" }, + { id_gNB_CU_CP_Name, "id-gNB-CU-CP-Name" }, + { id_CNSupport, "id-CNSupport" }, + { id_SupportedPLMNs, "id-SupportedPLMNs" }, + { id_SupportedPLMNs_Item, "id-SupportedPLMNs-Item" }, + { id_TimeToWait, "id-TimeToWait" }, + { id_SecurityInformation, "id-SecurityInformation" }, + { id_UEDLAggregateMaximumBitRate, "id-UEDLAggregateMaximumBitRate" }, + { id_System_BearerContextSetupRequest, "id-System-BearerContextSetupRequest" }, + { id_System_BearerContextSetupResponse, "id-System-BearerContextSetupResponse" }, + { id_BearerContextStatusChange, "id-BearerContextStatusChange" }, + { id_System_BearerContextModificationRequest, "id-System-BearerContextModificationRequest" }, + { id_System_BearerContextModificationResponse, "id-System-BearerContextModificationResponse" }, + { id_System_BearerContextModificationConfirm, "id-System-BearerContextModificationConfirm" }, + { id_System_BearerContextModificationRequired, "id-System-BearerContextModificationRequired" }, + { id_DRB_Status_List, "id-DRB-Status-List" }, + { id_DRB_Status_Item, "id-DRB-Status-Item" }, + { id_DRB_Activity_List, "id-DRB-Activity-List" }, + { id_DRB_Activity_Item, "id-DRB-Activity-Item" }, + { id_Data_Usage_Report_List, "id-Data-Usage-Report-List" }, + { 0, NULL } +}; + +static value_string_ext e1ap_ProtocolIE_ID_vals_ext = VALUE_STRING_EXT_INIT(e1ap_ProtocolIE_ID_vals); + + +static int +dissect_e1ap_ProtocolIE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 66 "./asn1/e1ap/e1ap.cnf" + e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo); + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, maxProtocolIEs, &e1ap_data->protocol_ie_id, FALSE); + + + + +#line 70 "./asn1/e1ap/e1ap.cnf" + if (tree) { + proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", + val_to_str_ext(e1ap_data->protocol_ie_id, &e1ap_ProtocolIE_ID_vals_ext, "unknown (%d)")); + } + + + return offset; +} + + +static const value_string e1ap_TriggeringMessage_vals[] = { + { 0, "initiating-message" }, + { 1, "successful-outcome" }, + { 2, "unsuccessful-outcome" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_TriggeringMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 3, NULL, FALSE, 0, NULL); + + return offset; +} + + + +static int +dissect_e1ap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue); + + return offset; +} + + +static const per_sequence_t ProtocolIE_Field_sequence[] = { + { &hf_e1ap_id , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_ID }, + { &hf_e1ap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_Criticality }, + { &hf_e1ap_ie_field_value , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_T_ie_field_value }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_ProtocolIE_Field(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_ProtocolIE_Field, ProtocolIE_Field_sequence); + + return offset; +} + + +static const per_sequence_t ProtocolIE_Container_sequence_of[1] = { + { &hf_e1ap_ProtocolIE_Container_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_Field }, +}; + +static int +dissect_e1ap_ProtocolIE_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e1ap_ProtocolIE_Container, ProtocolIE_Container_sequence_of, + 0, maxProtocolIEs, FALSE); + + return offset; +} + + + +static int +dissect_e1ap_ProtocolIE_SingleContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_e1ap_ProtocolIE_Field(tvb, offset, actx, tree, hf_index); + + return offset; +} + + + +static int +dissect_e1ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL); + + return offset; +} + + +static const per_sequence_t ProtocolExtensionField_sequence[] = { + { &hf_e1ap_ext_id , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_ID }, + { &hf_e1ap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_Criticality }, + { &hf_e1ap_extensionValue , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_T_extensionValue }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_ProtocolExtensionField(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_ProtocolExtensionField, ProtocolExtensionField_sequence); + + return offset; +} + + +static const per_sequence_t ProtocolExtensionContainer_sequence_of[1] = { + { &hf_e1ap_ProtocolExtensionContainer_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolExtensionField }, +}; + +static int +dissect_e1ap_ProtocolExtensionContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e1ap_ProtocolExtensionContainer, ProtocolExtensionContainer_sequence_of, + 1, maxProtocolExtensions, FALSE); + + return offset; +} + + + +static int +dissect_e1ap_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 111 "./asn1/e1ap/e1ap.cnf" + e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo); + if (e1ap_data->obj_id) { + offset = call_per_oid_callback(e1ap_data->obj_id, tvb, actx->pinfo, tree, offset, actx, hf_index); + } else { + offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL); + + } + + + + return offset; +} + + +static const per_sequence_t PrivateIE_Field_sequence[] = { + { &hf_e1ap_private_id , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_PrivateIE_ID }, + { &hf_e1ap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_Criticality }, + { &hf_e1ap_value , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_T_value }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_PrivateIE_Field(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_PrivateIE_Field, PrivateIE_Field_sequence); + + return offset; +} + + +static const per_sequence_t PrivateIE_Container_sequence_of[1] = { + { &hf_e1ap_PrivateIE_Container_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_PrivateIE_Field }, +}; + +static int +dissect_e1ap_PrivateIE_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e1ap_PrivateIE_Container, PrivateIE_Container_sequence_of, + 1, maxPrivateIEs, FALSE); + + return offset; +} + + + +static int +dissect_e1ap_AveragingWindow(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, FALSE); + + return offset; +} + + +static const value_string e1ap_BearerContextStatusChange_vals[] = { + { 0, "suspend" }, + { 1, "resume" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_BearerContextStatusChange(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_e1ap_BitRate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index, + 0U, G_GUINT64_CONSTANT(4000000000000), NULL, TRUE); + + return offset; +} + + +static const value_string e1ap_CauseRadioNetwork_vals[] = { + { 0, "unspecified" }, + { 1, "unknown-or-already-allocated-gnb-cu-cp-ue-e1ap-id" }, + { 2, "unknown-or-already-allocated-gnb-cu-up-ue-e1ap-id" }, + { 3, "unknown-or-inconsistent-pair-of-ue-e1ap-id" }, + { 4, "interaction-with-other-procedure" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_CauseRadioNetwork(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 5, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string e1ap_CauseTransport_vals[] = { + { 0, "unspecified" }, + { 1, "transport-resource-unavailable" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_CauseTransport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string e1ap_CauseProtocol_vals[] = { + { 0, "transfer-syntax-error" }, + { 1, "abstract-syntax-error-reject" }, + { 2, "abstract-syntax-error-ignore-and-notify" }, + { 3, "message-not-compatible-with-receiver-state" }, + { 4, "semantic-error" }, + { 5, "abstract-syntax-error-falsely-constructed-message" }, + { 6, "unspecified" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_CauseProtocol(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 7, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string e1ap_CauseMisc_vals[] = { + { 0, "control-processing-overload" }, + { 1, "not-enough-user-plane-processing-resources" }, + { 2, "hardware-failure" }, + { 3, "om-intervention" }, + { 4, "unspecified" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_CauseMisc(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 5, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string e1ap_Cause_vals[] = { + { 0, "radioNetwork" }, + { 1, "transport" }, + { 2, "protocol" }, + { 3, "misc" }, + { 0, NULL } +}; + +static const per_choice_t Cause_choice[] = { + { 0, &hf_e1ap_radioNetwork , ASN1_EXTENSION_ROOT , dissect_e1ap_CauseRadioNetwork }, + { 1, &hf_e1ap_transport , ASN1_EXTENSION_ROOT , dissect_e1ap_CauseTransport }, + { 2, &hf_e1ap_protocol , ASN1_EXTENSION_ROOT , dissect_e1ap_CauseProtocol }, + { 3, &hf_e1ap_misc , ASN1_EXTENSION_ROOT , dissect_e1ap_CauseMisc }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e1ap_Cause(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e1ap_Cause, Cause_choice, + NULL); + + return offset; +} + + + +static int +dissect_e1ap_Cell_Gorup_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, 3U, NULL, TRUE); + + return offset; +} + + +static const value_string e1ap_UL_Configuration_vals[] = { + { 0, "no-data" }, + { 1, "shared" }, + { 2, "only" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_UL_Configuration(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 value_string e1ap_DL_TX_Stop_vals[] = { + { 0, "stop" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_DL_TX_Stop(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 e1ap_RAT_Type_vals[] = { + { 0, "e-UTRA" }, + { 1, "nR" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_RAT_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, + 2, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const per_sequence_t Cell_Group_Information_Item_sequence[] = { + { &hf_e1ap_cell_Group_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_Cell_Gorup_ID }, + { &hf_e1ap_uL_Configuration, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_UL_Configuration }, + { &hf_e1ap_dL_TX_Stop , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_DL_TX_Stop }, + { &hf_e1ap_rAT_Type , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_RAT_Type }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_Cell_Group_Information_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_e1ap_Cell_Group_Information_Item, Cell_Group_Information_Item_sequence); + + return offset; +} + + +static const per_sequence_t Cell_Group_Information_sequence_of[1] = { + { &hf_e1ap_Cell_Group_Information_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_Cell_Group_Information_Item }, +}; + +static int +dissect_e1ap_Cell_Group_Information(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_e1ap_Cell_Group_Information, Cell_Group_Information_sequence_of, + 1, maxnoofCellGroups, FALSE); + + return offset; +} + + +static const value_string e1ap_CipheringAlgorithm_vals[] = { + { 0, "nEA0" }, + { 1, "c-128-NEA1" }, + { 2, "c-128-NEA2" }, + { 3, "c-128-NEA3" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_CipheringAlgorithm(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 e1ap_CNSupport_vals[] = { + { 0, "c-epc" }, + { 1, "c-5gc" }, + { 2, "both" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_CNSupport(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 value_string e1ap_ConfidentialityProtectionIndication_vals[] = { + { 0, "required" }, + { 1, "preferred" }, + { 2, "not-needed" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_ConfidentialityProtectionIndication(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 value_string e1ap_TypeOfError_vals[] = { + { 0, "not-understood" }, + { 1, "missing" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_TypeOfError(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const per_sequence_t CriticalityDiagnostics_IE_List_item_sequence[] = { + { &hf_e1ap_iECriticality , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_Criticality }, + { &hf_e1ap_iE_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_ID }, + { &hf_e1ap_typeOfError , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_TypeOfError }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_CriticalityDiagnostics_IE_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_e1ap_CriticalityDiagnostics_IE_List_item, CriticalityDiagnostics_IE_List_item_sequence); + + return offset; +} + + +static const per_sequence_t CriticalityDiagnostics_IE_List_sequence_of[1] = { + { &hf_e1ap_CriticalityDiagnostics_IE_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_CriticalityDiagnostics_IE_List_item }, +}; + +static int +dissect_e1ap_CriticalityDiagnostics_IE_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e1ap_CriticalityDiagnostics_IE_List, CriticalityDiagnostics_IE_List_sequence_of, + 1, maxnoofErrors, FALSE); + + return offset; +} + + +static const per_sequence_t CriticalityDiagnostics_sequence[] = { + { &hf_e1ap_procedureCode , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProcedureCode }, + { &hf_e1ap_triggeringMessage, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_TriggeringMessage }, + { &hf_e1ap_procedureCriticality, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_Criticality }, + { &hf_e1ap_iEsCriticalityDiagnostics, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_CriticalityDiagnostics_IE_List }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_CriticalityDiagnostics(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_CriticalityDiagnostics, CriticalityDiagnostics_sequence); + + return offset; +} + + +static const value_string e1ap_Data_Forwarding_Request_vals[] = { + { 0, "uL" }, + { 1, "dL" }, + { 2, "both" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_Data_Forwarding_Request(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_e1ap_TransportLayerAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 290 "./asn1/e1ap/e1ap.cnf" + tvbuff_t *param_tvb = NULL; + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 1, 160, TRUE, ¶m_tvb, NULL); + + if (param_tvb) { + proto_tree *subtree; + gint tvb_len; + + tvb_len = tvb_reported_length(param_tvb); + subtree = proto_item_add_subtree(actx->created_item, ett_e1ap_TransportLayerAddress); + if (tvb_len == 4) { + /* IPv4 */ + proto_tree_add_item(subtree, hf_e1ap_transportLayerAddressIPv4, param_tvb, 0, 4, ENC_BIG_ENDIAN); + } else if (tvb_len == 16) { + /* IPv6 */ + proto_tree_add_item(subtree, hf_e1ap_transportLayerAddressIPv6, param_tvb, 0, 16, ENC_NA); + } else if (tvb_len == 20) { + /* IPv4 */ + proto_tree_add_item(subtree, hf_e1ap_transportLayerAddressIPv4, param_tvb, 0, 4, ENC_BIG_ENDIAN); + /* IPv6 */ + proto_tree_add_item(subtree, hf_e1ap_transportLayerAddressIPv6, param_tvb, 4, 16, ENC_NA); + } + } + + + + return offset; +} + + + +static int +dissect_e1ap_GTP_TEID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + 4, 4, FALSE, NULL); + + return offset; +} + + +static const per_sequence_t GTPTunnel_sequence[] = { + { &hf_e1ap_transportLayerAddress, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_TransportLayerAddress }, + { &hf_e1ap_gTP_TEID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_GTP_TEID }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_GTPTunnel(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_e1ap_GTPTunnel, GTPTunnel_sequence); + + return offset; +} + + +static const value_string e1ap_UP_TNL_Information_vals[] = { + { 0, "gTPTunnel" }, + { 0, NULL } +}; + +static const per_choice_t UP_TNL_Information_choice[] = { + { 0, &hf_e1ap_gTPTunnel , ASN1_EXTENSION_ROOT , dissect_e1ap_GTPTunnel }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e1ap_UP_TNL_Information(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_e1ap_UP_TNL_Information, UP_TNL_Information_choice, + NULL); + + return offset; +} + + +static const per_sequence_t Data_Forwarding_Information_Request_sequence[] = { + { &hf_e1ap_data_Forwarding_Request, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_Data_Forwarding_Request }, + { &hf_e1ap_uL_Data_Forwarding, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_UP_TNL_Information }, + { &hf_e1ap_dL_Data_Forwarding, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_UP_TNL_Information }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_Data_Forwarding_Information_Request(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_e1ap_Data_Forwarding_Information_Request, Data_Forwarding_Information_Request_sequence); + + return offset; +} + + +static const per_sequence_t Data_Forwarding_Information_Response_sequence[] = { + { &hf_e1ap_uL_Data_Forwarding, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_UP_TNL_Information }, + { &hf_e1ap_dL_Data_Forwarding, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_UP_TNL_Information }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_Data_Forwarding_Information_Response(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_e1ap_Data_Forwarding_Information_Response, Data_Forwarding_Information_Response_sequence); + + return offset; +} + + + +static int +dissect_e1ap_DRB_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, 32U, NULL, TRUE); + + return offset; +} + + + +static int +dissect_e1ap_T_startTimeStamp(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 263 "./asn1/e1ap/e1ap.cnf" + tvbuff_t *timestamp_tvb = NULL; + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + 4, 4, FALSE, ×tamp_tvb); + + + + +#line 267 "./asn1/e1ap/e1ap.cnf" + if (timestamp_tvb) { + proto_item_append_text(actx->created_item, " (%s)", tvb_ntp_fmt_ts_sec(timestamp_tvb, 0)); + } + + + return offset; +} + + + +static int +dissect_e1ap_T_endTimeStamp(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 272 "./asn1/e1ap/e1ap.cnf" + tvbuff_t *timestamp_tvb = NULL; + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + 4, 4, FALSE, ×tamp_tvb); + + + + +#line 276 "./asn1/e1ap/e1ap.cnf" + if (timestamp_tvb) { + proto_item_append_text(actx->created_item, " (%s)", tvb_ntp_fmt_ts_sec(timestamp_tvb, 0)); + } + + + return offset; +} + + + +static int +dissect_e1ap_INTEGER_0_18446744073709551615(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(18446744073709551615), NULL, FALSE); + + return offset; +} + + +static const per_sequence_t DRB_Usage_Report_Item_sequence[] = { + { &hf_e1ap_startTimeStamp , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_T_startTimeStamp }, + { &hf_e1ap_endTimeStamp , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_T_endTimeStamp }, + { &hf_e1ap_usageCountUL , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_INTEGER_0_18446744073709551615 }, + { &hf_e1ap_usageCountDL , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_INTEGER_0_18446744073709551615 }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_DRB_Usage_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_e1ap_DRB_Usage_Report_Item, DRB_Usage_Report_Item_sequence); + + return offset; +} + + +static const per_sequence_t DRB_Usage_Report_List_sequence_of[1] = { + { &hf_e1ap_DRB_Usage_Report_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_Usage_Report_Item }, +}; + +static int +dissect_e1ap_DRB_Usage_Report_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_e1ap_DRB_Usage_Report_List, DRB_Usage_Report_List_sequence_of, + 1, maxnooftimeperiods, FALSE); + + return offset; +} + + +static const per_sequence_t Data_Usage_Report_Item_sequence[] = { + { &hf_e1ap_dRB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_ID }, + { &hf_e1ap_rAT_Type , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_RAT_Type }, + { &hf_e1ap_dRB_Usage_Report_List, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_Usage_Report_List }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_Data_Usage_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_e1ap_Data_Usage_Report_Item, Data_Usage_Report_Item_sequence); + + return offset; +} + + +static const per_sequence_t Data_Usage_Report_List_sequence_of[1] = { + { &hf_e1ap_Data_Usage_Report_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_Data_Usage_Report_Item }, +}; + +static int +dissect_e1ap_Data_Usage_Report_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_e1ap_Data_Usage_Report_List, Data_Usage_Report_List_sequence_of, + 1, maxnoofDRBs, FALSE); + + return offset; +} + + +static const value_string e1ap_DefaultDRB_vals[] = { + { 0, "true" }, + { 1, "false" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_DefaultDRB(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 e1ap_DiscardTimer_vals[] = { + { 0, "ms10" }, + { 1, "ms20" }, + { 2, "ms30" }, + { 3, "ms40" }, + { 4, "ms50" }, + { 5, "ms75" }, + { 6, "ms100" }, + { 7, "ms150" }, + { 8, "ms200" }, + { 9, "ms250" }, + { 10, "ms300" }, + { 11, "ms500" }, + { 12, "ms750" }, + { 13, "ms1500" }, + { 14, "infinity" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_DiscardTimer(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, + 15, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string e1ap_DRB_Acivity_vals[] = { + { 0, "active" }, + { 1, "not-active" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_DRB_Acivity(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 DRB_Activity_Item_sequence[] = { + { &hf_e1ap_dRB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_ID }, + { &hf_e1ap_dRB_Activity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_Acivity }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_DRB_Activity_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_e1ap_DRB_Activity_Item, DRB_Activity_Item_sequence); + + return offset; +} + + +static const per_sequence_t DRB_Confirm_Modified_Item_EUTRAN_sequence[] = { + { &hf_e1ap_dRB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_ID }, + { &hf_e1ap_cell_Group_Information, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_Cell_Group_Information }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_DRB_Confirm_Modified_Item_EUTRAN(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_e1ap_DRB_Confirm_Modified_Item_EUTRAN, DRB_Confirm_Modified_Item_EUTRAN_sequence); + + return offset; +} + + +static const per_sequence_t DRB_Confirm_Modified_List_EUTRAN_sequence_of[1] = { + { &hf_e1ap_DRB_Confirm_Modified_List_EUTRAN_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_Confirm_Modified_Item_EUTRAN }, +}; + +static int +dissect_e1ap_DRB_Confirm_Modified_List_EUTRAN(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_e1ap_DRB_Confirm_Modified_List_EUTRAN, DRB_Confirm_Modified_List_EUTRAN_sequence_of, + 1, maxnoofDRBs, FALSE); + + return offset; +} + + +static const per_sequence_t DRB_Confirm_Modified_Item_NG_RAN_sequence[] = { + { &hf_e1ap_dRB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_ID }, + { &hf_e1ap_cell_Group_Information, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_Cell_Group_Information }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_DRB_Confirm_Modified_Item_NG_RAN(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_e1ap_DRB_Confirm_Modified_Item_NG_RAN, DRB_Confirm_Modified_Item_NG_RAN_sequence); + + return offset; +} + + +static const per_sequence_t DRB_Confirm_Modified_List_NG_RAN_sequence_of[1] = { + { &hf_e1ap_DRB_Confirm_Modified_List_NG_RAN_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_Confirm_Modified_Item_NG_RAN }, +}; + +static int +dissect_e1ap_DRB_Confirm_Modified_List_NG_RAN(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_e1ap_DRB_Confirm_Modified_List_NG_RAN, DRB_Confirm_Modified_List_NG_RAN_sequence_of, + 1, maxnoofDRBs, FALSE); + + return offset; +} + + +static const per_sequence_t DRB_Failed_Item_EUTRAN_sequence[] = { + { &hf_e1ap_dRB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_ID }, + { &hf_e1ap_cause , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_Cause }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_DRB_Failed_Item_EUTRAN(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_e1ap_DRB_Failed_Item_EUTRAN, DRB_Failed_Item_EUTRAN_sequence); + + return offset; +} + + +static const per_sequence_t DRB_Failed_List_EUTRAN_sequence_of[1] = { + { &hf_e1ap_DRB_Failed_List_EUTRAN_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_Failed_Item_EUTRAN }, +}; + +static int +dissect_e1ap_DRB_Failed_List_EUTRAN(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_e1ap_DRB_Failed_List_EUTRAN, DRB_Failed_List_EUTRAN_sequence_of, + 1, maxnoofDRBs, FALSE); + + return offset; +} + + +static const per_sequence_t DRB_Failed_Item_NG_RAN_sequence[] = { + { &hf_e1ap_dRB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_ID }, + { &hf_e1ap_cause , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_Cause }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_DRB_Failed_Item_NG_RAN(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_e1ap_DRB_Failed_Item_NG_RAN, DRB_Failed_Item_NG_RAN_sequence); + + return offset; +} + + +static const per_sequence_t DRB_Failed_List_NG_RAN_sequence_of[1] = { + { &hf_e1ap_DRB_Failed_List_NG_RAN_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_Failed_Item_NG_RAN }, +}; + +static int +dissect_e1ap_DRB_Failed_List_NG_RAN(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_e1ap_DRB_Failed_List_NG_RAN, DRB_Failed_List_NG_RAN_sequence_of, + 1, maxnoofDRBs, FALSE); + + return offset; +} + + +static const per_sequence_t DRB_Failed_To_Modify_Item_EUTRAN_sequence[] = { + { &hf_e1ap_dRB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_ID }, + { &hf_e1ap_cause , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_Cause }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_DRB_Failed_To_Modify_Item_EUTRAN(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_e1ap_DRB_Failed_To_Modify_Item_EUTRAN, DRB_Failed_To_Modify_Item_EUTRAN_sequence); + + return offset; +} + + +static const per_sequence_t DRB_Failed_To_Modify_List_EUTRAN_sequence_of[1] = { + { &hf_e1ap_DRB_Failed_To_Modify_List_EUTRAN_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_Failed_To_Modify_Item_EUTRAN }, +}; + +static int +dissect_e1ap_DRB_Failed_To_Modify_List_EUTRAN(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_e1ap_DRB_Failed_To_Modify_List_EUTRAN, DRB_Failed_To_Modify_List_EUTRAN_sequence_of, + 1, maxnoofDRBs, FALSE); + + return offset; +} + + +static const per_sequence_t DRB_Failed_To_Modify_Item_NG_RAN_sequence[] = { + { &hf_e1ap_dRB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_ID }, + { &hf_e1ap_cause , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_Cause }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_DRB_Failed_To_Modify_Item_NG_RAN(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_e1ap_DRB_Failed_To_Modify_Item_NG_RAN, DRB_Failed_To_Modify_Item_NG_RAN_sequence); + + return offset; +} + + +static const per_sequence_t DRB_Failed_To_Modify_List_NG_RAN_sequence_of[1] = { + { &hf_e1ap_DRB_Failed_To_Modify_List_NG_RAN_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_Failed_To_Modify_Item_NG_RAN }, +}; + +static int +dissect_e1ap_DRB_Failed_To_Modify_List_NG_RAN(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_e1ap_DRB_Failed_To_Modify_List_NG_RAN, DRB_Failed_To_Modify_List_NG_RAN_sequence_of, + 1, maxnoofDRBs, FALSE); + + return offset; +} + + + +static int +dissect_e1ap_PDCP_SN(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, 262143U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_e1ap_HFN(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 PDCP_Count_sequence[] = { + { &hf_e1ap_pDCP_SN , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_PDCP_SN }, + { &hf_e1ap_hFN , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_HFN }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_PDCP_Count(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_e1ap_PDCP_Count, PDCP_Count_sequence); + + return offset; +} + + +static const per_sequence_t UP_Parameters_Item_sequence[] = { + { &hf_e1ap_uP_TNL_Information, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_UP_TNL_Information }, + { &hf_e1ap_cell_Group_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_Cell_Gorup_ID }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_UP_Parameters_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_e1ap_UP_Parameters_Item, UP_Parameters_Item_sequence); + + return offset; +} + + +static const per_sequence_t UP_Parameters_sequence_of[1] = { + { &hf_e1ap_UP_Parameters_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_UP_Parameters_Item }, +}; + +static int +dissect_e1ap_UP_Parameters(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_e1ap_UP_Parameters, UP_Parameters_sequence_of, + 1, maxnoofUPParameters, FALSE); + + return offset; +} + + +static const per_sequence_t DRB_Modified_Item_EUTRAN_sequence[] = { + { &hf_e1ap_dRB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_ID }, + { &hf_e1ap_pDCP_UL_Count , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_PDCP_Count }, + { &hf_e1ap_pDCP_DL_Count , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_PDCP_Count }, + { &hf_e1ap_uL_UP_Transport_Parameters, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_UP_Parameters }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_DRB_Modified_Item_EUTRAN(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_e1ap_DRB_Modified_Item_EUTRAN, DRB_Modified_Item_EUTRAN_sequence); + + return offset; +} + + +static const per_sequence_t DRB_Modified_List_EUTRAN_sequence_of[1] = { + { &hf_e1ap_DRB_Modified_List_EUTRAN_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_Modified_Item_EUTRAN }, +}; + +static int +dissect_e1ap_DRB_Modified_List_EUTRAN(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_e1ap_DRB_Modified_List_EUTRAN, DRB_Modified_List_EUTRAN_sequence_of, + 1, maxnoofDRBs, FALSE); + + return offset; +} + + + +static int +dissect_e1ap_QoS_Flow_Indicator(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, FALSE); + + return offset; +} + + +static const per_sequence_t QoS_Flow_Item_sequence[] = { + { &hf_e1ap_qoS_Flow_Indicator, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_QoS_Flow_Indicator }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_QoS_Flow_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_e1ap_QoS_Flow_Item, QoS_Flow_Item_sequence); + + return offset; +} + + +static const per_sequence_t QoS_Flow_List_sequence_of[1] = { + { &hf_e1ap_QoS_Flow_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_QoS_Flow_Item }, +}; + +static int +dissect_e1ap_QoS_Flow_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_e1ap_QoS_Flow_List, QoS_Flow_List_sequence_of, + 1, maxnoofQoSFlows, FALSE); + + return offset; +} + + +static const per_sequence_t QoS_Flow_Failed_Item_sequence[] = { + { &hf_e1ap_qoS_Flow_Indicator, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_QoS_Flow_Indicator }, + { &hf_e1ap_casue , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_Cause }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_QoS_Flow_Failed_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_e1ap_QoS_Flow_Failed_Item, QoS_Flow_Failed_Item_sequence); + + return offset; +} + + +static const per_sequence_t QoS_Flow_Failed_List_sequence_of[1] = { + { &hf_e1ap_QoS_Flow_Failed_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_QoS_Flow_Failed_Item }, +}; + +static int +dissect_e1ap_QoS_Flow_Failed_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_e1ap_QoS_Flow_Failed_List, QoS_Flow_Failed_List_sequence_of, + 1, maxnoofQoSFlows, FALSE); + + return offset; +} + + +static const per_sequence_t DRB_Modified_Item_NG_RAN_sequence[] = { + { &hf_e1ap_dRB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_ID }, + { &hf_e1ap_pDCP_UL_Count , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_PDCP_Count }, + { &hf_e1ap_pDCP_DL_Count , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_PDCP_Count }, + { &hf_e1ap_uL_UP_Transport_Parameters, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_UP_Parameters }, + { &hf_e1ap_flow_Setup_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_QoS_Flow_List }, + { &hf_e1ap_flow_Failed_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_QoS_Flow_Failed_List }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_DRB_Modified_Item_NG_RAN(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_e1ap_DRB_Modified_Item_NG_RAN, DRB_Modified_Item_NG_RAN_sequence); + + return offset; +} + + +static const per_sequence_t DRB_Modified_List_NG_RAN_sequence_of[1] = { + { &hf_e1ap_DRB_Modified_List_NG_RAN_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_Modified_Item_NG_RAN }, +}; + +static int +dissect_e1ap_DRB_Modified_List_NG_RAN(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_e1ap_DRB_Modified_List_NG_RAN, DRB_Modified_List_NG_RAN_sequence_of, + 1, maxnoofDRBs, FALSE); + + return offset; +} + + +static const per_sequence_t GNB_CU_UP_CellGroupRelatedConfiguration_Item_sequence[] = { + { &hf_e1ap_cell_Group_ID , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_Cell_Gorup_ID }, + { &hf_e1ap_uP_TNL_Information, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_UP_TNL_Information }, + { &hf_e1ap_uL_Configuration, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_e1ap_UL_Configuration }, + { &hf_e1ap_iE_Extensions , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_GNB_CU_UP_CellGroupRelatedConfiguration_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_e1ap_GNB_CU_UP_CellGroupRelatedConfiguration_Item, GNB_CU_UP_CellGroupRelatedConfiguration_Item_sequence); + + return offset; +} + + +static const per_sequence_t GNB_CU_UP_CellGroupRelatedConfiguration_sequence_of[1] = { + { &hf_e1ap_GNB_CU_UP_CellGroupRelatedConfiguration_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_GNB_CU_UP_CellGroupRelatedConfiguration_Item }, +}; + +static int +dissect_e1ap_GNB_CU_UP_CellGroupRelatedConfiguration(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_e1ap_GNB_CU_UP_CellGroupRelatedConfiguration, GNB_CU_UP_CellGroupRelatedConfiguration_sequence_of, + 1, maxnoofUPParameters, FALSE); + + return offset; +} + + +static const per_sequence_t DRB_Required_To_Modify_Item_EUTRAN_sequence[] = { + { &hf_e1ap_dRB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_ID }, + { &hf_e1ap_s1_DL_UP_TNL_Information, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_UP_TNL_Information }, + { &hf_e1ap_data_Forwarding_Information_Response, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_Data_Forwarding_Information_Response }, + { &hf_e1ap_gNB_CU_UP_CellGroupRelatedConfiguration, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_GNB_CU_UP_CellGroupRelatedConfiguration }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_DRB_Required_To_Modify_Item_EUTRAN(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_e1ap_DRB_Required_To_Modify_Item_EUTRAN, DRB_Required_To_Modify_Item_EUTRAN_sequence); + + return offset; +} + + +static const per_sequence_t DRB_Required_To_Modify_List_EUTRAN_sequence_of[1] = { + { &hf_e1ap_DRB_Required_To_Modify_List_EUTRAN_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_Required_To_Modify_Item_EUTRAN }, +}; + +static int +dissect_e1ap_DRB_Required_To_Modify_List_EUTRAN(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_e1ap_DRB_Required_To_Modify_List_EUTRAN, DRB_Required_To_Modify_List_EUTRAN_sequence_of, + 1, maxnoofDRBs, FALSE); + + return offset; +} + + +static const per_sequence_t DRB_Required_To_Modify_Item_NG_RAN_sequence[] = { + { &hf_e1ap_dRB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_ID }, + { &hf_e1ap_data_Forwarding_Information_Response, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_Data_Forwarding_Information_Response }, + { &hf_e1ap_gNB_CU_UP_CellGroupRelatedConfiguration, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_GNB_CU_UP_CellGroupRelatedConfiguration }, + { &hf_e1ap_flow_To_Remove , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_QoS_Flow_List }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_DRB_Required_To_Modify_Item_NG_RAN(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_e1ap_DRB_Required_To_Modify_Item_NG_RAN, DRB_Required_To_Modify_Item_NG_RAN_sequence); + + return offset; +} + + +static const per_sequence_t DRB_Required_To_Modify_List_NG_RAN_sequence_of[1] = { + { &hf_e1ap_DRB_Required_To_Modify_List_NG_RAN_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_Required_To_Modify_Item_NG_RAN }, +}; + +static int +dissect_e1ap_DRB_Required_To_Modify_List_NG_RAN(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_e1ap_DRB_Required_To_Modify_List_NG_RAN, DRB_Required_To_Modify_List_NG_RAN_sequence_of, + 1, maxnoofDRBs, FALSE); + + return offset; +} + + +static const per_sequence_t DRB_Setup_Item_EUTRAN_sequence[] = { + { &hf_e1ap_dRB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_ID }, + { &hf_e1ap_s1_DL_UP_TNL_Information, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_UP_TNL_Information }, + { &hf_e1ap_data_Forwarding_Information_Response, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_Data_Forwarding_Information_Response }, + { &hf_e1ap_uL_UP_Transport_Parameters, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_UP_Parameters }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_DRB_Setup_Item_EUTRAN(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_e1ap_DRB_Setup_Item_EUTRAN, DRB_Setup_Item_EUTRAN_sequence); + + return offset; +} + + +static const per_sequence_t DRB_Setup_List_EUTRAN_sequence_of[1] = { + { &hf_e1ap_DRB_Setup_List_EUTRAN_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_Setup_Item_EUTRAN }, +}; + +static int +dissect_e1ap_DRB_Setup_List_EUTRAN(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_e1ap_DRB_Setup_List_EUTRAN, DRB_Setup_List_EUTRAN_sequence_of, + 1, maxnoofDRBs, FALSE); + + return offset; +} + + +static const per_sequence_t DRB_Setup_Item_NG_RAN_sequence[] = { + { &hf_e1ap_dRB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_ID }, + { &hf_e1ap_dRB_data_Forwarding_Information_Response, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_Data_Forwarding_Information_Response }, + { &hf_e1ap_uL_UP_Transport_Parameters, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_UP_Parameters }, + { &hf_e1ap_flow_Setup_List, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_QoS_Flow_List }, + { &hf_e1ap_flow_Failed_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_QoS_Flow_Failed_List }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_DRB_Setup_Item_NG_RAN(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_e1ap_DRB_Setup_Item_NG_RAN, DRB_Setup_Item_NG_RAN_sequence); + + return offset; +} + + +static const per_sequence_t DRB_Setup_List_NG_RAN_sequence_of[1] = { + { &hf_e1ap_DRB_Setup_List_NG_RAN_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_Setup_Item_NG_RAN }, +}; + +static int +dissect_e1ap_DRB_Setup_List_NG_RAN(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_e1ap_DRB_Setup_List_NG_RAN, DRB_Setup_List_NG_RAN_sequence_of, + 1, maxnoofDRBs, FALSE); + + return offset; +} + + +static const per_sequence_t DRB_Status_Item_sequence[] = { + { &hf_e1ap_dRB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_ID }, + { &hf_e1ap_pDCP_DL_Count , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_PDCP_Count }, + { &hf_e1ap_pDCP_UL_Count , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_PDCP_Count }, + { &hf_e1ap_data_Forwarding_Information_Response, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_Data_Forwarding_Information_Response }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_DRB_Status_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_e1ap_DRB_Status_Item, DRB_Status_Item_sequence); + + return offset; +} + + +static const value_string e1ap_PDCP_SN_Size_vals[] = { + { 0, "s-12" }, + { 1, "s-18" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_PDCP_SN_Size(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 e1ap_RLC_Mode_vals[] = { + { 0, "tM" }, + { 1, "uM" }, + { 2, "aM" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_RLC_Mode(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_e1ap_ROHC_Profiles(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, 511U, NULL, TRUE); + + return offset; +} + + +static const per_sequence_t ROHC_Parameters_sequence[] = { + { &hf_e1ap_rOHC_Profiles , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ROHC_Profiles }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_ROHC_Parameters(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_e1ap_ROHC_Parameters, ROHC_Parameters_sequence); + + return offset; +} + + +static const value_string e1ap_T_ReorderingUL_vals[] = { + { 0, "ms0" }, + { 1, "ms5" }, + { 2, "ms10" }, + { 3, "ms15" }, + { 4, "ms20" }, + { 5, "ms25" }, + { 6, "ms30" }, + { 7, "ms35" }, + { 8, "ms40" }, + { 9, "ms45" }, + { 10, "ms50" }, + { 11, "ms55" }, + { 12, "ms60" }, + { 13, "ms65" }, + { 14, "ms70" }, + { 15, "ms75" }, + { 16, "ms80" }, + { 17, "ms85" }, + { 18, "ms90" }, + { 19, "ms95" }, + { 20, "ms100" }, + { 21, "ms110" }, + { 22, "ms120" }, + { 23, "ms130" }, + { 24, "ms140" }, + { 25, "ms150" }, + { 26, "ms160" }, + { 27, "ms170" }, + { 28, "ms180" }, + { 29, "ms190" }, + { 30, "ms200" }, + { 31, "ms220" }, + { 32, "ms240" }, + { 33, "ms260" }, + { 34, "ms280" }, + { 35, "ms300" }, + { 36, "ms500" }, + { 37, "ms750" }, + { 38, "ms1000" }, + { 39, "ms1500" }, + { 40, "ms3000" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_T_ReorderingUL(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, + 41, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string e1ap_T_ReorderingDL_vals[] = { + { 0, "ms0" }, + { 1, "ms5" }, + { 2, "ms10" }, + { 3, "ms15" }, + { 4, "ms20" }, + { 5, "ms25" }, + { 6, "ms30" }, + { 7, "ms35" }, + { 8, "ms40" }, + { 9, "ms45" }, + { 10, "ms50" }, + { 11, "ms55" }, + { 12, "ms60" }, + { 13, "ms65" }, + { 14, "ms70" }, + { 15, "ms75" }, + { 16, "ms80" }, + { 17, "ms85" }, + { 18, "ms90" }, + { 19, "ms95" }, + { 20, "ms100" }, + { 21, "ms110" }, + { 22, "ms120" }, + { 23, "ms130" }, + { 24, "ms140" }, + { 25, "ms150" }, + { 26, "ms160" }, + { 27, "ms170" }, + { 28, "ms180" }, + { 29, "ms190" }, + { 30, "ms200" }, + { 31, "ms220" }, + { 32, "ms240" }, + { 33, "ms260" }, + { 34, "ms280" }, + { 35, "ms300" }, + { 36, "ms500" }, + { 37, "ms750" }, + { 38, "ms1000" }, + { 39, "ms1500" }, + { 40, "ms3000" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_T_ReorderingDL(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, + 41, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const per_sequence_t T_ReorderingTimer_sequence[] = { + { &hf_e1ap_t_ReorderingUL , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_T_ReorderingUL }, + { &hf_e1ap_t_ReorderingDL , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_T_ReorderingDL }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_T_ReorderingTimer(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_e1ap_T_ReorderingTimer, T_ReorderingTimer_sequence); + + return offset; +} + + +static const value_string e1ap_ULDataSplitThreshold_vals[] = { + { 0, "b0" }, + { 1, "b100" }, + { 2, "b200" }, + { 3, "b400" }, + { 4, "b800" }, + { 5, "b1600" }, + { 6, "b3200" }, + { 7, "b6400" }, + { 8, "b12800" }, + { 9, "b25600" }, + { 10, "b51200" }, + { 11, "b102400" }, + { 12, "b204800" }, + { 13, "b409600" }, + { 14, "b819200" }, + { 15, "b1228800" }, + { 16, "b1638400" }, + { 17, "b2457600" }, + { 18, "b3276800" }, + { 19, "b4096000" }, + { 20, "b4915200" }, + { 21, "b5734400" }, + { 22, "b6553600" }, + { 23, "infinity" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_ULDataSplitThreshold(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, + 24, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string e1ap_PDCP_Duplication_vals[] = { + { 0, "true" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_PDCP_Duplication(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 PDCP_Configuration_sequence[] = { + { &hf_e1ap_pDCP_SN_Size , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_PDCP_SN_Size }, + { &hf_e1ap_rLC_Mode , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_RLC_Mode }, + { &hf_e1ap_rOHC_Parameters, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ROHC_Parameters }, + { &hf_e1ap_t_ReorderingTimer, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_T_ReorderingTimer }, + { &hf_e1ap_discardTimer , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_DiscardTimer }, + { &hf_e1ap_uLDataSplitThreshold, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ULDataSplitThreshold }, + { &hf_e1ap_pDCP_Duplication, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_PDCP_Duplication }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_PDCP_Configuration(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_e1ap_PDCP_Configuration, PDCP_Configuration_sequence); + + return offset; +} + + + +static int +dissect_e1ap_QCI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 255U, NULL, FALSE); + + return offset; +} + + +static const value_string e1ap_PriorityLevel_vals[] = { + { 0, "spare" }, + { 1, "highest" }, + { 14, "lowest" }, + { 15, "no-priority" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_PriorityLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 15U, NULL, FALSE); + + return offset; +} + + +static const value_string e1ap_Pre_emptionCapability_vals[] = { + { 0, "shall-not-trigger-pre-emption" }, + { 1, "may-trigger-pre-emption" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_Pre_emptionCapability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, FALSE, 0, NULL); + + return offset; +} + + +static const value_string e1ap_Pre_emptionVulnerability_vals[] = { + { 0, "not-pre-emptable" }, + { 1, "pre-emptable" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_Pre_emptionVulnerability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, FALSE, 0, NULL); + + return offset; +} + + +static const per_sequence_t EUTRANAllocationAndRetentionPriority_sequence[] = { + { &hf_e1ap_priorityLevel , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_PriorityLevel }, + { &hf_e1ap_pre_emptionCapability, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_Pre_emptionCapability }, + { &hf_e1ap_pre_emptionVulnerability, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_Pre_emptionVulnerability }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_EUTRANAllocationAndRetentionPriority(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_e1ap_EUTRANAllocationAndRetentionPriority, EUTRANAllocationAndRetentionPriority_sequence); + + return offset; +} + + +static const per_sequence_t GBR_QosInformation_sequence[] = { + { &hf_e1ap_e_RAB_MaximumBitrateDL, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_BitRate }, + { &hf_e1ap_e_RAB_MaximumBitrateUL, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_BitRate }, + { &hf_e1ap_e_RAB_GuaranteedBitrateDL, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_BitRate }, + { &hf_e1ap_e_RAB_GuaranteedBitrateUL, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_BitRate }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_GBR_QosInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_GBR_QosInformation, GBR_QosInformation_sequence); + + return offset; +} + + +static const per_sequence_t EUTRAN_QoS_sequence[] = { + { &hf_e1ap_qCI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_QCI }, + { &hf_e1ap_eUTRANallocationAndRetentionPriority, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_EUTRANAllocationAndRetentionPriority }, + { &hf_e1ap_gbrQosInformation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_GBR_QosInformation }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_EUTRAN_QoS(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_e1ap_EUTRAN_QoS, EUTRAN_QoS_sequence); + + return offset; +} + + +static const value_string e1ap_PDCP_Count_Request_vals[] = { + { 0, "requested" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_PDCP_Count_Request(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 DRB_To_Modify_Item_EUTRAN_sequence[] = { + { &hf_e1ap_dRB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_ID }, + { &hf_e1ap_pDCP_Configuration, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_PDCP_Configuration }, + { &hf_e1ap_eUTRAN_QoS , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_EUTRAN_QoS }, + { &hf_e1ap_s1_UL_UP_TNL_Information, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_UP_TNL_Information }, + { &hf_e1ap_data_Forwarding_Information_Request, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_Data_Forwarding_Information_Request }, + { &hf_e1ap_pDCP_Count_Request, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_PDCP_Count_Request }, + { &hf_e1ap_pDCP_UL_Count , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_PDCP_Count }, + { &hf_e1ap_pDCP_DL_Count , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_PDCP_Count }, + { &hf_e1ap_dL_UP_Parameters, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_UP_Parameters }, + { &hf_e1ap_cell_Group_To_Add, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_Cell_Group_Information }, + { &hf_e1ap_cell_Group_To_Modify, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_Cell_Group_Information }, + { &hf_e1ap_cell_Group_To_Remove, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_Cell_Group_Information }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_DRB_To_Modify_Item_EUTRAN(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_e1ap_DRB_To_Modify_Item_EUTRAN, DRB_To_Modify_Item_EUTRAN_sequence); + + return offset; +} + + +static const per_sequence_t DRB_To_Modify_List_EUTRAN_sequence_of[1] = { + { &hf_e1ap_DRB_To_Modify_List_EUTRAN_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_To_Modify_Item_EUTRAN }, +}; + +static int +dissect_e1ap_DRB_To_Modify_List_EUTRAN(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_e1ap_DRB_To_Modify_List_EUTRAN, DRB_To_Modify_List_EUTRAN_sequence_of, + 1, maxnoofDRBs, FALSE); + + return offset; +} + + +static const value_string e1ap_SDAP_Header_UL_vals[] = { + { 0, "present" }, + { 1, "absent" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_SDAP_Header_UL(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 e1ap_SDAP_Header_DL_vals[] = { + { 0, "present" }, + { 1, "absent" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_SDAP_Header_DL(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 SDAP_Configuration_sequence[] = { + { &hf_e1ap_defaultDRB , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_DefaultDRB }, + { &hf_e1ap_sDAP_Header_UL , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_SDAP_Header_UL }, + { &hf_e1ap_sDAP_Header_DL , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_SDAP_Header_DL }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_SDAP_Configuration(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_e1ap_SDAP_Configuration, SDAP_Configuration_sequence); + + return offset; +} + + + +static int +dissect_e1ap_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, TRUE); + + return offset; +} + + + +static int +dissect_e1ap_INTEGER_1_127_(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, 127U, NULL, TRUE); + + return offset; +} + + + +static int +dissect_e1ap_MaxDataBurstVolume(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, FALSE); + + return offset; +} + + +static const per_sequence_t Non_Dynamic5QIDescriptor_sequence[] = { + { &hf_e1ap_fiveQI , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_INTEGER_0_255_ }, + { &hf_e1ap_qoSPriorityLevel_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_e1ap_INTEGER_1_127_ }, + { &hf_e1ap_averagingWindow, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_e1ap_AveragingWindow }, + { &hf_e1ap_maxDataBurstVolume, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_e1ap_MaxDataBurstVolume }, + { &hf_e1ap_iE_Extensions , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_Non_Dynamic5QIDescriptor(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_e1ap_Non_Dynamic5QIDescriptor, Non_Dynamic5QIDescriptor_sequence); + + return offset; +} + + + +static int +dissect_e1ap_INTEGER_1_127(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, 127U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_e1ap_PacketDelayBudget(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, FALSE); + + return offset; +} + + + +static int +dissect_e1ap_PacketErrorRate(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, FALSE); + + return offset; +} + + +static const value_string e1ap_T_delayCritical_vals[] = { + { 0, "delay-critical" }, + { 1, "non-delay-critical" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_T_delayCritical(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, FALSE, 0, NULL); + + return offset; +} + + +static const per_sequence_t Dynamic5QIDescriptor_sequence[] = { + { &hf_e1ap_qoSPriorityLevel, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_INTEGER_1_127 }, + { &hf_e1ap_packetDelayBudget, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_PacketDelayBudget }, + { &hf_e1ap_packetErrorRate, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_PacketErrorRate }, + { &hf_e1ap_delayCritical , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_e1ap_T_delayCritical }, + { &hf_e1ap_averagingWindow, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_e1ap_AveragingWindow }, + { &hf_e1ap_maxDataBurstVolume, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_e1ap_MaxDataBurstVolume }, + { &hf_e1ap_iE_Extensions , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_Dynamic5QIDescriptor(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_e1ap_Dynamic5QIDescriptor, Dynamic5QIDescriptor_sequence); + + return offset; +} + + +static const value_string e1ap_QoS_Characteristics_vals[] = { + { 0, "non-Dynamic-5QI" }, + { 1, "dynamic-5QI" }, + { 0, NULL } +}; + +static const per_choice_t QoS_Characteristics_choice[] = { + { 0, &hf_e1ap_non_Dynamic_5QI, ASN1_EXTENSION_ROOT , dissect_e1ap_Non_Dynamic5QIDescriptor }, + { 1, &hf_e1ap_dynamic_5QI , ASN1_EXTENSION_ROOT , dissect_e1ap_Dynamic5QIDescriptor }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e1ap_QoS_Characteristics(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_e1ap_QoS_Characteristics, QoS_Characteristics_choice, + NULL); + + return offset; +} + + +static const per_sequence_t NGRANAllocationAndRetentionPriority_sequence[] = { + { &hf_e1ap_priorityLevel , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_PriorityLevel }, + { &hf_e1ap_pre_emptionCapability, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_Pre_emptionCapability }, + { &hf_e1ap_pre_emptionVulnerability, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_Pre_emptionVulnerability }, + { &hf_e1ap_iE_Extensions , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_NGRANAllocationAndRetentionPriority(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_e1ap_NGRANAllocationAndRetentionPriority, NGRANAllocationAndRetentionPriority_sequence); + + return offset; +} + + +static const value_string e1ap_T_notificationControl_vals[] = { + { 0, "notification-enabled" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_T_notificationControl(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 int +dissect_e1ap_MaxPacketLossRate(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, 1000U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t GBR_QoSFlowInformation_sequence[] = { + { &hf_e1ap_maxFlowBitRateDownlink, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_BitRate }, + { &hf_e1ap_maxFlowBitRateUplink, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_BitRate }, + { &hf_e1ap_guaranteedFlowBitRateDownlink, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_BitRate }, + { &hf_e1ap_guaranteedFlowBitRateUplink, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_BitRate }, + { &hf_e1ap_notificationControl, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_T_notificationControl }, + { &hf_e1ap_maxPacketLossRateDownlink, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_MaxPacketLossRate }, + { &hf_e1ap_maxPacketLossRateUplink, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_MaxPacketLossRate }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_GBR_QoSFlowInformation(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_e1ap_GBR_QoSFlowInformation, GBR_QoSFlowInformation_sequence); + + return offset; +} + + +static const value_string e1ap_T_reflective_QoS_Attribute_vals[] = { + { 0, "subject-to" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_T_reflective_QoS_Attribute(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 e1ap_T_additional_QoS_Information_vals[] = { + { 0, "more-likely" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_T_additional_QoS_Information(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 int +dissect_e1ap_INTEGER_1_8_(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, 8U, NULL, TRUE); + + return offset; +} + + +static const value_string e1ap_T_reflective_QoS_Indicator_vals[] = { + { 0, "enabled" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_T_reflective_QoS_Indicator(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 QoSFlowLevelQoSParameters_sequence[] = { + { &hf_e1ap_qoS_Characteristics, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_QoS_Characteristics }, + { &hf_e1ap_nGRANallocationRetentionPriority, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_NGRANAllocationAndRetentionPriority }, + { &hf_e1ap_gBR_QoS_Flow_Information, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_e1ap_GBR_QoSFlowInformation }, + { &hf_e1ap_reflective_QoS_Attribute, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_e1ap_T_reflective_QoS_Attribute }, + { &hf_e1ap_additional_QoS_Information, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_e1ap_T_additional_QoS_Information }, + { &hf_e1ap_paging_Policy_Indicator, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_e1ap_INTEGER_1_8_ }, + { &hf_e1ap_reflective_QoS_Indicator, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_e1ap_T_reflective_QoS_Indicator }, + { &hf_e1ap_iE_Extensions , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_QoSFlowLevelQoSParameters(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_e1ap_QoSFlowLevelQoSParameters, QoSFlowLevelQoSParameters_sequence); + + return offset; +} + + +static const per_sequence_t QoS_Flow_QoS_Parameter_Item_sequence[] = { + { &hf_e1ap_qoS_Flow_Indicator, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_QoS_Flow_Indicator }, + { &hf_e1ap_qoSFlowLevelQoSParameters, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_QoSFlowLevelQoSParameters }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_QoS_Flow_QoS_Parameter_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_e1ap_QoS_Flow_QoS_Parameter_Item, QoS_Flow_QoS_Parameter_Item_sequence); + + return offset; +} + + +static const per_sequence_t QoS_Flow_QoS_Parameter_List_sequence_of[1] = { + { &hf_e1ap_QoS_Flow_QoS_Parameter_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_QoS_Flow_QoS_Parameter_Item }, +}; + +static int +dissect_e1ap_QoS_Flow_QoS_Parameter_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_e1ap_QoS_Flow_QoS_Parameter_List, QoS_Flow_QoS_Parameter_List_sequence_of, + 1, maxnoofQoSFlows, FALSE); + + return offset; +} + + +static const per_sequence_t DRB_To_Modify_Item_NG_RAN_sequence[] = { + { &hf_e1ap_dRB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_ID }, + { &hf_e1ap_sDAP_Configuration, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_SDAP_Configuration }, + { &hf_e1ap_pDCP_Configuration, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_PDCP_Configuration }, + { &hf_e1ap_dRB_Data_Forwarding_Information_Request, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_Data_Forwarding_Information_Request }, + { &hf_e1ap_pDCP_Count_Request, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_PDCP_Count_Request }, + { &hf_e1ap_pDCP_UL_Count , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_PDCP_Count }, + { &hf_e1ap_pDCP_DL_Count , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_PDCP_Count }, + { &hf_e1ap_dL_UP_Parameters, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_UP_Parameters }, + { &hf_e1ap_cell_Group_To_Add, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_Cell_Group_Information }, + { &hf_e1ap_cell_Group_To_Modify, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_Cell_Group_Information }, + { &hf_e1ap_cell_Group_To_Remove, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_Cell_Group_Information }, + { &hf_e1ap_flow_Mapping_Information, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_QoS_Flow_QoS_Parameter_List }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_DRB_To_Modify_Item_NG_RAN(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_e1ap_DRB_To_Modify_Item_NG_RAN, DRB_To_Modify_Item_NG_RAN_sequence); + + return offset; +} + + +static const per_sequence_t DRB_To_Modify_List_NG_RAN_sequence_of[1] = { + { &hf_e1ap_DRB_To_Modify_List_NG_RAN_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_To_Modify_Item_NG_RAN }, +}; + +static int +dissect_e1ap_DRB_To_Modify_List_NG_RAN(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_e1ap_DRB_To_Modify_List_NG_RAN, DRB_To_Modify_List_NG_RAN_sequence_of, + 1, maxnoofDRBs, FALSE); + + return offset; +} + + +static const per_sequence_t DRB_To_Remove_Item_EUTRAN_sequence[] = { + { &hf_e1ap_dRB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_ID }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_DRB_To_Remove_Item_EUTRAN(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_e1ap_DRB_To_Remove_Item_EUTRAN, DRB_To_Remove_Item_EUTRAN_sequence); + + return offset; +} + + +static const per_sequence_t DRB_To_Remove_List_EUTRAN_sequence_of[1] = { + { &hf_e1ap_DRB_To_Remove_List_EUTRAN_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_To_Remove_Item_EUTRAN }, +}; + +static int +dissect_e1ap_DRB_To_Remove_List_EUTRAN(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_e1ap_DRB_To_Remove_List_EUTRAN, DRB_To_Remove_List_EUTRAN_sequence_of, + 1, maxnoofDRBs, FALSE); + + return offset; +} + + +static const per_sequence_t DRB_To_Remove_Item_NG_RAN_sequence[] = { + { &hf_e1ap_dRB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_ID }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_DRB_To_Remove_Item_NG_RAN(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_e1ap_DRB_To_Remove_Item_NG_RAN, DRB_To_Remove_Item_NG_RAN_sequence); + + return offset; +} + + +static const per_sequence_t DRB_To_Remove_List_NG_RAN_sequence_of[1] = { + { &hf_e1ap_DRB_To_Remove_List_NG_RAN_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_To_Remove_Item_NG_RAN }, +}; + +static int +dissect_e1ap_DRB_To_Remove_List_NG_RAN(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_e1ap_DRB_To_Remove_List_NG_RAN, DRB_To_Remove_List_NG_RAN_sequence_of, + 1, maxnoofDRBs, FALSE); + + return offset; +} + + +static const per_sequence_t DRB_To_Setup_Item_EUTRAN_sequence[] = { + { &hf_e1ap_dRB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_ID }, + { &hf_e1ap_pDCP_Configuration, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_PDCP_Configuration }, + { &hf_e1ap_eUTRAN_QoS , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_EUTRAN_QoS }, + { &hf_e1ap_s1_UL_UP_TNL_Information, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_UP_TNL_Information }, + { &hf_e1ap_data_Forwarding_Information_Request, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_Data_Forwarding_Information_Request }, + { &hf_e1ap_cell_Group_Information, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_Cell_Group_Information }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_DRB_To_Setup_Item_EUTRAN(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_e1ap_DRB_To_Setup_Item_EUTRAN, DRB_To_Setup_Item_EUTRAN_sequence); + + return offset; +} + + +static const per_sequence_t DRB_To_Setup_List_EUTRAN_sequence_of[1] = { + { &hf_e1ap_DRB_To_Setup_List_EUTRAN_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_To_Setup_Item_EUTRAN }, +}; + +static int +dissect_e1ap_DRB_To_Setup_List_EUTRAN(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_e1ap_DRB_To_Setup_List_EUTRAN, DRB_To_Setup_List_EUTRAN_sequence_of, + 1, maxnoofDRBs, FALSE); + + return offset; +} + + +static const per_sequence_t DRB_To_Setup_Item_NG_RAN_sequence[] = { + { &hf_e1ap_dRB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_ID }, + { &hf_e1ap_sDAP_Configuration, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_SDAP_Configuration }, + { &hf_e1ap_pDCP_Configuration, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_PDCP_Configuration }, + { &hf_e1ap_cell_Group_Information, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_Cell_Group_Information }, + { &hf_e1ap_flow_Mapping_Information, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_QoS_Flow_QoS_Parameter_List }, + { &hf_e1ap_dRB_Data_Forwarding_Information_Request, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_Data_Forwarding_Information_Request }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_DRB_To_Setup_Item_NG_RAN(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_e1ap_DRB_To_Setup_Item_NG_RAN, DRB_To_Setup_Item_NG_RAN_sequence); + + return offset; +} + + +static const per_sequence_t DRB_To_Setup_List_NG_RAN_sequence_of[1] = { + { &hf_e1ap_DRB_To_Setup_List_NG_RAN_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_To_Setup_Item_NG_RAN }, +}; + +static int +dissect_e1ap_DRB_To_Setup_List_NG_RAN(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_e1ap_DRB_To_Setup_List_NG_RAN, DRB_To_Setup_List_NG_RAN_sequence_of, + 1, maxnoofDRBs, FALSE); + + return offset; +} + + + +static int +dissect_e1ap_EncryptionKey(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 EUTRAN_QoS_Support_Item_sequence[] = { + { &hf_e1ap_eUTRAN_QoS , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_EUTRAN_QoS }, + { &hf_e1ap_iE_Extensions , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_EUTRAN_QoS_Support_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_e1ap_EUTRAN_QoS_Support_Item, EUTRAN_QoS_Support_Item_sequence); + + return offset; +} + + +static const per_sequence_t EUTRAN_QoS_Support_List_sequence_of[1] = { + { &hf_e1ap_EUTRAN_QoS_Support_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_EUTRAN_QoS_Support_Item }, +}; + +static int +dissect_e1ap_EUTRAN_QoS_Support_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_e1ap_EUTRAN_QoS_Support_List, EUTRAN_QoS_Support_List_sequence_of, + 1, maxnoofEUTRANQOSParameters, FALSE); + + return offset; +} + + + +static int +dissect_e1ap_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_e1ap_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 int +dissect_e1ap_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 int +dissect_e1ap_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 int +dissect_e1ap_GNB_CU_UP_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 value_string e1ap_IntegrityProtectionIndication_vals[] = { + { 0, "required" }, + { 1, "preferred" }, + { 2, "not-needed" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_IntegrityProtectionIndication(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 value_string e1ap_IntegrityProtectionAlgorithm_vals[] = { + { 0, "nIA0" }, + { 1, "i-128-NIA1" }, + { 2, "i-128-NIA2" }, + { 3, "i-128-NIA3" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_IntegrityProtectionAlgorithm(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_e1ap_IntegrityProtectionKey(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 NG_RAN_QoS_Support_Item_sequence[] = { + { &hf_e1ap_non_Dynamic5QIDescriptor, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_Non_Dynamic5QIDescriptor }, + { &hf_e1ap_iE_Extensions , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_NG_RAN_QoS_Support_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_e1ap_NG_RAN_QoS_Support_Item, NG_RAN_QoS_Support_Item_sequence); + + return offset; +} + + +static const per_sequence_t NG_RAN_QoS_Support_List_sequence_of[1] = { + { &hf_e1ap_NG_RAN_QoS_Support_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_NG_RAN_QoS_Support_Item }, +}; + +static int +dissect_e1ap_NG_RAN_QoS_Support_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_e1ap_NG_RAN_QoS_Support_List, NG_RAN_QoS_Support_List_sequence_of, + 1, maxnoofNGRANQOSParameters, FALSE); + + return offset; +} + + + +static int +dissect_e1ap_NR_Cell_Identity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 36, 36, FALSE, NULL, NULL); + + return offset; +} + + + +static int +dissect_e1ap_PLMN_Identity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 252 "./asn1/e1ap/e1ap.cnf" + tvbuff_t *param_tvb = NULL; + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + 3, 3, FALSE, ¶m_tvb); + + if (param_tvb) { + proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_e1ap_PLMN_Identity); + dissect_e212_mcc_mnc(param_tvb, actx->pinfo, subtree, 0, E212_NONE, FALSE); + } + + + + return offset; +} + + +static const per_sequence_t NR_CGI_sequence[] = { + { &hf_e1ap_pLMN_Identity , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_PLMN_Identity }, + { &hf_e1ap_nR_Cell_Identity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_NR_Cell_Identity }, + { &hf_e1ap_iE_Extensions , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_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_e1ap_NR_CGI, NR_CGI_sequence); + + return offset; +} + + +static const per_sequence_t NR_CGI_Support_Item_sequence[] = { + { &hf_e1ap_nR_CGI , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_NR_CGI }, + { &hf_e1ap_iE_Extensions , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_NR_CGI_Support_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_e1ap_NR_CGI_Support_Item, NR_CGI_Support_Item_sequence); + + return offset; +} + + +static const per_sequence_t NR_CGI_Support_List_sequence_of[1] = { + { &hf_e1ap_NR_CGI_Support_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_NR_CGI_Support_Item }, +}; + +static int +dissect_e1ap_NR_CGI_Support_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_e1ap_NR_CGI_Support_List, NR_CGI_Support_List_sequence_of, + 1, maxnoofNRCGI, FALSE); + + return offset; +} + + + +static int +dissect_e1ap_PDU_Session_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, 255U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t PDU_Session_Resource_Confirm_Modified_Item_sequence[] = { + { &hf_e1ap_pDU_Session_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_PDU_Session_ID }, + { &hf_e1ap_dRB_Confirm_Modified_List_NG_RAN, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_DRB_Confirm_Modified_List_NG_RAN }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_PDU_Session_Resource_Confirm_Modified_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_e1ap_PDU_Session_Resource_Confirm_Modified_Item, PDU_Session_Resource_Confirm_Modified_Item_sequence); + + return offset; +} + + +static const per_sequence_t PDU_Session_Resource_Confirm_Modified_List_sequence_of[1] = { + { &hf_e1ap_PDU_Session_Resource_Confirm_Modified_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_PDU_Session_Resource_Confirm_Modified_Item }, +}; + +static int +dissect_e1ap_PDU_Session_Resource_Confirm_Modified_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e1ap_PDU_Session_Resource_Confirm_Modified_List, PDU_Session_Resource_Confirm_Modified_List_sequence_of, + 1, maxnoofPDUSessionResource, FALSE); + + return offset; +} + + +static const per_sequence_t PDU_Session_Resource_Failed_Item_sequence[] = { + { &hf_e1ap_pDU_Session_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_PDU_Session_ID }, + { &hf_e1ap_casue , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_Cause }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_PDU_Session_Resource_Failed_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_e1ap_PDU_Session_Resource_Failed_Item, PDU_Session_Resource_Failed_Item_sequence); + + return offset; +} + + +static const per_sequence_t PDU_Session_Resource_Failed_List_sequence_of[1] = { + { &hf_e1ap_PDU_Session_Resource_Failed_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_PDU_Session_Resource_Failed_Item }, +}; + +static int +dissect_e1ap_PDU_Session_Resource_Failed_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_e1ap_PDU_Session_Resource_Failed_List, PDU_Session_Resource_Failed_List_sequence_of, + 1, maxnoofPDUSessionResource, FALSE); + + return offset; +} + + +static const per_sequence_t PDU_Session_Resource_Failed_To_Modify_Item_sequence[] = { + { &hf_e1ap_pDU_Session_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_PDU_Session_ID }, + { &hf_e1ap_casue , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_Cause }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_PDU_Session_Resource_Failed_To_Modify_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_e1ap_PDU_Session_Resource_Failed_To_Modify_Item, PDU_Session_Resource_Failed_To_Modify_Item_sequence); + + return offset; +} + + +static const per_sequence_t PDU_Session_Resource_Failed_To_Modify_List_sequence_of[1] = { + { &hf_e1ap_PDU_Session_Resource_Failed_To_Modify_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_PDU_Session_Resource_Failed_To_Modify_Item }, +}; + +static int +dissect_e1ap_PDU_Session_Resource_Failed_To_Modify_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e1ap_PDU_Session_Resource_Failed_To_Modify_List, PDU_Session_Resource_Failed_To_Modify_List_sequence_of, + 1, maxnoofPDUSessionResource, FALSE); + + return offset; +} + + +static const per_sequence_t PDU_Session_Resource_Modified_Item_sequence[] = { + { &hf_e1ap_pDU_Session_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_PDU_Session_ID }, + { &hf_e1ap_dRB_Setup_List_NG_RAN, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_DRB_Setup_List_NG_RAN }, + { &hf_e1ap_dRB_Failed_List_NG_RAN, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_DRB_Failed_List_NG_RAN }, + { &hf_e1ap_dRB_Modified_List_NG_RAN, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_DRB_Modified_List_NG_RAN }, + { &hf_e1ap_dRB_Failed_To_Modify_List_NG_RAN, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_DRB_Failed_To_Modify_List_NG_RAN }, + { &hf_e1ap_dRB_To_Remove_List_NG_RAN, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_DRB_To_Remove_List_NG_RAN }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_PDU_Session_Resource_Modified_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_e1ap_PDU_Session_Resource_Modified_Item, PDU_Session_Resource_Modified_Item_sequence); + + return offset; +} + + +static const per_sequence_t PDU_Session_Resource_Modified_List_sequence_of[1] = { + { &hf_e1ap_PDU_Session_Resource_Modified_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_PDU_Session_Resource_Modified_Item }, +}; + +static int +dissect_e1ap_PDU_Session_Resource_Modified_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e1ap_PDU_Session_Resource_Modified_List, PDU_Session_Resource_Modified_List_sequence_of, + 1, maxnoofPDUSessionResource, FALSE); + + return offset; +} + + +static const per_sequence_t PDU_Session_Resource_Required_To_Modify_Item_sequence[] = { + { &hf_e1ap_pDU_Session_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_PDU_Session_ID }, + { &hf_e1ap_nG_DL_UP_TNL_Information, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_UP_TNL_Information }, + { &hf_e1ap_pDU_Session_Data_Forwarding_Information_Response, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_Data_Forwarding_Information_Response }, + { &hf_e1ap_dRB_Required_To_Modify_List_NG_RAN, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_DRB_Required_To_Modify_List_NG_RAN }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_PDU_Session_Resource_Required_To_Modify_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_e1ap_PDU_Session_Resource_Required_To_Modify_Item, PDU_Session_Resource_Required_To_Modify_Item_sequence); + + return offset; +} + + +static const per_sequence_t PDU_Session_Resource_Required_To_Modify_List_sequence_of[1] = { + { &hf_e1ap_PDU_Session_Resource_Required_To_Modify_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_PDU_Session_Resource_Required_To_Modify_Item }, +}; + +static int +dissect_e1ap_PDU_Session_Resource_Required_To_Modify_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e1ap_PDU_Session_Resource_Required_To_Modify_List, PDU_Session_Resource_Required_To_Modify_List_sequence_of, + 1, maxnoofPDUSessionResource, FALSE); + + return offset; +} + + +static const per_sequence_t PDU_Session_Resource_Setup_Item_sequence[] = { + { &hf_e1ap_pDU_Session_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_PDU_Session_ID }, + { &hf_e1ap_nG_DL_UP_TNL_Information, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_UP_TNL_Information }, + { &hf_e1ap_pDU_Session_Data_Forwarding_Information_Response, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_Data_Forwarding_Information_Response }, + { &hf_e1ap_dRB_Setup_List_NG_RAN, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_Setup_List_NG_RAN }, + { &hf_e1ap_dRB_Failed_List_NG_RAN, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_DRB_Failed_List_NG_RAN }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_PDU_Session_Resource_Setup_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_e1ap_PDU_Session_Resource_Setup_Item, PDU_Session_Resource_Setup_Item_sequence); + + return offset; +} + + +static const per_sequence_t PDU_Session_Resource_Setup_List_sequence_of[1] = { + { &hf_e1ap_PDU_Session_Resource_Setup_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_PDU_Session_Resource_Setup_Item }, +}; + +static int +dissect_e1ap_PDU_Session_Resource_Setup_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e1ap_PDU_Session_Resource_Setup_List, PDU_Session_Resource_Setup_List_sequence_of, + 1, maxnoofPDUSessionResource, FALSE); + + return offset; +} + + +static const value_string e1ap_PDU_Session_Type_vals[] = { + { 0, "ipv4" }, + { 1, "ipv6" }, + { 2, "ipv4v6" }, + { 3, "ethernet" }, + { 4, "unstructured" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_PDU_Session_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, + 5, NULL, TRUE, 0, NULL); + + return offset; +} + + + +static int +dissect_e1ap_OCTET_STRING_SIZE_1(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 int +dissect_e1ap_OCTET_STRING_SIZE_3(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 const per_sequence_t SNSSAI_sequence[] = { + { &hf_e1ap_sST , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_OCTET_STRING_SIZE_1 }, + { &hf_e1ap_sD , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_OCTET_STRING_SIZE_3 }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_SNSSAI(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_e1ap_SNSSAI, SNSSAI_sequence); + + return offset; +} + + +static const per_sequence_t SecurityIndication_sequence[] = { + { &hf_e1ap_integrityProtectionIndication, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_IntegrityProtectionIndication }, + { &hf_e1ap_confidentialityProtectionIndication, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ConfidentialityProtectionIndication }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_SecurityIndication(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_e1ap_SecurityIndication, SecurityIndication_sequence); + + return offset; +} + + +static const per_sequence_t PDU_Session_Resource_To_Modify_Item_sequence[] = { + { &hf_e1ap_pDU_Session_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_PDU_Session_ID }, + { &hf_e1ap_pDU_Session_Type, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_PDU_Session_Type }, + { &hf_e1ap_sNSSAI , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_SNSSAI }, + { &hf_e1ap_securityIndication, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_SecurityIndication }, + { &hf_e1ap_pDU_Session_Resource_AMBR, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_BitRate }, + { &hf_e1ap_nG_UL_UP_TNL_Information, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_UP_TNL_Information }, + { &hf_e1ap_pDU_Session_Data_Forwarding_Information_Request, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_Data_Forwarding_Information_Request }, + { &hf_e1ap_dRB_To_Setup_List_NG_RAN, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_DRB_To_Setup_List_NG_RAN }, + { &hf_e1ap_dRB_To_Modify_List_NG_RAN, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_DRB_To_Modify_List_NG_RAN }, + { &hf_e1ap_dRB_To_Remove_List_NG_RAN, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_DRB_To_Remove_List_NG_RAN }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_PDU_Session_Resource_To_Modify_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_e1ap_PDU_Session_Resource_To_Modify_Item, PDU_Session_Resource_To_Modify_Item_sequence); + + return offset; +} + + +static const per_sequence_t PDU_Session_Resource_To_Modify_List_sequence_of[1] = { + { &hf_e1ap_PDU_Session_Resource_To_Modify_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_PDU_Session_Resource_To_Modify_Item }, +}; + +static int +dissect_e1ap_PDU_Session_Resource_To_Modify_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e1ap_PDU_Session_Resource_To_Modify_List, PDU_Session_Resource_To_Modify_List_sequence_of, + 1, maxnoofPDUSessionResource, FALSE); + + return offset; +} + + +static const per_sequence_t PDU_Session_Resource_To_Remove_Item_sequence[] = { + { &hf_e1ap_pDU_Session_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_PDU_Session_ID }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_PDU_Session_Resource_To_Remove_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_e1ap_PDU_Session_Resource_To_Remove_Item, PDU_Session_Resource_To_Remove_Item_sequence); + + return offset; +} + + +static const per_sequence_t PDU_Session_Resource_To_Remove_List_sequence_of[1] = { + { &hf_e1ap_PDU_Session_Resource_To_Remove_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_PDU_Session_Resource_To_Remove_Item }, +}; + +static int +dissect_e1ap_PDU_Session_Resource_To_Remove_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_e1ap_PDU_Session_Resource_To_Remove_List, PDU_Session_Resource_To_Remove_List_sequence_of, + 1, maxnoofPDUSessionResource, FALSE); + + return offset; +} + + +static const per_sequence_t PDU_Session_Resource_To_Setup_Item_sequence[] = { + { &hf_e1ap_pDU_Session_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_PDU_Session_ID }, + { &hf_e1ap_pDU_Session_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_PDU_Session_Type }, + { &hf_e1ap_sNSSAI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_SNSSAI }, + { &hf_e1ap_securityIndication, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_SecurityIndication }, + { &hf_e1ap_pDU_Session_Resource_AMBR, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_BitRate }, + { &hf_e1ap_nG_UL_UP_TNL_Information, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_UP_TNL_Information }, + { &hf_e1ap_pDU_Session_Data_Forwarding_Information_Request, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_Data_Forwarding_Information_Request }, + { &hf_e1ap_dRB_To_Setup_List_NG_RAN, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_To_Setup_List_NG_RAN }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_PDU_Session_Resource_To_Setup_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_e1ap_PDU_Session_Resource_To_Setup_Item, PDU_Session_Resource_To_Setup_Item_sequence); + + return offset; +} + + +static const per_sequence_t PDU_Session_Resource_To_Setup_List_sequence_of[1] = { + { &hf_e1ap_PDU_Session_Resource_To_Setup_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_PDU_Session_Resource_To_Setup_Item }, +}; + +static int +dissect_e1ap_PDU_Session_Resource_To_Setup_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e1ap_PDU_Session_Resource_To_Setup_List, PDU_Session_Resource_To_Setup_List_sequence_of, + 1, maxnoofPDUSessionResource, FALSE); + + return offset; +} + + +static const per_sequence_t QoS_Parameters_Support_List_sequence[] = { + { &hf_e1ap_eUTRAN_QoS_Support_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_EUTRAN_QoS_Support_List }, + { &hf_e1ap_nG_RAN_QoS_Support_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_NG_RAN_QoS_Support_List }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_QoS_Parameters_Support_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_e1ap_QoS_Parameters_Support_List, QoS_Parameters_Support_List_sequence); + + return offset; +} + + +static const per_sequence_t SecurityAlgorithm_sequence[] = { + { &hf_e1ap_cipheringAlgorithm, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_CipheringAlgorithm }, + { &hf_e1ap_integrityProtectionAlgorithm, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_IntegrityProtectionAlgorithm }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_SecurityAlgorithm(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_e1ap_SecurityAlgorithm, SecurityAlgorithm_sequence); + + return offset; +} + + +static const per_sequence_t UPSecuritykey_sequence[] = { + { &hf_e1ap_encryptionKey , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_EncryptionKey }, + { &hf_e1ap_integrityProtectionKey, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_IntegrityProtectionKey }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_UPSecuritykey(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_e1ap_UPSecuritykey, UPSecuritykey_sequence); + + return offset; +} + + +static const per_sequence_t SecurityInformation_sequence[] = { + { &hf_e1ap_securityAlgorithm, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_SecurityAlgorithm }, + { &hf_e1ap_uPSecuritykey , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_UPSecuritykey }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_SecurityInformation(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_e1ap_SecurityInformation, SecurityInformation_sequence); + + return offset; +} + + +static const per_sequence_t Slice_Support_Item_sequence[] = { + { &hf_e1ap_sNSSAI , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_SNSSAI }, + { &hf_e1ap_iE_Extensions , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_Slice_Support_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_e1ap_Slice_Support_Item, Slice_Support_Item_sequence); + + return offset; +} + + +static const per_sequence_t Slice_Support_List_sequence_of[1] = { + { &hf_e1ap_Slice_Support_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_Slice_Support_Item }, +}; + +static int +dissect_e1ap_Slice_Support_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_e1ap_Slice_Support_List, Slice_Support_List_sequence_of, + 1, maxnoofSliceItems, FALSE); + + return offset; +} + + +static const value_string e1ap_TimeToWait_vals[] = { + { 0, "v1s" }, + { 1, "v2s" }, + { 2, "v5s" }, + { 3, "v10s" }, + { 4, "v20s" }, + { 5, "v60s" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_TimeToWait(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 6, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const per_sequence_t UE_associatedLogicalE1_ConnectionItem_sequence[] = { + { &hf_e1ap_gNB_CU_CP_UE_E1AP_ID, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_GNB_CU_CP_UE_E1AP_ID }, + { &hf_e1ap_gNB_CU_UP_UE_E1AP_ID, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_GNB_CU_UP_UE_E1AP_ID }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_UE_associatedLogicalE1_ConnectionItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_UE_associatedLogicalE1_ConnectionItem, UE_associatedLogicalE1_ConnectionItem_sequence); + + return offset; +} + + +static const per_sequence_t Reset_sequence[] = { + { &hf_e1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_Reset(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 313 "./asn1/e1ap/e1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Reset"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_Reset, Reset_sequence); + + return offset; +} + + +static const value_string e1ap_ResetAll_vals[] = { + { 0, "reset-all" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_ResetAll(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 1, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const per_sequence_t UE_associatedLogicalE1_ConnectionListRes_sequence_of[1] = { + { &hf_e1ap_UE_associatedLogicalE1_ConnectionListRes_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_e1ap_UE_associatedLogicalE1_ConnectionListRes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e1ap_UE_associatedLogicalE1_ConnectionListRes, UE_associatedLogicalE1_ConnectionListRes_sequence_of, + 1, maxnoofIndividualE1ConnectionsToReset, FALSE); + + return offset; +} + + +static const value_string e1ap_ResetType_vals[] = { + { 0, "e1-Interface" }, + { 1, "partOfE1-Interface" }, + { 0, NULL } +}; + +static const per_choice_t ResetType_choice[] = { + { 0, &hf_e1ap_e1_Interface , ASN1_EXTENSION_ROOT , dissect_e1ap_ResetAll }, + { 1, &hf_e1ap_partOfE1_Interface, ASN1_EXTENSION_ROOT , dissect_e1ap_UE_associatedLogicalE1_ConnectionListRes }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e1ap_ResetType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e1ap_ResetType, ResetType_choice, + NULL); + + return offset; +} + + +static const per_sequence_t ResetAcknowledge_sequence[] = { + { &hf_e1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_ResetAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 315 "./asn1/e1ap/e1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ResetAcknowledge"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_ResetAcknowledge, ResetAcknowledge_sequence); + + return offset; +} + + +static const per_sequence_t UE_associatedLogicalE1_ConnectionListResAck_sequence_of[1] = { + { &hf_e1ap_UE_associatedLogicalE1_ConnectionListResAck_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_e1ap_UE_associatedLogicalE1_ConnectionListResAck(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e1ap_UE_associatedLogicalE1_ConnectionListResAck, UE_associatedLogicalE1_ConnectionListResAck_sequence_of, + 1, maxnoofIndividualE1ConnectionsToReset, FALSE); + + return offset; +} + + +static const per_sequence_t ErrorIndication_sequence[] = { + { &hf_e1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_ErrorIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 317 "./asn1/e1ap/e1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ErrorIndication"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_ErrorIndication, ErrorIndication_sequence); + + return offset; +} + + +static const per_sequence_t GNB_CU_UP_E1SetupRequest_sequence[] = { + { &hf_e1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_GNB_CU_UP_E1SetupRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 319 "./asn1/e1ap/e1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-UP-E1SetupRequest"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_GNB_CU_UP_E1SetupRequest, GNB_CU_UP_E1SetupRequest_sequence); + + return offset; +} + + +static const per_sequence_t SupportedPLMNs_List_sequence_of[1] = { + { &hf_e1ap_SupportedPLMNs_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_e1ap_SupportedPLMNs_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_e1ap_SupportedPLMNs_List, SupportedPLMNs_List_sequence_of, + 1, maxnoofSPLMNs, FALSE); + + return offset; +} + + +static const per_sequence_t SupportedPLMNs_Item_sequence[] = { + { &hf_e1ap_pLMN_Identity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_PLMN_Identity }, + { &hf_e1ap_slice_Support_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_Slice_Support_List }, + { &hf_e1ap_nR_CGI_Support_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_NR_CGI_Support_List }, + { &hf_e1ap_qoS_Parameters_Support_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_QoS_Parameters_Support_List }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_SupportedPLMNs_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_e1ap_SupportedPLMNs_Item, SupportedPLMNs_Item_sequence); + + return offset; +} + + +static const per_sequence_t GNB_CU_UP_E1SetupResponse_sequence[] = { + { &hf_e1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_GNB_CU_UP_E1SetupResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 321 "./asn1/e1ap/e1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-UP-E1SetupResponse"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_GNB_CU_UP_E1SetupResponse, GNB_CU_UP_E1SetupResponse_sequence); + + return offset; +} + + +static const per_sequence_t GNB_CU_UP_E1SetupFailure_sequence[] = { + { &hf_e1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_GNB_CU_UP_E1SetupFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 323 "./asn1/e1ap/e1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-UP-E1SetupFailure"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_GNB_CU_UP_E1SetupFailure, GNB_CU_UP_E1SetupFailure_sequence); + + return offset; +} + + +static const per_sequence_t GNB_CU_CP_E1SetupRequest_sequence[] = { + { &hf_e1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_GNB_CU_CP_E1SetupRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 325 "./asn1/e1ap/e1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-CP-E1SetupRequest"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_GNB_CU_CP_E1SetupRequest, GNB_CU_CP_E1SetupRequest_sequence); + + return offset; +} + + +static const per_sequence_t GNB_CU_CP_E1SetupResponse_sequence[] = { + { &hf_e1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_GNB_CU_CP_E1SetupResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 327 "./asn1/e1ap/e1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-CP-E1SetupResponse"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_GNB_CU_CP_E1SetupResponse, GNB_CU_CP_E1SetupResponse_sequence); + + return offset; +} + + +static const per_sequence_t GNB_CU_CP_E1SetupFailure_sequence[] = { + { &hf_e1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_GNB_CU_CP_E1SetupFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 329 "./asn1/e1ap/e1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-CP-E1SetupFailure"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_GNB_CU_CP_E1SetupFailure, GNB_CU_CP_E1SetupFailure_sequence); + + return offset; +} + + +static const per_sequence_t GNB_CU_UP_ConfigurationUpdate_sequence[] = { + { &hf_e1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_GNB_CU_UP_ConfigurationUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 331 "./asn1/e1ap/e1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-UP-ConfigurationUpdate"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_GNB_CU_UP_ConfigurationUpdate, GNB_CU_UP_ConfigurationUpdate_sequence); + + return offset; +} + + +static const per_sequence_t GNB_CU_UP_ConfigurationUpdateAcknowledge_sequence[] = { + { &hf_e1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_GNB_CU_UP_ConfigurationUpdateAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 333 "./asn1/e1ap/e1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-UP-ConfigurationUpdateAcknowledge"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_GNB_CU_UP_ConfigurationUpdateAcknowledge, GNB_CU_UP_ConfigurationUpdateAcknowledge_sequence); + + return offset; +} + + +static const per_sequence_t GNB_CU_UP_ConfigurationUpdateFailure_sequence[] = { + { &hf_e1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_GNB_CU_UP_ConfigurationUpdateFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 335 "./asn1/e1ap/e1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-UP-ConfigurationUpdateFailure"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_GNB_CU_UP_ConfigurationUpdateFailure, GNB_CU_UP_ConfigurationUpdateFailure_sequence); + + return offset; +} + + +static const per_sequence_t GNB_CU_CP_ConfigurationUpdate_sequence[] = { + { &hf_e1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_GNB_CU_CP_ConfigurationUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 337 "./asn1/e1ap/e1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-CP-ConfigurationUpdate"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_GNB_CU_CP_ConfigurationUpdate, GNB_CU_CP_ConfigurationUpdate_sequence); + + return offset; +} + + +static const per_sequence_t GNB_CU_CP_ConfigurationUpdateAcknowledge_sequence[] = { + { &hf_e1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_GNB_CU_CP_ConfigurationUpdateAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 339 "./asn1/e1ap/e1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-CP-ConfigurationUpdateAcknowledge"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_GNB_CU_CP_ConfigurationUpdateAcknowledge, GNB_CU_CP_ConfigurationUpdateAcknowledge_sequence); + + return offset; +} + + +static const per_sequence_t GNB_CU_CP_ConfigurationUpdateFailure_sequence[] = { + { &hf_e1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_GNB_CU_CP_ConfigurationUpdateFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 341 "./asn1/e1ap/e1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-CP-ConfigurationUpdateFailure"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_GNB_CU_CP_ConfigurationUpdateFailure, GNB_CU_CP_ConfigurationUpdateFailure_sequence); + + return offset; +} + + +static const per_sequence_t E1ReleaseRequest_sequence[] = { + { &hf_e1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_E1ReleaseRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 343 "./asn1/e1ap/e1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E1ReleaseRequest"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_E1ReleaseRequest, E1ReleaseRequest_sequence); + + return offset; +} + + +static const per_sequence_t E1ReleaseResponse_sequence[] = { + { &hf_e1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_E1ReleaseResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 345 "./asn1/e1ap/e1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E1ReleaseResponse"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_E1ReleaseResponse, E1ReleaseResponse_sequence); + + return offset; +} + + +static const per_sequence_t BearerContextSetupRequest_sequence[] = { + { &hf_e1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_BearerContextSetupRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 347 "./asn1/e1ap/e1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextSetupRequest"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_BearerContextSetupRequest, BearerContextSetupRequest_sequence); + + return offset; +} + + +static const per_sequence_t EUTRAN_BearerContextSetupRequest_sequence[] = { + { &hf_e1ap_dRB_To_Setup_List_EUTRAN, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_To_Setup_List_EUTRAN }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_EUTRAN_BearerContextSetupRequest(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_e1ap_EUTRAN_BearerContextSetupRequest, EUTRAN_BearerContextSetupRequest_sequence); + + return offset; +} + + +static const per_sequence_t NG_RAN_BearerContextSetupRequest_sequence[] = { + { &hf_e1ap_pDU_Session_Resource_To_Setup_List, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_PDU_Session_Resource_To_Setup_List }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_NG_RAN_BearerContextSetupRequest(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_e1ap_NG_RAN_BearerContextSetupRequest, NG_RAN_BearerContextSetupRequest_sequence); + + return offset; +} + + +static const value_string e1ap_System_BearerContextSetupRequest_vals[] = { + { 0, "e-UTRAN-BearerContextSetupRequest" }, + { 1, "nG-RAN-BearerContextSetupRequest" }, + { 0, NULL } +}; + +static const per_choice_t System_BearerContextSetupRequest_choice[] = { + { 0, &hf_e1ap_e_UTRAN_BearerContextSetupRequest, ASN1_EXTENSION_ROOT , dissect_e1ap_EUTRAN_BearerContextSetupRequest }, + { 1, &hf_e1ap_nG_RAN_BearerContextSetupRequest, ASN1_EXTENSION_ROOT , dissect_e1ap_NG_RAN_BearerContextSetupRequest }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e1ap_System_BearerContextSetupRequest(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_e1ap_System_BearerContextSetupRequest, System_BearerContextSetupRequest_choice, + NULL); + + return offset; +} + + +static const per_sequence_t BearerContextSetupResponse_sequence[] = { + { &hf_e1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_BearerContextSetupResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 349 "./asn1/e1ap/e1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextSetupResponse"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_BearerContextSetupResponse, BearerContextSetupResponse_sequence); + + return offset; +} + + +static const per_sequence_t EUTRAN_BearerContextSetupResponse_sequence[] = { + { &hf_e1ap_dRB_Setup_List_EUTRAN, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_DRB_Setup_List_EUTRAN }, + { &hf_e1ap_dRB_Failed_List_EUTRAN, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_DRB_Failed_List_EUTRAN }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_EUTRAN_BearerContextSetupResponse(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_e1ap_EUTRAN_BearerContextSetupResponse, EUTRAN_BearerContextSetupResponse_sequence); + + return offset; +} + + +static const per_sequence_t NG_RAN_BearerContextSetupResponse_sequence[] = { + { &hf_e1ap_pDU_Session_Resource_Setup_List, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_PDU_Session_Resource_Setup_List }, + { &hf_e1ap_pDU_Session_Resource_Failed_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_PDU_Session_Resource_Failed_List }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_NG_RAN_BearerContextSetupResponse(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_e1ap_NG_RAN_BearerContextSetupResponse, NG_RAN_BearerContextSetupResponse_sequence); + + return offset; +} + + +static const value_string e1ap_System_BearerContextSetupResponse_vals[] = { + { 0, "e-UTRAN-BearerContextSetupResponse" }, + { 1, "nG-RAN-BearerContextSetupResponse" }, + { 0, NULL } +}; + +static const per_choice_t System_BearerContextSetupResponse_choice[] = { + { 0, &hf_e1ap_e_UTRAN_BearerContextSetupResponse, ASN1_EXTENSION_ROOT , dissect_e1ap_EUTRAN_BearerContextSetupResponse }, + { 1, &hf_e1ap_nG_RAN_BearerContextSetupResponse, ASN1_EXTENSION_ROOT , dissect_e1ap_NG_RAN_BearerContextSetupResponse }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e1ap_System_BearerContextSetupResponse(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_e1ap_System_BearerContextSetupResponse, System_BearerContextSetupResponse_choice, + NULL); + + return offset; +} + + +static const per_sequence_t BearerContextSetupFailure_sequence[] = { + { &hf_e1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_BearerContextSetupFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 351 "./asn1/e1ap/e1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextSetupFailure"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_BearerContextSetupFailure, BearerContextSetupFailure_sequence); + + return offset; +} + + +static const per_sequence_t BearerContextModificationRequest_sequence[] = { + { &hf_e1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_BearerContextModificationRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 353 "./asn1/e1ap/e1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextModificationRequest"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_BearerContextModificationRequest, BearerContextModificationRequest_sequence); + + return offset; +} + + +static const per_sequence_t EUTRAN_BearerContextModificationRequest_sequence[] = { + { &hf_e1ap_dRB_To_Setup_List_EUTRAN, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_DRB_To_Setup_List_EUTRAN }, + { &hf_e1ap_dRB_To_Modify_List_EUTRAN, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_DRB_To_Modify_List_EUTRAN }, + { &hf_e1ap_dRB_To_Remove_List_EUTRAN, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_DRB_To_Remove_List_EUTRAN }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_EUTRAN_BearerContextModificationRequest(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_e1ap_EUTRAN_BearerContextModificationRequest, EUTRAN_BearerContextModificationRequest_sequence); + + return offset; +} + + +static const per_sequence_t NG_RAN_BearerContextModificationRequest_sequence[] = { + { &hf_e1ap_pDU_Session_Resource_To_Setup_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_PDU_Session_Resource_To_Setup_List }, + { &hf_e1ap_pDU_Session_Resource_To_Modify_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_PDU_Session_Resource_To_Modify_List }, + { &hf_e1ap_pDU_Session_Resource_To_Remove_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_PDU_Session_Resource_To_Remove_List }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_NG_RAN_BearerContextModificationRequest(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_e1ap_NG_RAN_BearerContextModificationRequest, NG_RAN_BearerContextModificationRequest_sequence); + + return offset; +} + + +static const value_string e1ap_System_BearerContextModificationRequest_vals[] = { + { 0, "e-UTRAN-BearerContextModificationRequest" }, + { 1, "nG-RAN-BearerContextModificationRequest" }, + { 0, NULL } +}; + +static const per_choice_t System_BearerContextModificationRequest_choice[] = { + { 0, &hf_e1ap_e_UTRAN_BearerContextModificationRequest, ASN1_EXTENSION_ROOT , dissect_e1ap_EUTRAN_BearerContextModificationRequest }, + { 1, &hf_e1ap_nG_RAN_BearerContextModificationRequest, ASN1_EXTENSION_ROOT , dissect_e1ap_NG_RAN_BearerContextModificationRequest }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e1ap_System_BearerContextModificationRequest(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_e1ap_System_BearerContextModificationRequest, System_BearerContextModificationRequest_choice, + NULL); + + return offset; +} + + +static const per_sequence_t BearerContextModificationResponse_sequence[] = { + { &hf_e1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_BearerContextModificationResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 355 "./asn1/e1ap/e1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextModificationResponse"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_BearerContextModificationResponse, BearerContextModificationResponse_sequence); + + return offset; +} + + +static const per_sequence_t EUTRAN_BearerContextModificationResponse_sequence[] = { + { &hf_e1ap_dRB_Setup_List_EUTRAN, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_DRB_Setup_List_EUTRAN }, + { &hf_e1ap_dRB_Failed_List_EUTRAN, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_DRB_Failed_List_EUTRAN }, + { &hf_e1ap_dRB_Modified_List_EUTRAN, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_DRB_Modified_List_EUTRAN }, + { &hf_e1ap_dRB_Failed_To_Modify_List_EUTRAN, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_DRB_Failed_To_Modify_List_EUTRAN }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_EUTRAN_BearerContextModificationResponse(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_e1ap_EUTRAN_BearerContextModificationResponse, EUTRAN_BearerContextModificationResponse_sequence); + + return offset; +} + + +static const per_sequence_t NG_RAN_BearerContextModificationResponse_sequence[] = { + { &hf_e1ap_pDU_Session_Resource_Setup_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_PDU_Session_Resource_Setup_List }, + { &hf_e1ap_pDU_Session_Resource_Failed_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_PDU_Session_Resource_Failed_List }, + { &hf_e1ap_pDU_Session_Resource_Modified_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_PDU_Session_Resource_Modified_List }, + { &hf_e1ap_pDU_Session_Resource_Failed_To_Modify_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_PDU_Session_Resource_Failed_To_Modify_List }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_NG_RAN_BearerContextModificationResponse(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_e1ap_NG_RAN_BearerContextModificationResponse, NG_RAN_BearerContextModificationResponse_sequence); + + return offset; +} + + +static const value_string e1ap_System_BearerContextModificationResponse_vals[] = { + { 0, "e-UTRAN-BearerContextModificationResponse" }, + { 1, "nG-RAN-BearerContextModificationResponse" }, + { 0, NULL } +}; + +static const per_choice_t System_BearerContextModificationResponse_choice[] = { + { 0, &hf_e1ap_e_UTRAN_BearerContextModificationResponse, ASN1_EXTENSION_ROOT , dissect_e1ap_EUTRAN_BearerContextModificationResponse }, + { 1, &hf_e1ap_nG_RAN_BearerContextModificationResponse, ASN1_EXTENSION_ROOT , dissect_e1ap_NG_RAN_BearerContextModificationResponse }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e1ap_System_BearerContextModificationResponse(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_e1ap_System_BearerContextModificationResponse, System_BearerContextModificationResponse_choice, + NULL); + + return offset; +} + + +static const per_sequence_t BearerContextModificationFailure_sequence[] = { + { &hf_e1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_BearerContextModificationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 357 "./asn1/e1ap/e1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextModificationFailure"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_BearerContextModificationFailure, BearerContextModificationFailure_sequence); + + return offset; +} + + +static const per_sequence_t BearerContextModificationRequired_sequence[] = { + { &hf_e1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_BearerContextModificationRequired(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 359 "./asn1/e1ap/e1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextModificationRequired"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_BearerContextModificationRequired, BearerContextModificationRequired_sequence); + + return offset; +} + + +static const per_sequence_t EUTRAN_BearerContextModificationRequired_sequence[] = { + { &hf_e1ap_dRB_Required_To_Modify_List_EUTRAN, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_DRB_Required_To_Modify_List_EUTRAN }, + { &hf_e1ap_dRB_To_Remove_List_EUTRAN, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_DRB_To_Remove_List_EUTRAN }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_EUTRAN_BearerContextModificationRequired(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_e1ap_EUTRAN_BearerContextModificationRequired, EUTRAN_BearerContextModificationRequired_sequence); + + return offset; +} + + +static const per_sequence_t NG_RAN_BearerContextModificationRequired_sequence[] = { + { &hf_e1ap_pDU_Session_Resource_Required_To_Modify_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_PDU_Session_Resource_Required_To_Modify_List }, + { &hf_e1ap_pDU_Session_Resource_To_Remove_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_PDU_Session_Resource_To_Remove_List }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_NG_RAN_BearerContextModificationRequired(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_e1ap_NG_RAN_BearerContextModificationRequired, NG_RAN_BearerContextModificationRequired_sequence); + + return offset; +} + + +static const value_string e1ap_System_BearerContextModificationRequired_vals[] = { + { 0, "e-UTRAN-BearerContextModificationRequired" }, + { 1, "nG-RAN-BearerContextModificationRequired" }, + { 0, NULL } +}; + +static const per_choice_t System_BearerContextModificationRequired_choice[] = { + { 0, &hf_e1ap_e_UTRAN_BearerContextModificationRequired, ASN1_EXTENSION_ROOT , dissect_e1ap_EUTRAN_BearerContextModificationRequired }, + { 1, &hf_e1ap_nG_RAN_BearerContextModificationRequired, ASN1_EXTENSION_ROOT , dissect_e1ap_NG_RAN_BearerContextModificationRequired }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e1ap_System_BearerContextModificationRequired(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_e1ap_System_BearerContextModificationRequired, System_BearerContextModificationRequired_choice, + NULL); + + return offset; +} + + +static const per_sequence_t BearerContextModificationConfirm_sequence[] = { + { &hf_e1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_BearerContextModificationConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 361 "./asn1/e1ap/e1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextModificationConfirm"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_BearerContextModificationConfirm, BearerContextModificationConfirm_sequence); + + return offset; +} + + +static const per_sequence_t EUTRAN_BearerContextModificationConfirm_sequence[] = { + { &hf_e1ap_dRB_Confirm_Modified_List_EUTRAN, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_DRB_Confirm_Modified_List_EUTRAN }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_EUTRAN_BearerContextModificationConfirm(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_e1ap_EUTRAN_BearerContextModificationConfirm, EUTRAN_BearerContextModificationConfirm_sequence); + + return offset; +} + + +static const per_sequence_t NG_RAN_BearerContextModificationConfirm_sequence[] = { + { &hf_e1ap_pDU_Session_Resource_Confirm_Modified_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_PDU_Session_Resource_Confirm_Modified_List }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_NG_RAN_BearerContextModificationConfirm(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_e1ap_NG_RAN_BearerContextModificationConfirm, NG_RAN_BearerContextModificationConfirm_sequence); + + return offset; +} + + +static const value_string e1ap_System_BearerContextModificationConfirm_vals[] = { + { 0, "e-UTRAN-BearerContextModificationConfirm" }, + { 1, "nG-RAN-BearerContextModificationConfirm" }, + { 0, NULL } +}; + +static const per_choice_t System_BearerContextModificationConfirm_choice[] = { + { 0, &hf_e1ap_e_UTRAN_BearerContextModificationConfirm, ASN1_EXTENSION_ROOT , dissect_e1ap_EUTRAN_BearerContextModificationConfirm }, + { 1, &hf_e1ap_nG_RAN_BearerContextModificationConfirm, ASN1_EXTENSION_ROOT , dissect_e1ap_NG_RAN_BearerContextModificationConfirm }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e1ap_System_BearerContextModificationConfirm(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_e1ap_System_BearerContextModificationConfirm, System_BearerContextModificationConfirm_choice, + NULL); + + return offset; +} + + +static const per_sequence_t BearerContextReleaseCommand_sequence[] = { + { &hf_e1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_BearerContextReleaseCommand(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 363 "./asn1/e1ap/e1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextReleaseCommand"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_BearerContextReleaseCommand, BearerContextReleaseCommand_sequence); + + return offset; +} + + +static const per_sequence_t BearerContextReleaseComplete_sequence[] = { + { &hf_e1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_BearerContextReleaseComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 365 "./asn1/e1ap/e1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextReleaseComplete"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_BearerContextReleaseComplete, BearerContextReleaseComplete_sequence); + + return offset; +} + + +static const per_sequence_t BearerContextReleaseRequest_sequence[] = { + { &hf_e1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_BearerContextReleaseRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 367 "./asn1/e1ap/e1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextReleaseRequest"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_BearerContextReleaseRequest, BearerContextReleaseRequest_sequence); + + return offset; +} + + +static const per_sequence_t DRB_Status_List_sequence_of[1] = { + { &hf_e1ap_DRB_Status_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_e1ap_DRB_Status_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_e1ap_DRB_Status_List, DRB_Status_List_sequence_of, + 1, maxnoofDRBs, FALSE); + + return offset; +} + + +static const per_sequence_t BearerContextInactivityNotification_sequence[] = { + { &hf_e1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_BearerContextInactivityNotification(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 369 "./asn1/e1ap/e1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextInactivityNotification"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_BearerContextInactivityNotification, BearerContextInactivityNotification_sequence); + + return offset; +} + + +static const per_sequence_t DRB_Activity_List_sequence_of[1] = { + { &hf_e1ap_DRB_Activity_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_e1ap_DRB_Activity_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_e1ap_DRB_Activity_List, DRB_Activity_List_sequence_of, + 1, maxnoofDRBs, FALSE); + + return offset; +} + + +static const per_sequence_t DLDataNotification_sequence[] = { + { &hf_e1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_DLDataNotification(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 371 "./asn1/e1ap/e1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "DLDataNotification"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_DLDataNotification, DLDataNotification_sequence); + + return offset; +} + + +static const per_sequence_t DataUsageReport_sequence[] = { + { &hf_e1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_DataUsageReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 373 "./asn1/e1ap/e1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "DataUsageReport"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_DataUsageReport, DataUsageReport_sequence); + + return offset; +} + + +static const per_sequence_t PrivateMessage_sequence[] = { + { &hf_e1ap_privateIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_PrivateIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_PrivateMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 375 "./asn1/e1ap/e1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "PrivateMessage"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_PrivateMessage, PrivateMessage_sequence); + + return offset; +} + + + +static int +dissect_e1ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 90 "./asn1/e1ap/e1ap.cnf" + e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo); + e1ap_data->message_type = INITIATING_MESSAGE; + + offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue); + + return offset; +} + + +static const per_sequence_t InitiatingMessage_sequence[] = { + { &hf_e1ap_procedureCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_ProcedureCode }, + { &hf_e1ap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_Criticality }, + { &hf_e1ap_initiatingMessagevalue, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_InitiatingMessage_value }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_InitiatingMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_InitiatingMessage, InitiatingMessage_sequence); + + return offset; +} + + + +static int +dissect_e1ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 94 "./asn1/e1ap/e1ap.cnf" + e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo); + e1ap_data->message_type = SUCCESSFUL_OUTCOME; + + offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue); + + return offset; +} + + +static const per_sequence_t SuccessfulOutcome_sequence[] = { + { &hf_e1ap_procedureCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_ProcedureCode }, + { &hf_e1ap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_Criticality }, + { &hf_e1ap_successfulOutcome_value, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_SuccessfulOutcome_value }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_SuccessfulOutcome(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_SuccessfulOutcome, SuccessfulOutcome_sequence); + + return offset; +} + + + +static int +dissect_e1ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 98 "./asn1/e1ap/e1ap.cnf" + e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo); + e1ap_data->message_type = UNSUCCESSFUL_OUTCOME; + + offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue); + + return offset; +} + + +static const per_sequence_t UnsuccessfulOutcome_sequence[] = { + { &hf_e1ap_procedureCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_ProcedureCode }, + { &hf_e1ap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_Criticality }, + { &hf_e1ap_unsuccessfulOutcome_value, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_UnsuccessfulOutcome_value }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_UnsuccessfulOutcome(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_UnsuccessfulOutcome, UnsuccessfulOutcome_sequence); + + return offset; +} + + +static const value_string e1ap_E1AP_PDU_vals[] = { + { 0, "initiatingMessage" }, + { 1, "successfulOutcome" }, + { 2, "unsuccessfulOutcome" }, + { 0, NULL } +}; + +static const per_choice_t E1AP_PDU_choice[] = { + { 0, &hf_e1ap_initiatingMessage, ASN1_EXTENSION_ROOT , dissect_e1ap_InitiatingMessage }, + { 1, &hf_e1ap_successfulOutcome, ASN1_EXTENSION_ROOT , dissect_e1ap_SuccessfulOutcome }, + { 2, &hf_e1ap_unsuccessfulOutcome, ASN1_EXTENSION_ROOT , dissect_e1ap_UnsuccessfulOutcome }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_e1ap_E1AP_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_e1ap_E1AP_PDU, E1AP_PDU_choice, + NULL); + + return offset; +} + +/*--- PDUs ---*/ + +static int dissect_BearerContextStatusChange_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_e1ap_BearerContextStatusChange(tvb, offset, &asn1_ctx, tree, hf_e1ap_BearerContextStatusChange_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_BitRate_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_e1ap_BitRate(tvb, offset, &asn1_ctx, tree, hf_e1ap_BitRate_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_Cause_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e1ap_Cause(tvb, offset, &asn1_ctx, tree, hf_e1ap_Cause_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_CNSupport_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_e1ap_CNSupport(tvb, offset, &asn1_ctx, tree, hf_e1ap_CNSupport_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_CriticalityDiagnostics_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e1ap_CriticalityDiagnostics(tvb, offset, &asn1_ctx, tree, hf_e1ap_CriticalityDiagnostics_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_Data_Usage_Report_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_e1ap_Data_Usage_Report_List(tvb, offset, &asn1_ctx, tree, hf_e1ap_Data_Usage_Report_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_DRB_Activity_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_e1ap_DRB_Activity_Item(tvb, offset, &asn1_ctx, tree, hf_e1ap_DRB_Activity_Item_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_DRB_Status_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_e1ap_DRB_Status_Item(tvb, offset, &asn1_ctx, tree, hf_e1ap_DRB_Status_Item_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_GNB_CU_CP_Name_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e1ap_GNB_CU_CP_Name(tvb, offset, &asn1_ctx, tree, hf_e1ap_GNB_CU_CP_Name_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_GNB_CU_CP_UE_E1AP_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e1ap_GNB_CU_CP_UE_E1AP_ID(tvb, offset, &asn1_ctx, tree, hf_e1ap_GNB_CU_CP_UE_E1AP_ID_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_GNB_CU_UP_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e1ap_GNB_CU_UP_ID(tvb, offset, &asn1_ctx, tree, hf_e1ap_GNB_CU_UP_ID_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_GNB_CU_UP_Name_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e1ap_GNB_CU_UP_Name(tvb, offset, &asn1_ctx, tree, hf_e1ap_GNB_CU_UP_Name_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_GNB_CU_UP_UE_E1AP_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e1ap_GNB_CU_UP_UE_E1AP_ID(tvb, offset, &asn1_ctx, tree, hf_e1ap_GNB_CU_UP_UE_E1AP_ID_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_SecurityInformation_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_e1ap_SecurityInformation(tvb, offset, &asn1_ctx, tree, hf_e1ap_SecurityInformation_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_TimeToWait_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e1ap_TimeToWait(tvb, offset, &asn1_ctx, tree, hf_e1ap_TimeToWait_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_UE_associatedLogicalE1_ConnectionItem_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e1ap_UE_associatedLogicalE1_ConnectionItem(tvb, offset, &asn1_ctx, tree, hf_e1ap_UE_associatedLogicalE1_ConnectionItem_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_Reset_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e1ap_Reset(tvb, offset, &asn1_ctx, tree, hf_e1ap_Reset_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_ResetType_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e1ap_ResetType(tvb, offset, &asn1_ctx, tree, hf_e1ap_ResetType_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_ResetAcknowledge_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e1ap_ResetAcknowledge(tvb, offset, &asn1_ctx, tree, hf_e1ap_ResetAcknowledge_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_UE_associatedLogicalE1_ConnectionListResAck_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e1ap_UE_associatedLogicalE1_ConnectionListResAck(tvb, offset, &asn1_ctx, tree, hf_e1ap_UE_associatedLogicalE1_ConnectionListResAck_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_ErrorIndication_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e1ap_ErrorIndication(tvb, offset, &asn1_ctx, tree, hf_e1ap_ErrorIndication_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_GNB_CU_UP_E1SetupRequest_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_e1ap_GNB_CU_UP_E1SetupRequest(tvb, offset, &asn1_ctx, tree, hf_e1ap_GNB_CU_UP_E1SetupRequest_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_SupportedPLMNs_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_e1ap_SupportedPLMNs_List(tvb, offset, &asn1_ctx, tree, hf_e1ap_SupportedPLMNs_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_SupportedPLMNs_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_e1ap_SupportedPLMNs_Item(tvb, offset, &asn1_ctx, tree, hf_e1ap_SupportedPLMNs_Item_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_GNB_CU_UP_E1SetupResponse_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_e1ap_GNB_CU_UP_E1SetupResponse(tvb, offset, &asn1_ctx, tree, hf_e1ap_GNB_CU_UP_E1SetupResponse_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_GNB_CU_UP_E1SetupFailure_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_e1ap_GNB_CU_UP_E1SetupFailure(tvb, offset, &asn1_ctx, tree, hf_e1ap_GNB_CU_UP_E1SetupFailure_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_GNB_CU_CP_E1SetupRequest_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_e1ap_GNB_CU_CP_E1SetupRequest(tvb, offset, &asn1_ctx, tree, hf_e1ap_GNB_CU_CP_E1SetupRequest_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_GNB_CU_CP_E1SetupResponse_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_e1ap_GNB_CU_CP_E1SetupResponse(tvb, offset, &asn1_ctx, tree, hf_e1ap_GNB_CU_CP_E1SetupResponse_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_GNB_CU_CP_E1SetupFailure_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_e1ap_GNB_CU_CP_E1SetupFailure(tvb, offset, &asn1_ctx, tree, hf_e1ap_GNB_CU_CP_E1SetupFailure_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_GNB_CU_UP_ConfigurationUpdate_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_e1ap_GNB_CU_UP_ConfigurationUpdate(tvb, offset, &asn1_ctx, tree, hf_e1ap_GNB_CU_UP_ConfigurationUpdate_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_GNB_CU_UP_ConfigurationUpdateAcknowledge_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_e1ap_GNB_CU_UP_ConfigurationUpdateAcknowledge(tvb, offset, &asn1_ctx, tree, hf_e1ap_GNB_CU_UP_ConfigurationUpdateAcknowledge_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_GNB_CU_UP_ConfigurationUpdateFailure_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_e1ap_GNB_CU_UP_ConfigurationUpdateFailure(tvb, offset, &asn1_ctx, tree, hf_e1ap_GNB_CU_UP_ConfigurationUpdateFailure_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_GNB_CU_CP_ConfigurationUpdate_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_e1ap_GNB_CU_CP_ConfigurationUpdate(tvb, offset, &asn1_ctx, tree, hf_e1ap_GNB_CU_CP_ConfigurationUpdate_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_GNB_CU_CP_ConfigurationUpdateAcknowledge_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_e1ap_GNB_CU_CP_ConfigurationUpdateAcknowledge(tvb, offset, &asn1_ctx, tree, hf_e1ap_GNB_CU_CP_ConfigurationUpdateAcknowledge_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_GNB_CU_CP_ConfigurationUpdateFailure_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_e1ap_GNB_CU_CP_ConfigurationUpdateFailure(tvb, offset, &asn1_ctx, tree, hf_e1ap_GNB_CU_CP_ConfigurationUpdateFailure_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E1ReleaseRequest_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_e1ap_E1ReleaseRequest(tvb, offset, &asn1_ctx, tree, hf_e1ap_E1ReleaseRequest_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E1ReleaseResponse_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_e1ap_E1ReleaseResponse(tvb, offset, &asn1_ctx, tree, hf_e1ap_E1ReleaseResponse_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_BearerContextSetupRequest_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_e1ap_BearerContextSetupRequest(tvb, offset, &asn1_ctx, tree, hf_e1ap_BearerContextSetupRequest_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_System_BearerContextSetupRequest_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_e1ap_System_BearerContextSetupRequest(tvb, offset, &asn1_ctx, tree, hf_e1ap_System_BearerContextSetupRequest_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_BearerContextSetupResponse_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_e1ap_BearerContextSetupResponse(tvb, offset, &asn1_ctx, tree, hf_e1ap_BearerContextSetupResponse_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_System_BearerContextSetupResponse_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_e1ap_System_BearerContextSetupResponse(tvb, offset, &asn1_ctx, tree, hf_e1ap_System_BearerContextSetupResponse_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_BearerContextSetupFailure_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_e1ap_BearerContextSetupFailure(tvb, offset, &asn1_ctx, tree, hf_e1ap_BearerContextSetupFailure_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_BearerContextModificationRequest_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_e1ap_BearerContextModificationRequest(tvb, offset, &asn1_ctx, tree, hf_e1ap_BearerContextModificationRequest_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_System_BearerContextModificationRequest_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_e1ap_System_BearerContextModificationRequest(tvb, offset, &asn1_ctx, tree, hf_e1ap_System_BearerContextModificationRequest_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_BearerContextModificationResponse_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_e1ap_BearerContextModificationResponse(tvb, offset, &asn1_ctx, tree, hf_e1ap_BearerContextModificationResponse_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_System_BearerContextModificationResponse_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_e1ap_System_BearerContextModificationResponse(tvb, offset, &asn1_ctx, tree, hf_e1ap_System_BearerContextModificationResponse_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_BearerContextModificationFailure_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_e1ap_BearerContextModificationFailure(tvb, offset, &asn1_ctx, tree, hf_e1ap_BearerContextModificationFailure_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_BearerContextModificationRequired_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_e1ap_BearerContextModificationRequired(tvb, offset, &asn1_ctx, tree, hf_e1ap_BearerContextModificationRequired_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_System_BearerContextModificationRequired_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_e1ap_System_BearerContextModificationRequired(tvb, offset, &asn1_ctx, tree, hf_e1ap_System_BearerContextModificationRequired_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_BearerContextModificationConfirm_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_e1ap_BearerContextModificationConfirm(tvb, offset, &asn1_ctx, tree, hf_e1ap_BearerContextModificationConfirm_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_System_BearerContextModificationConfirm_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_e1ap_System_BearerContextModificationConfirm(tvb, offset, &asn1_ctx, tree, hf_e1ap_System_BearerContextModificationConfirm_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_BearerContextReleaseCommand_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_e1ap_BearerContextReleaseCommand(tvb, offset, &asn1_ctx, tree, hf_e1ap_BearerContextReleaseCommand_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_BearerContextReleaseComplete_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_e1ap_BearerContextReleaseComplete(tvb, offset, &asn1_ctx, tree, hf_e1ap_BearerContextReleaseComplete_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_BearerContextReleaseRequest_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_e1ap_BearerContextReleaseRequest(tvb, offset, &asn1_ctx, tree, hf_e1ap_BearerContextReleaseRequest_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_DRB_Status_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_e1ap_DRB_Status_List(tvb, offset, &asn1_ctx, tree, hf_e1ap_DRB_Status_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_BearerContextInactivityNotification_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_e1ap_BearerContextInactivityNotification(tvb, offset, &asn1_ctx, tree, hf_e1ap_BearerContextInactivityNotification_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_DRB_Activity_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_e1ap_DRB_Activity_List(tvb, offset, &asn1_ctx, tree, hf_e1ap_DRB_Activity_List_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_DLDataNotification_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_e1ap_DLDataNotification(tvb, offset, &asn1_ctx, tree, hf_e1ap_DLDataNotification_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_DataUsageReport_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_e1ap_DataUsageReport(tvb, offset, &asn1_ctx, tree, hf_e1ap_DataUsageReport_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_PrivateMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e1ap_PrivateMessage(tvb, offset, &asn1_ctx, tree, hf_e1ap_PrivateMessage_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E1AP_PDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_e1ap_E1AP_PDU(tvb, offset, &asn1_ctx, tree, hf_e1ap_E1AP_PDU_PDU); + offset += 7; offset >>= 3; + return offset; +} + + +/*--- End of included file: packet-e1ap-fn.c ---*/ +#line 106 "./asn1/e1ap/packet-e1ap-template.c" + +static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) +{ + e1ap_ctx_t e1ap_ctx; + e1ap_private_data_t *e1ap_data = e1ap_get_private_data(pinfo); + + e1ap_ctx.message_type = e1ap_data->message_type; + e1ap_ctx.ProcedureCode = e1ap_data->procedure_code; + e1ap_ctx.ProtocolIE_ID = e1ap_data->protocol_ie_id; + e1ap_ctx.ProtocolExtensionID = e1ap_data->protocol_extension_id; + + return (dissector_try_uint_new(e1ap_ies_dissector_table, e1ap_data->protocol_ie_id, tvb, pinfo, tree, FALSE, &e1ap_ctx)) ? tvb_captured_length(tvb) : 0; +} + +//static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) +//{ +// e1ap_ctx_t e1ap_ctx; +// e1ap_private_data_t *e1ap_data = e1ap_get_private_data(pinfo); +// +// e1ap_ctx.message_type = e1ap_data->message_type; +// e1ap_ctx.ProcedureCode = e1ap_data->procedure_code; +// e1ap_ctx.ProtocolIE_ID = e1ap_data->protocol_ie_id; +// e1ap_ctx.ProtocolExtensionID = e1ap_data->protocol_extension_id; +// +// return (dissector_try_uint_new(e1ap_extension_dissector_table, e1ap_data->protocol_extension_id, tvb, pinfo, tree, FALSE, &e1ap_ctx)) ? tvb_captured_length(tvb) : 0; +//} + +static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) +{ + e1ap_private_data_t *e1ap_data = e1ap_get_private_data(pinfo); + + return (dissector_try_uint_new(e1ap_proc_imsg_dissector_table, e1ap_data->procedure_code, tvb, pinfo, tree, FALSE, data)) ? tvb_captured_length(tvb) : 0; +} + +static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) +{ + e1ap_private_data_t *e1ap_data = e1ap_get_private_data(pinfo); + + return (dissector_try_uint_new(e1ap_proc_sout_dissector_table, e1ap_data->procedure_code, tvb, pinfo, tree, FALSE, data)) ? tvb_captured_length(tvb) : 0; +} + +static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) +{ + e1ap_private_data_t *e1ap_data = e1ap_get_private_data(pinfo); + + return (dissector_try_uint_new(e1ap_proc_uout_dissector_table, e1ap_data->procedure_code, tvb, pinfo, tree, FALSE, data)) ? tvb_captured_length(tvb) : 0; +} + + +static int +dissect_e1ap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_) +{ + proto_item *e1ap_item = NULL; + proto_tree *e1ap_tree = NULL; + + /* make entry in the Protocol column on summary display */ + col_set_str(pinfo->cinfo, COL_PROTOCOL, "E1AP"); + col_clear(pinfo->cinfo, COL_INFO); + + /* create the e1ap protocol tree */ + e1ap_item = proto_tree_add_item(tree, proto_e1ap, tvb, 0, -1, ENC_NA); + e1ap_tree = proto_item_add_subtree(e1ap_item, ett_e1ap); + + dissect_E1AP_PDU_PDU(tvb, pinfo, e1ap_tree, NULL); + return tvb_captured_length(tvb); +} + +void proto_register_e1ap(void) { + + /* List of fields */ + + static hf_register_info hf[] = { + { &hf_e1ap_transportLayerAddressIPv4, + { "IPv4 transportLayerAddress", "e1ap.transportLayerAddressIPv4", + FT_IPv4, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_transportLayerAddressIPv6, + { "IPv6 transportLayerAddress", "e1ap.transportLayerAddressIPv6", + FT_IPv6, BASE_NONE, NULL, 0, + NULL, HFILL }}, + +/*--- Included file: packet-e1ap-hfarr.c ---*/ +#line 1 "./asn1/e1ap/packet-e1ap-hfarr.c" + { &hf_e1ap_BearerContextStatusChange_PDU, + { "BearerContextStatusChange", "e1ap.BearerContextStatusChange", + FT_UINT32, BASE_DEC, VALS(e1ap_BearerContextStatusChange_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_BitRate_PDU, + { "BitRate", "e1ap.BitRate", + FT_UINT64, BASE_DEC|BASE_UNIT_STRING, &units_bit_sec, 0, + NULL, HFILL }}, + { &hf_e1ap_Cause_PDU, + { "Cause", "e1ap.Cause", + FT_UINT32, BASE_DEC, VALS(e1ap_Cause_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_CNSupport_PDU, + { "CNSupport", "e1ap.CNSupport", + FT_UINT32, BASE_DEC, VALS(e1ap_CNSupport_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_CriticalityDiagnostics_PDU, + { "CriticalityDiagnostics", "e1ap.CriticalityDiagnostics_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_Data_Usage_Report_List_PDU, + { "Data-Usage-Report-List", "e1ap.Data_Usage_Report_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_DRB_Activity_Item_PDU, + { "DRB-Activity-Item", "e1ap.DRB_Activity_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_DRB_Status_Item_PDU, + { "DRB-Status-Item", "e1ap.DRB_Status_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_GNB_CU_CP_Name_PDU, + { "GNB-CU-CP-Name", "e1ap.GNB_CU_CP_Name", + FT_STRING, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_GNB_CU_CP_UE_E1AP_ID_PDU, + { "GNB-CU-CP-UE-E1AP-ID", "e1ap.GNB_CU_CP_UE_E1AP_ID", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_GNB_CU_UP_ID_PDU, + { "GNB-CU-UP-ID", "e1ap.GNB_CU_UP_ID", + FT_UINT64, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_GNB_CU_UP_Name_PDU, + { "GNB-CU-UP-Name", "e1ap.GNB_CU_UP_Name", + FT_STRING, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_GNB_CU_UP_UE_E1AP_ID_PDU, + { "GNB-CU-UP-UE-E1AP-ID", "e1ap.GNB_CU_UP_UE_E1AP_ID", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_SecurityInformation_PDU, + { "SecurityInformation", "e1ap.SecurityInformation_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_TimeToWait_PDU, + { "TimeToWait", "e1ap.TimeToWait", + FT_UINT32, BASE_DEC, VALS(e1ap_TimeToWait_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_UE_associatedLogicalE1_ConnectionItem_PDU, + { "UE-associatedLogicalE1-ConnectionItem", "e1ap.UE_associatedLogicalE1_ConnectionItem_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_Reset_PDU, + { "Reset", "e1ap.Reset_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_ResetType_PDU, + { "ResetType", "e1ap.ResetType", + FT_UINT32, BASE_DEC, VALS(e1ap_ResetType_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_ResetAcknowledge_PDU, + { "ResetAcknowledge", "e1ap.ResetAcknowledge_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_UE_associatedLogicalE1_ConnectionListResAck_PDU, + { "UE-associatedLogicalE1-ConnectionListResAck", "e1ap.UE_associatedLogicalE1_ConnectionListResAck", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_ErrorIndication_PDU, + { "ErrorIndication", "e1ap.ErrorIndication_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_GNB_CU_UP_E1SetupRequest_PDU, + { "GNB-CU-UP-E1SetupRequest", "e1ap.GNB_CU_UP_E1SetupRequest_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_SupportedPLMNs_List_PDU, + { "SupportedPLMNs-List", "e1ap.SupportedPLMNs_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_SupportedPLMNs_Item_PDU, + { "SupportedPLMNs-Item", "e1ap.SupportedPLMNs_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_GNB_CU_UP_E1SetupResponse_PDU, + { "GNB-CU-UP-E1SetupResponse", "e1ap.GNB_CU_UP_E1SetupResponse_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_GNB_CU_UP_E1SetupFailure_PDU, + { "GNB-CU-UP-E1SetupFailure", "e1ap.GNB_CU_UP_E1SetupFailure_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_GNB_CU_CP_E1SetupRequest_PDU, + { "GNB-CU-CP-E1SetupRequest", "e1ap.GNB_CU_CP_E1SetupRequest_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_GNB_CU_CP_E1SetupResponse_PDU, + { "GNB-CU-CP-E1SetupResponse", "e1ap.GNB_CU_CP_E1SetupResponse_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_GNB_CU_CP_E1SetupFailure_PDU, + { "GNB-CU-CP-E1SetupFailure", "e1ap.GNB_CU_CP_E1SetupFailure_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_GNB_CU_UP_ConfigurationUpdate_PDU, + { "GNB-CU-UP-ConfigurationUpdate", "e1ap.GNB_CU_UP_ConfigurationUpdate_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_GNB_CU_UP_ConfigurationUpdateAcknowledge_PDU, + { "GNB-CU-UP-ConfigurationUpdateAcknowledge", "e1ap.GNB_CU_UP_ConfigurationUpdateAcknowledge_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_GNB_CU_UP_ConfigurationUpdateFailure_PDU, + { "GNB-CU-UP-ConfigurationUpdateFailure", "e1ap.GNB_CU_UP_ConfigurationUpdateFailure_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_GNB_CU_CP_ConfigurationUpdate_PDU, + { "GNB-CU-CP-ConfigurationUpdate", "e1ap.GNB_CU_CP_ConfigurationUpdate_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_GNB_CU_CP_ConfigurationUpdateAcknowledge_PDU, + { "GNB-CU-CP-ConfigurationUpdateAcknowledge", "e1ap.GNB_CU_CP_ConfigurationUpdateAcknowledge_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_GNB_CU_CP_ConfigurationUpdateFailure_PDU, + { "GNB-CU-CP-ConfigurationUpdateFailure", "e1ap.GNB_CU_CP_ConfigurationUpdateFailure_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_E1ReleaseRequest_PDU, + { "E1ReleaseRequest", "e1ap.E1ReleaseRequest_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_E1ReleaseResponse_PDU, + { "E1ReleaseResponse", "e1ap.E1ReleaseResponse_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_BearerContextSetupRequest_PDU, + { "BearerContextSetupRequest", "e1ap.BearerContextSetupRequest_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_System_BearerContextSetupRequest_PDU, + { "System-BearerContextSetupRequest", "e1ap.System_BearerContextSetupRequest", + FT_UINT32, BASE_DEC, VALS(e1ap_System_BearerContextSetupRequest_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_BearerContextSetupResponse_PDU, + { "BearerContextSetupResponse", "e1ap.BearerContextSetupResponse_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_System_BearerContextSetupResponse_PDU, + { "System-BearerContextSetupResponse", "e1ap.System_BearerContextSetupResponse", + FT_UINT32, BASE_DEC, VALS(e1ap_System_BearerContextSetupResponse_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_BearerContextSetupFailure_PDU, + { "BearerContextSetupFailure", "e1ap.BearerContextSetupFailure_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_BearerContextModificationRequest_PDU, + { "BearerContextModificationRequest", "e1ap.BearerContextModificationRequest_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_System_BearerContextModificationRequest_PDU, + { "System-BearerContextModificationRequest", "e1ap.System_BearerContextModificationRequest", + FT_UINT32, BASE_DEC, VALS(e1ap_System_BearerContextModificationRequest_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_BearerContextModificationResponse_PDU, + { "BearerContextModificationResponse", "e1ap.BearerContextModificationResponse_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_System_BearerContextModificationResponse_PDU, + { "System-BearerContextModificationResponse", "e1ap.System_BearerContextModificationResponse", + FT_UINT32, BASE_DEC, VALS(e1ap_System_BearerContextModificationResponse_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_BearerContextModificationFailure_PDU, + { "BearerContextModificationFailure", "e1ap.BearerContextModificationFailure_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_BearerContextModificationRequired_PDU, + { "BearerContextModificationRequired", "e1ap.BearerContextModificationRequired_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_System_BearerContextModificationRequired_PDU, + { "System-BearerContextModificationRequired", "e1ap.System_BearerContextModificationRequired", + FT_UINT32, BASE_DEC, VALS(e1ap_System_BearerContextModificationRequired_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_BearerContextModificationConfirm_PDU, + { "BearerContextModificationConfirm", "e1ap.BearerContextModificationConfirm_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_System_BearerContextModificationConfirm_PDU, + { "System-BearerContextModificationConfirm", "e1ap.System_BearerContextModificationConfirm", + FT_UINT32, BASE_DEC, VALS(e1ap_System_BearerContextModificationConfirm_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_BearerContextReleaseCommand_PDU, + { "BearerContextReleaseCommand", "e1ap.BearerContextReleaseCommand_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_BearerContextReleaseComplete_PDU, + { "BearerContextReleaseComplete", "e1ap.BearerContextReleaseComplete_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_BearerContextReleaseRequest_PDU, + { "BearerContextReleaseRequest", "e1ap.BearerContextReleaseRequest_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_DRB_Status_List_PDU, + { "DRB-Status-List", "e1ap.DRB_Status_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_BearerContextInactivityNotification_PDU, + { "BearerContextInactivityNotification", "e1ap.BearerContextInactivityNotification_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_DRB_Activity_List_PDU, + { "DRB-Activity-List", "e1ap.DRB_Activity_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_DLDataNotification_PDU, + { "DLDataNotification", "e1ap.DLDataNotification_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_DataUsageReport_PDU, + { "DataUsageReport", "e1ap.DataUsageReport_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_PrivateMessage_PDU, + { "PrivateMessage", "e1ap.PrivateMessage_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_E1AP_PDU_PDU, + { "E1AP-PDU", "e1ap.E1AP_PDU", + FT_UINT32, BASE_DEC, VALS(e1ap_E1AP_PDU_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_local, + { "local", "e1ap.local", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_maxPrivateIEs", HFILL }}, + { &hf_e1ap_global, + { "global", "e1ap.global", + FT_OID, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_ProtocolIE_Container_item, + { "ProtocolIE-Field", "e1ap.ProtocolIE_Field_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_id, + { "id", "e1ap.id", + FT_UINT32, BASE_DEC|BASE_EXT_STRING, &e1ap_ProtocolIE_ID_vals_ext, 0, + "ProtocolIE_ID", HFILL }}, + { &hf_e1ap_criticality, + { "criticality", "e1ap.criticality", + FT_UINT32, BASE_DEC, VALS(e1ap_Criticality_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_ie_field_value, + { "value", "e1ap.value_element", + FT_NONE, BASE_NONE, NULL, 0, + "T_ie_field_value", HFILL }}, + { &hf_e1ap_ProtocolExtensionContainer_item, + { "ProtocolExtensionField", "e1ap.ProtocolExtensionField_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_ext_id, + { "id", "e1ap.id", + FT_UINT32, BASE_DEC|BASE_EXT_STRING, &e1ap_ProtocolIE_ID_vals_ext, 0, + "ProtocolIE_ID", HFILL }}, + { &hf_e1ap_extensionValue, + { "extensionValue", "e1ap.extensionValue_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_PrivateIE_Container_item, + { "PrivateIE-Field", "e1ap.PrivateIE_Field_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_private_id, + { "id", "e1ap.id", + FT_UINT32, BASE_DEC, VALS(e1ap_PrivateIE_ID_vals), 0, + "PrivateIE_ID", HFILL }}, + { &hf_e1ap_value, + { "value", "e1ap.value_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_radioNetwork, + { "radioNetwork", "e1ap.radioNetwork", + FT_UINT32, BASE_DEC, VALS(e1ap_CauseRadioNetwork_vals), 0, + "CauseRadioNetwork", HFILL }}, + { &hf_e1ap_transport, + { "transport", "e1ap.transport", + FT_UINT32, BASE_DEC, VALS(e1ap_CauseTransport_vals), 0, + "CauseTransport", HFILL }}, + { &hf_e1ap_protocol, + { "protocol", "e1ap.protocol", + FT_UINT32, BASE_DEC, VALS(e1ap_CauseProtocol_vals), 0, + "CauseProtocol", HFILL }}, + { &hf_e1ap_misc, + { "misc", "e1ap.misc", + FT_UINT32, BASE_DEC, VALS(e1ap_CauseMisc_vals), 0, + "CauseMisc", HFILL }}, + { &hf_e1ap_Cell_Group_Information_item, + { "Cell-Group-Information-Item", "e1ap.Cell_Group_Information_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_cell_Group_ID, + { "cell-Group-ID", "e1ap.cell_Group_ID", + FT_UINT32, BASE_DEC, NULL, 0, + "Cell_Gorup_ID", HFILL }}, + { &hf_e1ap_uL_Configuration, + { "uL-Configuration", "e1ap.uL_Configuration", + FT_UINT32, BASE_DEC, VALS(e1ap_UL_Configuration_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_dL_TX_Stop, + { "dL-TX-Stop", "e1ap.dL_TX_Stop", + FT_UINT32, BASE_DEC, VALS(e1ap_DL_TX_Stop_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_rAT_Type, + { "rAT-Type", "e1ap.rAT_Type", + FT_UINT32, BASE_DEC, VALS(e1ap_RAT_Type_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_iE_Extensions, + { "iE-Extensions", "e1ap.iE_Extensions", + FT_UINT32, BASE_DEC, NULL, 0, + "ProtocolExtensionContainer", HFILL }}, + { &hf_e1ap_procedureCode, + { "procedureCode", "e1ap.procedureCode", + FT_UINT32, BASE_DEC|BASE_EXT_STRING, &e1ap_ProcedureCode_vals_ext, 0, + NULL, HFILL }}, + { &hf_e1ap_triggeringMessage, + { "triggeringMessage", "e1ap.triggeringMessage", + FT_UINT32, BASE_DEC, VALS(e1ap_TriggeringMessage_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_procedureCriticality, + { "procedureCriticality", "e1ap.procedureCriticality", + FT_UINT32, BASE_DEC, VALS(e1ap_Criticality_vals), 0, + "Criticality", HFILL }}, + { &hf_e1ap_iEsCriticalityDiagnostics, + { "iEsCriticalityDiagnostics", "e1ap.iEsCriticalityDiagnostics", + FT_UINT32, BASE_DEC, NULL, 0, + "CriticalityDiagnostics_IE_List", HFILL }}, + { &hf_e1ap_CriticalityDiagnostics_IE_List_item, + { "CriticalityDiagnostics-IE-List item", "e1ap.CriticalityDiagnostics_IE_List_item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_iECriticality, + { "iECriticality", "e1ap.iECriticality", + FT_UINT32, BASE_DEC, VALS(e1ap_Criticality_vals), 0, + "Criticality", HFILL }}, + { &hf_e1ap_iE_ID, + { "iE-ID", "e1ap.iE_ID", + FT_UINT32, BASE_DEC|BASE_EXT_STRING, &e1ap_ProtocolIE_ID_vals_ext, 0, + "ProtocolIE_ID", HFILL }}, + { &hf_e1ap_typeOfError, + { "typeOfError", "e1ap.typeOfError", + FT_UINT32, BASE_DEC, VALS(e1ap_TypeOfError_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_data_Forwarding_Request, + { "data-Forwarding-Request", "e1ap.data_Forwarding_Request", + FT_UINT32, BASE_DEC, VALS(e1ap_Data_Forwarding_Request_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_uL_Data_Forwarding, + { "uL-Data-Forwarding", "e1ap.uL_Data_Forwarding", + FT_UINT32, BASE_DEC, VALS(e1ap_UP_TNL_Information_vals), 0, + "UP_TNL_Information", HFILL }}, + { &hf_e1ap_dL_Data_Forwarding, + { "dL-Data-Forwarding", "e1ap.dL_Data_Forwarding", + FT_UINT32, BASE_DEC, VALS(e1ap_UP_TNL_Information_vals), 0, + "UP_TNL_Information", HFILL }}, + { &hf_e1ap_Data_Usage_Report_List_item, + { "Data-Usage-Report-Item", "e1ap.Data_Usage_Report_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_dRB_ID, + { "dRB-ID", "e1ap.dRB_ID", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_dRB_Usage_Report_List, + { "dRB-Usage-Report-List", "e1ap.dRB_Usage_Report_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_dRB_Activity, + { "dRB-Activity", "e1ap.dRB_Activity", + FT_UINT32, BASE_DEC, VALS(e1ap_DRB_Acivity_vals), 0, + "DRB_Acivity", HFILL }}, + { &hf_e1ap_DRB_Confirm_Modified_List_EUTRAN_item, + { "DRB-Confirm-Modified-Item-EUTRAN", "e1ap.DRB_Confirm_Modified_Item_EUTRAN_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_cell_Group_Information, + { "cell-Group-Information", "e1ap.cell_Group_Information", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_DRB_Confirm_Modified_List_NG_RAN_item, + { "DRB-Confirm-Modified-Item-NG-RAN", "e1ap.DRB_Confirm_Modified_Item_NG_RAN_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_DRB_Failed_List_EUTRAN_item, + { "DRB-Failed-Item-EUTRAN", "e1ap.DRB_Failed_Item_EUTRAN_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_cause, + { "cause", "e1ap.cause", + FT_UINT32, BASE_DEC, VALS(e1ap_Cause_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_DRB_Failed_List_NG_RAN_item, + { "DRB-Failed-Item-NG-RAN", "e1ap.DRB_Failed_Item_NG_RAN_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_DRB_Failed_To_Modify_List_EUTRAN_item, + { "DRB-Failed-To-Modify-Item-EUTRAN", "e1ap.DRB_Failed_To_Modify_Item_EUTRAN_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_DRB_Failed_To_Modify_List_NG_RAN_item, + { "DRB-Failed-To-Modify-Item-NG-RAN", "e1ap.DRB_Failed_To_Modify_Item_NG_RAN_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_DRB_Modified_List_EUTRAN_item, + { "DRB-Modified-Item-EUTRAN", "e1ap.DRB_Modified_Item_EUTRAN_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_pDCP_UL_Count, + { "pDCP-UL-Count", "e1ap.pDCP_UL_Count_element", + FT_NONE, BASE_NONE, NULL, 0, + "PDCP_Count", HFILL }}, + { &hf_e1ap_pDCP_DL_Count, + { "pDCP-DL-Count", "e1ap.pDCP_DL_Count_element", + FT_NONE, BASE_NONE, NULL, 0, + "PDCP_Count", HFILL }}, + { &hf_e1ap_uL_UP_Transport_Parameters, + { "uL-UP-Transport-Parameters", "e1ap.uL_UP_Transport_Parameters", + FT_UINT32, BASE_DEC, NULL, 0, + "UP_Parameters", HFILL }}, + { &hf_e1ap_DRB_Modified_List_NG_RAN_item, + { "DRB-Modified-Item-NG-RAN", "e1ap.DRB_Modified_Item_NG_RAN_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_flow_Setup_List, + { "flow-Setup-List", "e1ap.flow_Setup_List", + FT_UINT32, BASE_DEC, NULL, 0, + "QoS_Flow_List", HFILL }}, + { &hf_e1ap_flow_Failed_List, + { "flow-Failed-List", "e1ap.flow_Failed_List", + FT_UINT32, BASE_DEC, NULL, 0, + "QoS_Flow_Failed_List", HFILL }}, + { &hf_e1ap_DRB_Required_To_Modify_List_EUTRAN_item, + { "DRB-Required-To-Modify-Item-EUTRAN", "e1ap.DRB_Required_To_Modify_Item_EUTRAN_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_s1_DL_UP_TNL_Information, + { "s1-DL-UP-TNL-Information", "e1ap.s1_DL_UP_TNL_Information", + FT_UINT32, BASE_DEC, VALS(e1ap_UP_TNL_Information_vals), 0, + "UP_TNL_Information", HFILL }}, + { &hf_e1ap_data_Forwarding_Information_Response, + { "data-Forwarding-Information-Response", "e1ap.data_Forwarding_Information_Response_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_gNB_CU_UP_CellGroupRelatedConfiguration, + { "gNB-CU-UP-CellGroupRelatedConfiguration", "e1ap.gNB_CU_UP_CellGroupRelatedConfiguration", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_DRB_Required_To_Modify_List_NG_RAN_item, + { "DRB-Required-To-Modify-Item-NG-RAN", "e1ap.DRB_Required_To_Modify_Item_NG_RAN_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_flow_To_Remove, + { "flow-To-Remove", "e1ap.flow_To_Remove", + FT_UINT32, BASE_DEC, NULL, 0, + "QoS_Flow_List", HFILL }}, + { &hf_e1ap_DRB_Setup_List_EUTRAN_item, + { "DRB-Setup-Item-EUTRAN", "e1ap.DRB_Setup_Item_EUTRAN_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_DRB_Setup_List_NG_RAN_item, + { "DRB-Setup-Item-NG-RAN", "e1ap.DRB_Setup_Item_NG_RAN_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_dRB_data_Forwarding_Information_Response, + { "dRB-data-Forwarding-Information-Response", "e1ap.dRB_data_Forwarding_Information_Response_element", + FT_NONE, BASE_NONE, NULL, 0, + "Data_Forwarding_Information_Response", HFILL }}, + { &hf_e1ap_DRB_To_Modify_List_EUTRAN_item, + { "DRB-To-Modify-Item-EUTRAN", "e1ap.DRB_To_Modify_Item_EUTRAN_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_pDCP_Configuration, + { "pDCP-Configuration", "e1ap.pDCP_Configuration_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_eUTRAN_QoS, + { "eUTRAN-QoS", "e1ap.eUTRAN_QoS_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_s1_UL_UP_TNL_Information, + { "s1-UL-UP-TNL-Information", "e1ap.s1_UL_UP_TNL_Information", + FT_UINT32, BASE_DEC, VALS(e1ap_UP_TNL_Information_vals), 0, + "UP_TNL_Information", HFILL }}, + { &hf_e1ap_data_Forwarding_Information_Request, + { "data-Forwarding-Information-Request", "e1ap.data_Forwarding_Information_Request_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_pDCP_Count_Request, + { "pDCP-Count-Request", "e1ap.pDCP_Count_Request", + FT_UINT32, BASE_DEC, VALS(e1ap_PDCP_Count_Request_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_dL_UP_Parameters, + { "dL-UP-Parameters", "e1ap.dL_UP_Parameters", + FT_UINT32, BASE_DEC, NULL, 0, + "UP_Parameters", HFILL }}, + { &hf_e1ap_cell_Group_To_Add, + { "cell-Group-To-Add", "e1ap.cell_Group_To_Add", + FT_UINT32, BASE_DEC, NULL, 0, + "Cell_Group_Information", HFILL }}, + { &hf_e1ap_cell_Group_To_Modify, + { "cell-Group-To-Modify", "e1ap.cell_Group_To_Modify", + FT_UINT32, BASE_DEC, NULL, 0, + "Cell_Group_Information", HFILL }}, + { &hf_e1ap_cell_Group_To_Remove, + { "cell-Group-To-Remove", "e1ap.cell_Group_To_Remove", + FT_UINT32, BASE_DEC, NULL, 0, + "Cell_Group_Information", HFILL }}, + { &hf_e1ap_DRB_To_Modify_List_NG_RAN_item, + { "DRB-To-Modify-Item-NG-RAN", "e1ap.DRB_To_Modify_Item_NG_RAN_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_sDAP_Configuration, + { "sDAP-Configuration", "e1ap.sDAP_Configuration_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_dRB_Data_Forwarding_Information_Request, + { "dRB-Data-Forwarding-Information-Request", "e1ap.dRB_Data_Forwarding_Information_Request_element", + FT_NONE, BASE_NONE, NULL, 0, + "Data_Forwarding_Information_Request", HFILL }}, + { &hf_e1ap_flow_Mapping_Information, + { "flow-Mapping-Information", "e1ap.flow_Mapping_Information", + FT_UINT32, BASE_DEC, NULL, 0, + "QoS_Flow_QoS_Parameter_List", HFILL }}, + { &hf_e1ap_DRB_To_Remove_List_EUTRAN_item, + { "DRB-To-Remove-Item-EUTRAN", "e1ap.DRB_To_Remove_Item_EUTRAN_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_DRB_To_Remove_List_NG_RAN_item, + { "DRB-To-Remove-Item-NG-RAN", "e1ap.DRB_To_Remove_Item_NG_RAN_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_DRB_To_Setup_List_EUTRAN_item, + { "DRB-To-Setup-Item-EUTRAN", "e1ap.DRB_To_Setup_Item_EUTRAN_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_DRB_To_Setup_List_NG_RAN_item, + { "DRB-To-Setup-Item-NG-RAN", "e1ap.DRB_To_Setup_Item_NG_RAN_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_DRB_Usage_Report_List_item, + { "DRB-Usage-Report-Item", "e1ap.DRB_Usage_Report_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_startTimeStamp, + { "startTimeStamp", "e1ap.startTimeStamp", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_endTimeStamp, + { "endTimeStamp", "e1ap.endTimeStamp", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_usageCountUL, + { "usageCountUL", "e1ap.usageCountUL", + FT_UINT64, BASE_DEC|BASE_UNIT_STRING, &units_octet_octets, 0, + "INTEGER_0_18446744073709551615", HFILL }}, + { &hf_e1ap_usageCountDL, + { "usageCountDL", "e1ap.usageCountDL", + FT_UINT64, BASE_DEC|BASE_UNIT_STRING, &units_octet_octets, 0, + "INTEGER_0_18446744073709551615", HFILL }}, + { &hf_e1ap_qoSPriorityLevel, + { "qoSPriorityLevel", "e1ap.qoSPriorityLevel", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_1_127", HFILL }}, + { &hf_e1ap_packetDelayBudget, + { "packetDelayBudget", "e1ap.packetDelayBudget", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_packetErrorRate, + { "packetErrorRate", "e1ap.packetErrorRate", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_delayCritical, + { "delayCritical", "e1ap.delayCritical", + FT_UINT32, BASE_DEC, VALS(e1ap_T_delayCritical_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_averagingWindow, + { "averagingWindow", "e1ap.averagingWindow", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_maxDataBurstVolume, + { "maxDataBurstVolume", "e1ap.maxDataBurstVolume", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_priorityLevel, + { "priorityLevel", "e1ap.priorityLevel", + FT_UINT32, BASE_DEC, VALS(e1ap_PriorityLevel_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_pre_emptionCapability, + { "pre-emptionCapability", "e1ap.pre_emptionCapability", + FT_UINT32, BASE_DEC, VALS(e1ap_Pre_emptionCapability_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_pre_emptionVulnerability, + { "pre-emptionVulnerability", "e1ap.pre_emptionVulnerability", + FT_UINT32, BASE_DEC, VALS(e1ap_Pre_emptionVulnerability_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_EUTRAN_QoS_Support_List_item, + { "EUTRAN-QoS-Support-Item", "e1ap.EUTRAN_QoS_Support_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_qCI, + { "qCI", "e1ap.qCI", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_eUTRANallocationAndRetentionPriority, + { "eUTRANallocationAndRetentionPriority", "e1ap.eUTRANallocationAndRetentionPriority_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_gbrQosInformation, + { "gbrQosInformation", "e1ap.gbrQosInformation_element", + FT_NONE, BASE_NONE, NULL, 0, + "GBR_QosInformation", HFILL }}, + { &hf_e1ap_GNB_CU_UP_CellGroupRelatedConfiguration_item, + { "GNB-CU-UP-CellGroupRelatedConfiguration-Item", "e1ap.GNB_CU_UP_CellGroupRelatedConfiguration_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_uP_TNL_Information, + { "uP-TNL-Information", "e1ap.uP_TNL_Information", + FT_UINT32, BASE_DEC, VALS(e1ap_UP_TNL_Information_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_e_RAB_MaximumBitrateDL, + { "e-RAB-MaximumBitrateDL", "e1ap.e_RAB_MaximumBitrateDL", + FT_UINT64, BASE_DEC|BASE_UNIT_STRING, &units_bit_sec, 0, + "BitRate", HFILL }}, + { &hf_e1ap_e_RAB_MaximumBitrateUL, + { "e-RAB-MaximumBitrateUL", "e1ap.e_RAB_MaximumBitrateUL", + FT_UINT64, BASE_DEC|BASE_UNIT_STRING, &units_bit_sec, 0, + "BitRate", HFILL }}, + { &hf_e1ap_e_RAB_GuaranteedBitrateDL, + { "e-RAB-GuaranteedBitrateDL", "e1ap.e_RAB_GuaranteedBitrateDL", + FT_UINT64, BASE_DEC|BASE_UNIT_STRING, &units_bit_sec, 0, + "BitRate", HFILL }}, + { &hf_e1ap_e_RAB_GuaranteedBitrateUL, + { "e-RAB-GuaranteedBitrateUL", "e1ap.e_RAB_GuaranteedBitrateUL", + FT_UINT64, BASE_DEC|BASE_UNIT_STRING, &units_bit_sec, 0, + "BitRate", HFILL }}, + { &hf_e1ap_maxFlowBitRateDownlink, + { "maxFlowBitRateDownlink", "e1ap.maxFlowBitRateDownlink", + FT_UINT64, BASE_DEC|BASE_UNIT_STRING, &units_bit_sec, 0, + "BitRate", HFILL }}, + { &hf_e1ap_maxFlowBitRateUplink, + { "maxFlowBitRateUplink", "e1ap.maxFlowBitRateUplink", + FT_UINT64, BASE_DEC|BASE_UNIT_STRING, &units_bit_sec, 0, + "BitRate", HFILL }}, + { &hf_e1ap_guaranteedFlowBitRateDownlink, + { "guaranteedFlowBitRateDownlink", "e1ap.guaranteedFlowBitRateDownlink", + FT_UINT64, BASE_DEC|BASE_UNIT_STRING, &units_bit_sec, 0, + "BitRate", HFILL }}, + { &hf_e1ap_guaranteedFlowBitRateUplink, + { "guaranteedFlowBitRateUplink", "e1ap.guaranteedFlowBitRateUplink", + FT_UINT64, BASE_DEC|BASE_UNIT_STRING, &units_bit_sec, 0, + "BitRate", HFILL }}, + { &hf_e1ap_notificationControl, + { "notificationControl", "e1ap.notificationControl", + FT_UINT32, BASE_DEC, VALS(e1ap_T_notificationControl_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_maxPacketLossRateDownlink, + { "maxPacketLossRateDownlink", "e1ap.maxPacketLossRateDownlink", + FT_UINT32, BASE_CUSTOM, CF_FUNC(e1ap_MaxPacketLossRate_fmt), 0, + "MaxPacketLossRate", HFILL }}, + { &hf_e1ap_maxPacketLossRateUplink, + { "maxPacketLossRateUplink", "e1ap.maxPacketLossRateUplink", + FT_UINT32, BASE_CUSTOM, CF_FUNC(e1ap_MaxPacketLossRate_fmt), 0, + "MaxPacketLossRate", HFILL }}, + { &hf_e1ap_transportLayerAddress, + { "transportLayerAddress", "e1ap.transportLayerAddress", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_gTP_TEID, + { "gTP-TEID", "e1ap.gTP_TEID", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_NG_RAN_QoS_Support_List_item, + { "NG-RAN-QoS-Support-Item", "e1ap.NG_RAN_QoS_Support_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_non_Dynamic5QIDescriptor, + { "non-Dynamic5QIDescriptor", "e1ap.non_Dynamic5QIDescriptor_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_fiveQI, + { "fiveQI", "e1ap.fiveQI", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_255_", HFILL }}, + { &hf_e1ap_qoSPriorityLevel_01, + { "qoSPriorityLevel", "e1ap.qoSPriorityLevel", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_1_127_", HFILL }}, + { &hf_e1ap_pLMN_Identity, + { "pLMN-Identity", "e1ap.pLMN_Identity", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_nR_Cell_Identity, + { "nR-Cell-Identity", "e1ap.nR_Cell_Identity", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_NR_CGI_Support_List_item, + { "NR-CGI-Support-Item", "e1ap.NR_CGI_Support_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_nR_CGI, + { "nR-CGI", "e1ap.nR_CGI_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_pDCP_SN_Size, + { "pDCP-SN-Size", "e1ap.pDCP_SN_Size", + FT_UINT32, BASE_DEC, VALS(e1ap_PDCP_SN_Size_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_rLC_Mode, + { "rLC-Mode", "e1ap.rLC_Mode", + FT_UINT32, BASE_DEC, VALS(e1ap_RLC_Mode_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_rOHC_Parameters, + { "rOHC-Parameters", "e1ap.rOHC_Parameters_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_t_ReorderingTimer, + { "t-ReorderingTimer", "e1ap.t_ReorderingTimer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_discardTimer, + { "discardTimer", "e1ap.discardTimer", + FT_UINT32, BASE_DEC, VALS(e1ap_DiscardTimer_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_uLDataSplitThreshold, + { "uLDataSplitThreshold", "e1ap.uLDataSplitThreshold", + FT_UINT32, BASE_DEC, VALS(e1ap_ULDataSplitThreshold_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_pDCP_Duplication, + { "pDCP-Duplication", "e1ap.pDCP_Duplication", + FT_UINT32, BASE_DEC, VALS(e1ap_PDCP_Duplication_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_pDCP_SN, + { "pDCP-SN", "e1ap.pDCP_SN", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_hFN, + { "hFN", "e1ap.hFN", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_PDU_Session_Resource_Confirm_Modified_List_item, + { "PDU-Session-Resource-Confirm-Modified-Item", "e1ap.PDU_Session_Resource_Confirm_Modified_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_pDU_Session_ID, + { "pDU-Session-ID", "e1ap.pDU_Session_ID", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_dRB_Confirm_Modified_List_NG_RAN, + { "dRB-Confirm-Modified-List-NG-RAN", "e1ap.dRB_Confirm_Modified_List_NG_RAN", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_PDU_Session_Resource_Failed_List_item, + { "PDU-Session-Resource-Failed-Item", "e1ap.PDU_Session_Resource_Failed_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_casue, + { "casue", "e1ap.casue", + FT_UINT32, BASE_DEC, VALS(e1ap_Cause_vals), 0, + "Cause", HFILL }}, + { &hf_e1ap_PDU_Session_Resource_Failed_To_Modify_List_item, + { "PDU-Session-Resource-Failed-To-Modify-Item", "e1ap.PDU_Session_Resource_Failed_To_Modify_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_PDU_Session_Resource_Modified_List_item, + { "PDU-Session-Resource-Modified-Item", "e1ap.PDU_Session_Resource_Modified_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_dRB_Setup_List_NG_RAN, + { "dRB-Setup-List-NG-RAN", "e1ap.dRB_Setup_List_NG_RAN", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_dRB_Failed_List_NG_RAN, + { "dRB-Failed-List-NG-RAN", "e1ap.dRB_Failed_List_NG_RAN", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_dRB_Modified_List_NG_RAN, + { "dRB-Modified-List-NG-RAN", "e1ap.dRB_Modified_List_NG_RAN", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_dRB_Failed_To_Modify_List_NG_RAN, + { "dRB-Failed-To-Modify-List-NG-RAN", "e1ap.dRB_Failed_To_Modify_List_NG_RAN", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_dRB_To_Remove_List_NG_RAN, + { "dRB-To-Remove-List-NG-RAN", "e1ap.dRB_To_Remove_List_NG_RAN", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_PDU_Session_Resource_Required_To_Modify_List_item, + { "PDU-Session-Resource-Required-To-Modify-Item", "e1ap.PDU_Session_Resource_Required_To_Modify_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_nG_DL_UP_TNL_Information, + { "nG-DL-UP-TNL-Information", "e1ap.nG_DL_UP_TNL_Information", + FT_UINT32, BASE_DEC, VALS(e1ap_UP_TNL_Information_vals), 0, + "UP_TNL_Information", HFILL }}, + { &hf_e1ap_pDU_Session_Data_Forwarding_Information_Response, + { "pDU-Session-Data-Forwarding-Information-Response", "e1ap.pDU_Session_Data_Forwarding_Information_Response_element", + FT_NONE, BASE_NONE, NULL, 0, + "Data_Forwarding_Information_Response", HFILL }}, + { &hf_e1ap_dRB_Required_To_Modify_List_NG_RAN, + { "dRB-Required-To-Modify-List-NG-RAN", "e1ap.dRB_Required_To_Modify_List_NG_RAN", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_PDU_Session_Resource_Setup_List_item, + { "PDU-Session-Resource-Setup-Item", "e1ap.PDU_Session_Resource_Setup_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_PDU_Session_Resource_To_Modify_List_item, + { "PDU-Session-Resource-To-Modify-Item", "e1ap.PDU_Session_Resource_To_Modify_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_pDU_Session_Type, + { "pDU-Session-Type", "e1ap.pDU_Session_Type", + FT_UINT32, BASE_DEC, VALS(e1ap_PDU_Session_Type_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_sNSSAI, + { "sNSSAI", "e1ap.sNSSAI_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_securityIndication, + { "securityIndication", "e1ap.securityIndication_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_pDU_Session_Resource_AMBR, + { "pDU-Session-Resource-AMBR", "e1ap.pDU_Session_Resource_AMBR", + FT_UINT64, BASE_DEC|BASE_UNIT_STRING, &units_bit_sec, 0, + "BitRate", HFILL }}, + { &hf_e1ap_nG_UL_UP_TNL_Information, + { "nG-UL-UP-TNL-Information", "e1ap.nG_UL_UP_TNL_Information", + FT_UINT32, BASE_DEC, VALS(e1ap_UP_TNL_Information_vals), 0, + "UP_TNL_Information", HFILL }}, + { &hf_e1ap_pDU_Session_Data_Forwarding_Information_Request, + { "pDU-Session-Data-Forwarding-Information-Request", "e1ap.pDU_Session_Data_Forwarding_Information_Request_element", + FT_NONE, BASE_NONE, NULL, 0, + "Data_Forwarding_Information_Request", HFILL }}, + { &hf_e1ap_dRB_To_Setup_List_NG_RAN, + { "dRB-To-Setup-List-NG-RAN", "e1ap.dRB_To_Setup_List_NG_RAN", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_dRB_To_Modify_List_NG_RAN, + { "dRB-To-Modify-List-NG-RAN", "e1ap.dRB_To_Modify_List_NG_RAN", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_PDU_Session_Resource_To_Remove_List_item, + { "PDU-Session-Resource-To-Remove-Item", "e1ap.PDU_Session_Resource_To_Remove_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_PDU_Session_Resource_To_Setup_List_item, + { "PDU-Session-Resource-To-Setup-Item", "e1ap.PDU_Session_Resource_To_Setup_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_non_Dynamic_5QI, + { "non-Dynamic-5QI", "e1ap.non_Dynamic_5QI_element", + FT_NONE, BASE_NONE, NULL, 0, + "Non_Dynamic5QIDescriptor", HFILL }}, + { &hf_e1ap_dynamic_5QI, + { "dynamic-5QI", "e1ap.dynamic_5QI_element", + FT_NONE, BASE_NONE, NULL, 0, + "Dynamic5QIDescriptor", HFILL }}, + { &hf_e1ap_QoS_Flow_List_item, + { "QoS-Flow-Item", "e1ap.QoS_Flow_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_qoS_Flow_Indicator, + { "qoS-Flow-Indicator", "e1ap.qoS_Flow_Indicator", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_QoS_Flow_Failed_List_item, + { "QoS-Flow-Failed-Item", "e1ap.QoS_Flow_Failed_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_eUTRAN_QoS_Support_List, + { "eUTRAN-QoS-Support-List", "e1ap.eUTRAN_QoS_Support_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_nG_RAN_QoS_Support_List, + { "nG-RAN-QoS-Support-List", "e1ap.nG_RAN_QoS_Support_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_QoS_Flow_QoS_Parameter_List_item, + { "QoS-Flow-QoS-Parameter-Item", "e1ap.QoS_Flow_QoS_Parameter_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_qoSFlowLevelQoSParameters, + { "qoSFlowLevelQoSParameters", "e1ap.qoSFlowLevelQoSParameters_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_qoS_Characteristics, + { "qoS-Characteristics", "e1ap.qoS_Characteristics", + FT_UINT32, BASE_DEC, VALS(e1ap_QoS_Characteristics_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_nGRANallocationRetentionPriority, + { "nGRANallocationRetentionPriority", "e1ap.nGRANallocationRetentionPriority_element", + FT_NONE, BASE_NONE, NULL, 0, + "NGRANAllocationAndRetentionPriority", HFILL }}, + { &hf_e1ap_gBR_QoS_Flow_Information, + { "gBR-QoS-Flow-Information", "e1ap.gBR_QoS_Flow_Information_element", + FT_NONE, BASE_NONE, NULL, 0, + "GBR_QoSFlowInformation", HFILL }}, + { &hf_e1ap_reflective_QoS_Attribute, + { "reflective-QoS-Attribute", "e1ap.reflective_QoS_Attribute", + FT_UINT32, BASE_DEC, VALS(e1ap_T_reflective_QoS_Attribute_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_additional_QoS_Information, + { "additional-QoS-Information", "e1ap.additional_QoS_Information", + FT_UINT32, BASE_DEC, VALS(e1ap_T_additional_QoS_Information_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_paging_Policy_Indicator, + { "paging-Policy-Indicator", "e1ap.paging_Policy_Indicator", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_1_8_", HFILL }}, + { &hf_e1ap_reflective_QoS_Indicator, + { "reflective-QoS-Indicator", "e1ap.reflective_QoS_Indicator", + FT_UINT32, BASE_DEC, VALS(e1ap_T_reflective_QoS_Indicator_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_rOHC_Profiles, + { "rOHC-Profiles", "e1ap.rOHC_Profiles", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_cipheringAlgorithm, + { "cipheringAlgorithm", "e1ap.cipheringAlgorithm", + FT_UINT32, BASE_DEC, VALS(e1ap_CipheringAlgorithm_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_integrityProtectionAlgorithm, + { "integrityProtectionAlgorithm", "e1ap.integrityProtectionAlgorithm", + FT_UINT32, BASE_DEC, VALS(e1ap_IntegrityProtectionAlgorithm_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_integrityProtectionIndication, + { "integrityProtectionIndication", "e1ap.integrityProtectionIndication", + FT_UINT32, BASE_DEC, VALS(e1ap_IntegrityProtectionIndication_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_confidentialityProtectionIndication, + { "confidentialityProtectionIndication", "e1ap.confidentialityProtectionIndication", + FT_UINT32, BASE_DEC, VALS(e1ap_ConfidentialityProtectionIndication_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_securityAlgorithm, + { "securityAlgorithm", "e1ap.securityAlgorithm_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_uPSecuritykey, + { "uPSecuritykey", "e1ap.uPSecuritykey_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_Slice_Support_List_item, + { "Slice-Support-Item", "e1ap.Slice_Support_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_sST, + { "sST", "e1ap.sST", + FT_BYTES, BASE_NONE, NULL, 0, + "OCTET_STRING_SIZE_1", HFILL }}, + { &hf_e1ap_sD, + { "sD", "e1ap.sD", + FT_BYTES, BASE_NONE, NULL, 0, + "OCTET_STRING_SIZE_3", HFILL }}, + { &hf_e1ap_defaultDRB, + { "defaultDRB", "e1ap.defaultDRB", + FT_UINT32, BASE_DEC, VALS(e1ap_DefaultDRB_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_sDAP_Header_UL, + { "sDAP-Header-UL", "e1ap.sDAP_Header_UL", + FT_UINT32, BASE_DEC, VALS(e1ap_SDAP_Header_UL_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_sDAP_Header_DL, + { "sDAP-Header-DL", "e1ap.sDAP_Header_DL", + FT_UINT32, BASE_DEC, VALS(e1ap_SDAP_Header_DL_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_t_ReorderingUL, + { "t-ReorderingUL", "e1ap.t_ReorderingUL", + FT_UINT32, BASE_DEC, VALS(e1ap_T_ReorderingUL_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_t_ReorderingDL, + { "t-ReorderingDL", "e1ap.t_ReorderingDL", + FT_UINT32, BASE_DEC, VALS(e1ap_T_ReorderingDL_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_gNB_CU_CP_UE_E1AP_ID, + { "gNB-CU-CP-UE-E1AP-ID", "e1ap.gNB_CU_CP_UE_E1AP_ID", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_gNB_CU_UP_UE_E1AP_ID, + { "gNB-CU-UP-UE-E1AP-ID", "e1ap.gNB_CU_UP_UE_E1AP_ID", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_UP_Parameters_item, + { "UP-Parameters-Item", "e1ap.UP_Parameters_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_encryptionKey, + { "encryptionKey", "e1ap.encryptionKey", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_integrityProtectionKey, + { "integrityProtectionKey", "e1ap.integrityProtectionKey", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_gTPTunnel, + { "gTPTunnel", "e1ap.gTPTunnel_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_protocolIEs, + { "protocolIEs", "e1ap.protocolIEs", + FT_UINT32, BASE_DEC, NULL, 0, + "ProtocolIE_Container", HFILL }}, + { &hf_e1ap_e1_Interface, + { "e1-Interface", "e1ap.e1_Interface", + FT_UINT32, BASE_DEC, VALS(e1ap_ResetAll_vals), 0, + "ResetAll", HFILL }}, + { &hf_e1ap_partOfE1_Interface, + { "partOfE1-Interface", "e1ap.partOfE1_Interface", + FT_UINT32, BASE_DEC, NULL, 0, + "UE_associatedLogicalE1_ConnectionListRes", HFILL }}, + { &hf_e1ap_UE_associatedLogicalE1_ConnectionListRes_item, + { "ProtocolIE-SingleContainer", "e1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_UE_associatedLogicalE1_ConnectionListResAck_item, + { "ProtocolIE-SingleContainer", "e1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_SupportedPLMNs_List_item, + { "ProtocolIE-SingleContainer", "e1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_slice_Support_List, + { "slice-Support-List", "e1ap.slice_Support_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_nR_CGI_Support_List, + { "nR-CGI-Support-List", "e1ap.nR_CGI_Support_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_qoS_Parameters_Support_List, + { "qoS-Parameters-Support-List", "e1ap.qoS_Parameters_Support_List_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_e_UTRAN_BearerContextSetupRequest, + { "e-UTRAN-BearerContextSetupRequest", "e1ap.e_UTRAN_BearerContextSetupRequest_element", + FT_NONE, BASE_NONE, NULL, 0, + "EUTRAN_BearerContextSetupRequest", HFILL }}, + { &hf_e1ap_nG_RAN_BearerContextSetupRequest, + { "nG-RAN-BearerContextSetupRequest", "e1ap.nG_RAN_BearerContextSetupRequest_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_dRB_To_Setup_List_EUTRAN, + { "dRB-To-Setup-List-EUTRAN", "e1ap.dRB_To_Setup_List_EUTRAN", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_pDU_Session_Resource_To_Setup_List, + { "pDU-Session-Resource-To-Setup-List", "e1ap.pDU_Session_Resource_To_Setup_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_e_UTRAN_BearerContextSetupResponse, + { "e-UTRAN-BearerContextSetupResponse", "e1ap.e_UTRAN_BearerContextSetupResponse_element", + FT_NONE, BASE_NONE, NULL, 0, + "EUTRAN_BearerContextSetupResponse", HFILL }}, + { &hf_e1ap_nG_RAN_BearerContextSetupResponse, + { "nG-RAN-BearerContextSetupResponse", "e1ap.nG_RAN_BearerContextSetupResponse_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_dRB_Setup_List_EUTRAN, + { "dRB-Setup-List-EUTRAN", "e1ap.dRB_Setup_List_EUTRAN", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_dRB_Failed_List_EUTRAN, + { "dRB-Failed-List-EUTRAN", "e1ap.dRB_Failed_List_EUTRAN", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_pDU_Session_Resource_Setup_List, + { "pDU-Session-Resource-Setup-List", "e1ap.pDU_Session_Resource_Setup_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_pDU_Session_Resource_Failed_List, + { "pDU-Session-Resource-Failed-List", "e1ap.pDU_Session_Resource_Failed_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_e_UTRAN_BearerContextModificationRequest, + { "e-UTRAN-BearerContextModificationRequest", "e1ap.e_UTRAN_BearerContextModificationRequest_element", + FT_NONE, BASE_NONE, NULL, 0, + "EUTRAN_BearerContextModificationRequest", HFILL }}, + { &hf_e1ap_nG_RAN_BearerContextModificationRequest, + { "nG-RAN-BearerContextModificationRequest", "e1ap.nG_RAN_BearerContextModificationRequest_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_dRB_To_Modify_List_EUTRAN, + { "dRB-To-Modify-List-EUTRAN", "e1ap.dRB_To_Modify_List_EUTRAN", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_dRB_To_Remove_List_EUTRAN, + { "dRB-To-Remove-List-EUTRAN", "e1ap.dRB_To_Remove_List_EUTRAN", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_pDU_Session_Resource_To_Modify_List, + { "pDU-Session-Resource-To-Modify-List", "e1ap.pDU_Session_Resource_To_Modify_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_pDU_Session_Resource_To_Remove_List, + { "pDU-Session-Resource-To-Remove-List", "e1ap.pDU_Session_Resource_To_Remove_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_e_UTRAN_BearerContextModificationResponse, + { "e-UTRAN-BearerContextModificationResponse", "e1ap.e_UTRAN_BearerContextModificationResponse_element", + FT_NONE, BASE_NONE, NULL, 0, + "EUTRAN_BearerContextModificationResponse", HFILL }}, + { &hf_e1ap_nG_RAN_BearerContextModificationResponse, + { "nG-RAN-BearerContextModificationResponse", "e1ap.nG_RAN_BearerContextModificationResponse_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_dRB_Modified_List_EUTRAN, + { "dRB-Modified-List-EUTRAN", "e1ap.dRB_Modified_List_EUTRAN", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_dRB_Failed_To_Modify_List_EUTRAN, + { "dRB-Failed-To-Modify-List-EUTRAN", "e1ap.dRB_Failed_To_Modify_List_EUTRAN", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_pDU_Session_Resource_Modified_List, + { "pDU-Session-Resource-Modified-List", "e1ap.pDU_Session_Resource_Modified_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_pDU_Session_Resource_Failed_To_Modify_List, + { "pDU-Session-Resource-Failed-To-Modify-List", "e1ap.pDU_Session_Resource_Failed_To_Modify_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_e_UTRAN_BearerContextModificationRequired, + { "e-UTRAN-BearerContextModificationRequired", "e1ap.e_UTRAN_BearerContextModificationRequired_element", + FT_NONE, BASE_NONE, NULL, 0, + "EUTRAN_BearerContextModificationRequired", HFILL }}, + { &hf_e1ap_nG_RAN_BearerContextModificationRequired, + { "nG-RAN-BearerContextModificationRequired", "e1ap.nG_RAN_BearerContextModificationRequired_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_dRB_Required_To_Modify_List_EUTRAN, + { "dRB-Required-To-Modify-List-EUTRAN", "e1ap.dRB_Required_To_Modify_List_EUTRAN", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_pDU_Session_Resource_Required_To_Modify_List, + { "pDU-Session-Resource-Required-To-Modify-List", "e1ap.pDU_Session_Resource_Required_To_Modify_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_e_UTRAN_BearerContextModificationConfirm, + { "e-UTRAN-BearerContextModificationConfirm", "e1ap.e_UTRAN_BearerContextModificationConfirm_element", + FT_NONE, BASE_NONE, NULL, 0, + "EUTRAN_BearerContextModificationConfirm", HFILL }}, + { &hf_e1ap_nG_RAN_BearerContextModificationConfirm, + { "nG-RAN-BearerContextModificationConfirm", "e1ap.nG_RAN_BearerContextModificationConfirm_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_dRB_Confirm_Modified_List_EUTRAN, + { "dRB-Confirm-Modified-List-EUTRAN", "e1ap.dRB_Confirm_Modified_List_EUTRAN", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_pDU_Session_Resource_Confirm_Modified_List, + { "pDU-Session-Resource-Confirm-Modified-List", "e1ap.pDU_Session_Resource_Confirm_Modified_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_DRB_Status_List_item, + { "ProtocolIE-SingleContainer", "e1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_DRB_Activity_List_item, + { "ProtocolIE-SingleContainer", "e1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_privateIEs, + { "privateIEs", "e1ap.privateIEs", + FT_UINT32, BASE_DEC, NULL, 0, + "PrivateIE_Container", HFILL }}, + { &hf_e1ap_initiatingMessage, + { "initiatingMessage", "e1ap.initiatingMessage_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_successfulOutcome, + { "successfulOutcome", "e1ap.successfulOutcome_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_unsuccessfulOutcome, + { "unsuccessfulOutcome", "e1ap.unsuccessfulOutcome_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_initiatingMessagevalue, + { "value", "e1ap.value_element", + FT_NONE, BASE_NONE, NULL, 0, + "InitiatingMessage_value", HFILL }}, + { &hf_e1ap_successfulOutcome_value, + { "value", "e1ap.value_element", + FT_NONE, BASE_NONE, NULL, 0, + "SuccessfulOutcome_value", HFILL }}, + { &hf_e1ap_unsuccessfulOutcome_value, + { "value", "e1ap.value_element", + FT_NONE, BASE_NONE, NULL, 0, + "UnsuccessfulOutcome_value", HFILL }}, + +/*--- End of included file: packet-e1ap-hfarr.c ---*/ +#line 187 "./asn1/e1ap/packet-e1ap-template.c" + }; + + /* List of subtrees */ + static gint *ett[] = { + &ett_e1ap, + &ett_e1ap_PLMN_Identity, + &ett_e1ap_TransportLayerAddress, + +/*--- Included file: packet-e1ap-ettarr.c ---*/ +#line 1 "./asn1/e1ap/packet-e1ap-ettarr.c" + &ett_e1ap_PrivateIE_ID, + &ett_e1ap_ProtocolIE_Container, + &ett_e1ap_ProtocolIE_Field, + &ett_e1ap_ProtocolExtensionContainer, + &ett_e1ap_ProtocolExtensionField, + &ett_e1ap_PrivateIE_Container, + &ett_e1ap_PrivateIE_Field, + &ett_e1ap_Cause, + &ett_e1ap_Cell_Group_Information, + &ett_e1ap_Cell_Group_Information_Item, + &ett_e1ap_CriticalityDiagnostics, + &ett_e1ap_CriticalityDiagnostics_IE_List, + &ett_e1ap_CriticalityDiagnostics_IE_List_item, + &ett_e1ap_Data_Forwarding_Information_Request, + &ett_e1ap_Data_Forwarding_Information_Response, + &ett_e1ap_Data_Usage_Report_List, + &ett_e1ap_Data_Usage_Report_Item, + &ett_e1ap_DRB_Activity_Item, + &ett_e1ap_DRB_Confirm_Modified_List_EUTRAN, + &ett_e1ap_DRB_Confirm_Modified_Item_EUTRAN, + &ett_e1ap_DRB_Confirm_Modified_List_NG_RAN, + &ett_e1ap_DRB_Confirm_Modified_Item_NG_RAN, + &ett_e1ap_DRB_Failed_List_EUTRAN, + &ett_e1ap_DRB_Failed_Item_EUTRAN, + &ett_e1ap_DRB_Failed_List_NG_RAN, + &ett_e1ap_DRB_Failed_Item_NG_RAN, + &ett_e1ap_DRB_Failed_To_Modify_List_EUTRAN, + &ett_e1ap_DRB_Failed_To_Modify_Item_EUTRAN, + &ett_e1ap_DRB_Failed_To_Modify_List_NG_RAN, + &ett_e1ap_DRB_Failed_To_Modify_Item_NG_RAN, + &ett_e1ap_DRB_Modified_List_EUTRAN, + &ett_e1ap_DRB_Modified_Item_EUTRAN, + &ett_e1ap_DRB_Modified_List_NG_RAN, + &ett_e1ap_DRB_Modified_Item_NG_RAN, + &ett_e1ap_DRB_Required_To_Modify_List_EUTRAN, + &ett_e1ap_DRB_Required_To_Modify_Item_EUTRAN, + &ett_e1ap_DRB_Required_To_Modify_List_NG_RAN, + &ett_e1ap_DRB_Required_To_Modify_Item_NG_RAN, + &ett_e1ap_DRB_Setup_List_EUTRAN, + &ett_e1ap_DRB_Setup_Item_EUTRAN, + &ett_e1ap_DRB_Setup_List_NG_RAN, + &ett_e1ap_DRB_Setup_Item_NG_RAN, + &ett_e1ap_DRB_Status_Item, + &ett_e1ap_DRB_To_Modify_List_EUTRAN, + &ett_e1ap_DRB_To_Modify_Item_EUTRAN, + &ett_e1ap_DRB_To_Modify_List_NG_RAN, + &ett_e1ap_DRB_To_Modify_Item_NG_RAN, + &ett_e1ap_DRB_To_Remove_List_EUTRAN, + &ett_e1ap_DRB_To_Remove_Item_EUTRAN, + &ett_e1ap_DRB_To_Remove_List_NG_RAN, + &ett_e1ap_DRB_To_Remove_Item_NG_RAN, + &ett_e1ap_DRB_To_Setup_List_EUTRAN, + &ett_e1ap_DRB_To_Setup_Item_EUTRAN, + &ett_e1ap_DRB_To_Setup_List_NG_RAN, + &ett_e1ap_DRB_To_Setup_Item_NG_RAN, + &ett_e1ap_DRB_Usage_Report_List, + &ett_e1ap_DRB_Usage_Report_Item, + &ett_e1ap_Dynamic5QIDescriptor, + &ett_e1ap_EUTRANAllocationAndRetentionPriority, + &ett_e1ap_EUTRAN_QoS_Support_List, + &ett_e1ap_EUTRAN_QoS_Support_Item, + &ett_e1ap_EUTRAN_QoS, + &ett_e1ap_GNB_CU_UP_CellGroupRelatedConfiguration, + &ett_e1ap_GNB_CU_UP_CellGroupRelatedConfiguration_Item, + &ett_e1ap_GBR_QosInformation, + &ett_e1ap_GBR_QoSFlowInformation, + &ett_e1ap_GTPTunnel, + &ett_e1ap_NGRANAllocationAndRetentionPriority, + &ett_e1ap_NG_RAN_QoS_Support_List, + &ett_e1ap_NG_RAN_QoS_Support_Item, + &ett_e1ap_Non_Dynamic5QIDescriptor, + &ett_e1ap_NR_CGI, + &ett_e1ap_NR_CGI_Support_List, + &ett_e1ap_NR_CGI_Support_Item, + &ett_e1ap_PDCP_Configuration, + &ett_e1ap_PDCP_Count, + &ett_e1ap_PDU_Session_Resource_Confirm_Modified_List, + &ett_e1ap_PDU_Session_Resource_Confirm_Modified_Item, + &ett_e1ap_PDU_Session_Resource_Failed_List, + &ett_e1ap_PDU_Session_Resource_Failed_Item, + &ett_e1ap_PDU_Session_Resource_Failed_To_Modify_List, + &ett_e1ap_PDU_Session_Resource_Failed_To_Modify_Item, + &ett_e1ap_PDU_Session_Resource_Modified_List, + &ett_e1ap_PDU_Session_Resource_Modified_Item, + &ett_e1ap_PDU_Session_Resource_Required_To_Modify_List, + &ett_e1ap_PDU_Session_Resource_Required_To_Modify_Item, + &ett_e1ap_PDU_Session_Resource_Setup_List, + &ett_e1ap_PDU_Session_Resource_Setup_Item, + &ett_e1ap_PDU_Session_Resource_To_Modify_List, + &ett_e1ap_PDU_Session_Resource_To_Modify_Item, + &ett_e1ap_PDU_Session_Resource_To_Remove_List, + &ett_e1ap_PDU_Session_Resource_To_Remove_Item, + &ett_e1ap_PDU_Session_Resource_To_Setup_List, + &ett_e1ap_PDU_Session_Resource_To_Setup_Item, + &ett_e1ap_QoS_Characteristics, + &ett_e1ap_QoS_Flow_List, + &ett_e1ap_QoS_Flow_Item, + &ett_e1ap_QoS_Flow_Failed_List, + &ett_e1ap_QoS_Flow_Failed_Item, + &ett_e1ap_QoS_Parameters_Support_List, + &ett_e1ap_QoS_Flow_QoS_Parameter_List, + &ett_e1ap_QoS_Flow_QoS_Parameter_Item, + &ett_e1ap_QoSFlowLevelQoSParameters, + &ett_e1ap_ROHC_Parameters, + &ett_e1ap_SecurityAlgorithm, + &ett_e1ap_SecurityIndication, + &ett_e1ap_SecurityInformation, + &ett_e1ap_Slice_Support_List, + &ett_e1ap_Slice_Support_Item, + &ett_e1ap_SNSSAI, + &ett_e1ap_SDAP_Configuration, + &ett_e1ap_T_ReorderingTimer, + &ett_e1ap_UE_associatedLogicalE1_ConnectionItem, + &ett_e1ap_UP_Parameters, + &ett_e1ap_UP_Parameters_Item, + &ett_e1ap_UPSecuritykey, + &ett_e1ap_UP_TNL_Information, + &ett_e1ap_Reset, + &ett_e1ap_ResetType, + &ett_e1ap_UE_associatedLogicalE1_ConnectionListRes, + &ett_e1ap_ResetAcknowledge, + &ett_e1ap_UE_associatedLogicalE1_ConnectionListResAck, + &ett_e1ap_ErrorIndication, + &ett_e1ap_GNB_CU_UP_E1SetupRequest, + &ett_e1ap_SupportedPLMNs_List, + &ett_e1ap_SupportedPLMNs_Item, + &ett_e1ap_GNB_CU_UP_E1SetupResponse, + &ett_e1ap_GNB_CU_UP_E1SetupFailure, + &ett_e1ap_GNB_CU_CP_E1SetupRequest, + &ett_e1ap_GNB_CU_CP_E1SetupResponse, + &ett_e1ap_GNB_CU_CP_E1SetupFailure, + &ett_e1ap_GNB_CU_UP_ConfigurationUpdate, + &ett_e1ap_GNB_CU_UP_ConfigurationUpdateAcknowledge, + &ett_e1ap_GNB_CU_UP_ConfigurationUpdateFailure, + &ett_e1ap_GNB_CU_CP_ConfigurationUpdate, + &ett_e1ap_GNB_CU_CP_ConfigurationUpdateAcknowledge, + &ett_e1ap_GNB_CU_CP_ConfigurationUpdateFailure, + &ett_e1ap_E1ReleaseRequest, + &ett_e1ap_E1ReleaseResponse, + &ett_e1ap_BearerContextSetupRequest, + &ett_e1ap_System_BearerContextSetupRequest, + &ett_e1ap_EUTRAN_BearerContextSetupRequest, + &ett_e1ap_NG_RAN_BearerContextSetupRequest, + &ett_e1ap_BearerContextSetupResponse, + &ett_e1ap_System_BearerContextSetupResponse, + &ett_e1ap_EUTRAN_BearerContextSetupResponse, + &ett_e1ap_NG_RAN_BearerContextSetupResponse, + &ett_e1ap_BearerContextSetupFailure, + &ett_e1ap_BearerContextModificationRequest, + &ett_e1ap_System_BearerContextModificationRequest, + &ett_e1ap_EUTRAN_BearerContextModificationRequest, + &ett_e1ap_NG_RAN_BearerContextModificationRequest, + &ett_e1ap_BearerContextModificationResponse, + &ett_e1ap_System_BearerContextModificationResponse, + &ett_e1ap_EUTRAN_BearerContextModificationResponse, + &ett_e1ap_NG_RAN_BearerContextModificationResponse, + &ett_e1ap_BearerContextModificationFailure, + &ett_e1ap_BearerContextModificationRequired, + &ett_e1ap_System_BearerContextModificationRequired, + &ett_e1ap_EUTRAN_BearerContextModificationRequired, + &ett_e1ap_NG_RAN_BearerContextModificationRequired, + &ett_e1ap_BearerContextModificationConfirm, + &ett_e1ap_System_BearerContextModificationConfirm, + &ett_e1ap_EUTRAN_BearerContextModificationConfirm, + &ett_e1ap_NG_RAN_BearerContextModificationConfirm, + &ett_e1ap_BearerContextReleaseCommand, + &ett_e1ap_BearerContextReleaseComplete, + &ett_e1ap_BearerContextReleaseRequest, + &ett_e1ap_DRB_Status_List, + &ett_e1ap_BearerContextInactivityNotification, + &ett_e1ap_DRB_Activity_List, + &ett_e1ap_DLDataNotification, + &ett_e1ap_DataUsageReport, + &ett_e1ap_PrivateMessage, + &ett_e1ap_E1AP_PDU, + &ett_e1ap_InitiatingMessage, + &ett_e1ap_SuccessfulOutcome, + &ett_e1ap_UnsuccessfulOutcome, + +/*--- End of included file: packet-e1ap-ettarr.c ---*/ +#line 195 "./asn1/e1ap/packet-e1ap-template.c" + }; + + /* Register protocol */ + proto_e1ap = proto_register_protocol(PNAME, PSNAME, PFNAME); + /* Register fields and subtrees */ + proto_register_field_array(proto_e1ap, hf, array_length(hf)); + proto_register_subtree_array(ett, array_length(ett)); + + /* Register dissector */ + e1ap_handle = register_dissector("e1ap", dissect_e1ap, proto_e1ap); + + /* Register dissector tables */ + e1ap_ies_dissector_table = register_dissector_table("e1ap.ies", "E1AP-PROTOCOL-IES", proto_e1ap, FT_UINT32, BASE_DEC); + e1ap_extension_dissector_table = register_dissector_table("e1ap.extension", "E1AP-PROTOCOL-EXTENSION", proto_e1ap, FT_UINT32, BASE_DEC); + e1ap_proc_imsg_dissector_table = register_dissector_table("e1ap.proc.imsg", "E1AP-ELEMENTARY-PROCEDURE InitiatingMessage", proto_e1ap, FT_UINT32, BASE_DEC); + e1ap_proc_sout_dissector_table = register_dissector_table("e1ap.proc.sout", "E1AP-ELEMENTARY-PROCEDURE SuccessfulOutcome", proto_e1ap, FT_UINT32, BASE_DEC); + e1ap_proc_uout_dissector_table = register_dissector_table("e1ap.proc.uout", "E1AP-ELEMENTARY-PROCEDURE UnsuccessfulOutcome", proto_e1ap, FT_UINT32, BASE_DEC); +} + +void +proto_reg_handoff_e1ap(void) +{ + //dissector_add_uint_with_preference("sctp.port", SCTP_PORT_E1AP, e1ap_handle); + dissector_add_uint("sctp.ppi", E1AP_PROTOCOL_ID, e1ap_handle); + +/*--- Included file: packet-e1ap-dis-tab.c ---*/ +#line 1 "./asn1/e1ap/packet-e1ap-dis-tab.c" + dissector_add_uint("e1ap.ies", id_Cause, create_dissector_handle(dissect_Cause_PDU, proto_e1ap)); + dissector_add_uint("e1ap.ies", id_CriticalityDiagnostics, create_dissector_handle(dissect_CriticalityDiagnostics_PDU, proto_e1ap)); + dissector_add_uint("e1ap.ies", id_gNB_CU_CP_UE_E1AP_ID, create_dissector_handle(dissect_GNB_CU_CP_UE_E1AP_ID_PDU, proto_e1ap)); + dissector_add_uint("e1ap.ies", id_gNB_CU_UP_UE_E1AP_ID, create_dissector_handle(dissect_GNB_CU_UP_UE_E1AP_ID_PDU, proto_e1ap)); + dissector_add_uint("e1ap.ies", id_ResetType, create_dissector_handle(dissect_ResetType_PDU, proto_e1ap)); + dissector_add_uint("e1ap.ies", id_UE_associatedLogicalE1_ConnectionItem, create_dissector_handle(dissect_UE_associatedLogicalE1_ConnectionItem_PDU, proto_e1ap)); + dissector_add_uint("e1ap.ies", id_UE_associatedLogicalE1_ConnectionListResAck, create_dissector_handle(dissect_UE_associatedLogicalE1_ConnectionListResAck_PDU, proto_e1ap)); + dissector_add_uint("e1ap.ies", id_gNB_CU_UP_ID, create_dissector_handle(dissect_GNB_CU_UP_ID_PDU, proto_e1ap)); + dissector_add_uint("e1ap.ies", id_gNB_CU_UP_Name, create_dissector_handle(dissect_GNB_CU_UP_Name_PDU, proto_e1ap)); + dissector_add_uint("e1ap.ies", id_gNB_CU_CP_Name, create_dissector_handle(dissect_GNB_CU_CP_Name_PDU, proto_e1ap)); + dissector_add_uint("e1ap.ies", id_CNSupport, create_dissector_handle(dissect_CNSupport_PDU, proto_e1ap)); + dissector_add_uint("e1ap.ies", id_SupportedPLMNs, create_dissector_handle(dissect_SupportedPLMNs_List_PDU, proto_e1ap)); + dissector_add_uint("e1ap.ies", id_SupportedPLMNs_Item, create_dissector_handle(dissect_SupportedPLMNs_Item_PDU, proto_e1ap)); + dissector_add_uint("e1ap.ies", id_TimeToWait, create_dissector_handle(dissect_TimeToWait_PDU, proto_e1ap)); + dissector_add_uint("e1ap.ies", id_SecurityInformation, create_dissector_handle(dissect_SecurityInformation_PDU, proto_e1ap)); + dissector_add_uint("e1ap.ies", id_UEDLAggregateMaximumBitRate, create_dissector_handle(dissect_BitRate_PDU, proto_e1ap)); + dissector_add_uint("e1ap.ies", id_System_BearerContextSetupRequest, create_dissector_handle(dissect_System_BearerContextSetupRequest_PDU, proto_e1ap)); + dissector_add_uint("e1ap.ies", id_System_BearerContextSetupResponse, create_dissector_handle(dissect_System_BearerContextSetupResponse_PDU, proto_e1ap)); + dissector_add_uint("e1ap.ies", id_BearerContextStatusChange, create_dissector_handle(dissect_BearerContextStatusChange_PDU, proto_e1ap)); + dissector_add_uint("e1ap.ies", id_System_BearerContextModificationRequest, create_dissector_handle(dissect_System_BearerContextModificationRequest_PDU, proto_e1ap)); + dissector_add_uint("e1ap.ies", id_System_BearerContextModificationResponse, create_dissector_handle(dissect_System_BearerContextModificationResponse_PDU, proto_e1ap)); + dissector_add_uint("e1ap.ies", id_System_BearerContextModificationConfirm, create_dissector_handle(dissect_System_BearerContextModificationConfirm_PDU, proto_e1ap)); + dissector_add_uint("e1ap.ies", id_System_BearerContextModificationRequired, create_dissector_handle(dissect_System_BearerContextModificationRequired_PDU, proto_e1ap)); + dissector_add_uint("e1ap.ies", id_DRB_Status_List, create_dissector_handle(dissect_DRB_Status_List_PDU, proto_e1ap)); + dissector_add_uint("e1ap.ies", id_DRB_Status_Item, create_dissector_handle(dissect_DRB_Status_Item_PDU, proto_e1ap)); + dissector_add_uint("e1ap.ies", id_DRB_Activity_List, create_dissector_handle(dissect_DRB_Activity_List_PDU, proto_e1ap)); + dissector_add_uint("e1ap.ies", id_DRB_Activity_Item, create_dissector_handle(dissect_DRB_Activity_Item_PDU, proto_e1ap)); + dissector_add_uint("e1ap.ies", id_Data_Usage_Report_List, create_dissector_handle(dissect_Data_Usage_Report_List_PDU, proto_e1ap)); + dissector_add_uint("e1ap.proc.imsg", id_reset, create_dissector_handle(dissect_Reset_PDU, proto_e1ap)); + dissector_add_uint("e1ap.proc.sout", id_reset, create_dissector_handle(dissect_ResetAcknowledge_PDU, proto_e1ap)); + dissector_add_uint("e1ap.proc.imsg", id_errorIndication, create_dissector_handle(dissect_ErrorIndication_PDU, proto_e1ap)); + dissector_add_uint("e1ap.proc.imsg", id_gNB_CU_UP_E1Setup, create_dissector_handle(dissect_GNB_CU_UP_E1SetupRequest_PDU, proto_e1ap)); + dissector_add_uint("e1ap.proc.sout", id_gNB_CU_UP_E1Setup, create_dissector_handle(dissect_GNB_CU_UP_E1SetupResponse_PDU, proto_e1ap)); + dissector_add_uint("e1ap.proc.uout", id_gNB_CU_UP_E1Setup, create_dissector_handle(dissect_GNB_CU_UP_E1SetupFailure_PDU, proto_e1ap)); + dissector_add_uint("e1ap.proc.imsg", id_gNB_CU_CP_E1Setup, create_dissector_handle(dissect_GNB_CU_CP_E1SetupRequest_PDU, proto_e1ap)); + dissector_add_uint("e1ap.proc.sout", id_gNB_CU_CP_E1Setup, create_dissector_handle(dissect_GNB_CU_CP_E1SetupResponse_PDU, proto_e1ap)); + dissector_add_uint("e1ap.proc.uout", id_gNB_CU_CP_E1Setup, create_dissector_handle(dissect_GNB_CU_CP_E1SetupFailure_PDU, proto_e1ap)); + dissector_add_uint("e1ap.proc.imsg", id_gNB_CU_UP_ConfigurationUpdate, create_dissector_handle(dissect_GNB_CU_UP_ConfigurationUpdate_PDU, proto_e1ap)); + dissector_add_uint("e1ap.proc.sout", id_gNB_CU_UP_ConfigurationUpdate, create_dissector_handle(dissect_GNB_CU_UP_ConfigurationUpdateAcknowledge_PDU, proto_e1ap)); + dissector_add_uint("e1ap.proc.uout", id_gNB_CU_UP_ConfigurationUpdate, create_dissector_handle(dissect_GNB_CU_UP_ConfigurationUpdateFailure_PDU, proto_e1ap)); + dissector_add_uint("e1ap.proc.imsg", id_gNB_CU_CP_ConfigurationUpdate, create_dissector_handle(dissect_GNB_CU_CP_ConfigurationUpdate_PDU, proto_e1ap)); + dissector_add_uint("e1ap.proc.sout", id_gNB_CU_CP_ConfigurationUpdate, create_dissector_handle(dissect_GNB_CU_CP_ConfigurationUpdateAcknowledge_PDU, proto_e1ap)); + dissector_add_uint("e1ap.proc.uout", id_gNB_CU_CP_ConfigurationUpdate, create_dissector_handle(dissect_GNB_CU_CP_ConfigurationUpdateFailure_PDU, proto_e1ap)); + dissector_add_uint("e1ap.proc.imsg", id_e1Release, create_dissector_handle(dissect_E1ReleaseRequest_PDU, proto_e1ap)); + dissector_add_uint("e1ap.proc.sout", id_e1Release, create_dissector_handle(dissect_E1ReleaseResponse_PDU, proto_e1ap)); + dissector_add_uint("e1ap.proc.imsg", id_bearerContextSetup, create_dissector_handle(dissect_BearerContextSetupRequest_PDU, proto_e1ap)); + dissector_add_uint("e1ap.proc.sout", id_bearerContextSetup, create_dissector_handle(dissect_BearerContextSetupResponse_PDU, proto_e1ap)); + dissector_add_uint("e1ap.proc.uout", id_bearerContextSetup, create_dissector_handle(dissect_BearerContextSetupFailure_PDU, proto_e1ap)); + dissector_add_uint("e1ap.proc.imsg", id_bearerContextModification, create_dissector_handle(dissect_BearerContextModificationRequest_PDU, proto_e1ap)); + dissector_add_uint("e1ap.proc.sout", id_bearerContextModification, create_dissector_handle(dissect_BearerContextModificationResponse_PDU, proto_e1ap)); + dissector_add_uint("e1ap.proc.uout", id_bearerContextModification, create_dissector_handle(dissect_BearerContextModificationFailure_PDU, proto_e1ap)); + dissector_add_uint("e1ap.proc.imsg", id_bearerContextModificationRequired, create_dissector_handle(dissect_BearerContextModificationRequired_PDU, proto_e1ap)); + dissector_add_uint("e1ap.proc.sout", id_bearerContextModificationRequired, create_dissector_handle(dissect_BearerContextModificationConfirm_PDU, proto_e1ap)); + dissector_add_uint("e1ap.proc.imsg", id_bearerContextRelease, create_dissector_handle(dissect_BearerContextReleaseCommand_PDU, proto_e1ap)); + dissector_add_uint("e1ap.proc.sout", id_bearerContextRelease, create_dissector_handle(dissect_BearerContextReleaseComplete_PDU, proto_e1ap)); + dissector_add_uint("e1ap.proc.imsg", id_bearerContextReleaseRequest, create_dissector_handle(dissect_BearerContextReleaseRequest_PDU, proto_e1ap)); + dissector_add_uint("e1ap.proc.imsg", id_bearerContextInactivityNotification, create_dissector_handle(dissect_BearerContextInactivityNotification_PDU, proto_e1ap)); + dissector_add_uint("e1ap.proc.imsg", id_dLDataNotification, create_dissector_handle(dissect_DLDataNotification_PDU, proto_e1ap)); + dissector_add_uint("e1ap.proc.imsg", id_dataUsageReport, create_dissector_handle(dissect_DataUsageReport_PDU, proto_e1ap)); + dissector_add_uint("e1ap.proc.imsg", id_privateMessage, create_dissector_handle(dissect_PrivateMessage_PDU, proto_e1ap)); + + +/*--- End of included file: packet-e1ap-dis-tab.c ---*/ +#line 220 "./asn1/e1ap/packet-e1ap-template.c" +} + +/* + * Editor modelines + * + * Local Variables: + * c-basic-offset: 2 + * tab-width: 8 + * indent-tabs-mode: nil + * End: + * + * ex: set shiftwidth=2 tabstop=8 expandtab: + * :indentSize=2:tabSize=8:noTabs=true: + */ diff --git a/epan/sctpppids.h b/epan/sctpppids.h index 8efcc5428e..3c5a04afac 100644 --- a/epan/sctpppids.h +++ b/epan/sctpppids.h @@ -82,5 +82,7 @@ #define NGAP_PROTOCOL_ID 60 #define XNAP_PROTOCOL_ID 61 #define F1AP_PROTOCOL_ID 62 +#define HTTP_SCTP_PROTOCOL_ID 63 +#define E1AP_PROTOCOL_ID 64 #endif /* sctpppids.h */ |