diff options
author | Pascal Quantin <pascal@wireshark.org> | 2019-04-11 15:14:36 +0200 |
---|---|---|
committer | Pascal Quantin <pascal@wireshark.org> | 2019-04-11 14:31:33 +0000 |
commit | 1795d6f201f85ca454f9c5a5835f71171bc34908 (patch) | |
tree | 2071707b95ec3b5b245a9deb914d778a429cd2bc | |
parent | 0c53d7dc292563db9e4ee9ed9d9fc7f63fe28f7a (diff) |
E1AP: upgrade dissector to v15.3.0
Change-Id: Ia3bdc2c76e0ad9d6951598d37771a1137b24a8c7
Reviewed-on: https://code.wireshark.org/review/32824
Petri-Dish: Pascal Quantin <pascal@wireshark.org>
Tested-by: Petri Dish Buildbot
Reviewed-by: Pascal Quantin <pascal@wireshark.org>
-rw-r--r-- | epan/dissectors/asn1/e1ap/E1AP-CommonDataTypes.asn | 2 | ||||
-rw-r--r-- | epan/dissectors/asn1/e1ap/E1AP-Constants.asn | 28 | ||||
-rw-r--r-- | epan/dissectors/asn1/e1ap/E1AP-Containers.asn | 2 | ||||
-rw-r--r-- | epan/dissectors/asn1/e1ap/E1AP-IEs.asn | 82 | ||||
-rw-r--r-- | epan/dissectors/asn1/e1ap/E1AP-PDU-Contents.asn | 25 | ||||
-rw-r--r-- | epan/dissectors/asn1/e1ap/E1AP-PDU-Descriptions.asn | 12 | ||||
-rw-r--r-- | epan/dissectors/asn1/e1ap/e1ap.cnf | 39 | ||||
-rw-r--r-- | epan/dissectors/asn1/e1ap/packet-e1ap-template.c | 29 | ||||
-rw-r--r-- | epan/dissectors/packet-e1ap.c | 540 |
9 files changed, 637 insertions, 122 deletions
diff --git a/epan/dissectors/asn1/e1ap/E1AP-CommonDataTypes.asn b/epan/dissectors/asn1/e1ap/E1AP-CommonDataTypes.asn index 3cca4802cd..e8a9c4f268 100644 --- a/epan/dissectors/asn1/e1ap/E1AP-CommonDataTypes.asn +++ b/epan/dissectors/asn1/e1ap/E1AP-CommonDataTypes.asn @@ -1,4 +1,4 @@ --- 3GPP TS 38.463 V15.2.0 (2018-12) +-- 3GPP TS 38.463 V15.3.0 (2019-03) -- ************************************************************** -- -- Common definitions diff --git a/epan/dissectors/asn1/e1ap/E1AP-Constants.asn b/epan/dissectors/asn1/e1ap/E1AP-Constants.asn index c4f17115ad..128737b685 100644 --- a/epan/dissectors/asn1/e1ap/E1AP-Constants.asn +++ b/epan/dissectors/asn1/e1ap/E1AP-Constants.asn @@ -1,11 +1,10 @@ --- 3GPP TS 38.463 V15.2.0 (2018-12) +-- 3GPP TS 38.463 V15.3.0 (2019-03) -- ************************************************************** -- -- 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) } @@ -46,6 +45,7 @@ id-dataUsageReport ProcedureCode ::= 15 id-gNB-CU-UP-CounterCheck ProcedureCode ::= 16 id-gNB-CU-UP-StatusIndication ProcedureCode ::= 17 id-uLDataNotification ProcedureCode ::= 18 +id-mRDC-DataUsageReport ProcedureCode ::= 19 -- ************************************************************** @@ -78,9 +78,9 @@ maxnoofTNLAssociations INTEGER ::= 32 id-Cause ProtocolIE-ID ::= 0 id-CriticalityDiagnostics ProtocolIE-ID ::= 1 -id-gNB-CU-CP-UE-E1AP-ID ProtocolIE-ID ::= 2 +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-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 @@ -88,9 +88,9 @@ 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-TimeToWait ProtocolIE-ID ::= 12 -id-SecurityInformation ProtocolIE-ID ::= 13 -id-UEDLAggregateMaximumBitRate ProtocolIE-ID ::= 14 +id-TimeToWait ProtocolIE-ID ::= 12 +id-SecurityInformation ProtocolIE-ID ::= 13 +id-UEDLAggregateMaximumBitRate ProtocolIE-ID ::= 14 id-System-BearerContextSetupRequest ProtocolIE-ID ::= 15 id-System-BearerContextSetupResponse ProtocolIE-ID ::= 16 id-BearerContextStatusChange ProtocolIE-ID ::= 17 @@ -139,11 +139,13 @@ id-UE-Inactivity-Timer ProtocolIE-ID ::= 59 id-System-GNB-CU-UP-CounterCheckRequest ProtocolIE-ID ::= 60 id-DRBs-Subject-To-Counter-Check-List-EUTRAN ProtocolIE-ID ::= 61 id-DRBs-Subject-To-Counter-Check-List-NG-RAN ProtocolIE-ID ::= 62 -id-PPI ProtocolIE-ID ::= 63 -id-gNB-CU-UP-Capacity ProtocolIE-ID ::= 64 -id-GNB-CU-UP-OverloadInformation ProtocolIE-ID ::= 65 -id-UEDLMaximumIntegrityProtectedDataRate ProtocolIE-ID ::= 66 -id-PDU-Session-To-Notify-List ProtocolIE-ID ::= 67 - +id-PPI ProtocolIE-ID ::= 63 +id-gNB-CU-UP-Capacity ProtocolIE-ID ::= 64 +id-GNB-CU-UP-OverloadInformation ProtocolIE-ID ::= 65 +id-UEDLMaximumIntegrityProtectedDataRate ProtocolIE-ID ::= 66 +id-PDU-Session-To-Notify-List ProtocolIE-ID ::= 67 +id-PDU-Session-Resource-Data-Usage-List ProtocolIE-ID ::= 68 +id-SNSSAI ProtocolIE-ID ::= 69 +id-DataDiscardRequired ProtocolIE-ID ::= 70 END diff --git a/epan/dissectors/asn1/e1ap/E1AP-Containers.asn b/epan/dissectors/asn1/e1ap/E1AP-Containers.asn index 08c7d65d9c..9080c2e1f6 100644 --- a/epan/dissectors/asn1/e1ap/E1AP-Containers.asn +++ b/epan/dissectors/asn1/e1ap/E1AP-Containers.asn @@ -1,4 +1,4 @@ --- 3GPP TS 38.463 V15.2.0 (2018-12) +-- 3GPP TS 38.463 V15.3.0 (2019-03) -- ************************************************************** -- -- Container definitions diff --git a/epan/dissectors/asn1/e1ap/E1AP-IEs.asn b/epan/dissectors/asn1/e1ap/E1AP-IEs.asn index 3af36b3195..2008927214 100644 --- a/epan/dissectors/asn1/e1ap/E1AP-IEs.asn +++ b/epan/dissectors/asn1/e1ap/E1AP-IEs.asn @@ -1,4 +1,4 @@ --- 3GPP TS 38.463 V15.2.0 (2018-12) +-- 3GPP TS 38.463 V15.3.0 (2019-03) -- ************************************************************** -- -- Information Element Definitions @@ -15,6 +15,7 @@ BEGIN IMPORTS + id-SNSSAI, maxnoofErrors, maxnoofSliceItems, maxnoofEUTRANQOSParameters, @@ -136,7 +137,10 @@ CauseRadioNetwork ::= ENUMERATED { action-desirable-for-radio-reasons, resources-not-available-for-the-slice, pDCP-configuration-not-supported, - ... + ..., + ue-dl-max-IP-data-rate-reason, + uP-integrity-protection-failure, + release-due-to-pre-emption } CauseTransport ::= ENUMERATED { @@ -262,6 +266,31 @@ Data-Forwarding-Request ::= ENUMERATED { ... } +Data-Usage-per-PDU-Session-Report ::= SEQUENCE { + secondaryRATType ENUMERATED {nR, e-UTRA, ...}, + pDU-session-Timed-Report-List SEQUENCE (SIZE(1..maxnooftimeperiods)) OF MRDC-Data-Usage-Report-Item, + iE-Extensions ProtocolExtensionContainer { { Data-Usage-per-PDU-Session-Report-ExtIEs} } OPTIONAL, +... +} + +Data-Usage-per-PDU-Session-Report-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +Data-Usage-per-QoS-Flow-List ::= SEQUENCE (SIZE(1..maxnoofQoSFlows)) OF Data-Usage-per-QoS-Flow-Item + +Data-Usage-per-QoS-Flow-Item ::= SEQUENCE { + qoS-Flow-Identifier QoS-Flow-Identifier, + secondaryRATType ENUMERATED {nR, e-UTRA, ...}, + qoS-Flow-Timed-Report-List SEQUENCE (SIZE(1..maxnooftimeperiods)) OF MRDC-Data-Usage-Report-Item, + iE-Extensions ProtocolExtensionContainer { { Data-Usage-per-QoS-Flow-Item-ExtIEs} } OPTIONAL, +... +} + +Data-Usage-per-QoS-Flow-Item-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + Data-Usage-Report-List ::= SEQUENCE (SIZE(1.. maxnoofDRBs)) OF Data-Usage-Report-Item Data-Usage-Report-Item ::= SEQUENCE { @@ -793,6 +822,11 @@ Dynamic5QIDescriptor-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { ... } +DataDiscardRequired ::= ENUMERATED { + required, + ... +} + -- E EncryptionKey ::= OCTET STRING @@ -1014,7 +1048,32 @@ MaxIPrate ::= ENUMERATED { MaxPacketLossRate ::= INTEGER (0..1000, ...) +MRDC-Data-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 { { MRDC-Data-Usage-Report-Item-ExtIEs} } OPTIONAL, +... +} + +MRDC-Data-Usage-Report-Item-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + +MRDC-Usage-Information ::= SEQUENCE { + data-Usage-per-PDU-Session-Report Data-Usage-per-PDU-Session-Report OPTIONAL, + data-Usage-per-QoS-Flow-List Data-Usage-per-QoS-Flow-List OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { MRDC-Usage-Information-ExtIEs} } OPTIONAL, +... +} + +MRDC-Usage-Information-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + -- N + NetworkInstance ::= INTEGER (1..256, ...) New-UL-TNL-Information-Required::= ENUMERATED { @@ -1156,6 +1215,20 @@ PDCP-Reestablishment ::= ENUMERATED { true, ... } + +PDU-Session-Resource-Data-Usage-List ::= SEQUENCE (SIZE(1.. maxnoofPDUSessionResource)) OF PDU-Session-Resource-Data-Usage-Item + +PDU-Session-Resource-Data-Usage-Item ::= SEQUENCE { + pDU-Session-ID PDU-Session-ID, + mRDC-Usage-Information MRDC-Usage-Information, + iE-Extensions ProtocolExtensionContainer { { PDU-Session-Resource-Data-Usage-Item-ExtIEs } } OPTIONAL, + ... +} + +PDU-Session-Resource-Data-Usage-Item-ExtIEs E1AP-PROTOCOL-EXTENSION ::= { + ... +} + PDCP-SN ::= INTEGER (0..262143) PDCP-SN-Size ::= ENUMERATED { @@ -1271,7 +1344,6 @@ PDU-Session-Resource-Modified-Item ::= SEQUENCE { 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, ... } @@ -1286,6 +1358,7 @@ PDU-Session-Resource-Required-To-Modify-Item ::= SEQUENCE { pDU-Session-ID PDU-Session-ID, nG-DL-UP-TNL-Information UP-TNL-Information OPTIONAL, dRB-Required-To-Modify-List-NG-RAN DRB-Required-To-Modify-List-NG-RAN OPTIONAL, + dRB-Required-To-Remove-List-NG-RAN DRB-Required-To-Remove-List-NG-RAN OPTIONAL, iE-Extensions ProtocolExtensionContainer { { PDU-Session-Resource-Required-To-Modify-Item-ExtIEs } } OPTIONAL, ... } @@ -1342,12 +1415,13 @@ PDU-Session-Resource-To-Modify-Item ::= SEQUENCE { networkInstance NetworkInstance 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-Required-To-Remove-List-NG-RAN DRB-Required-To-Remove-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 ::= { + {ID id-SNSSAI CRITICALITY reject EXTENSION SNSSAI PRESENCE optional}, ... } diff --git a/epan/dissectors/asn1/e1ap/E1AP-PDU-Contents.asn b/epan/dissectors/asn1/e1ap/E1AP-PDU-Contents.asn index e5d9a95173..aa8a358aa1 100644 --- a/epan/dissectors/asn1/e1ap/E1AP-PDU-Contents.asn +++ b/epan/dissectors/asn1/e1ap/E1AP-PDU-Contents.asn @@ -1,4 +1,4 @@ --- 3GPP TS 38.463 V15.2.0 (2018-12) +-- 3GPP TS 38.463 V15.3.0 (2019-03) -- ************************************************************** -- -- PDU definitions for E1AP @@ -81,7 +81,9 @@ IMPORTS DRBs-Subject-To-Counter-Check-List-NG-RAN, PPI, GNB-CU-UP-Capacity, - GNB-CU-UP-OverloadInformation + GNB-CU-UP-OverloadInformation, + DataDiscardRequired, + PDU-Session-Resource-Data-Usage-List FROM E1AP-IEs @@ -166,6 +168,8 @@ FROM E1AP-Containers id-gNB-CU-UP-Capacity, id-GNB-CU-UP-OverloadInformation, id-UEDLMaximumIntegrityProtectedDataRate, + id-DataDiscardRequired, + id-PDU-Session-Resource-Data-Usage-List, maxnoofErrors, maxnoofSPLMNs, @@ -726,6 +730,7 @@ BearerContextModificationRequestIEs E1AP-PROTOCOL-IES ::= { { ID id-BearerContextStatusChange CRITICALITY reject TYPE BearerContextStatusChange PRESENCE optional }| { ID id-New-UL-TNL-Information-Required CRITICALITY reject TYPE New-UL-TNL-Information-Required PRESENCE optional }| { ID id-UE-Inactivity-Timer CRITICALITY reject TYPE Inactivity-Timer PRESENCE optional }| + { ID id-DataDiscardRequired CRITICALITY ignore TYPE DataDiscardRequired PRESENCE optional }| { ID id-System-BearerContextModificationRequest CRITICALITY reject TYPE System-BearerContextModificationRequest PRESENCE optional }, ... } @@ -1141,7 +1146,23 @@ GNB-CU-UP-StatusIndicationIEs E1AP-PROTOCOL-IES ::= { ... } +-- ************************************************************** +-- +-- MR-DC DATA USAGE REPORT +-- +-- ************************************************************** +MRDC-DataUsageReport ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { MRDC-DataUsageReportIEs } }, + ... +} + +MRDC-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-PDU-Session-Resource-Data-Usage-List CRITICALITY ignore TYPE PDU-Session-Resource-Data-Usage-List PRESENCE mandatory}, + ... +} -- ************************************************************** -- diff --git a/epan/dissectors/asn1/e1ap/E1AP-PDU-Descriptions.asn b/epan/dissectors/asn1/e1ap/E1AP-PDU-Descriptions.asn index 107381781e..aded541a83 100644 --- a/epan/dissectors/asn1/e1ap/E1AP-PDU-Descriptions.asn +++ b/epan/dissectors/asn1/e1ap/E1AP-PDU-Descriptions.asn @@ -1,4 +1,4 @@ --- 3GPP TS 38.463 V15.2.0 (2018-12) +-- 3GPP TS 38.463 V15.3.0 (2019-03) -- ************************************************************** -- -- Elementary Procedure definitions @@ -46,7 +46,6 @@ FROM E1AP-CommonDataTypes BearerContextModificationResponse, BearerContextModificationFailure, BearerContextModificationRequired, - BearerContextModificationConfirm, BearerContextReleaseCommand, BearerContextReleaseComplete, @@ -59,6 +58,7 @@ FROM E1AP-CommonDataTypes E1ReleaseResponse, GNB-CU-UP-CounterCheckRequest, GNB-CU-UP-StatusIndication, + MRDC-DataUsageReport, PrivateMessage FROM E1AP-PDU-Contents @@ -80,6 +80,7 @@ FROM E1AP-PDU-Contents id-dataUsageReport, id-gNB-CU-UP-CounterCheck, id-gNB-CU-UP-StatusIndication, + id-mRDC-DataUsageReport, id-privateMessage FROM E1AP-Constants; @@ -173,6 +174,7 @@ E1AP-ELEMENTARY-PROCEDURES-CLASS-2 E1AP-ELEMENTARY-PROCEDURE ::= { dataUsageReport | gNB-CU-UP-CounterCheck | gNB-CU-UP-StatusIndication | + mRDC-DataUsageReport | privateMessage , ... } @@ -313,4 +315,10 @@ privateMessage E1AP-ELEMENTARY-PROCEDURE ::= { CRITICALITY ignore } +mRDC-DataUsageReport E1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE MRDC-DataUsageReport + PROCEDURE CODE id-mRDC-DataUsageReport + CRITICALITY ignore +} + END diff --git a/epan/dissectors/asn1/e1ap/e1ap.cnf b/epan/dissectors/asn1/e1ap/e1ap.cnf index bbb0a72e48..971d148d1d 100644 --- a/epan/dissectors/asn1/e1ap/e1ap.cnf +++ b/epan/dissectors/asn1/e1ap/e1ap.cnf @@ -79,8 +79,8 @@ ProtocolIE-Field/value ie_field_value # #.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_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); @@ -138,6 +138,7 @@ id-dataUsageReport ProcedureCode id-gNB-CU-UP-CounterCheck ProcedureCode id-gNB-CU-UP-StatusIndication ProcedureCode id-uLDataNotification ProcedureCode +id-mRDC-DataUsageReport ProcedureCode # ProtocolIE-ID id-Cause ProtocolIE-ID @@ -208,6 +209,9 @@ id-gNB-CU-UP-Capacity ProtocolIE-ID id-GNB-CU-UP-OverloadInformation ProtocolIE-ID id-UEDLMaximumIntegrityProtectedDataRate ProtocolIE-ID id-PDU-Session-To-Notify-List ProtocolIE-ID +id-PDU-Session-Resource-Data-Usage-List ProtocolIE-ID +id-SNSSAI ProtocolIE-ID +id-DataDiscardRequired ProtocolIE-ID #.END @@ -282,8 +286,11 @@ GNB-CU-UP-Capacity N e1ap.ies id-gNB-CU-UP-Capacity GNB-CU-UP-OverloadInformation N e1ap.ies id-GNB-CU-UP-OverloadInformation BitRate N e1ap.ies id-UEDLMaximumIntegrityProtectedDataRate PDU-Session-To-Notify-List N e1ap.ies id-PDU-Session-To-Notify-List +PDU-Session-Resource-Data-Usage-List N e1ap.ies id-PDU-Session-Resource-Data-Usage-List +DataDiscardRequired N e1ap.ies id-DataDiscardRequired #E1AP-PROTOCOL-EXTENSION +SNSSAI N e1ap.extension id-SNSSAI #E1AP-ELEMENTARY-PROCEDURE Reset N e1ap.proc.imsg id-reset @@ -340,6 +347,8 @@ GNB-CU-UP-StatusIndication N e1ap.proc.imsg id-gNB-CU-UP-StatusInd PrivateMessage N e1ap.proc.imsg id-privateMessage +MRDC-DataUsageReport N e1ap.proc.imsg id-mRDC-DataUsageReport + #.FN_BODY PLMN-Identity VAL_PTR = ¶m_tvb tvbuff_t *param_tvb = NULL; %(DEFAULT_BODY)s @@ -413,6 +422,30 @@ Inactivity-Timer DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds } } +#.FN_BODY MRDC-Data-Usage-Report-Item/startTimeStamp VAL_PTR = ×tamp_tvb + tvbuff_t *timestamp_tvb = NULL; +%(DEFAULT_BODY)s + +#.FN_FTR MRDC-Data-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 MRDC-Data-Usage-Report-Item/endTimeStamp VAL_PTR = ×tamp_tvb + tvbuff_t *timestamp_tvb = NULL; +%(DEFAULT_BODY)s + +#.FN_FTR MRDC-Data-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 +MRDC-Data-Usage-Report-Item/usageCountUL DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_octet_octets + +#.TYPE_ATTR +MRDC-Data-Usage-Report-Item/usageCountDL DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_octet_octets + #.FN_HDR Reset col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Reset"); #.FN_HDR ResetAcknowledge @@ -483,6 +516,8 @@ Inactivity-Timer DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-UP-CounterCheckRequest"); #.FN_HDR PrivateMessage col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "PrivateMessage"); +#.FN_HDR MRDC-DataUsageReport + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "MRDC-DataUsageReport"); #.END # diff --git a/epan/dissectors/asn1/e1ap/packet-e1ap-template.c b/epan/dissectors/asn1/e1ap/packet-e1ap-template.c index 1edbf43b95..eb505cea33 100644 --- a/epan/dissectors/asn1/e1ap/packet-e1ap-template.c +++ b/epan/dissectors/asn1/e1ap/packet-e1ap-template.c @@ -8,7 +8,7 @@ * * SPDX-License-Identifier: GPL-2.0-or-later * - * References: 3GPP TS 38.463 V15.2.0 (2018-12) + * References: 3GPP TS 38.463 V15.3.0 (2019-03) */ #include "config.h" @@ -57,7 +57,6 @@ typedef struct { guint32 message_type; guint32 procedure_code; guint32 protocol_ie_id; - guint32 protocol_extension_id; const char *obj_id; } e1ap_private_data_t; @@ -79,7 +78,7 @@ 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_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 *); @@ -117,23 +116,21 @@ static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto 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_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; + + return (dissector_try_uint_new(e1ap_extension_dissector_table, e1ap_data->protocol_ie_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) { diff --git a/epan/dissectors/packet-e1ap.c b/epan/dissectors/packet-e1ap.c index e9949da116..27e7e09820 100644 --- a/epan/dissectors/packet-e1ap.c +++ b/epan/dissectors/packet-e1ap.c @@ -16,7 +16,7 @@ * * SPDX-License-Identifier: GPL-2.0-or-later * - * References: 3GPP TS 38.463 V15.2.0 (2018-12) + * References: 3GPP TS 38.463 V15.3.0 (2019-03) */ #include "config.h" @@ -80,7 +80,8 @@ typedef enum _ProcedureCode_enum { id_dataUsageReport = 15, id_gNB_CU_UP_CounterCheck = 16, id_gNB_CU_UP_StatusIndication = 17, - id_uLDataNotification = 18 + id_uLDataNotification = 18, + id_mRDC_DataUsageReport = 19 } ProcedureCode_enum; typedef enum _ProtocolIE_ID_enum { @@ -151,7 +152,10 @@ typedef enum _ProtocolIE_ID_enum { id_gNB_CU_UP_Capacity = 64, id_GNB_CU_UP_OverloadInformation = 65, id_UEDLMaximumIntegrityProtectedDataRate = 66, - id_PDU_Session_To_Notify_List = 67 + id_PDU_Session_To_Notify_List = 67, + id_PDU_Session_Resource_Data_Usage_List = 68, + id_SNSSAI = 69, + id_DataDiscardRequired = 70 } ProtocolIE_ID_enum; /*--- End of included file: packet-e1ap-val.h ---*/ @@ -188,6 +192,7 @@ static int hf_e1ap_DRB_To_Remove_List_EUTRAN_PDU = -1; /* DRB_To_Remove_List_EU static int hf_e1ap_DRB_Required_To_Remove_List_EUTRAN_PDU = -1; /* DRB_Required_To_Remove_List_EUTRAN */ static int hf_e1ap_DRB_To_Setup_List_EUTRAN_PDU = -1; /* DRB_To_Setup_List_EUTRAN */ static int hf_e1ap_DRB_To_Setup_Mod_List_EUTRAN_PDU = -1; /* DRB_To_Setup_Mod_List_EUTRAN */ +static int hf_e1ap_DataDiscardRequired_PDU = -1; /* DataDiscardRequired */ 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_Capacity_PDU = -1; /* GNB_CU_UP_Capacity */ @@ -197,6 +202,7 @@ static int hf_e1ap_GNB_CU_UP_UE_E1AP_ID_PDU = -1; /* GNB_CU_UP_UE_E1AP_ID */ static int hf_e1ap_GNB_CU_UP_OverloadInformation_PDU = -1; /* GNB_CU_UP_OverloadInformation */ static int hf_e1ap_Inactivity_Timer_PDU = -1; /* Inactivity_Timer */ static int hf_e1ap_New_UL_TNL_Information_Required_PDU = -1; /* New_UL_TNL_Information_Required */ +static int hf_e1ap_PDU_Session_Resource_Data_Usage_List_PDU = -1; /* PDU_Session_Resource_Data_Usage_List */ static int hf_e1ap_PDU_Session_Resource_Confirm_Modified_List_PDU = -1; /* PDU_Session_Resource_Confirm_Modified_List */ static int hf_e1ap_PDU_Session_Resource_Failed_List_PDU = -1; /* PDU_Session_Resource_Failed_List */ static int hf_e1ap_PDU_Session_Resource_Failed_Mod_List_PDU = -1; /* PDU_Session_Resource_Failed_Mod_List */ @@ -213,6 +219,7 @@ static int hf_e1ap_PDU_Session_To_Notify_List_PDU = -1; /* PDU_Session_To_Notif static int hf_e1ap_PLMN_Identity_PDU = -1; /* PLMN_Identity */ static int hf_e1ap_PPI_PDU = -1; /* PPI */ static int hf_e1ap_SecurityInformation_PDU = -1; /* SecurityInformation */ +static int hf_e1ap_SNSSAI_PDU = -1; /* SNSSAI */ static int hf_e1ap_TimeToWait_PDU = -1; /* TimeToWait */ static int hf_e1ap_TransactionID_PDU = -1; /* TransactionID */ static int hf_e1ap_UE_associatedLogicalE1_ConnectionItem_PDU = -1; /* UE_associatedLogicalE1_ConnectionItem */ @@ -266,6 +273,7 @@ static int hf_e1ap_DataUsageReport_PDU = -1; /* DataUsageReport */ static int hf_e1ap_GNB_CU_UP_CounterCheckRequest_PDU = -1; /* GNB_CU_UP_CounterCheckRequest */ static int hf_e1ap_System_GNB_CU_UP_CounterCheckRequest_PDU = -1; /* System_GNB_CU_UP_CounterCheckRequest */ static int hf_e1ap_GNB_CU_UP_StatusIndication_PDU = -1; /* GNB_CU_UP_StatusIndication */ +static int hf_e1ap_MRDC_DataUsageReport_PDU = -1; /* MRDC_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 */ @@ -308,6 +316,14 @@ static int hf_e1ap_data_Forwarding_Request = -1; /* Data_Forwarding_Request */ static int hf_e1ap_qoS_Flows_Forwarded_On_Fwd_Tunnels = -1; /* QoS_Flow_Mapping_List */ 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_secondaryRATType = -1; /* T_secondaryRATType */ +static int hf_e1ap_pDU_session_Timed_Report_List = -1; /* SEQUENCE_SIZE_1_maxnooftimeperiods_OF_MRDC_Data_Usage_Report_Item */ +static int hf_e1ap_pDU_session_Timed_Report_List_item = -1; /* MRDC_Data_Usage_Report_Item */ +static int hf_e1ap_Data_Usage_per_QoS_Flow_List_item = -1; /* Data_Usage_per_QoS_Flow_Item */ +static int hf_e1ap_qoS_Flow_Identifier = -1; /* QoS_Flow_Identifier */ +static int hf_e1ap_secondaryRATType_01 = -1; /* T_secondaryRATType_01 */ +static int hf_e1ap_qoS_Flow_Timed_Report_List = -1; /* SEQUENCE_SIZE_1_maxnooftimeperiods_OF_MRDC_Data_Usage_Report_Item */ +static int hf_e1ap_qoS_Flow_Timed_Report_List_item = -1; /* MRDC_Data_Usage_Report_Item */ 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 */ @@ -409,6 +425,10 @@ 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_maxIPrate = -1; /* MaxIPrate */ +static int hf_e1ap_startTimeStamp_01 = -1; /* T_startTimeStamp_01 */ +static int hf_e1ap_endTimeStamp_01 = -1; /* T_endTimeStamp_01 */ +static int hf_e1ap_data_Usage_per_PDU_Session_Report = -1; /* Data_Usage_per_PDU_Session_Report */ +static int hf_e1ap_data_Usage_per_QoS_Flow_List = -1; /* Data_Usage_per_QoS_Flow_List */ 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_pLMN_Identity = -1; /* PLMN_Identity */ @@ -431,6 +451,8 @@ static int hf_e1ap_duplication_Activation = -1; /* Duplication_Activation */ static int hf_e1ap_outOfOrderDelivery = -1; /* OutOfOrderDelivery */ static int hf_e1ap_pDCP_SN = -1; /* PDCP_SN */ static int hf_e1ap_hFN = -1; /* HFN */ +static int hf_e1ap_PDU_Session_Resource_Data_Usage_List_item = -1; /* PDU_Session_Resource_Data_Usage_Item */ +static int hf_e1ap_mRDC_Usage_Information = -1; /* MRDC_Usage_Information */ static int hf_e1ap_pdcpStatusTransfer_UL = -1; /* DRBBStatusTransfer */ static int hf_e1ap_pdcpStatusTransfer_DL = -1; /* PDCP_Count */ static int hf_e1ap_iE_Extension = -1; /* ProtocolExtensionContainer */ @@ -452,9 +474,9 @@ 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_dRB_Required_To_Modify_List_NG_RAN = -1; /* DRB_Required_To_Modify_List_NG_RAN */ +static int hf_e1ap_dRB_Required_To_Remove_List_NG_RAN = -1; /* DRB_Required_To_Remove_List_NG_RAN */ static int hf_e1ap_PDU_Session_Resource_Setup_List_item = -1; /* PDU_Session_Resource_Setup_Item */ static int hf_e1ap_nG_DL_UP_Unchanged = -1; /* T_nG_DL_UP_Unchanged */ static int hf_e1ap_PDU_Session_Resource_Setup_Mod_List_item = -1; /* PDU_Session_Resource_Setup_Mod_Item */ @@ -469,7 +491,7 @@ static int hf_e1ap_pDU_Session_Inactivity_Timer = -1; /* Inactivity_Timer */ static int hf_e1ap_networkInstance = -1; /* NetworkInstance */ 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_dRB_Required_To_Remove_List_NG_RAN = -1; /* DRB_Required_To_Remove_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_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_pDU_Session_Type = -1; /* PDU_Session_Type */ @@ -483,7 +505,6 @@ static int hf_e1ap_qoS_Flow_List = -1; /* QoS_Flow_List */ 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_Identifier = -1; /* QoS_Flow_Identifier */ static int hf_e1ap_QoS_Flow_Failed_List_item = -1; /* QoS_Flow_Failed_Item */ static int hf_e1ap_QoS_Flow_Mapping_List_item = -1; /* QoS_Flow_Mapping_Item */ static int hf_e1ap_qoSFlowMappingIndication = -1; /* QoS_Flow_Mapping_Indication */ @@ -591,6 +612,10 @@ 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_per_PDU_Session_Report = -1; +static gint ett_e1ap_SEQUENCE_SIZE_1_maxnooftimeperiods_OF_MRDC_Data_Usage_Report_Item = -1; +static gint ett_e1ap_Data_Usage_per_QoS_Flow_List = -1; +static gint ett_e1ap_Data_Usage_per_QoS_Flow_Item = -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_List = -1; @@ -670,6 +695,8 @@ static gint ett_e1ap_GBR_QosInformation = -1; static gint ett_e1ap_GBR_QoSFlowInformation = -1; static gint ett_e1ap_GTPTunnel = -1; static gint ett_e1ap_MaximumIPdatarate = -1; +static gint ett_e1ap_MRDC_Data_Usage_Report_Item = -1; +static gint ett_e1ap_MRDC_Usage_Information = -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; @@ -680,6 +707,8 @@ static gint ett_e1ap_NR_CGI_Support_Item = -1; static gint ett_e1ap_PacketErrorRate = -1; static gint ett_e1ap_PDCP_Configuration = -1; static gint ett_e1ap_PDCP_Count = -1; +static gint ett_e1ap_PDU_Session_Resource_Data_Usage_List = -1; +static gint ett_e1ap_PDU_Session_Resource_Data_Usage_Item = -1; static gint ett_e1ap_PDCP_SN_Status_Information = -1; static gint ett_e1ap_DRBBStatusTransfer = -1; static gint ett_e1ap_PDU_Session_Resource_Activity_List = -1; @@ -790,6 +819,7 @@ static gint ett_e1ap_DataUsageReport = -1; static gint ett_e1ap_GNB_CU_UP_CounterCheckRequest = -1; static gint ett_e1ap_System_GNB_CU_UP_CounterCheckRequest = -1; static gint ett_e1ap_GNB_CU_UP_StatusIndication = -1; +static gint ett_e1ap_MRDC_DataUsageReport = -1; static gint ett_e1ap_PrivateMessage = -1; static gint ett_e1ap_E1AP_PDU = -1; static gint ett_e1ap_InitiatingMessage = -1; @@ -809,7 +839,6 @@ typedef struct { guint32 message_type; guint32 procedure_code; guint32 protocol_ie_id; - guint32 protocol_extension_id; const char *obj_id; } e1ap_private_data_t; @@ -831,7 +860,7 @@ 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_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 *); @@ -951,6 +980,7 @@ static const value_string e1ap_ProcedureCode_vals[] = { { id_gNB_CU_UP_CounterCheck, "id-gNB-CU-UP-CounterCheck" }, { id_gNB_CU_UP_StatusIndication, "id-gNB-CU-UP-StatusIndication" }, { id_uLDataNotification, "id-uLDataNotification" }, + { id_mRDC_DataUsageReport, "id-mRDC-DataUsageReport" }, { 0, NULL } }; @@ -1039,6 +1069,9 @@ static const value_string e1ap_ProtocolIE_ID_vals[] = { { id_GNB_CU_UP_OverloadInformation, "id-GNB-CU-UP-OverloadInformation" }, { id_UEDLMaximumIntegrityProtectedDataRate, "id-UEDLMaximumIntegrityProtectedDataRate" }, { id_PDU_Session_To_Notify_List, "id-PDU-Session-To-Notify-List" }, + { id_PDU_Session_Resource_Data_Usage_List, "id-PDU-Session-Resource-Data-Usage-List" }, + { id_SNSSAI, "id-SNSSAI" }, + { id_DataDiscardRequired, "id-DataDiscardRequired" }, { 0, NULL } }; @@ -1134,7 +1167,7 @@ dissect_e1ap_ProtocolIE_SingleContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ 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); + offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue); return offset; } @@ -1451,6 +1484,9 @@ static const value_string e1ap_CauseRadioNetwork_vals[] = { { 22, "action-desirable-for-radio-reasons" }, { 23, "resources-not-available-for-the-slice" }, { 24, "pDCP-configuration-not-supported" }, + { 25, "ue-dl-max-IP-data-rate-reason" }, + { 26, "uP-integrity-protection-failure" }, + { 27, "release-due-to-pre-emption" }, { 0, NULL } }; @@ -1460,7 +1496,7 @@ static value_string_ext e1ap_CauseRadioNetwork_vals_ext = VALUE_STRING_EXT_INIT( 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, - 25, NULL, TRUE, 0, NULL); + 25, NULL, TRUE, 3, NULL); return offset; } @@ -1712,7 +1748,7 @@ dissect_e1ap_ConfidentialityProtectionResult(tvbuff_t *tvb _U_, int offset _U_, 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 394 "./asn1/e1ap/e1ap.cnf" +#line 403 "./asn1/e1ap/e1ap.cnf" tvbuff_t *param_tvb = NULL; offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, 1, 160, TRUE, NULL, 0, ¶m_tvb, NULL); @@ -1994,10 +2030,26 @@ dissect_e1ap_Data_Forwarding_Information_Response(tvbuff_t *tvb _U_, int offset } +static const value_string e1ap_T_secondaryRATType_vals[] = { + { 0, "nR" }, + { 1, "e-UTRA" }, + { 0, NULL } +}; + 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 355 "./asn1/e1ap/e1ap.cnf" +dissect_e1ap_T_secondaryRATType(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_T_startTimeStamp_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 426 "./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); @@ -2005,7 +2057,7 @@ dissect_e1ap_T_startTimeStamp(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act -#line 359 "./asn1/e1ap/e1ap.cnf" +#line 430 "./asn1/e1ap/e1ap.cnf" if (timestamp_tvb) { proto_item_append_text(actx->created_item, " (%s)", tvb_ntp_fmt_ts_sec(timestamp_tvb, 0)); } @@ -2017,8 +2069,8 @@ dissect_e1ap_T_startTimeStamp(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act 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 364 "./asn1/e1ap/e1ap.cnf" +dissect_e1ap_T_endTimeStamp_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 435 "./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); @@ -2026,7 +2078,7 @@ dissect_e1ap_T_endTimeStamp(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx -#line 368 "./asn1/e1ap/e1ap.cnf" +#line 439 "./asn1/e1ap/e1ap.cnf" if (timestamp_tvb) { proto_item_append_text(actx->created_item, " (%s)", tvb_ntp_fmt_ts_sec(timestamp_tvb, 0)); } @@ -2046,6 +2098,143 @@ dissect_e1ap_INTEGER_0_18446744073709551615(tvbuff_t *tvb _U_, int offset _U_, a } +static const per_sequence_t MRDC_Data_Usage_Report_Item_sequence[] = { + { &hf_e1ap_startTimeStamp_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_T_startTimeStamp_01 }, + { &hf_e1ap_endTimeStamp_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_T_endTimeStamp_01 }, + { &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_MRDC_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_MRDC_Data_Usage_Report_Item, MRDC_Data_Usage_Report_Item_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxnooftimeperiods_OF_MRDC_Data_Usage_Report_Item_sequence_of[1] = { + { &hf_e1ap_pDU_session_Timed_Report_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_MRDC_Data_Usage_Report_Item }, +}; + +static int +dissect_e1ap_SEQUENCE_SIZE_1_maxnooftimeperiods_OF_MRDC_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_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_e1ap_SEQUENCE_SIZE_1_maxnooftimeperiods_OF_MRDC_Data_Usage_Report_Item, SEQUENCE_SIZE_1_maxnooftimeperiods_OF_MRDC_Data_Usage_Report_Item_sequence_of, + 1, maxnooftimeperiods, FALSE); + + return offset; +} + + +static const per_sequence_t Data_Usage_per_PDU_Session_Report_sequence[] = { + { &hf_e1ap_secondaryRATType, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_T_secondaryRATType }, + { &hf_e1ap_pDU_session_Timed_Report_List, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_SEQUENCE_SIZE_1_maxnooftimeperiods_OF_MRDC_Data_Usage_Report_Item }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_Data_Usage_per_PDU_Session_Report(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_Data_Usage_per_PDU_Session_Report, Data_Usage_per_PDU_Session_Report_sequence); + + return offset; +} + + +static const value_string e1ap_T_secondaryRATType_01_vals[] = { + { 0, "nR" }, + { 1, "e-UTRA" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_T_secondaryRATType_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const per_sequence_t Data_Usage_per_QoS_Flow_Item_sequence[] = { + { &hf_e1ap_qoS_Flow_Identifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_QoS_Flow_Identifier }, + { &hf_e1ap_secondaryRATType_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_T_secondaryRATType_01 }, + { &hf_e1ap_qoS_Flow_Timed_Report_List, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_SEQUENCE_SIZE_1_maxnooftimeperiods_OF_MRDC_Data_Usage_Report_Item }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_Data_Usage_per_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_Data_Usage_per_QoS_Flow_Item, Data_Usage_per_QoS_Flow_Item_sequence); + + return offset; +} + + +static const per_sequence_t Data_Usage_per_QoS_Flow_List_sequence_of[1] = { + { &hf_e1ap_Data_Usage_per_QoS_Flow_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_Data_Usage_per_QoS_Flow_Item }, +}; + +static int +dissect_e1ap_Data_Usage_per_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_Data_Usage_per_QoS_Flow_List, Data_Usage_per_QoS_Flow_List_sequence_of, + 1, maxnoofQoSFlows, FALSE); + + 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 364 "./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 368 "./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 373 "./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 377 "./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 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 }, @@ -4139,6 +4328,21 @@ dissect_e1ap_DRB_To_Setup_Mod_List_NG_RAN(tvbuff_t *tvb _U_, int offset _U_, asn } +static const value_string e1ap_DataDiscardRequired_vals[] = { + { 0, "required" }, + { 0, NULL } +}; + + +static int +dissect_e1ap_DataDiscardRequired(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_EncryptionKey(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -4441,6 +4645,22 @@ dissect_e1ap_MaximumIPdatarate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac } +static const per_sequence_t MRDC_Usage_Information_sequence[] = { + { &hf_e1ap_data_Usage_per_PDU_Session_Report, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_Data_Usage_per_PDU_Session_Report }, + { &hf_e1ap_data_Usage_per_QoS_Flow_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_Data_Usage_per_QoS_Flow_List }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_MRDC_Usage_Information(tvbuff_t *tvb _U_, int offset _U_, 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_MRDC_Usage_Information, MRDC_Usage_Information_sequence); + + return offset; +} + + static int dissect_e1ap_NetworkInstance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -4508,7 +4728,7 @@ dissect_e1ap_NR_Cell_Identity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act 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 344 "./asn1/e1ap/e1ap.cnf" +#line 353 "./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); @@ -4569,6 +4789,36 @@ dissect_e1ap_NR_CGI_Support_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t * } +static const per_sequence_t PDU_Session_Resource_Data_Usage_Item_sequence[] = { + { &hf_e1ap_pDU_Session_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_PDU_Session_ID }, + { &hf_e1ap_mRDC_Usage_Information, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_MRDC_Usage_Information }, + { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_PDU_Session_Resource_Data_Usage_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_Data_Usage_Item, PDU_Session_Resource_Data_Usage_Item_sequence); + + return offset; +} + + +static const per_sequence_t PDU_Session_Resource_Data_Usage_List_sequence_of[1] = { + { &hf_e1ap_PDU_Session_Resource_Data_Usage_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e1ap_PDU_Session_Resource_Data_Usage_Item }, +}; + +static int +dissect_e1ap_PDU_Session_Resource_Data_Usage_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_Data_Usage_List, PDU_Session_Resource_Data_Usage_List_sequence_of, + 1, maxnoofPDUSessionResource, 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 }, @@ -4714,7 +4964,6 @@ static const per_sequence_t PDU_Session_Resource_Modified_Item_sequence[] = { { &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 } }; @@ -4746,6 +4995,7 @@ static const per_sequence_t PDU_Session_Resource_Required_To_Modify_Item_sequenc { &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_dRB_Required_To_Modify_List_NG_RAN, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_DRB_Required_To_Modify_List_NG_RAN }, + { &hf_e1ap_dRB_Required_To_Remove_List_NG_RAN, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_DRB_Required_To_Remove_List_NG_RAN }, { &hf_e1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_ProtocolExtensionContainer }, { NULL, 0, 0, NULL } }; @@ -4885,7 +5135,7 @@ static const per_sequence_t PDU_Session_Resource_To_Modify_Item_sequence[] = { { &hf_e1ap_networkInstance, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_NetworkInstance }, { &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_Required_To_Remove_List_NG_RAN, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e1ap_DRB_Required_To_Remove_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 } }; @@ -5249,7 +5499,7 @@ static const per_sequence_t Reset_sequence[] = { 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 417 "./asn1/e1ap/e1ap.cnf" +#line 450 "./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, @@ -5319,7 +5569,7 @@ static const per_sequence_t ResetAcknowledge_sequence[] = { 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 419 "./asn1/e1ap/e1ap.cnf" +#line 452 "./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, @@ -5350,7 +5600,7 @@ static const per_sequence_t ErrorIndication_sequence[] = { 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 421 "./asn1/e1ap/e1ap.cnf" +#line 454 "./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, @@ -5367,7 +5617,7 @@ static const per_sequence_t GNB_CU_UP_E1SetupRequest_sequence[] = { 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 423 "./asn1/e1ap/e1ap.cnf" +#line 456 "./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, @@ -5416,7 +5666,7 @@ static const per_sequence_t GNB_CU_UP_E1SetupResponse_sequence[] = { 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 425 "./asn1/e1ap/e1ap.cnf" +#line 458 "./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, @@ -5433,7 +5683,7 @@ static const per_sequence_t GNB_CU_UP_E1SetupFailure_sequence[] = { 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 427 "./asn1/e1ap/e1ap.cnf" +#line 460 "./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, @@ -5450,7 +5700,7 @@ static const per_sequence_t GNB_CU_CP_E1SetupRequest_sequence[] = { 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 429 "./asn1/e1ap/e1ap.cnf" +#line 462 "./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, @@ -5467,7 +5717,7 @@ static const per_sequence_t GNB_CU_CP_E1SetupResponse_sequence[] = { 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 431 "./asn1/e1ap/e1ap.cnf" +#line 464 "./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, @@ -5484,7 +5734,7 @@ static const per_sequence_t GNB_CU_CP_E1SetupFailure_sequence[] = { 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 433 "./asn1/e1ap/e1ap.cnf" +#line 466 "./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, @@ -5501,7 +5751,7 @@ static const per_sequence_t GNB_CU_UP_ConfigurationUpdate_sequence[] = { 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 435 "./asn1/e1ap/e1ap.cnf" +#line 468 "./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, @@ -5518,7 +5768,7 @@ static const per_sequence_t GNB_CU_UP_ConfigurationUpdateAcknowledge_sequence[] 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 437 "./asn1/e1ap/e1ap.cnf" +#line 470 "./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, @@ -5535,7 +5785,7 @@ static const per_sequence_t GNB_CU_UP_ConfigurationUpdateFailure_sequence[] = { 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 439 "./asn1/e1ap/e1ap.cnf" +#line 472 "./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, @@ -5552,7 +5802,7 @@ static const per_sequence_t GNB_CU_CP_ConfigurationUpdate_sequence[] = { 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 441 "./asn1/e1ap/e1ap.cnf" +#line 474 "./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, @@ -5611,7 +5861,7 @@ static const per_sequence_t GNB_CU_CP_ConfigurationUpdateAcknowledge_sequence[] 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 443 "./asn1/e1ap/e1ap.cnf" +#line 476 "./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, @@ -5656,7 +5906,7 @@ static const per_sequence_t GNB_CU_CP_ConfigurationUpdateFailure_sequence[] = { 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 445 "./asn1/e1ap/e1ap.cnf" +#line 478 "./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, @@ -5673,7 +5923,7 @@ static const per_sequence_t E1ReleaseRequest_sequence[] = { 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 447 "./asn1/e1ap/e1ap.cnf" +#line 480 "./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, @@ -5690,7 +5940,7 @@ static const per_sequence_t E1ReleaseResponse_sequence[] = { 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 449 "./asn1/e1ap/e1ap.cnf" +#line 482 "./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, @@ -5707,7 +5957,7 @@ static const per_sequence_t BearerContextSetupRequest_sequence[] = { 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 451 "./asn1/e1ap/e1ap.cnf" +#line 484 "./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, @@ -5748,7 +5998,7 @@ static const per_sequence_t BearerContextSetupResponse_sequence[] = { 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 453 "./asn1/e1ap/e1ap.cnf" +#line 486 "./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, @@ -5789,7 +6039,7 @@ static const per_sequence_t BearerContextSetupFailure_sequence[] = { 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 455 "./asn1/e1ap/e1ap.cnf" +#line 488 "./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, @@ -5806,7 +6056,7 @@ static const per_sequence_t BearerContextModificationRequest_sequence[] = { 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 457 "./asn1/e1ap/e1ap.cnf" +#line 490 "./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, @@ -5847,7 +6097,7 @@ static const per_sequence_t BearerContextModificationResponse_sequence[] = { 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 459 "./asn1/e1ap/e1ap.cnf" +#line 492 "./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, @@ -5888,7 +6138,7 @@ static const per_sequence_t BearerContextModificationFailure_sequence[] = { 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 461 "./asn1/e1ap/e1ap.cnf" +#line 494 "./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, @@ -5905,7 +6155,7 @@ static const per_sequence_t BearerContextModificationRequired_sequence[] = { 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 463 "./asn1/e1ap/e1ap.cnf" +#line 496 "./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, @@ -5946,7 +6196,7 @@ static const per_sequence_t BearerContextModificationConfirm_sequence[] = { 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 465 "./asn1/e1ap/e1ap.cnf" +#line 498 "./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, @@ -5987,7 +6237,7 @@ static const per_sequence_t BearerContextReleaseCommand_sequence[] = { 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 467 "./asn1/e1ap/e1ap.cnf" +#line 500 "./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, @@ -6004,7 +6254,7 @@ static const per_sequence_t BearerContextReleaseComplete_sequence[] = { 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 469 "./asn1/e1ap/e1ap.cnf" +#line 502 "./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, @@ -6021,7 +6271,7 @@ static const per_sequence_t BearerContextReleaseRequest_sequence[] = { 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 471 "./asn1/e1ap/e1ap.cnf" +#line 504 "./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, @@ -6052,7 +6302,7 @@ static const per_sequence_t BearerContextInactivityNotification_sequence[] = { 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 473 "./asn1/e1ap/e1ap.cnf" +#line 506 "./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, @@ -6069,7 +6319,7 @@ static const per_sequence_t DLDataNotification_sequence[] = { 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 475 "./asn1/e1ap/e1ap.cnf" +#line 508 "./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, @@ -6086,7 +6336,7 @@ static const per_sequence_t ULDataNotification_sequence[] = { static int dissect_e1ap_ULDataNotification(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 477 "./asn1/e1ap/e1ap.cnf" +#line 510 "./asn1/e1ap/e1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ULDataNotification"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -6103,7 +6353,7 @@ static const per_sequence_t DataUsageReport_sequence[] = { 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 479 "./asn1/e1ap/e1ap.cnf" +#line 512 "./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, @@ -6120,7 +6370,7 @@ static const per_sequence_t GNB_CU_UP_CounterCheckRequest_sequence[] = { static int dissect_e1ap_GNB_CU_UP_CounterCheckRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 481 "./asn1/e1ap/e1ap.cnf" +#line 514 "./asn1/e1ap/e1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-UP-CounterCheckRequest"); col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-UP-CounterCheckRequest"); @@ -6169,6 +6419,23 @@ dissect_e1ap_GNB_CU_UP_StatusIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ } +static const per_sequence_t MRDC_DataUsageReport_sequence[] = { + { &hf_e1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_e1ap_MRDC_DataUsageReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 520 "./asn1/e1ap/e1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "MRDC-DataUsageReport"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_e1ap_MRDC_DataUsageReport, MRDC_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 } @@ -6176,7 +6443,7 @@ static const per_sequence_t PrivateMessage_sequence[] = { 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 485 "./asn1/e1ap/e1ap.cnf" +#line 518 "./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, @@ -6482,6 +6749,14 @@ static int dissect_DRB_To_Setup_Mod_List_EUTRAN_PDU(tvbuff_t *tvb _U_, packet_in offset += 7; offset >>= 3; return offset; } +static int dissect_DataDiscardRequired_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_DataDiscardRequired(tvb, offset, &asn1_ctx, tree, hf_e1ap_DataDiscardRequired_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; @@ -6554,6 +6829,14 @@ static int dissect_New_UL_TNL_Information_Required_PDU(tvbuff_t *tvb _U_, packet offset += 7; offset >>= 3; return offset; } +static int dissect_PDU_Session_Resource_Data_Usage_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_PDU_Session_Resource_Data_Usage_List(tvb, offset, &asn1_ctx, tree, hf_e1ap_PDU_Session_Resource_Data_Usage_List_PDU); + offset += 7; offset >>= 3; + return offset; +} static int dissect_PDU_Session_Resource_Confirm_Modified_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; @@ -6682,6 +6965,14 @@ static int dissect_SecurityInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo offset += 7; offset >>= 3; return offset; } +static int dissect_SNSSAI_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_SNSSAI(tvb, offset, &asn1_ctx, tree, hf_e1ap_SNSSAI_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; @@ -7106,6 +7397,14 @@ static int dissect_GNB_CU_UP_StatusIndication_PDU(tvbuff_t *tvb _U_, packet_info offset += 7; offset >>= 3; return offset; } +static int dissect_MRDC_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_MRDC_DataUsageReport(tvb, offset, &asn1_ctx, tree, hf_e1ap_MRDC_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; @@ -7125,7 +7424,7 @@ static int dissect_E1AP_PDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto /*--- End of included file: packet-e1ap-fn.c ---*/ -#line 111 "./asn1/e1ap/packet-e1ap-template.c" +#line 110 "./asn1/e1ap/packet-e1ap-template.c" static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) { @@ -7135,23 +7434,21 @@ static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto 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_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; + + return (dissector_try_uint_new(e1ap_extension_dissector_table, e1ap_data->protocol_ie_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) { @@ -7301,6 +7598,10 @@ void proto_register_e1ap(void) { { "DRB-To-Setup-Mod-List-EUTRAN", "e1ap.DRB_To_Setup_Mod_List_EUTRAN", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_e1ap_DataDiscardRequired_PDU, + { "DataDiscardRequired", "e1ap.DataDiscardRequired", + FT_UINT32, BASE_DEC, VALS(e1ap_DataDiscardRequired_vals), 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, @@ -7337,6 +7638,10 @@ void proto_register_e1ap(void) { { "New-UL-TNL-Information-Required", "e1ap.New_UL_TNL_Information_Required", FT_UINT32, BASE_DEC, VALS(e1ap_New_UL_TNL_Information_Required_vals), 0, NULL, HFILL }}, + { &hf_e1ap_PDU_Session_Resource_Data_Usage_List_PDU, + { "PDU-Session-Resource-Data-Usage-List", "e1ap.PDU_Session_Resource_Data_Usage_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, { &hf_e1ap_PDU_Session_Resource_Confirm_Modified_List_PDU, { "PDU-Session-Resource-Confirm-Modified-List", "e1ap.PDU_Session_Resource_Confirm_Modified_List", FT_UINT32, BASE_DEC, NULL, 0, @@ -7401,6 +7706,10 @@ void proto_register_e1ap(void) { { "SecurityInformation", "e1ap.SecurityInformation_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_e1ap_SNSSAI_PDU, + { "SNSSAI", "e1ap.SNSSAI_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, @@ -7613,6 +7922,10 @@ void proto_register_e1ap(void) { { "GNB-CU-UP-StatusIndication", "e1ap.GNB_CU_UP_StatusIndication_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_e1ap_MRDC_DataUsageReport_PDU, + { "MRDC-DataUsageReport", "e1ap.MRDC_DataUsageReport_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_e1ap_PrivateMessage_PDU, { "PrivateMessage", "e1ap.PrivateMessage_element", FT_NONE, BASE_NONE, NULL, 0, @@ -7781,6 +8094,38 @@ void proto_register_e1ap(void) { { "dL-Data-Forwarding", "e1ap.dL_Data_Forwarding", FT_UINT32, BASE_DEC, VALS(e1ap_UP_TNL_Information_vals), 0, "UP_TNL_Information", HFILL }}, + { &hf_e1ap_secondaryRATType, + { "secondaryRATType", "e1ap.secondaryRATType", + FT_UINT32, BASE_DEC, VALS(e1ap_T_secondaryRATType_vals), 0, + NULL, HFILL }}, + { &hf_e1ap_pDU_session_Timed_Report_List, + { "pDU-session-Timed-Report-List", "e1ap.pDU_session_Timed_Report_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnooftimeperiods_OF_MRDC_Data_Usage_Report_Item", HFILL }}, + { &hf_e1ap_pDU_session_Timed_Report_List_item, + { "MRDC-Data-Usage-Report-Item", "e1ap.MRDC_Data_Usage_Report_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_Data_Usage_per_QoS_Flow_List_item, + { "Data-Usage-per-QoS-Flow-Item", "e1ap.Data_Usage_per_QoS_Flow_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_qoS_Flow_Identifier, + { "qoS-Flow-Identifier", "e1ap.qoS_Flow_Identifier", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_secondaryRATType_01, + { "secondaryRATType", "e1ap.secondaryRATType", + FT_UINT32, BASE_DEC, VALS(e1ap_T_secondaryRATType_01_vals), 0, + "T_secondaryRATType_01", HFILL }}, + { &hf_e1ap_qoS_Flow_Timed_Report_List, + { "qoS-Flow-Timed-Report-List", "e1ap.qoS_Flow_Timed_Report_List", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxnooftimeperiods_OF_MRDC_Data_Usage_Report_Item", HFILL }}, + { &hf_e1ap_qoS_Flow_Timed_Report_List_item, + { "MRDC-Data-Usage-Report-Item", "e1ap.MRDC_Data_Usage_Report_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_e1ap_Data_Usage_Report_List_item, { "Data-Usage-Report-Item", "e1ap.Data_Usage_Report_Item_element", FT_NONE, BASE_NONE, NULL, 0, @@ -8185,6 +8530,22 @@ void proto_register_e1ap(void) { { "maxIPrate", "e1ap.maxIPrate", FT_UINT32, BASE_DEC, VALS(e1ap_MaxIPrate_vals), 0, NULL, HFILL }}, + { &hf_e1ap_startTimeStamp_01, + { "startTimeStamp", "e1ap.startTimeStamp", + FT_BYTES, BASE_NONE, NULL, 0, + "T_startTimeStamp_01", HFILL }}, + { &hf_e1ap_endTimeStamp_01, + { "endTimeStamp", "e1ap.endTimeStamp", + FT_BYTES, BASE_NONE, NULL, 0, + "T_endTimeStamp_01", HFILL }}, + { &hf_e1ap_data_Usage_per_PDU_Session_Report, + { "data-Usage-per-PDU-Session-Report", "e1ap.data_Usage_per_PDU_Session_Report_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_data_Usage_per_QoS_Flow_List, + { "data-Usage-per-QoS-Flow-List", "e1ap.data_Usage_per_QoS_Flow_List", + FT_UINT32, BASE_DEC, 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, @@ -8273,6 +8634,14 @@ void proto_register_e1ap(void) { { "hFN", "e1ap.hFN", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_e1ap_PDU_Session_Resource_Data_Usage_List_item, + { "PDU-Session-Resource-Data-Usage-Item", "e1ap.PDU_Session_Resource_Data_Usage_Item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_e1ap_mRDC_Usage_Information, + { "mRDC-Usage-Information", "e1ap.mRDC_Usage_Information_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_e1ap_pdcpStatusTransfer_UL, { "pdcpStatusTransfer-UL", "e1ap.pdcpStatusTransfer_UL_element", FT_NONE, BASE_NONE, NULL, 0, @@ -8357,10 +8726,6 @@ void proto_register_e1ap(void) { { "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, @@ -8369,6 +8734,10 @@ void proto_register_e1ap(void) { { "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_dRB_Required_To_Remove_List_NG_RAN, + { "dRB-Required-To-Remove-List-NG-RAN", "e1ap.dRB_Required_To_Remove_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, @@ -8425,8 +8794,8 @@ void proto_register_e1ap(void) { { "dRB-To-Modify-List-NG-RAN", "e1ap.dRB_To_Modify_List_NG_RAN", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_e1ap_dRB_Required_To_Remove_List_NG_RAN, - { "dRB-Required-To-Remove-List-NG-RAN", "e1ap.dRB_Required_To_Remove_List_NG_RAN", + { &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_To_Remove_List_item, @@ -8481,10 +8850,6 @@ void proto_register_e1ap(void) { { "QoS-Flow-Item", "e1ap.QoS_Flow_Item_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_e1ap_qoS_Flow_Identifier, - { "qoS-Flow-Identifier", "e1ap.qoS_Flow_Identifier", - 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, @@ -8803,7 +9168,7 @@ void proto_register_e1ap(void) { "UnsuccessfulOutcome_value", HFILL }}, /*--- End of included file: packet-e1ap-hfarr.c ---*/ -#line 192 "./asn1/e1ap/packet-e1ap-template.c" +#line 189 "./asn1/e1ap/packet-e1ap-template.c" }; /* List of subtrees */ @@ -8831,6 +9196,10 @@ void proto_register_e1ap(void) { &ett_e1ap_CriticalityDiagnostics_IE_List_item, &ett_e1ap_Data_Forwarding_Information_Request, &ett_e1ap_Data_Forwarding_Information_Response, + &ett_e1ap_Data_Usage_per_PDU_Session_Report, + &ett_e1ap_SEQUENCE_SIZE_1_maxnooftimeperiods_OF_MRDC_Data_Usage_Report_Item, + &ett_e1ap_Data_Usage_per_QoS_Flow_List, + &ett_e1ap_Data_Usage_per_QoS_Flow_Item, &ett_e1ap_Data_Usage_Report_List, &ett_e1ap_Data_Usage_Report_Item, &ett_e1ap_DRB_Activity_List, @@ -8910,6 +9279,8 @@ void proto_register_e1ap(void) { &ett_e1ap_GBR_QoSFlowInformation, &ett_e1ap_GTPTunnel, &ett_e1ap_MaximumIPdatarate, + &ett_e1ap_MRDC_Data_Usage_Report_Item, + &ett_e1ap_MRDC_Usage_Information, &ett_e1ap_NGRANAllocationAndRetentionPriority, &ett_e1ap_NG_RAN_QoS_Support_List, &ett_e1ap_NG_RAN_QoS_Support_Item, @@ -8920,6 +9291,8 @@ void proto_register_e1ap(void) { &ett_e1ap_PacketErrorRate, &ett_e1ap_PDCP_Configuration, &ett_e1ap_PDCP_Count, + &ett_e1ap_PDU_Session_Resource_Data_Usage_List, + &ett_e1ap_PDU_Session_Resource_Data_Usage_Item, &ett_e1ap_PDCP_SN_Status_Information, &ett_e1ap_DRBBStatusTransfer, &ett_e1ap_PDU_Session_Resource_Activity_List, @@ -9030,6 +9403,7 @@ void proto_register_e1ap(void) { &ett_e1ap_GNB_CU_UP_CounterCheckRequest, &ett_e1ap_System_GNB_CU_UP_CounterCheckRequest, &ett_e1ap_GNB_CU_UP_StatusIndication, + &ett_e1ap_MRDC_DataUsageReport, &ett_e1ap_PrivateMessage, &ett_e1ap_E1AP_PDU, &ett_e1ap_InitiatingMessage, @@ -9037,7 +9411,7 @@ void proto_register_e1ap(void) { &ett_e1ap_UnsuccessfulOutcome, /*--- End of included file: packet-e1ap-ettarr.c ---*/ -#line 200 "./asn1/e1ap/packet-e1ap-template.c" +#line 197 "./asn1/e1ap/packet-e1ap-template.c" }; /* Register protocol */ @@ -9133,6 +9507,9 @@ proto_reg_handoff_e1ap(void) dissector_add_uint("e1ap.ies", id_GNB_CU_UP_OverloadInformation, create_dissector_handle(dissect_GNB_CU_UP_OverloadInformation_PDU, proto_e1ap)); dissector_add_uint("e1ap.ies", id_UEDLMaximumIntegrityProtectedDataRate, create_dissector_handle(dissect_BitRate_PDU, proto_e1ap)); dissector_add_uint("e1ap.ies", id_PDU_Session_To_Notify_List, create_dissector_handle(dissect_PDU_Session_To_Notify_List_PDU, proto_e1ap)); + dissector_add_uint("e1ap.ies", id_PDU_Session_Resource_Data_Usage_List, create_dissector_handle(dissect_PDU_Session_Resource_Data_Usage_List_PDU, proto_e1ap)); + dissector_add_uint("e1ap.ies", id_DataDiscardRequired, create_dissector_handle(dissect_DataDiscardRequired_PDU, proto_e1ap)); + dissector_add_uint("e1ap.extension", id_SNSSAI, create_dissector_handle(dissect_SNSSAI_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)); @@ -9168,10 +9545,11 @@ proto_reg_handoff_e1ap(void) dissector_add_uint("e1ap.proc.imsg", id_gNB_CU_UP_CounterCheck, create_dissector_handle(dissect_GNB_CU_UP_CounterCheckRequest_PDU, proto_e1ap)); dissector_add_uint("e1ap.proc.imsg", id_gNB_CU_UP_StatusIndication, create_dissector_handle(dissect_GNB_CU_UP_StatusIndication_PDU, proto_e1ap)); dissector_add_uint("e1ap.proc.imsg", id_privateMessage, create_dissector_handle(dissect_PrivateMessage_PDU, proto_e1ap)); + dissector_add_uint("e1ap.proc.imsg", id_mRDC_DataUsageReport, create_dissector_handle(dissect_MRDC_DataUsageReport_PDU, proto_e1ap)); /*--- End of included file: packet-e1ap-dis-tab.c ---*/ -#line 225 "./asn1/e1ap/packet-e1ap-template.c" +#line 222 "./asn1/e1ap/packet-e1ap-template.c" } /* |