diff options
author | Pascal Quantin <pascal.quantin@gmail.com> | 2018-01-18 22:37:39 +0100 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2018-01-19 04:06:32 +0000 |
commit | ecced16299baab9d3066308c577577b8422a0eb0 (patch) | |
tree | f677b75e90f01a8b7a6ef8c148e7da685948674b /epan | |
parent | 0870d4665d17ce2e7a1fe53362fb89fb0231be38 (diff) |
S1AP: upgrade dissector to v15.0.0
Change-Id: I2c2a0f8093678769427ff4303ad41a5c97bdd05c
Reviewed-on: https://code.wireshark.org/review/25379
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com>
Tested-by: Petri Dish Buildbot
Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan')
-rw-r--r-- | epan/dissectors/asn1/s1ap/S1AP-CommonDataTypes.asn | 2 | ||||
-rw-r--r-- | epan/dissectors/asn1/s1ap/S1AP-Constants.asn | 24 | ||||
-rw-r--r-- | epan/dissectors/asn1/s1ap/S1AP-Containers.asn | 2 | ||||
-rw-r--r-- | epan/dissectors/asn1/s1ap/S1AP-IEs.asn | 185 | ||||
-rw-r--r-- | epan/dissectors/asn1/s1ap/S1AP-PDU-Contents.asn | 87 | ||||
-rw-r--r-- | epan/dissectors/asn1/s1ap/S1AP-PDU-Descriptions.asn | 17 | ||||
-rw-r--r-- | epan/dissectors/asn1/s1ap/S1AP-SonTransfer-IEs.asn | 2 | ||||
-rw-r--r-- | epan/dissectors/asn1/s1ap/packet-s1ap-template.c | 59 | ||||
-rw-r--r-- | epan/dissectors/asn1/s1ap/s1ap.cnf | 105 | ||||
-rw-r--r-- | epan/dissectors/packet-s1ap.c | 1087 |
10 files changed, 1424 insertions, 146 deletions
diff --git a/epan/dissectors/asn1/s1ap/S1AP-CommonDataTypes.asn b/epan/dissectors/asn1/s1ap/S1AP-CommonDataTypes.asn index 9d151502c5..43406618e3 100644 --- a/epan/dissectors/asn1/s1ap/S1AP-CommonDataTypes.asn +++ b/epan/dissectors/asn1/s1ap/S1AP-CommonDataTypes.asn @@ -1,4 +1,4 @@ --- 3GPP TS 36.413 V14.4.0 (2017-09) +-- 3GPP TS 36.413 V15.0.0 (2017-12) -- 9.3.5 Common Definitions -- ************************************************************** -- diff --git a/epan/dissectors/asn1/s1ap/S1AP-Constants.asn b/epan/dissectors/asn1/s1ap/S1AP-Constants.asn index 70118989fa..c4f2468721 100644 --- a/epan/dissectors/asn1/s1ap/S1AP-Constants.asn +++ b/epan/dissectors/asn1/s1ap/S1AP-Constants.asn @@ -1,4 +1,4 @@ --- 3GPP TS 36.413 V14.4.0 (2017-09) +-- 3GPP TS 36.413 V15.0.0 (2017-12) -- 9.3.6 Constant Definitions -- ************************************************************** -- @@ -95,6 +95,7 @@ id-RetrieveUEInformation ProcedureCode ::= 58 id-UEInformationTransfer ProcedureCode ::= 59 id-eNBCPRelocationIndication ProcedureCode ::= 60 id-MMECPRelocationIndication ProcedureCode ::= 61 +id-SecondaryRATReport ProcedureCode ::= 62 -- ************************************************************** -- @@ -147,6 +148,12 @@ maxEARFCN INTEGER ::= 262143 maxnoofMBSFNAreaMDT INTEGER ::= 8 maxnoofRecommendedCells INTEGER ::= 16 maxnoofRecommendedENBs INTEGER ::= 16 +maxnooftimeperiods INTEGER ::= 2 +maxnoofCellIDforQMC INTEGER ::= 32 +maxnoofTAforQMC INTEGER ::= 8 +maxnoofPLMNforQMC INTEGER ::= 16 + + -- ************************************************************** -- @@ -421,5 +428,20 @@ id-EnhancedCoverageRestricted ProtocolIE-ID ::= 251 id-UE-Level-QoS-Parameters ProtocolIE-ID ::= 252 id-DL-CP-SecurityInformation ProtocolIE-ID ::= 253 id-UL-CP-SecurityInformation ProtocolIE-ID ::= 254 +id-extended-e-RAB-MaximumBitrateDL ProtocolIE-ID ::= 255 +id-extended-e-RAB-MaximumBitrateUL ProtocolIE-ID ::= 256 +id-extended-e-RAB-GuaranteedBitrateDL ProtocolIE-ID ::= 257 +id-extended-e-RAB-GuaranteedBitrateUL ProtocolIE-ID ::= 258 +id-extended-uEaggregateMaximumBitRateDL ProtocolIE-ID ::= 259 +id-extended-uEaggregateMaximumBitRateUL ProtocolIE-ID ::= 260 +id-NRrestriction ProtocolIE-ID ::= 261 +id-UEAppLayerMeasConfig ProtocolIE-ID ::= 262 +id-UE-Application-Layer-Measurement-Capability ProtocolIE-ID ::= 263 +id-SecondaryRATusageReportList ProtocolIE-ID ::= 264 +id-SecondaryRATusageReportItem ProtocolIE-ID ::= 265 +id-HandoverFlag ProtocolIE-ID ::= 266 +id-E-RABUsageReportItem ProtocolIE-ID ::= 267 +id-SecondaryRATusageDataRequst ProtocolIE-ID ::= 268 +id-NRUESecurityCapabilities ProtocolIE-ID ::= 269 END diff --git a/epan/dissectors/asn1/s1ap/S1AP-Containers.asn b/epan/dissectors/asn1/s1ap/S1AP-Containers.asn index c994c97ed5..3504bdccf4 100644 --- a/epan/dissectors/asn1/s1ap/S1AP-Containers.asn +++ b/epan/dissectors/asn1/s1ap/S1AP-Containers.asn @@ -1,4 +1,4 @@ --- 3GPP TS 36.413 V14.4.0 (2017-09) +-- 3GPP TS 36.413 V15.0.0 (2017-12) -- 9.3.7 Container Definitions -- ************************************************************** -- diff --git a/epan/dissectors/asn1/s1ap/S1AP-IEs.asn b/epan/dissectors/asn1/s1ap/S1AP-IEs.asn index 859c43eb6e..7ebe86fd34 100644 --- a/epan/dissectors/asn1/s1ap/S1AP-IEs.asn +++ b/epan/dissectors/asn1/s1ap/S1AP-IEs.asn @@ -1,4 +1,4 @@ --- 3GPP TS 36.413 V14.4.0 (2017-09) +-- 3GPP TS 36.413 V15.0.0 (2017-12) -- 9.3.4 Information Element Definitions -- ************************************************************** -- @@ -36,6 +36,7 @@ IMPORTS id-eNBIndirectX2TransportLayerAddresses, id-Muting-Availability-Indication, id-Muting-Pattern-Information, + id-NRrestriction, id-Synchronisation-Information, id-uE-HistoryInformationFromTheUE, id-LoggedMBSFNMDT, @@ -49,6 +50,15 @@ IMPORTS id-M6Configuration, id-M7Configuration, id-RAT-Type, + id-extended-e-RAB-MaximumBitrateDL, + id-extended-e-RAB-MaximumBitrateUL, + id-extended-e-RAB-GuaranteedBitrateDL, + id-extended-e-RAB-GuaranteedBitrateUL, + id-extended-uEaggregateMaximumBitRateDL, + id-extended-uEaggregateMaximumBitRateUL, + id-SecondaryRATusageReportItem, + id-E-RABUsageReportItem, + id-UEAppLayerMeasConfig, maxnoofCSGs, maxnoofE-RABs, maxnoofErrors, @@ -82,7 +92,11 @@ IMPORTS maxEARFCN, maxnoofCellsineNB, maxnoofRecommendedCells, - maxnoofRecommendedENBs + maxnoofRecommendedENBs, + maxnooftimeperiods, + maxnoofCellIDforQMC, + maxnoofTAforQMC, + maxnoofPLMNforQMC @@ -122,6 +136,15 @@ AreaScopeOfMDT ::= CHOICE { tAIBased TAIBasedMDT } + +AreaScopeOfQMC ::= CHOICE { + cellBased CellBasedQMC, + tABased TABasedQMC, + tAIBased TAIBasedQMC, + pLMNAreaBased PLMNAreaBasedQMC, + ... +} + AllocationAndRetentionPriority ::= SEQUENCE { priorityLevel PriorityLevel, pre-emptionCapability Pre-emptionCapability, @@ -399,6 +422,18 @@ CellBasedMDT-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { CellIdListforMDT ::= SEQUENCE (SIZE(1..maxnoofCellIDforMDT)) OF EUTRAN-CGI +CellBasedQMC::= SEQUENCE { + cellIdListforQMC CellIdListforQMC, + iE-Extensions ProtocolExtensionContainer { {CellBasedQMC-ExtIEs} } OPTIONAL, + ... +} + +CellBasedQMC-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +CellIdListforQMC ::= SEQUENCE (SIZE(1..maxnoofCellIDforQMC)) OF EUTRAN-CGI + Cdma2000PDU ::= OCTET STRING Cdma2000RATType ::= ENUMERATED { @@ -793,6 +828,26 @@ E-RABLevelQoSParameters ::= SEQUENCE { ... } +E-RABUsageReportList ::= SEQUENCE (SIZE(1..maxnooftimeperiods)) OF ProtocolIE-SingleContainer { {E-RABUsageReportItemIEs} } + +E-RABUsageReportItemIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABUsageReportItem CRITICALITY ignore TYPE E-RABUsageReportItem PRESENCE mandatory }, + ... +} + +E-RABUsageReportItem ::= SEQUENCE { + startTimestamp OCTET STRING (SIZE(4)), + endTimestamp OCTET STRING (SIZE(4)), + usageCountUL INTEGER, + usageCountDL INTEGER, + iE-Extensions ProtocolExtensionContainer { { E-RABUsageReportItem-ExtIEs} } OPTIONAL, + ... +} + +E-RABUsageReportItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + E-RABQoSParameters-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { ... } @@ -849,6 +904,8 @@ ExpectedHOInterval ::= ENUMERATED { ... } +ExtendedBitRate ::= INTEGER (10000000001..4000000000000, ...) + ExtendedRNC-ID ::= INTEGER (4096..65535) ExtendedRepetitionPeriod ::= INTEGER (4096..131071) @@ -910,8 +967,12 @@ GBR-QosInformation ::= SEQUENCE { } GBR-QosInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { - ... -} +-- Extension for maximum bitrate > 10G bps -- + { ID id-extended-e-RAB-MaximumBitrateDL CRITICALITY ignore EXTENSION ExtendedBitRate PRESENCE optional}| + { ID id-extended-e-RAB-MaximumBitrateUL CRITICALITY ignore EXTENSION ExtendedBitRate PRESENCE optional}| + { ID id-extended-e-RAB-GuaranteedBitrateDL CRITICALITY ignore EXTENSION ExtendedBitRate PRESENCE optional}| + { ID id-extended-e-RAB-GuaranteedBitrateUL CRITICALITY ignore EXTENSION ExtendedBitRate PRESENCE optional}, + ...} GTP-TEID ::= OCTET STRING (SIZE (4)) @@ -941,6 +1002,12 @@ GWContextReleaseIndication ::= ENUMERATED { -- H +HandoverFlag ::= ENUMERATED { + handoverPreparation, + ... +} + + HandoverRestrictionList ::= SEQUENCE { servingPLMN PLMNidentity, equivalentPLMNs EPLMNs OPTIONAL, @@ -952,6 +1019,7 @@ HandoverRestrictionList ::= SEQUENCE { } HandoverRestrictionList-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + { ID id-NRrestriction CRITICALITY ignore EXTENSION NRrestriction PRESENCE optional}, ... } @@ -1327,6 +1395,25 @@ NextPagingAreaScope ::= ENUMERATED { ... } +NRencryptionAlgorithms ::= BIT STRING (SIZE (16,...)) +NRintegrityProtectionAlgorithms ::= BIT STRING (SIZE (16,...)) + +NRrestriction ::= ENUMERATED { + nRrestricted, + ... +} + +NRUESecurityCapabilities ::= SEQUENCE { + nRencryptionAlgorithms NRencryptionAlgorithms, + nRintegrityProtectionAlgorithms NRintegrityProtectionAlgorithms, + iE-Extensions ProtocolExtensionContainer { { NRUESecurityCapabilities-ExtIEs} } OPTIONAL, +... +} + +NRUESecurityCapabilities-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + NumberofBroadcastRequest ::= INTEGER (0..65535) NumberOfBroadcasts ::= INTEGER (0..65535) @@ -1423,6 +1510,18 @@ M1PeriodicReporting-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { PLMNidentity ::= TBCD-STRING +PLMNAreaBasedQMC ::= SEQUENCE { + plmnListforQMC PLMNListforQMC, + iE-Extensions ProtocolExtensionContainer { {PLMNAreaBasedQMC-ExtIEs} } OPTIONAL, + ... +} + +PLMNAreaBasedQMC-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +PLMNListforQMC ::= SEQUENCE (SIZE(1..maxnoofPLMNforQMC)) OF PLMNidentity + Port-Number ::= OCTET STRING (SIZE (2)) Pre-emptionCapability ::= ENUMERATED { @@ -1653,6 +1752,36 @@ SecurityContext-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { ... } +SecondaryRATType ::= ENUMERATED { + nR, + ... +} + + +SecondaryRATusageDataRequst ::= ENUMERATED { + requested, + ... +} + +SecondaryRATusageReportList ::= SEQUENCE (SIZE(1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { {SecondaryRATusageReportItemIEs} } + +SecondaryRATusageReportItemIEs S1AP-PROTOCOL-IES ::= { + { ID id-SecondaryRATusageReportItem CRITICALITY ignore TYPE SecondaryRATusageReportItem PRESENCE mandatory }, + ... +} + +SecondaryRATusageReportItem ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + secondaryRATType SecondaryRATType, + e-RABUsageReportList E-RABUsageReportList, + iE-Extensions ProtocolExtensionContainer { { SecondaryRATusageReportItem-ExtIEs} } OPTIONAL, + ... +} + +SecondaryRATusageReportItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + SerialNumber ::= BIT STRING (SIZE (16)) SONInformation ::= CHOICE{ @@ -1910,6 +2039,30 @@ TABasedMDT-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { TAListforMDT ::= SEQUENCE (SIZE(1..maxnoofTAforMDT)) OF TAC +TABasedQMC ::= SEQUENCE { + tAListforQMC TAListforQMC, + iE-Extensions ProtocolExtensionContainer { {TABasedQMC-ExtIEs} } OPTIONAL, + ... +} + +TABasedQMC-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +TAListforQMC ::= SEQUENCE (SIZE(1..maxnoofTAforQMC)) OF TAC + +TAIBasedQMC ::= SEQUENCE { + tAIListforQMC TAIListforQMC, + iE-Extensions ProtocolExtensionContainer { {TAIBasedQMC-ExtIEs} } OPTIONAL, + ... +} + +TAIBasedQMC-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +TAIListforQMC ::= SEQUENCE (SIZE(1..maxnoofTAforQMC)) OF TAI + CompletedCellinTAI ::= SEQUENCE (SIZE(1..maxnoofCellinTAI)) OF CompletedCellinTAI-Item CompletedCellinTAI-Item ::= SEQUENCE{ @@ -2016,7 +2169,9 @@ traceCollectionEntityIPAddress TransportLayerAddress, TraceActivation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { -- Extension for Rel-10 to support MDT -- - { ID id-MDTConfiguration CRITICALITY ignore EXTENSION MDT-Configuration PRESENCE optional }, + { ID id-MDTConfiguration CRITICALITY ignore EXTENSION MDT-Configuration PRESENCE optional }| +-- Extension for Rel-15 to support QMC – + { ID id-UEAppLayerMeasConfig CRITICALITY ignore EXTENSION UEAppLayerMeasConfig PRESENCE optional }, ... } @@ -2063,6 +2218,20 @@ UEAggregateMaximumBitrate ::= SEQUENCE { } UEAggregate-MaximumBitrates-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { +-- Extension for maximum bitrate > 10G bps -- + { ID id-extended-uEaggregateMaximumBitRateDL CRITICALITY ignore EXTENSION ExtendedBitRate PRESENCE optional}| + { ID id-extended-uEaggregateMaximumBitRateUL CRITICALITY ignore EXTENSION ExtendedBitRate PRESENCE optional}, + ... +} + +UEAppLayerMeasConfig ::= SEQUENCE { + containerForAppLayerMeasConfig OCTET STRING (SIZE(1..1000)), + areaScopeOfQMC AreaScopeOfQMC, + iE-Extensions ProtocolExtensionContainer { {UEAppLayerMeasConfig-ExtIEs} } OPTIONAL, + ... +} + +UEAppLayerMeasConfig-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { ... } @@ -2177,6 +2346,12 @@ UEUserPlaneCIoTSupportIndicator ::= ENUMERATED { ... } +UE-Application-Layer-Measurement-Capability ::= BIT STRING (SIZE (8)) + +-- First bit: QoE Measurement + +-- Note that undefined bits are considered as a spare bit and spare bits shall be set to 0 by the transmitter and shall be ignored by the receiver. + -- V VoiceSupportMatchIndicator ::= ENUMERATED { diff --git a/epan/dissectors/asn1/s1ap/S1AP-PDU-Contents.asn b/epan/dissectors/asn1/s1ap/S1AP-PDU-Contents.asn index eb49702899..72be202bc1 100644 --- a/epan/dissectors/asn1/s1ap/S1AP-PDU-Contents.asn +++ b/epan/dissectors/asn1/s1ap/S1AP-PDU-Contents.asn @@ -1,4 +1,4 @@ --- 3GPP TS 36.413 V14.4.0 (2017-09) +-- 3GPP TS 36.413 V15.0.0 (2017-12) -- 9.3.3 PDU Definitions -- ************************************************************** -- @@ -163,7 +163,12 @@ IMPORTS Coverage-Level, EnhancedCoverageRestricted, DL-CP-SecurityInformation, - UL-CP-SecurityInformation + UL-CP-SecurityInformation, + SecondaryRATusageDataRequst, + SecondaryRATusageReportList, + HandoverFlag, + NRUESecurityCapabilities, + UE-Application-Layer-Measurement-Capability @@ -397,7 +402,12 @@ FROM S1AP-Containers id-EnhancedCoverageRestricted, id-UE-Level-QoS-Parameters, id-DL-CP-SecurityInformation, - id-UL-CP-SecurityInformation + id-UL-CP-SecurityInformation, + id-SecondaryRATusageDataRequst, + id-SecondaryRATusageReportList, + id-HandoverFlag, + id-NRUESecurityCapabilities, + id-UE-Application-Layer-Measurement-Capability FROM S1AP-Constants; @@ -559,7 +569,8 @@ HandoverRequestIEs S1AP-PROTOCOL-IES ::= { { ID id-UEUserPlaneCIoTSupportIndicator CRITICALITY ignore TYPE UEUserPlaneCIoTSupportIndicator PRESENCE optional}| { ID id-V2XServicesAuthorized CRITICALITY ignore TYPE V2XServicesAuthorized PRESENCE optional}| { ID id-UESidelinkAggregateMaximumBitrate CRITICALITY ignore TYPE UESidelinkAggregateMaximumBitrate PRESENCE optional}| - { ID id-EnhancedCoverageRestricted CRITICALITY ignore TYPE EnhancedCoverageRestricted PRESENCE optional}, + { ID id-EnhancedCoverageRestricted CRITICALITY ignore TYPE EnhancedCoverageRestricted PRESENCE optional}| + { ID id-NRUESecurityCapabilities CRITICALITY ignore TYPE NRUESecurityCapabilities PRESENCE optional}, ... } @@ -728,7 +739,8 @@ PathSwitchRequestIEs S1AP-PROTOCOL-IES ::= { -- Extension for Release 11 to support BBAI -- { ID id-Tunnel-Information-for-BBF CRITICALITY ignore TYPE TunnelInformation PRESENCE optional}| { ID id-LHN-ID CRITICALITY ignore TYPE LHN-ID PRESENCE optional}| - { ID id-RRC-Resume-Cause CRITICALITY ignore TYPE RRC-Establishment-Cause PRESENCE optional }, + { ID id-RRC-Resume-Cause CRITICALITY ignore TYPE RRC-Establishment-Cause PRESENCE optional }| + { ID id-NRUESecurityCapabilities CRITICALITY ignore TYPE NRUESecurityCapabilities PRESENCE optional}, ... } @@ -776,7 +788,8 @@ PathSwitchRequestAcknowledgeIEs S1AP-PROTOCOL-IES ::= { { ID id-UEUserPlaneCIoTSupportIndicator CRITICALITY ignore TYPE UEUserPlaneCIoTSupportIndicator PRESENCE optional}| { ID id-V2XServicesAuthorized CRITICALITY ignore TYPE V2XServicesAuthorized PRESENCE optional}| { ID id-UESidelinkAggregateMaximumBitrate CRITICALITY ignore TYPE UESidelinkAggregateMaximumBitrate PRESENCE optional}| - { ID id-EnhancedCoverageRestricted CRITICALITY ignore TYPE EnhancedCoverageRestricted PRESENCE optional}, + { ID id-EnhancedCoverageRestricted CRITICALITY ignore TYPE EnhancedCoverageRestricted PRESENCE optional}| + { ID id-NRUESecurityCapabilities CRITICALITY ignore TYPE NRUESecurityCapabilities PRESENCE optional}, ... } @@ -976,7 +989,8 @@ E-RABModifyRequestIEs S1AP-PROTOCOL-IES ::= { { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| { ID id-uEaggregateMaximumBitrate CRITICALITY reject TYPE UEAggregateMaximumBitrate PRESENCE optional }| - { ID id-E-RABToBeModifiedListBearerModReq CRITICALITY reject TYPE E-RABToBeModifiedListBearerModReq PRESENCE mandatory }, + { ID id-E-RABToBeModifiedListBearerModReq CRITICALITY reject TYPE E-RABToBeModifiedListBearerModReq PRESENCE mandatory }| + { ID id-SecondaryRATusageDataRequst CRITICALITY ignore TYPE SecondaryRATusageDataRequst PRESENCE optional }, ... } @@ -1019,7 +1033,8 @@ E-RABModifyResponseIEs S1AP-PROTOCOL-IES ::= { { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| { ID id-E-RABModifyListBearerModRes CRITICALITY ignore TYPE E-RABModifyListBearerModRes PRESENCE optional }| { ID id-E-RABFailedToModifyList CRITICALITY ignore TYPE E-RABList PRESENCE optional }| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }| + { ID id-SecondaryRATusageReportList CRITICALITY ignore TYPE SecondaryRATusageReportList PRESENCE optional }, ... } @@ -1090,7 +1105,8 @@ E-RABReleaseResponseIEs S1AP-PROTOCOL-IES ::= { { ID id-E-RABFailedToReleaseList CRITICALITY ignore TYPE E-RABList PRESENCE optional }| { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }| -- Extension for Release 12 to support User Location Information -- - { ID id-UserLocationInformation CRITICALITY ignore TYPE UserLocationInformation PRESENCE optional }, + { ID id-UserLocationInformation CRITICALITY ignore TYPE UserLocationInformation PRESENCE optional }| + { ID id-SecondaryRATusageReportList CRITICALITY ignore TYPE SecondaryRATusageReportList PRESENCE optional }, ... } @@ -1137,7 +1153,8 @@ E-RABReleaseIndicationIEs S1AP-PROTOCOL-IES ::= { { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| { ID id-E-RABReleasedList CRITICALITY ignore TYPE E-RABList PRESENCE mandatory }| -- Extension for Release 12 to support User Location Information -- - { ID id-UserLocationInformation CRITICALITY ignore TYPE UserLocationInformation PRESENCE optional }, + { ID id-UserLocationInformation CRITICALITY ignore TYPE UserLocationInformation PRESENCE optional }| + { ID id-SecondaryRATusageReportList CRITICALITY ignore TYPE SecondaryRATusageReportList PRESENCE optional }, ... } -- ************************************************************** @@ -1183,7 +1200,8 @@ InitialContextSetupRequestIEs S1AP-PROTOCOL-IES ::= { { ID id-UEUserPlaneCIoTSupportIndicator CRITICALITY ignore TYPE UEUserPlaneCIoTSupportIndicator PRESENCE optional}| { ID id-V2XServicesAuthorized CRITICALITY ignore TYPE V2XServicesAuthorized PRESENCE optional}| { ID id-UESidelinkAggregateMaximumBitrate CRITICALITY ignore TYPE UESidelinkAggregateMaximumBitrate PRESENCE optional}| - { ID id-EnhancedCoverageRestricted CRITICALITY ignore TYPE EnhancedCoverageRestricted PRESENCE optional}, + { ID id-EnhancedCoverageRestricted CRITICALITY ignore TYPE EnhancedCoverageRestricted PRESENCE optional}| + { ID id-NRUESecurityCapabilities CRITICALITY ignore TYPE NRUESecurityCapabilities PRESENCE optional}, ... } @@ -1349,10 +1367,11 @@ UEContextReleaseRequest ::= SEQUENCE { } UEContextReleaseRequest-IEs S1AP-PROTOCOL-IES ::= { - { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| - { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| - { ID id-GWContextReleaseIndication CRITICALITY reject TYPE GWContextReleaseIndication PRESENCE optional }, + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-GWContextReleaseIndication CRITICALITY reject TYPE GWContextReleaseIndication PRESENCE optional }| + { ID id-SecondaryRATusageReportList CRITICALITY ignore TYPE SecondaryRATusageReportList PRESENCE optional }, ... } @@ -1393,7 +1412,8 @@ UEContextReleaseComplete-IEs S1AP-PROTOCOL-IES ::= { -- Extension for Release 13 to support Paging Optimisation { ID id-InformationOnRecommendedCellsAndENBsForPaging CRITICALITY ignore TYPE InformationOnRecommendedCellsAndENBsForPaging PRESENCE optional}| -- Extension for Release 13 to support coverage enhancement paging - - { ID id-CellIdentifierAndCELevelForCECapableUEs CRITICALITY ignore TYPE CellIdentifierAndCELevelForCECapableUEs PRESENCE optional}, + { ID id-CellIdentifierAndCELevelForCECapableUEs CRITICALITY ignore TYPE CellIdentifierAndCELevelForCECapableUEs PRESENCE optional}| + { ID id-SecondaryRATusageReportList CRITICALITY ignore TYPE SecondaryRATusageReportList PRESENCE optional }, ... } @@ -1430,7 +1450,8 @@ UEContextModificationRequestIEs S1AP-PROTOCOL-IES ::= { { ID id-SRVCCOperationPossible CRITICALITY ignore TYPE SRVCCOperationPossible PRESENCE optional}| { ID id-SRVCCOperationNotPossible CRITICALITY ignore TYPE SRVCCOperationNotPossible PRESENCE optional}| { ID id-V2XServicesAuthorized CRITICALITY ignore TYPE V2XServicesAuthorized PRESENCE optional}| - { ID id-UESidelinkAggregateMaximumBitrate CRITICALITY ignore TYPE UESidelinkAggregateMaximumBitrate PRESENCE optional}, + { ID id-UESidelinkAggregateMaximumBitrate CRITICALITY ignore TYPE UESidelinkAggregateMaximumBitrate PRESENCE optional}| + { ID id-NRUESecurityCapabilities CRITICALITY ignore TYPE NRUESecurityCapabilities PRESENCE optional}, ... } -- ************************************************************** @@ -1575,7 +1596,8 @@ InitialUEMessage-IEs S1AP-PROTOCOL-IES ::= { { ID id-UE-Usage-Type CRITICALITY ignore TYPE UE-Usage-Type PRESENCE optional}| { ID id-CE-mode-B-SupportIndicator CRITICALITY ignore TYPE CE-mode-B-SupportIndicator PRESENCE optional}| { ID id-DCN-ID CRITICALITY ignore TYPE DCN-ID PRESENCE optional}| - { ID id-Coverage-Level CRITICALITY ignore TYPE Coverage-Level PRESENCE optional}, + { ID id-Coverage-Level CRITICALITY ignore TYPE Coverage-Level PRESENCE optional}| + { ID id-UE-Application-Layer-Measurement-Capability CRITICALITY ignore TYPE UE-Application-Layer-Measurement-Capability PRESENCE optional}, ... } @@ -2028,7 +2050,8 @@ UECapabilityInfoIndicationIEs S1AP-PROTOCOL-IES ::= { { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| { ID id-UERadioCapability CRITICALITY ignore TYPE UERadioCapability PRESENCE mandatory}| - { ID id-UERadioCapabilityForPaging CRITICALITY ignore TYPE UERadioCapabilityForPaging PRESENCE optional}, + { ID id-UERadioCapabilityForPaging CRITICALITY ignore TYPE UERadioCapabilityForPaging PRESENCE optional}| + { ID id-UE-Application-Layer-Measurement-Capability CRITICALITY ignore TYPE UE-Application-Layer-Measurement-Capability PRESENCE optional}, ... } @@ -2629,7 +2652,8 @@ E-RABModificationIndicationIEs S1AP-PROTOCOL-IES ::= { { ID id-E-RABNotToBeModifiedListBearerModInd CRITICALITY reject TYPE E-RABNotToBeModifiedListBearerModInd PRESENCE optional}| { ID id-CSGMembershipInfo CRITICALITY reject TYPE CSGMembershipInfo PRESENCE optional}| -- Extension for Release 11 to support BBAI -- - { ID id-Tunnel-Information-for-BBF CRITICALITY ignore TYPE TunnelInformation PRESENCE optional}, + { ID id-Tunnel-Information-for-BBF CRITICALITY ignore TYPE TunnelInformation PRESENCE optional}| + { ID id-SecondaryRATusageReportList CRITICALITY ignore TYPE SecondaryRATusageReportList PRESENCE optional }, ... } @@ -2790,7 +2814,8 @@ UEContextSuspendRequestIEs S1AP-PROTOCOL-IES ::= { { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| { ID id-InformationOnRecommendedCellsAndENBsForPaging CRITICALITY ignore TYPE InformationOnRecommendedCellsAndENBsForPaging PRESENCE optional}| - { ID id-CellIdentifierAndCELevelForCECapableUEs CRITICALITY ignore TYPE CellIdentifierAndCELevelForCECapableUEs PRESENCE optional}, + { ID id-CellIdentifierAndCELevelForCECapableUEs CRITICALITY ignore TYPE CellIdentifierAndCELevelForCECapableUEs PRESENCE optional}| + { ID id-SecondaryRATusageReportList CRITICALITY ignore TYPE SecondaryRATusageReportList PRESENCE optional }, ... } @@ -3007,4 +3032,24 @@ MMECPRelocationIndicationIEs S1AP-PROTOCOL-IES ::= { ... } + +-- ************************************************************** +-- +-- Secondary RAT Report +-- +-- ************************************************************** + +SecondaryRATReport ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { SecondaryRATReportIEs} }, + ... +} + +SecondaryRATReportIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-SecondaryRATusageReportList CRITICALITY ignore TYPE SecondaryRATusageReportList PRESENCE optional}| + { ID id-HandoverFlag CRITICALITY ignore TYPE HandoverFlag PRESENCE optional}, + ... +} + END diff --git a/epan/dissectors/asn1/s1ap/S1AP-PDU-Descriptions.asn b/epan/dissectors/asn1/s1ap/S1AP-PDU-Descriptions.asn index af677ce9a7..bab664ed51 100644 --- a/epan/dissectors/asn1/s1ap/S1AP-PDU-Descriptions.asn +++ b/epan/dissectors/asn1/s1ap/S1AP-PDU-Descriptions.asn @@ -1,4 +1,4 @@ --- 3GPP TS 36.413 V14.4.0 (2017-09) +-- 3GPP TS 36.413 V15.0.0 (2017-12) -- 9.3.2 Elementary Procedure Definitions -- ************************************************************** -- @@ -116,7 +116,8 @@ FROM S1AP-CommonDataTypes RetrieveUEInformation, UEInformationTransfer, ENBCPRelocationIndication, - MMECPRelocationIndication + MMECPRelocationIndication, + SecondaryRATReport FROM S1AP-PDU-Contents @@ -182,7 +183,8 @@ FROM S1AP-PDU-Contents id-RetrieveUEInformation, id-UEInformationTransfer, id-eNBCPRelocationIndication, - id-MMECPRelocationIndication + id-MMECPRelocationIndication, + id-SecondaryRATReport FROM S1AP-Constants; @@ -320,7 +322,8 @@ S1AP-ELEMENTARY-PROCEDURES-CLASS-2 S1AP-ELEMENTARY-PROCEDURE ::= { retrieveUEInformation | uEInformationTransfer | eNBCPRelocationIndication | - mMECPRelocationIndication + mMECPRelocationIndication | + secondaryRATReport } -- ************************************************************** @@ -729,5 +732,11 @@ mMECPRelocationIndication S1AP-ELEMENTARY-PROCEDURE ::= { CRITICALITY reject } +secondaryRATReport S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE SecondaryRATReport + PROCEDURE CODE id-SecondaryRATReport + CRITICALITY ignore +} + END diff --git a/epan/dissectors/asn1/s1ap/S1AP-SonTransfer-IEs.asn b/epan/dissectors/asn1/s1ap/S1AP-SonTransfer-IEs.asn index 693510b059..0ec2c80ab5 100644 --- a/epan/dissectors/asn1/s1ap/S1AP-SonTransfer-IEs.asn +++ b/epan/dissectors/asn1/s1ap/S1AP-SonTransfer-IEs.asn @@ -1,4 +1,4 @@ --- 3GPP TS 36.413 V14.4.0 (2017-09) +-- 3GPP TS 36.413 V15.0.0 (2017-12) -- B.2 ASN.1 definition -- ************************************************************** -- diff --git a/epan/dissectors/asn1/s1ap/packet-s1ap-template.c b/epan/dissectors/asn1/s1ap/packet-s1ap-template.c index 54107edc9c..ac6e600889 100644 --- a/epan/dissectors/asn1/s1ap/packet-s1ap-template.c +++ b/epan/dissectors/asn1/s1ap/packet-s1ap-template.c @@ -22,7 +22,7 @@ * * Based on the RANAP dissector * - * References: 3GPP TS 36.413 V14.4.0 (2017-09) + * References: 3GPP TS 36.413 V15.0.0 (2017-12) */ #include "config.h" @@ -49,6 +49,7 @@ #include "packet-gsm_map.h" #include "packet-cell_broadcast.h" #include "packet-gsm_a_common.h" +#include "packet-ntp.h" #define PNAME "S1 Application Protocol" #define PSNAME "S1AP" @@ -104,6 +105,16 @@ static int hf_s1ap_measurementsToActivate_M7 = -1; static int hf_s1ap_MDT_Location_Info_GNSS = -1; static int hf_s1ap_MDT_Location_Info_E_CID = -1; static int hf_s1ap_MDT_Location_Info_Reserved = -1; +static int hf_s1ap_NRencryptionAlgorithms_NEA1 = -1; +static int hf_s1ap_NRencryptionAlgorithms_NEA2 = -1; +static int hf_s1ap_NRencryptionAlgorithms_NEA3 = -1; +static int hf_s1ap_NRencryptionAlgorithms_Reserved = -1; +static int hf_s1ap_NRintegrityProtectionAlgorithms_NIA1 = -1; +static int hf_s1ap_NRintegrityProtectionAlgorithms_NIA2 = -1; +static int hf_s1ap_NRintegrityProtectionAlgorithms_NIA3 = -1; +static int hf_s1ap_NRintegrityProtectionAlgorithms_Reserved = -1; +static int hf_s1ap_UE_Application_Layer_Measurement_Capability_QoE_Measurement = -1; +static int hf_s1ap_UE_Application_Layer_Measurement_Capability_Reserved = -1; #include "packet-s1ap-hf.c" /* Initialize the subtree pointers */ @@ -136,6 +147,9 @@ static int ett_s1ap_MeasurementsToActivate = -1; static int ett_s1ap_MDT_Location_Info = -1; static int ett_s1ap_IMSI = -1; static int ett_s1ap_NASSecurityParameters = -1; +static int ett_s1ap_NRencryptionAlgorithms = -1; +static int ett_s1ap_NRintegrityProtectionAlgorithms = -1; +static int ett_s1ap_UE_Application_Layer_Measurement_Capability = -1; #include "packet-s1ap-ett.c" static expert_field ei_s1ap_number_pages_le15 = EI_INIT; @@ -615,6 +629,46 @@ void proto_register_s1ap(void) { { "Reserved", "s1ap.MDT_Location_Info.Reserved", FT_UINT8, BASE_HEX, NULL, 0x3f, NULL, HFILL }}, + { &hf_s1ap_NRencryptionAlgorithms_NEA1, + { "128-NEA1", "s1ap.NRencryptionAlgorithms.NEA1", + FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x8000, + NULL, HFILL }}, + { &hf_s1ap_NRencryptionAlgorithms_NEA2, + { "128-NEA2", "s1ap.NRencryptionAlgorithms.NEA2", + FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x4000, + NULL, HFILL }}, + { &hf_s1ap_NRencryptionAlgorithms_NEA3, + { "128-NEA3", "s1ap.NRencryptionAlgorithms.NEA3", + FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x2000, + NULL, HFILL }}, + { &hf_s1ap_NRencryptionAlgorithms_Reserved, + { "Reserved", "s1ap.NRencryptionAlgorithms.Reserved", + FT_UINT16, BASE_HEX, NULL, 0x1fff, + NULL, HFILL }}, + { &hf_s1ap_NRintegrityProtectionAlgorithms_NIA1, + { "128-NIA1", "s1ap.NRintegrityProtectionAlgorithms.NIA1", + FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x8000, + NULL, HFILL }}, + { &hf_s1ap_NRintegrityProtectionAlgorithms_NIA2, + { "128-NIA2", "s1ap.NRintegrityProtectionAlgorithms.NIA2", + FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x4000, + NULL, HFILL }}, + { &hf_s1ap_NRintegrityProtectionAlgorithms_NIA3, + { "128-NIA3", "s1ap.NRintegrityProtectionAlgorithms.NIA3", + FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x2000, + NULL, HFILL }}, + { &hf_s1ap_NRintegrityProtectionAlgorithms_Reserved, + { "Reserved", "s1ap.NRintegrityProtectionAlgorithms.Reserved", + FT_UINT16, BASE_HEX, NULL, 0x1fff, + NULL, HFILL }}, + { &hf_s1ap_UE_Application_Layer_Measurement_Capability_QoE_Measurement, + { "QoE Measurement", "s1ap.UE_Application_Layer_Measurement_Capability.QoE_Measurement", + FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x80, + NULL, HFILL }}, + { &hf_s1ap_UE_Application_Layer_Measurement_Capability_Reserved, + { "Reserved", "s1ap.UE_Application_Layer_Measurement_Capability.Reserved", + FT_UINT8, BASE_HEX, NULL, 0x7f, + NULL, HFILL }}, #include "packet-s1ap-hfarr.c" }; @@ -649,6 +703,9 @@ void proto_register_s1ap(void) { &ett_s1ap_MDT_Location_Info, &ett_s1ap_IMSI, &ett_s1ap_NASSecurityParameters, + &ett_s1ap_NRencryptionAlgorithms, + &ett_s1ap_NRintegrityProtectionAlgorithms, + &ett_s1ap_UE_Application_Layer_Measurement_Capability, #include "packet-s1ap-ettarr.c" }; diff --git a/epan/dissectors/asn1/s1ap/s1ap.cnf b/epan/dissectors/asn1/s1ap/s1ap.cnf index eaa3f7939b..51c7fb5efe 100644 --- a/epan/dissectors/asn1/s1ap/s1ap.cnf +++ b/epan/dissectors/asn1/s1ap/s1ap.cnf @@ -958,6 +958,76 @@ ExpectedActivityPeriod DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds #.TYPE_ATTR ExpectedIdlePeriod DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds +#.FN_BODY E-RABUsageReportItem/startTimestamp VAL_PTR = ×tamp_tvb + tvbuff_t *timestamp_tvb = NULL; +%(DEFAULT_BODY)s + +#.FN_FTR E-RABUsageReportItem/startTimestamp + if (timestamp_tvb) { + proto_item_append_text(actx->created_item, " (%s)", tvb_ntp_fmt_ts_sec(timestamp_tvb, 0)); + } + +#.FN_BODY E-RABUsageReportItem/endTimestamp VAL_PTR = ×tamp_tvb + tvbuff_t *timestamp_tvb = NULL; +%(DEFAULT_BODY)s + +#.FN_FTR E-RABUsageReportItem/endTimestamp + if (timestamp_tvb) { + proto_item_append_text(actx->created_item, " (%s)", tvb_ntp_fmt_ts_sec(timestamp_tvb, 0)); + } + +#.TYPE_ATTR +E-RABUsageReportItem/usageCountUL DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_octet_octets + +#.TYPE_ATTR +E-RABUsageReportItem/usageCountDL DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_octet_octets + +#.TYPE_ATTR +ExtendedBitRate DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_bit_sec + +#.FN_BODY NRencryptionAlgorithms VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb = NULL; +%(DEFAULT_BODY)s + if (parameter_tvb) { + const gint *fields[] = { + &hf_s1ap_NRencryptionAlgorithms_NEA1, + &hf_s1ap_NRencryptionAlgorithms_NEA2, + &hf_s1ap_NRencryptionAlgorithms_NEA3, + &hf_s1ap_NRencryptionAlgorithms_Reserved, + NULL + }; + proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_s1ap_NRencryptionAlgorithms); + proto_tree_add_bitmask_list(subtree, parameter_tvb, 0, 2, fields, ENC_BIG_ENDIAN); + } + +#.FN_BODY NRintegrityProtectionAlgorithms VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb = NULL; +%(DEFAULT_BODY)s + if (parameter_tvb) { + const gint *fields[] = { + &hf_s1ap_NRintegrityProtectionAlgorithms_NIA1, + &hf_s1ap_NRintegrityProtectionAlgorithms_NIA2, + &hf_s1ap_NRintegrityProtectionAlgorithms_NIA3, + &hf_s1ap_NRintegrityProtectionAlgorithms_Reserved, + NULL + }; + proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_s1ap_NRintegrityProtectionAlgorithms); + proto_tree_add_bitmask_list(subtree, parameter_tvb, 0, 2, fields, ENC_BIG_ENDIAN); + } + +#.FN_BODY UE-Application-Layer-Measurement-Capability VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb = NULL; +%(DEFAULT_BODY)s + if(parameter_tvb){ + const gint *fields[] = { + &hf_s1ap_UE_Application_Layer_Measurement_Capability_QoE_Measurement, + &hf_s1ap_UE_Application_Layer_Measurement_Capability_Reserved, + NULL + }; + proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_s1ap_UE_Application_Layer_Measurement_Capability); + proto_tree_add_bitmask_list(subtree, parameter_tvb, 0, 1, fields, ENC_BIG_ENDIAN); + } + #.TYPE_ATTR TAC TYPE = FT_UINT16 DISPLAY = BASE_DEC_HEX #.FN_BODY TAC VAL_PTR = ¶meter_tvb HF_INDEX = -1 @@ -1149,6 +1219,7 @@ id-RetrieveUEInformation ProcedureCode id-UEInformationTransfer ProcedureCode id-eNBCPRelocationIndication ProcedureCode id-MMECPRelocationIndication ProcedureCode +id-SecondaryRATReport ProcedureCode # ProtocolIE-ID id-MME-UE-S1AP-ID ProtocolIE-ID @@ -1388,6 +1459,21 @@ id-EnhancedCoverageRestricted ProtocolIE-ID id-UE-Level-QoS-Parameters ProtocolIE-ID id-DL-CP-SecurityInformation ProtocolIE-ID id-UL-CP-SecurityInformation ProtocolIE-ID +id-extended-e-RAB-MaximumBitrateDL ProtocolIE-ID +id-extended-e-RAB-MaximumBitrateUL ProtocolIE-ID +id-extended-e-RAB-GuaranteedBitrateDL ProtocolIE-ID +id-extended-e-RAB-GuaranteedBitrateUL ProtocolIE-ID +id-extended-uEaggregateMaximumBitRateDL ProtocolIE-ID +id-extended-uEaggregateMaximumBitRateUL ProtocolIE-ID +id-NRrestriction ProtocolIE-ID +id-UEAppLayerMeasConfig ProtocolIE-ID +id-UE-Application-Layer-Measurement-Capability ProtocolIE-ID +id-SecondaryRATusageReportList ProtocolIE-ID +id-SecondaryRATusageReportItem ProtocolIE-ID +id-HandoverFlag ProtocolIE-ID +id-E-RABUsageReportItem ProtocolIE-ID +id-SecondaryRATusageDataRequst ProtocolIE-ID +id-NRUESecurityCapabilities ProtocolIE-ID #.END #.REGISTER @@ -1593,6 +1679,13 @@ ServedDCNs N s1ap.ies id-ServedDCNs DL-CP-SecurityInformation N s1ap.ies id-DL-CP-SecurityInformation E-RABLevelQoSParameters N s1ap.ies id-UE-Level-QoS-Parameters UL-CP-SecurityInformation N s1ap.ies id-UL-CP-SecurityInformation +E-RABUsageReportItem N s1ap.ies id-E-RABUsageReportItem +SecondaryRATusageReportItem N s1ap.ies id-SecondaryRATusageReportItem +NRUESecurityCapabilities N s1ap.ies id-NRUESecurityCapabilities +SecondaryRATusageDataRequst N s1ap.ies id-SecondaryRATusageDataRequst +SecondaryRATusageReportList N s1ap.ies id-SecondaryRATusageReportList +UE-Application-Layer-Measurement-Capability N s1ap.ies id-UE-Application-Layer-Measurement-Capability +HandoverFlag N s1ap.ies id-HandoverFlag #S1AP-PROTOCOL-IES-PAIR #RAB-SetupOrModifyItemFirst N s1ap.ies.pair.first id-RAB-SetupOrModifyItem @@ -1635,6 +1728,14 @@ M6Configuration N s1ap.extension id-M6Configuration M7Configuration N s1ap.extension id-M7Configuration RAT-Type N s1ap.extension id-RAT-Type BearerType N s1ap.extension id-BearerType +ExtendedBitRate N s1ap.extension id-extended-e-RAB-MaximumBitrateDL +ExtendedBitRate N s1ap.extension id-extended-e-RAB-MaximumBitrateUL +ExtendedBitRate N s1ap.extension id-extended-e-RAB-GuaranteedBitrateDL +ExtendedBitRate N s1ap.extension id-extended-e-RAB-GuaranteedBitrateUL +NRrestriction N s1ap.extension id-NRrestriction +UEAppLayerMeasConfig N s1ap.extension id-UEAppLayerMeasConfig +ExtendedBitRate N s1ap.extension id-extended-uEaggregateMaximumBitRateDL +ExtendedBitRate N s1ap.extension id-extended-uEaggregateMaximumBitRateUL #S1AP-ELEMENTARY-PROCEDURE HandoverRequired N s1ap.proc.imsg id-HandoverPreparation @@ -1791,6 +1892,8 @@ ENBCPRelocationIndication N s1ap.proc.imsg id-eNBCPRelocationIndic MMECPRelocationIndication N s1ap.proc.imsg id-MMECPRelocationIndication +SecondaryRATReport N s1ap.proc.imsg id-SecondaryRATReport + #.FN_HDR HandoverRequired col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "HandoverRequired"); @@ -1976,6 +2079,8 @@ MMECPRelocationIndication N s1ap.proc.imsg id-MMECPRelocationIndic col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ENBCPRelocationIndication"); #.FN_HDR MMECPRelocationIndication col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "MMECPRelocationIndication"); +#.FN_HDR SecondaryRATReport + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SecondaryRATReport"); #.END # Whenever a Cause appears, look up the reason and show it in the Info column diff --git a/epan/dissectors/packet-s1ap.c b/epan/dissectors/packet-s1ap.c index 2023a55972..5e7eea1e2c 100644 --- a/epan/dissectors/packet-s1ap.c +++ b/epan/dissectors/packet-s1ap.c @@ -30,7 +30,7 @@ * * Based on the RANAP dissector * - * References: 3GPP TS 36.413 V14.4.0 (2017-09) + * References: 3GPP TS 36.413 V15.0.0 (2017-12) */ #include "config.h" @@ -57,6 +57,7 @@ #include "packet-gsm_map.h" #include "packet-cell_broadcast.h" #include "packet-gsm_a_common.h" +#include "packet-ntp.h" #define PNAME "S1 Application Protocol" #define PSNAME "S1AP" @@ -114,6 +115,10 @@ static dissector_handle_t bssgp_handle; #define maxnoofMBSFNAreaMDT 8 #define maxnoofRecommendedCells 16 #define maxnoofRecommendedENBs 16 +#define maxnooftimeperiods 2 +#define maxnoofCellIDforQMC 32 +#define maxnoofTAforQMC 8 +#define maxnoofPLMNforQMC 16 #define maxnoofIRATReportingCells 128 #define maxnoofcandidateCells 16 #define maxnoofCellineNB 256 @@ -180,7 +185,8 @@ typedef enum _ProcedureCode_enum { id_RetrieveUEInformation = 58, id_UEInformationTransfer = 59, id_eNBCPRelocationIndication = 60, - id_MMECPRelocationIndication = 61 + id_MMECPRelocationIndication = 61, + id_SecondaryRATReport = 62 } ProcedureCode_enum; typedef enum _ProtocolIE_ID_enum { @@ -438,7 +444,22 @@ typedef enum _ProtocolIE_ID_enum { id_EnhancedCoverageRestricted = 251, id_UE_Level_QoS_Parameters = 252, id_DL_CP_SecurityInformation = 253, - id_UL_CP_SecurityInformation = 254 + id_UL_CP_SecurityInformation = 254, + id_extended_e_RAB_MaximumBitrateDL = 255, + id_extended_e_RAB_MaximumBitrateUL = 256, + id_extended_e_RAB_GuaranteedBitrateDL = 257, + id_extended_e_RAB_GuaranteedBitrateUL = 258, + id_extended_uEaggregateMaximumBitRateDL = 259, + id_extended_uEaggregateMaximumBitRateUL = 260, + id_NRrestriction = 261, + id_UEAppLayerMeasConfig = 262, + id_UE_Application_Layer_Measurement_Capability = 263, + id_SecondaryRATusageReportList = 264, + id_SecondaryRATusageReportItem = 265, + id_HandoverFlag = 266, + id_E_RABUsageReportItem = 267, + id_SecondaryRATusageDataRequst = 268, + id_NRUESecurityCapabilities = 269 } ProtocolIE_ID_enum; typedef enum _RAT_Type_enum { @@ -446,7 +467,7 @@ typedef enum _RAT_Type_enum { } RAT_Type_enum; /*--- End of included file: packet-s1ap-val.h ---*/ -#line 68 "./asn1/s1ap/packet-s1ap-template.c" +#line 69 "./asn1/s1ap/packet-s1ap-template.c" /* Initialize the protocol and registered fields */ static int proto_s1ap = -1; @@ -486,6 +507,16 @@ static int hf_s1ap_measurementsToActivate_M7 = -1; static int hf_s1ap_MDT_Location_Info_GNSS = -1; static int hf_s1ap_MDT_Location_Info_E_CID = -1; static int hf_s1ap_MDT_Location_Info_Reserved = -1; +static int hf_s1ap_NRencryptionAlgorithms_NEA1 = -1; +static int hf_s1ap_NRencryptionAlgorithms_NEA2 = -1; +static int hf_s1ap_NRencryptionAlgorithms_NEA3 = -1; +static int hf_s1ap_NRencryptionAlgorithms_Reserved = -1; +static int hf_s1ap_NRintegrityProtectionAlgorithms_NIA1 = -1; +static int hf_s1ap_NRintegrityProtectionAlgorithms_NIA2 = -1; +static int hf_s1ap_NRintegrityProtectionAlgorithms_NIA3 = -1; +static int hf_s1ap_NRintegrityProtectionAlgorithms_Reserved = -1; +static int hf_s1ap_UE_Application_Layer_Measurement_Capability_QoE_Measurement = -1; +static int hf_s1ap_UE_Application_Layer_Measurement_Capability_Reserved = -1; /*--- Included file: packet-s1ap-hf.c ---*/ #line 1 "./asn1/s1ap/packet-s1ap-hf.c" @@ -537,14 +568,17 @@ static int hf_s1ap_E_RABInformationListItem_PDU = -1; /* E_RABInformationListIt static int hf_s1ap_E_RABList_PDU = -1; /* E_RABList */ static int hf_s1ap_E_RABItem_PDU = -1; /* E_RABItem */ static int hf_s1ap_E_RABLevelQoSParameters_PDU = -1; /* E_RABLevelQoSParameters */ +static int hf_s1ap_E_RABUsageReportItem_PDU = -1; /* E_RABUsageReportItem */ static int hf_s1ap_EUTRAN_CGI_PDU = -1; /* EUTRAN_CGI */ static int hf_s1ap_EUTRANRoundTripDelayEstimationInfo_PDU = -1; /* EUTRANRoundTripDelayEstimationInfo */ static int hf_s1ap_ExpectedUEBehaviour_PDU = -1; /* ExpectedUEBehaviour */ +static int hf_s1ap_ExtendedBitRate_PDU = -1; /* ExtendedBitRate */ static int hf_s1ap_ExtendedRepetitionPeriod_PDU = -1; /* ExtendedRepetitionPeriod */ static int hf_s1ap_Extended_UEIdentityIndexValue_PDU = -1; /* Extended_UEIdentityIndexValue */ static int hf_s1ap_GUMMEI_PDU = -1; /* GUMMEI */ static int hf_s1ap_GUMMEIType_PDU = -1; /* GUMMEIType */ static int hf_s1ap_GWContextReleaseIndication_PDU = -1; /* GWContextReleaseIndication */ +static int hf_s1ap_HandoverFlag_PDU = -1; /* HandoverFlag */ static int hf_s1ap_HandoverRestrictionList_PDU = -1; /* HandoverRestrictionList */ static int hf_s1ap_HandoverType_PDU = -1; /* HandoverType */ static int hf_s1ap_Masked_IMEISV_PDU = -1; /* Masked_IMEISV */ @@ -580,6 +614,8 @@ static int hf_s1ap_NASSecurityParameterstoE_UTRAN_PDU = -1; /* NASSecurityParam static int hf_s1ap_NB_IoT_DefaultPagingDRX_PDU = -1; /* NB_IoT_DefaultPagingDRX */ static int hf_s1ap_NB_IoT_Paging_eDRXInformation_PDU = -1; /* NB_IoT_Paging_eDRXInformation */ static int hf_s1ap_NB_IoT_UEIdentityIndexValue_PDU = -1; /* NB_IoT_UEIdentityIndexValue */ +static int hf_s1ap_NRrestriction_PDU = -1; /* NRrestriction */ +static int hf_s1ap_NRUESecurityCapabilities_PDU = -1; /* NRUESecurityCapabilities */ static int hf_s1ap_NumberofBroadcastRequest_PDU = -1; /* NumberofBroadcastRequest */ static int hf_s1ap_OverloadResponse_PDU = -1; /* OverloadResponse */ static int hf_s1ap_Paging_eDRXInformation_PDU = -1; /* Paging_eDRXInformation */ @@ -602,6 +638,9 @@ static int hf_s1ap_ECGIListForRestart_PDU = -1; /* ECGIListForRestart */ static int hf_s1ap_Routing_ID_PDU = -1; /* Routing_ID */ static int hf_s1ap_SecurityKey_PDU = -1; /* SecurityKey */ static int hf_s1ap_SecurityContext_PDU = -1; /* SecurityContext */ +static int hf_s1ap_SecondaryRATusageDataRequst_PDU = -1; /* SecondaryRATusageDataRequst */ +static int hf_s1ap_SecondaryRATusageReportList_PDU = -1; /* SecondaryRATusageReportList */ +static int hf_s1ap_SecondaryRATusageReportItem_PDU = -1; /* SecondaryRATusageReportItem */ static int hf_s1ap_SerialNumber_PDU = -1; /* SerialNumber */ static int hf_s1ap_SONInformationReport_PDU = -1; /* SONInformationReport */ static int hf_s1ap_SONConfigurationTransfer_PDU = -1; /* SONConfigurationTransfer */ @@ -631,6 +670,7 @@ static int hf_s1ap_TrafficLoadReductionIndication_PDU = -1; /* TrafficLoadReduc static int hf_s1ap_TunnelInformation_PDU = -1; /* TunnelInformation */ static int hf_s1ap_TAIListForRestart_PDU = -1; /* TAIListForRestart */ static int hf_s1ap_UEAggregateMaximumBitrate_PDU = -1; /* UEAggregateMaximumBitrate */ +static int hf_s1ap_UEAppLayerMeasConfig_PDU = -1; /* UEAppLayerMeasConfig */ static int hf_s1ap_UE_RetentionInformation_PDU = -1; /* UE_RetentionInformation */ static int hf_s1ap_UE_S1AP_IDs_PDU = -1; /* UE_S1AP_IDs */ static int hf_s1ap_UE_associatedLogicalS1_ConnectionItem_PDU = -1; /* UE_associatedLogicalS1_ConnectionItem */ @@ -646,6 +686,7 @@ static int hf_s1ap_UE_Usage_Type_PDU = -1; /* UE_Usage_Type */ static int hf_s1ap_UL_CP_SecurityInformation_PDU = -1; /* UL_CP_SecurityInformation */ static int hf_s1ap_UserLocationInformation_PDU = -1; /* UserLocationInformation */ static int hf_s1ap_UEUserPlaneCIoTSupportIndicator_PDU = -1; /* UEUserPlaneCIoTSupportIndicator */ +static int hf_s1ap_UE_Application_Layer_Measurement_Capability_PDU = -1; /* UE_Application_Layer_Measurement_Capability */ static int hf_s1ap_VoiceSupportMatchIndicator_PDU = -1; /* VoiceSupportMatchIndicator */ static int hf_s1ap_V2XServicesAuthorized_PDU = -1; /* V2XServicesAuthorized */ static int hf_s1ap_WarningAreaList_PDU = -1; /* WarningAreaList */ @@ -790,6 +831,7 @@ static int hf_s1ap_RetrieveUEInformation_PDU = -1; /* RetrieveUEInformation */ static int hf_s1ap_UEInformationTransfer_PDU = -1; /* UEInformationTransfer */ static int hf_s1ap_ENBCPRelocationIndication_PDU = -1; /* ENBCPRelocationIndication */ static int hf_s1ap_MMECPRelocationIndication_PDU = -1; /* MMECPRelocationIndication */ +static int hf_s1ap_SecondaryRATReport_PDU = -1; /* SecondaryRATReport */ static int hf_s1ap_S1AP_PDU_PDU = -1; /* S1AP_PDU */ static int hf_s1ap_s1ap_SONtransferApplicationIdentity_PDU = -1; /* SONtransferApplicationIdentity */ static int hf_s1ap_s1ap_SONtransferRequestContainer_PDU = -1; /* SONtransferRequestContainer */ @@ -815,6 +857,10 @@ static int hf_s1ap_cellBased = -1; /* CellBasedMDT */ static int hf_s1ap_tABased = -1; /* TABasedMDT */ static int hf_s1ap_pLMNWide = -1; /* NULL */ static int hf_s1ap_tAIBased = -1; /* TAIBasedMDT */ +static int hf_s1ap_cellBased_01 = -1; /* CellBasedQMC */ +static int hf_s1ap_tABased_01 = -1; /* TABasedQMC */ +static int hf_s1ap_tAIBased_01 = -1; /* TAIBasedQMC */ +static int hf_s1ap_pLMNAreaBased = -1; /* PLMNAreaBasedQMC */ static int hf_s1ap_priorityLevel = -1; /* PriorityLevel */ static int hf_s1ap_pre_emptionCapability = -1; /* Pre_emptionCapability */ static int hf_s1ap_pre_emptionVulnerability = -1; /* Pre_emptionVulnerability */ @@ -850,6 +896,8 @@ static int hf_s1ap_CellID_Broadcast_item = -1; /* CellID_Broadcast_Item */ static int hf_s1ap_CellID_Cancelled_item = -1; /* CellID_Cancelled_Item */ static int hf_s1ap_cellIdListforMDT = -1; /* CellIdListforMDT */ static int hf_s1ap_CellIdListforMDT_item = -1; /* EUTRAN_CGI */ +static int hf_s1ap_cellIdListforQMC = -1; /* CellIdListforQMC */ +static int hf_s1ap_CellIdListforQMC_item = -1; /* EUTRAN_CGI */ static int hf_s1ap_cdma2000OneXMEID = -1; /* Cdma2000OneXMEID */ static int hf_s1ap_cdma2000OneXMSI = -1; /* Cdma2000OneXMSI */ static int hf_s1ap_cdma2000OneXPilot = -1; /* Cdma2000OneXPilot */ @@ -906,6 +954,11 @@ static int hf_s1ap_cause = -1; /* Cause */ static int hf_s1ap_qCI = -1; /* QCI */ static int hf_s1ap_allocationRetentionPriority = -1; /* AllocationAndRetentionPriority */ static int hf_s1ap_gbrQosInformation = -1; /* GBR_QosInformation */ +static int hf_s1ap_E_RABUsageReportList_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_s1ap_startTimestamp = -1; /* T_startTimestamp */ +static int hf_s1ap_endTimestamp = -1; /* T_endTimestamp */ +static int hf_s1ap_usageCountUL = -1; /* INTEGER */ +static int hf_s1ap_usageCountDL = -1; /* INTEGER */ static int hf_s1ap_cell_ID = -1; /* CellIdentity */ static int hf_s1ap_expectedActivity = -1; /* ExpectedUEActivityBehaviour */ static int hf_s1ap_expectedHOInterval = -1; /* ExpectedHOInterval */ @@ -974,6 +1027,8 @@ static int hf_s1ap_muting_pattern_period = -1; /* T_muting_pattern_period */ static int hf_s1ap_muting_pattern_offset = -1; /* INTEGER_0_10239_ */ static int hf_s1ap_nB_IoT_paging_eDRX_Cycle = -1; /* NB_IoT_Paging_eDRX_Cycle */ static int hf_s1ap_nB_IoT_pagingTimeWindow = -1; /* NB_IoT_PagingTimeWindow */ +static int hf_s1ap_nRencryptionAlgorithms = -1; /* NRencryptionAlgorithms */ +static int hf_s1ap_nRintegrityProtectionAlgorithms = -1; /* NRintegrityProtectionAlgorithms */ static int hf_s1ap_overloadAction = -1; /* OverloadAction */ static int hf_s1ap_pagingAttemptCount = -1; /* PagingAttemptCount */ static int hf_s1ap_intendedNumberOfPagingAttempts = -1; /* IntendedNumberOfPagingAttempts */ @@ -982,6 +1037,8 @@ static int hf_s1ap_paging_eDRX_Cycle = -1; /* Paging_eDRX_Cycle */ static int hf_s1ap_pagingTimeWindow = -1; /* PagingTimeWindow */ static int hf_s1ap_reportInterval = -1; /* ReportIntervalMDT */ static int hf_s1ap_reportAmount = -1; /* ReportAmountMDT */ +static int hf_s1ap_plmnListforQMC = -1; /* PLMNListforQMC */ +static int hf_s1ap_PLMNListforQMC_item = -1; /* PLMNidentity */ static int hf_s1ap_proSeDirectDiscovery = -1; /* ProSeDirectDiscovery */ static int hf_s1ap_proSeDirectCommunication = -1; /* ProSeDirectCommunication */ static int hf_s1ap_recommendedCellList = -1; /* RecommendedCellList */ @@ -1003,6 +1060,9 @@ static int hf_s1ap_uE_RLF_Report_Container_for_extended_bands = -1; /* UE_RLF_R static int hf_s1ap_ECGIListForRestart_item = -1; /* EUTRAN_CGI */ static int hf_s1ap_nextHopChainingCount = -1; /* INTEGER_0_7 */ static int hf_s1ap_nextHopParameter = -1; /* SecurityKey */ +static int hf_s1ap_SecondaryRATusageReportList_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_s1ap_secondaryRATType = -1; /* SecondaryRATType */ +static int hf_s1ap_e_RABUsageReportList = -1; /* E_RABUsageReportList */ static int hf_s1ap_sONInformationRequest = -1; /* SONInformationRequest */ static int hf_s1ap_sONInformationReply = -1; /* SONInformationReply */ static int hf_s1ap_sONInformation_Extension = -1; /* SONInformation_Extension */ @@ -1042,6 +1102,10 @@ static int hf_s1ap_TAI_Cancelled_item = -1; /* TAI_Cancelled_Item */ static int hf_s1ap_cancelledCellinTAI = -1; /* CancelledCellinTAI */ static int hf_s1ap_tAListforMDT = -1; /* TAListforMDT */ static int hf_s1ap_TAListforMDT_item = -1; /* TAC */ +static int hf_s1ap_tAListforQMC = -1; /* TAListforQMC */ +static int hf_s1ap_TAListforQMC_item = -1; /* TAC */ +static int hf_s1ap_tAIListforQMC = -1; /* TAIListforQMC */ +static int hf_s1ap_TAIListforQMC_item = -1; /* TAI */ static int hf_s1ap_CompletedCellinTAI_item = -1; /* CompletedCellinTAI_Item */ static int hf_s1ap_cGI = -1; /* CGI */ static int hf_s1ap_rNC_ID = -1; /* RNC_ID */ @@ -1057,6 +1121,8 @@ static int hf_s1ap_uDP_Port_Number = -1; /* Port_Number */ static int hf_s1ap_TAIListForRestart_item = -1; /* TAI */ static int hf_s1ap_uEaggregateMaximumBitRateDL = -1; /* BitRate */ static int hf_s1ap_uEaggregateMaximumBitRateUL = -1; /* BitRate */ +static int hf_s1ap_containerForAppLayerMeasConfig = -1; /* OCTET_STRING_SIZE_1_1000 */ +static int hf_s1ap_areaScopeOfQMC = -1; /* AreaScopeOfQMC */ static int hf_s1ap_uE_S1AP_ID_pair = -1; /* UE_S1AP_ID_pair */ static int hf_s1ap_mME_UE_S1AP_ID = -1; /* MME_UE_S1AP_ID */ static int hf_s1ap_eNB_UE_S1AP_ID = -1; /* ENB_UE_S1AP_ID */ @@ -1185,7 +1251,7 @@ static int hf_s1ap_eHRPD_Sector_ID_01 = -1; /* EHRPD_Sector_ID */ static int hf_s1ap_eHRPDSectorLoadReportingResponse = -1; /* EHRPDSectorLoadReportingResponse */ /*--- End of included file: packet-s1ap-hf.c ---*/ -#line 108 "./asn1/s1ap/packet-s1ap-template.c" +#line 119 "./asn1/s1ap/packet-s1ap-template.c" /* Initialize the subtree pointers */ static int ett_s1ap = -1; @@ -1217,6 +1283,9 @@ static int ett_s1ap_MeasurementsToActivate = -1; static int ett_s1ap_MDT_Location_Info = -1; static int ett_s1ap_IMSI = -1; static int ett_s1ap_NASSecurityParameters = -1; +static int ett_s1ap_NRencryptionAlgorithms = -1; +static int ett_s1ap_NRintegrityProtectionAlgorithms = -1; +static int ett_s1ap_UE_Application_Layer_Measurement_Capability = -1; /*--- Included file: packet-s1ap-ett.c ---*/ #line 1 "./asn1/s1ap/packet-s1ap-ett.c" @@ -1230,6 +1299,7 @@ static gint ett_s1ap_PrivateIE_Container = -1; static gint ett_s1ap_PrivateIE_Field = -1; static gint ett_s1ap_Additional_GUTI = -1; static gint ett_s1ap_AreaScopeOfMDT = -1; +static gint ett_s1ap_AreaScopeOfQMC = -1; static gint ett_s1ap_AllocationAndRetentionPriority = -1; static gint ett_s1ap_AssistanceDataForCECapableUEs = -1; static gint ett_s1ap_AssistanceDataForPaging = -1; @@ -1251,6 +1321,8 @@ static gint ett_s1ap_CellID_Cancelled = -1; static gint ett_s1ap_CellID_Cancelled_Item = -1; static gint ett_s1ap_CellBasedMDT = -1; static gint ett_s1ap_CellIdListforMDT = -1; +static gint ett_s1ap_CellBasedQMC = -1; +static gint ett_s1ap_CellIdListforQMC = -1; static gint ett_s1ap_Cdma2000OneXSRVCCInfo = -1; static gint ett_s1ap_CellType = -1; static gint ett_s1ap_CGI = -1; @@ -1288,6 +1360,8 @@ static gint ett_s1ap_E_RABInformationListItem = -1; static gint ett_s1ap_E_RABList = -1; static gint ett_s1ap_E_RABItem = -1; static gint ett_s1ap_E_RABLevelQoSParameters = -1; +static gint ett_s1ap_E_RABUsageReportList = -1; +static gint ett_s1ap_E_RABUsageReportItem = -1; static gint ett_s1ap_EUTRAN_CGI = -1; static gint ett_s1ap_ExpectedUEBehaviour = -1; static gint ett_s1ap_ExpectedUEActivityBehaviour = -1; @@ -1323,10 +1397,13 @@ static gint ett_s1ap_MeasurementThresholdA2 = -1; static gint ett_s1ap_MMEPagingTarget = -1; static gint ett_s1ap_MutingPatternInformation = -1; static gint ett_s1ap_NB_IoT_Paging_eDRXInformation = -1; +static gint ett_s1ap_NRUESecurityCapabilities = -1; static gint ett_s1ap_OverloadResponse = -1; static gint ett_s1ap_PagingAttemptInformation = -1; static gint ett_s1ap_Paging_eDRXInformation = -1; static gint ett_s1ap_M1PeriodicReporting = -1; +static gint ett_s1ap_PLMNAreaBasedQMC = -1; +static gint ett_s1ap_PLMNListforQMC = -1; static gint ett_s1ap_ProSeAuthorized = -1; static gint ett_s1ap_RecommendedCellsForPaging = -1; static gint ett_s1ap_RecommendedCellList = -1; @@ -1340,6 +1417,8 @@ static gint ett_s1ap_RIMRoutingAddress = -1; static gint ett_s1ap_RLFReportInformation = -1; static gint ett_s1ap_ECGIListForRestart = -1; static gint ett_s1ap_SecurityContext = -1; +static gint ett_s1ap_SecondaryRATusageReportList = -1; +static gint ett_s1ap_SecondaryRATusageReportItem = -1; static gint ett_s1ap_SONInformation = -1; static gint ett_s1ap_SONInformationReply = -1; static gint ett_s1ap_SONInformationReport = -1; @@ -1366,6 +1445,10 @@ static gint ett_s1ap_TAI_Cancelled = -1; static gint ett_s1ap_TAI_Cancelled_Item = -1; static gint ett_s1ap_TABasedMDT = -1; static gint ett_s1ap_TAListforMDT = -1; +static gint ett_s1ap_TABasedQMC = -1; +static gint ett_s1ap_TAListforQMC = -1; +static gint ett_s1ap_TAIBasedQMC = -1; +static gint ett_s1ap_TAIListforQMC = -1; static gint ett_s1ap_CompletedCellinTAI = -1; static gint ett_s1ap_CompletedCellinTAI_Item = -1; static gint ett_s1ap_TargetID = -1; @@ -1378,6 +1461,7 @@ static gint ett_s1ap_TraceActivation = -1; static gint ett_s1ap_TunnelInformation = -1; static gint ett_s1ap_TAIListForRestart = -1; static gint ett_s1ap_UEAggregateMaximumBitrate = -1; +static gint ett_s1ap_UEAppLayerMeasConfig = -1; static gint ett_s1ap_UE_S1AP_IDs = -1; static gint ett_s1ap_UE_S1AP_ID_pair = -1; static gint ett_s1ap_UE_associatedLogicalS1_ConnectionItem = -1; @@ -1519,6 +1603,7 @@ static gint ett_s1ap_RetrieveUEInformation = -1; static gint ett_s1ap_UEInformationTransfer = -1; static gint ett_s1ap_ENBCPRelocationIndication = -1; static gint ett_s1ap_MMECPRelocationIndication = -1; +static gint ett_s1ap_SecondaryRATReport = -1; static gint ett_s1ap_S1AP_PDU = -1; static gint ett_s1ap_InitiatingMessage = -1; static gint ett_s1ap_SuccessfulOutcome = -1; @@ -1558,7 +1643,7 @@ static gint ett_s1ap_EHRPDCompositeAvailableCapacity = -1; static gint ett_s1ap_EHRPDMultiSectorLoadReportingResponseItem = -1; /*--- End of included file: packet-s1ap-ett.c ---*/ -#line 140 "./asn1/s1ap/packet-s1ap-template.c" +#line 154 "./asn1/s1ap/packet-s1ap-template.c" static expert_field ei_s1ap_number_pages_le15 = EI_INIT; @@ -1897,6 +1982,7 @@ static const value_string s1ap_ProcedureCode_vals[] = { { id_UEInformationTransfer, "id-UEInformationTransfer" }, { id_eNBCPRelocationIndication, "id-eNBCPRelocationIndication" }, { id_MMECPRelocationIndication, "id-MMECPRelocationIndication" }, + { id_SecondaryRATReport, "id-SecondaryRATReport" }, { 0, NULL } }; @@ -2187,6 +2273,21 @@ static const value_string s1ap_ProtocolIE_ID_vals[] = { { id_UE_Level_QoS_Parameters, "id-UE-Level-QoS-Parameters" }, { id_DL_CP_SecurityInformation, "id-DL-CP-SecurityInformation" }, { id_UL_CP_SecurityInformation, "id-UL-CP-SecurityInformation" }, + { id_extended_e_RAB_MaximumBitrateDL, "id-extended-e-RAB-MaximumBitrateDL" }, + { id_extended_e_RAB_MaximumBitrateUL, "id-extended-e-RAB-MaximumBitrateUL" }, + { id_extended_e_RAB_GuaranteedBitrateDL, "id-extended-e-RAB-GuaranteedBitrateDL" }, + { id_extended_e_RAB_GuaranteedBitrateUL, "id-extended-e-RAB-GuaranteedBitrateUL" }, + { id_extended_uEaggregateMaximumBitRateDL, "id-extended-uEaggregateMaximumBitRateDL" }, + { id_extended_uEaggregateMaximumBitRateUL, "id-extended-uEaggregateMaximumBitRateUL" }, + { id_NRrestriction, "id-NRrestriction" }, + { id_UEAppLayerMeasConfig, "id-UEAppLayerMeasConfig" }, + { id_UE_Application_Layer_Measurement_Capability, "id-UE-Application-Layer-Measurement-Capability" }, + { id_SecondaryRATusageReportList, "id-SecondaryRATusageReportList" }, + { id_SecondaryRATusageReportItem, "id-SecondaryRATusageReportItem" }, + { id_HandoverFlag, "id-HandoverFlag" }, + { id_E_RABUsageReportItem, "id-E-RABUsageReportItem" }, + { id_SecondaryRATusageDataRequst, "id-SecondaryRATusageDataRequst" }, + { id_NRUESecurityCapabilities, "id-NRUESecurityCapabilities" }, { 0, NULL } }; @@ -2473,7 +2574,7 @@ dissect_s1ap_GUMMEI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro static int dissect_s1ap_M_TMSI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 997 "./asn1/s1ap/s1ap.cnf" +#line 1067 "./asn1/s1ap/s1ap.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, -1, 4, 4, FALSE, ¶meter_tvb); @@ -2562,7 +2663,7 @@ dissect_s1ap_CellBasedMDT(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U static int dissect_s1ap_TAC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 964 "./asn1/s1ap/s1ap.cnf" +#line 1034 "./asn1/s1ap/s1ap.cnf" tvbuff_t *parameter_tvb = NULL; struct s1ap_private_data *s1ap_data = s1ap_get_private_data(actx->pinfo); offset = dissect_per_octet_string(tvb, offset, actx, tree, -1, @@ -2630,7 +2731,7 @@ static const per_sequence_t TAI_sequence[] = { static int dissect_s1ap_TAI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1063 "./asn1/s1ap/s1ap.cnf" +#line 1133 "./asn1/s1ap/s1ap.cnf" struct s1ap_private_data *s1ap_data = s1ap_get_private_data(actx->pinfo); s1ap_data->tai = wmem_new0(wmem_packet_scope(), struct s1ap_tai); @@ -2718,6 +2819,148 @@ dissect_s1ap_AreaScopeOfMDT(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx } +static const per_sequence_t CellIdListforQMC_sequence_of[1] = { + { &hf_s1ap_CellIdListforQMC_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_s1ap_EUTRAN_CGI }, +}; + +static int +dissect_s1ap_CellIdListforQMC(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_s1ap_CellIdListforQMC, CellIdListforQMC_sequence_of, + 1, maxnoofCellIDforQMC, FALSE); + + return offset; +} + + +static const per_sequence_t CellBasedQMC_sequence[] = { + { &hf_s1ap_cellIdListforQMC, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_CellIdListforQMC }, + { &hf_s1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_s1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_s1ap_CellBasedQMC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_s1ap_CellBasedQMC, CellBasedQMC_sequence); + + return offset; +} + + +static const per_sequence_t TAListforQMC_sequence_of[1] = { + { &hf_s1ap_TAListforQMC_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_s1ap_TAC }, +}; + +static int +dissect_s1ap_TAListforQMC(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_s1ap_TAListforQMC, TAListforQMC_sequence_of, + 1, maxnoofTAforQMC, FALSE); + + return offset; +} + + +static const per_sequence_t TABasedQMC_sequence[] = { + { &hf_s1ap_tAListforQMC , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_TAListforQMC }, + { &hf_s1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_s1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_s1ap_TABasedQMC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_s1ap_TABasedQMC, TABasedQMC_sequence); + + return offset; +} + + +static const per_sequence_t TAIListforQMC_sequence_of[1] = { + { &hf_s1ap_TAIListforQMC_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_s1ap_TAI }, +}; + +static int +dissect_s1ap_TAIListforQMC(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_s1ap_TAIListforQMC, TAIListforQMC_sequence_of, + 1, maxnoofTAforQMC, FALSE); + + return offset; +} + + +static const per_sequence_t TAIBasedQMC_sequence[] = { + { &hf_s1ap_tAIListforQMC , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_TAIListforQMC }, + { &hf_s1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_s1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_s1ap_TAIBasedQMC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_s1ap_TAIBasedQMC, TAIBasedQMC_sequence); + + return offset; +} + + +static const per_sequence_t PLMNListforQMC_sequence_of[1] = { + { &hf_s1ap_PLMNListforQMC_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_s1ap_PLMNidentity }, +}; + +static int +dissect_s1ap_PLMNListforQMC(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_s1ap_PLMNListforQMC, PLMNListforQMC_sequence_of, + 1, maxnoofPLMNforQMC, FALSE); + + return offset; +} + + +static const per_sequence_t PLMNAreaBasedQMC_sequence[] = { + { &hf_s1ap_plmnListforQMC , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_PLMNListforQMC }, + { &hf_s1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_s1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_s1ap_PLMNAreaBasedQMC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_s1ap_PLMNAreaBasedQMC, PLMNAreaBasedQMC_sequence); + + return offset; +} + + +static const value_string s1ap_AreaScopeOfQMC_vals[] = { + { 0, "cellBased" }, + { 1, "tABased" }, + { 2, "tAIBased" }, + { 3, "pLMNAreaBased" }, + { 0, NULL } +}; + +static const per_choice_t AreaScopeOfQMC_choice[] = { + { 0, &hf_s1ap_cellBased_01 , ASN1_EXTENSION_ROOT , dissect_s1ap_CellBasedQMC }, + { 1, &hf_s1ap_tABased_01 , ASN1_EXTENSION_ROOT , dissect_s1ap_TABasedQMC }, + { 2, &hf_s1ap_tAIBased_01 , ASN1_EXTENSION_ROOT , dissect_s1ap_TAIBasedQMC }, + { 3, &hf_s1ap_pLMNAreaBased , ASN1_EXTENSION_ROOT , dissect_s1ap_PLMNAreaBasedQMC }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_s1ap_AreaScopeOfQMC(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_s1ap_AreaScopeOfQMC, AreaScopeOfQMC_choice, + NULL); + + return offset; +} + + static const value_string s1ap_PriorityLevel_vals[] = { { 0, "spare" }, { 1, "highest" }, @@ -3499,7 +3742,7 @@ static value_string_ext s1ap_CauseRadioNetwork_vals_ext = VALUE_STRING_EXT_INIT( static int dissect_s1ap_CauseRadioNetwork(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1984 "./asn1/s1ap/s1ap.cnf" +#line 2089 "./asn1/s1ap/s1ap.cnf" guint32 value; offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 36, &value, TRUE, 4, NULL); @@ -3521,7 +3764,7 @@ const value_string s1ap_CauseTransport_vals[] = { static int dissect_s1ap_CauseTransport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1989 "./asn1/s1ap/s1ap.cnf" +#line 2094 "./asn1/s1ap/s1ap.cnf" guint32 value; offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 2, &value, TRUE, 0, NULL); @@ -3546,7 +3789,7 @@ const value_string s1ap_CauseNas_vals[] = { static int dissect_s1ap_CauseNas(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1994 "./asn1/s1ap/s1ap.cnf" +#line 2099 "./asn1/s1ap/s1ap.cnf" guint32 value; offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 4, &value, TRUE, 1, NULL); @@ -3573,7 +3816,7 @@ const value_string s1ap_CauseProtocol_vals[] = { static int dissect_s1ap_CauseProtocol(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1999 "./asn1/s1ap/s1ap.cnf" +#line 2104 "./asn1/s1ap/s1ap.cnf" guint32 value; offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 7, &value, TRUE, 0, NULL); @@ -3599,7 +3842,7 @@ const value_string s1ap_CauseMisc_vals[] = { static int dissect_s1ap_CauseMisc(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 2004 "./asn1/s1ap/s1ap.cnf" +#line 2109 "./asn1/s1ap/s1ap.cnf" guint32 value; offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 6, &value, TRUE, 0, NULL); @@ -3865,7 +4108,7 @@ dissect_s1ap_CellType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, p static int dissect_s1ap_LAC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 979 "./asn1/s1ap/s1ap.cnf" +#line 1049 "./asn1/s1ap/s1ap.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, -1, 2, 2, FALSE, ¶meter_tvb); @@ -3893,7 +4136,7 @@ dissect_s1ap_CI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_t static int dissect_s1ap_RAC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 988 "./asn1/s1ap/s1ap.cnf" +#line 1058 "./asn1/s1ap/s1ap.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, -1, 1, 1, FALSE, ¶meter_tvb); @@ -4590,7 +4833,7 @@ dissect_s1ap_ENB_StatusTransfer_TransparentContainer(tvbuff_t *tvb _U_, int offs static int dissect_s1ap_ENB_UE_S1AP_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1057 "./asn1/s1ap/s1ap.cnf" +#line 1127 "./asn1/s1ap/s1ap.cnf" guint32 enb_ue_s1ap_id; struct s1ap_private_data *s1ap_data = s1ap_get_private_data(actx->pinfo); offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, @@ -4865,6 +5108,89 @@ dissect_s1ap_E_RABLevelQoSParameters(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx } +static const per_sequence_t E_RABUsageReportList_sequence_of[1] = { + { &hf_s1ap_E_RABUsageReportList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_s1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_s1ap_E_RABUsageReportList(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_s1ap_E_RABUsageReportList, E_RABUsageReportList_sequence_of, + 1, maxnooftimeperiods, FALSE); + + return offset; +} + + + +static int +dissect_s1ap_T_startTimestamp(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 962 "./asn1/s1ap/s1ap.cnf" + tvbuff_t *timestamp_tvb = NULL; + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + 4, 4, FALSE, ×tamp_tvb); + + + + +#line 966 "./asn1/s1ap/s1ap.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_s1ap_T_endTimestamp(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 971 "./asn1/s1ap/s1ap.cnf" + tvbuff_t *timestamp_tvb = NULL; + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + 4, 4, FALSE, ×tamp_tvb); + + + + +#line 975 "./asn1/s1ap/s1ap.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_s1ap_INTEGER(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, NULL); + + return offset; +} + + +static const per_sequence_t E_RABUsageReportItem_sequence[] = { + { &hf_s1ap_startTimestamp , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_T_startTimestamp }, + { &hf_s1ap_endTimestamp , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_T_endTimestamp }, + { &hf_s1ap_usageCountUL , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_INTEGER }, + { &hf_s1ap_usageCountDL , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_INTEGER }, + { &hf_s1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_s1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_s1ap_E_RABUsageReportItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_s1ap_E_RABUsageReportItem, E_RABUsageReportItem_sequence); + + return offset; +} + + static int dissect_s1ap_EUTRANRoundTripDelayEstimationInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -4967,6 +5293,16 @@ dissect_s1ap_ExpectedUEBehaviour(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t * static int +dissect_s1ap_ExtendedBitRate(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, + 10000000001U, G_GUINT64_CONSTANT(4000000000000), NULL, TRUE); + + return offset; +} + + + +static int dissect_s1ap_ExtendedRNC_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, 4096U, 65535U, NULL, FALSE); @@ -5144,6 +5480,21 @@ dissect_s1ap_GWContextReleaseIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ } +static const value_string s1ap_HandoverFlag_vals[] = { + { 0, "handoverPreparation" }, + { 0, NULL } +}; + + +static int +dissect_s1ap_HandoverFlag(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 HandoverRestrictionList_sequence[] = { { &hf_s1ap_servingPLMN , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_PLMNidentity }, { &hf_s1ap_equivalentPLMNs, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_s1ap_EPLMNs }, @@ -5387,7 +5738,7 @@ dissect_s1ap_ImmediateMDT(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U static int dissect_s1ap_IMSI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1004 "./asn1/s1ap/s1ap.cnf" +#line 1074 "./asn1/s1ap/s1ap.cnf" tvbuff_t *parameter_tvb; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, 3, 8, FALSE, ¶meter_tvb); @@ -6368,7 +6719,7 @@ tvbuff_t *parameter_tvb=NULL; static int dissect_s1ap_NASSecurityParametersfromE_UTRAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1012 "./asn1/s1ap/s1ap.cnf" +#line 1082 "./asn1/s1ap/s1ap.cnf" tvbuff_t *parameter_tvb; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, FALSE, ¶meter_tvb); @@ -6387,7 +6738,7 @@ dissect_s1ap_NASSecurityParametersfromE_UTRAN(tvbuff_t *tvb _U_, int offset _U_, static int dissect_s1ap_NASSecurityParameterstoE_UTRAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1020 "./asn1/s1ap/s1ap.cnf" +#line 1090 "./asn1/s1ap/s1ap.cnf" tvbuff_t *parameter_tvb; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, FALSE, ¶meter_tvb); @@ -6507,6 +6858,89 @@ dissect_s1ap_NB_IoT_UEIdentityIndexValue(tvbuff_t *tvb _U_, int offset _U_, asn1 static int +dissect_s1ap_NRencryptionAlgorithms(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 989 "./asn1/s1ap/s1ap.cnf" + tvbuff_t *parameter_tvb = NULL; + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 16, 16, TRUE, ¶meter_tvb, NULL); + + if (parameter_tvb) { + const gint *fields[] = { + &hf_s1ap_NRencryptionAlgorithms_NEA1, + &hf_s1ap_NRencryptionAlgorithms_NEA2, + &hf_s1ap_NRencryptionAlgorithms_NEA3, + &hf_s1ap_NRencryptionAlgorithms_Reserved, + NULL + }; + proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_s1ap_NRencryptionAlgorithms); + proto_tree_add_bitmask_list(subtree, parameter_tvb, 0, 2, fields, ENC_BIG_ENDIAN); + } + + + + return offset; +} + + + +static int +dissect_s1ap_NRintegrityProtectionAlgorithms(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 1004 "./asn1/s1ap/s1ap.cnf" + tvbuff_t *parameter_tvb = NULL; + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 16, 16, TRUE, ¶meter_tvb, NULL); + + if (parameter_tvb) { + const gint *fields[] = { + &hf_s1ap_NRintegrityProtectionAlgorithms_NIA1, + &hf_s1ap_NRintegrityProtectionAlgorithms_NIA2, + &hf_s1ap_NRintegrityProtectionAlgorithms_NIA3, + &hf_s1ap_NRintegrityProtectionAlgorithms_Reserved, + NULL + }; + proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_s1ap_NRintegrityProtectionAlgorithms); + proto_tree_add_bitmask_list(subtree, parameter_tvb, 0, 2, fields, ENC_BIG_ENDIAN); + } + + + + return offset; +} + + +static const value_string s1ap_NRrestriction_vals[] = { + { 0, "nRrestricted" }, + { 0, NULL } +}; + + +static int +dissect_s1ap_NRrestriction(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 NRUESecurityCapabilities_sequence[] = { + { &hf_s1ap_nRencryptionAlgorithms, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_NRencryptionAlgorithms }, + { &hf_s1ap_nRintegrityProtectionAlgorithms, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_NRintegrityProtectionAlgorithms }, + { &hf_s1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_s1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_s1ap_NRUESecurityCapabilities(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_s1ap_NRUESecurityCapabilities, NRUESecurityCapabilities_sequence); + + return offset; +} + + + +static int dissect_s1ap_NumberofBroadcastRequest(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, 65535U, NULL, FALSE); @@ -6851,7 +7285,7 @@ static const value_string s1ap_RAT_Type_vals[] = { static int dissect_s1ap_RAT_Type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1042 "./asn1/s1ap/s1ap.cnf" +#line 1112 "./asn1/s1ap/s1ap.cnf" guint32 rat_type = 0xffffffff; struct s1ap_private_data *s1ap_data = s1ap_get_private_data(actx->pinfo); offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, @@ -7208,6 +7642,67 @@ dissect_s1ap_SecurityContext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx } +static const value_string s1ap_SecondaryRATType_vals[] = { + { 0, "nR" }, + { 0, NULL } +}; + + +static int +dissect_s1ap_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, + 1, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string s1ap_SecondaryRATusageDataRequst_vals[] = { + { 0, "requested" }, + { 0, NULL } +}; + + +static int +dissect_s1ap_SecondaryRATusageDataRequst(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 SecondaryRATusageReportList_sequence_of[1] = { + { &hf_s1ap_SecondaryRATusageReportList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_s1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_s1ap_SecondaryRATusageReportList(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_s1ap_SecondaryRATusageReportList, SecondaryRATusageReportList_sequence_of, + 1, maxnoofE_RABs, FALSE); + + return offset; +} + + +static const per_sequence_t SecondaryRATusageReportItem_sequence[] = { + { &hf_s1ap_e_RAB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_E_RAB_ID }, + { &hf_s1ap_secondaryRATType, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_SecondaryRATType }, + { &hf_s1ap_e_RABUsageReportList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_E_RABUsageReportList }, + { &hf_s1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_s1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_s1ap_SecondaryRATusageReportItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_s1ap_SecondaryRATusageReportItem, SecondaryRATusageReportItem_sequence); + + return offset; +} + + static int dissect_s1ap_SerialNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -7646,7 +8141,7 @@ static const per_sequence_t SupportedTAs_Item_sequence[] = { static int dissect_s1ap_SupportedTAs_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1028 "./asn1/s1ap/s1ap.cnf" +#line 1098 "./asn1/s1ap/s1ap.cnf" struct s1ap_private_data *s1ap_data = s1ap_get_private_data(actx->pinfo); if (!PINFO_FD_VISITED(actx->pinfo) && @@ -7661,7 +8156,7 @@ dissect_s1ap_SupportedTAs_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_s1ap_SupportedTAs_Item, SupportedTAs_Item_sequence); -#line 1039 "./asn1/s1ap/s1ap.cnf" +#line 1109 "./asn1/s1ap/s1ap.cnf" s1ap_data->supported_ta = NULL; @@ -8013,6 +8508,32 @@ dissect_s1ap_UEAggregateMaximumBitrate(tvbuff_t *tvb _U_, int offset _U_, asn1_c } + +static int +dissect_s1ap_OCTET_STRING_SIZE_1_1000(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + 1, 1000, FALSE, NULL); + + return offset; +} + + +static const per_sequence_t UEAppLayerMeasConfig_sequence[] = { + { &hf_s1ap_containerForAppLayerMeasConfig, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_OCTET_STRING_SIZE_1_1000 }, + { &hf_s1ap_areaScopeOfQMC , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_AreaScopeOfQMC }, + { &hf_s1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_s1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_s1ap_UEAppLayerMeasConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_s1ap_UEAppLayerMeasConfig, UEAppLayerMeasConfig_sequence); + + return offset; +} + + static const value_string s1ap_UE_RetentionInformation_vals[] = { { 0, "ues-retained" }, { 0, NULL } @@ -8305,6 +8826,30 @@ dissect_s1ap_UEUserPlaneCIoTSupportIndicator(tvbuff_t *tvb _U_, int offset _U_, } + +static int +dissect_s1ap_UE_Application_Layer_Measurement_Capability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 1019 "./asn1/s1ap/s1ap.cnf" + tvbuff_t *parameter_tvb = NULL; + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 8, 8, FALSE, ¶meter_tvb, NULL); + + if(parameter_tvb){ + const gint *fields[] = { + &hf_s1ap_UE_Application_Layer_Measurement_Capability_QoE_Measurement, + &hf_s1ap_UE_Application_Layer_Measurement_Capability_Reserved, + NULL + }; + proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_s1ap_UE_Application_Layer_Measurement_Capability); + proto_tree_add_bitmask_list(subtree, parameter_tvb, 0, 1, fields, ENC_BIG_ENDIAN); + } + + + + return offset; +} + + static const value_string s1ap_VoiceSupportMatchIndicator_vals[] = { { 0, "supported" }, { 1, "not-supported" }, @@ -8591,7 +9136,7 @@ static const per_sequence_t HandoverPreparationFailure_sequence[] = { static int dissect_s1ap_HandoverPreparationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1800 "./asn1/s1ap/s1ap.cnf" +#line 1903 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "HandoverPreparationFailure"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8729,7 +9274,7 @@ static const per_sequence_t HandoverFailure_sequence[] = { static int dissect_s1ap_HandoverFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1806 "./asn1/s1ap/s1ap.cnf" +#line 1909 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "HandoverFailure"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8746,7 +9291,7 @@ static const per_sequence_t HandoverNotify_sequence[] = { static int dissect_s1ap_HandoverNotify(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1808 "./asn1/s1ap/s1ap.cnf" +#line 1911 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "HandoverNotify"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8763,7 +9308,7 @@ static const per_sequence_t PathSwitchRequest_sequence[] = { static int dissect_s1ap_PathSwitchRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1810 "./asn1/s1ap/s1ap.cnf" +#line 1913 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "PathSwitchRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8806,7 +9351,7 @@ static const per_sequence_t PathSwitchRequestAcknowledge_sequence[] = { static int dissect_s1ap_PathSwitchRequestAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1812 "./asn1/s1ap/s1ap.cnf" +#line 1915 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "PathSwitchRequestAcknowledge"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8849,7 +9394,7 @@ static const per_sequence_t PathSwitchRequestFailure_sequence[] = { static int dissect_s1ap_PathSwitchRequestFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1814 "./asn1/s1ap/s1ap.cnf" +#line 1917 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "PathSwitchRequestFailure"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8866,7 +9411,7 @@ static const per_sequence_t HandoverCancel_sequence[] = { static int dissect_s1ap_HandoverCancel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1816 "./asn1/s1ap/s1ap.cnf" +#line 1919 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "HandoverCancel"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8883,7 +9428,7 @@ static const per_sequence_t HandoverCancelAcknowledge_sequence[] = { static int dissect_s1ap_HandoverCancelAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1818 "./asn1/s1ap/s1ap.cnf" +#line 1921 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "HandoverCancelAcknowledge"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8900,7 +9445,7 @@ static const per_sequence_t E_RABSetupRequest_sequence[] = { static int dissect_s1ap_E_RABSetupRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1820 "./asn1/s1ap/s1ap.cnf" +#line 1923 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E-RABSetupRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8950,7 +9495,7 @@ static const per_sequence_t E_RABSetupResponse_sequence[] = { static int dissect_s1ap_E_RABSetupResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1822 "./asn1/s1ap/s1ap.cnf" +#line 1925 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E-RABSetupResponse"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -8998,7 +9543,7 @@ static const per_sequence_t E_RABModifyRequest_sequence[] = { static int dissect_s1ap_E_RABModifyRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1824 "./asn1/s1ap/s1ap.cnf" +#line 1927 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E-RABModifyRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9046,7 +9591,7 @@ static const per_sequence_t E_RABModifyResponse_sequence[] = { static int dissect_s1ap_E_RABModifyResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1826 "./asn1/s1ap/s1ap.cnf" +#line 1929 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E-RABModifyResponse"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9092,7 +9637,7 @@ static const per_sequence_t E_RABReleaseCommand_sequence[] = { static int dissect_s1ap_E_RABReleaseCommand(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1828 "./asn1/s1ap/s1ap.cnf" +#line 1931 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E-RABReleaseCommand"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9109,7 +9654,7 @@ static const per_sequence_t E_RABReleaseResponse_sequence[] = { static int dissect_s1ap_E_RABReleaseResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1830 "./asn1/s1ap/s1ap.cnf" +#line 1933 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E-RABReleaseResponse"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9155,7 +9700,7 @@ static const per_sequence_t E_RABReleaseIndication_sequence[] = { static int dissect_s1ap_E_RABReleaseIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1832 "./asn1/s1ap/s1ap.cnf" +#line 1935 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E-RABReleaseIndication"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9172,7 +9717,7 @@ static const per_sequence_t InitialContextSetupRequest_sequence[] = { static int dissect_s1ap_InitialContextSetupRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1834 "./asn1/s1ap/s1ap.cnf" +#line 1937 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "InitialContextSetupRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9222,7 +9767,7 @@ static const per_sequence_t InitialContextSetupResponse_sequence[] = { static int dissect_s1ap_InitialContextSetupResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1836 "./asn1/s1ap/s1ap.cnf" +#line 1939 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "InitialContextSetupResponse"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9270,7 +9815,7 @@ static const per_sequence_t InitialContextSetupFailure_sequence[] = { static int dissect_s1ap_InitialContextSetupFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1838 "./asn1/s1ap/s1ap.cnf" +#line 1941 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "InitialContextSetupFailure"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9287,7 +9832,7 @@ static const per_sequence_t Paging_sequence[] = { static int dissect_s1ap_Paging(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1840 "./asn1/s1ap/s1ap.cnf" +#line 1943 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Paging"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9333,7 +9878,7 @@ static const per_sequence_t UEContextReleaseRequest_sequence[] = { static int dissect_s1ap_UEContextReleaseRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1842 "./asn1/s1ap/s1ap.cnf" +#line 1945 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextReleaseRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9350,7 +9895,7 @@ static const per_sequence_t UEContextReleaseCommand_sequence[] = { static int dissect_s1ap_UEContextReleaseCommand(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1844 "./asn1/s1ap/s1ap.cnf" +#line 1947 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextReleaseCommand"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9367,7 +9912,7 @@ static const per_sequence_t UEContextReleaseComplete_sequence[] = { static int dissect_s1ap_UEContextReleaseComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1846 "./asn1/s1ap/s1ap.cnf" +#line 1949 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextReleaseComplete"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9384,7 +9929,7 @@ static const per_sequence_t UEContextModificationRequest_sequence[] = { static int dissect_s1ap_UEContextModificationRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1848 "./asn1/s1ap/s1ap.cnf" +#line 1951 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextModificationRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9401,7 +9946,7 @@ static const per_sequence_t UEContextModificationResponse_sequence[] = { static int dissect_s1ap_UEContextModificationResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1850 "./asn1/s1ap/s1ap.cnf" +#line 1953 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextModificationResponse"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9418,7 +9963,7 @@ static const per_sequence_t UEContextModificationFailure_sequence[] = { static int dissect_s1ap_UEContextModificationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1852 "./asn1/s1ap/s1ap.cnf" +#line 1955 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextModificationFailure"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9435,7 +9980,7 @@ static const per_sequence_t UERadioCapabilityMatchRequest_sequence[] = { static int dissect_s1ap_UERadioCapabilityMatchRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1854 "./asn1/s1ap/s1ap.cnf" +#line 1957 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UERadioCapabilityMatchRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9452,7 +9997,7 @@ static const per_sequence_t UERadioCapabilityMatchResponse_sequence[] = { static int dissect_s1ap_UERadioCapabilityMatchResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1856 "./asn1/s1ap/s1ap.cnf" +#line 1959 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UERadioCapabilityMatchResponse"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9529,7 +10074,7 @@ static const per_sequence_t NASNonDeliveryIndication_sequence[] = { static int dissect_s1ap_NASNonDeliveryIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1864 "./asn1/s1ap/s1ap.cnf" +#line 1967 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "NASNonDeliveryIndication"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9546,7 +10091,7 @@ static const per_sequence_t RerouteNASRequest_sequence[] = { static int dissect_s1ap_RerouteNASRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1866 "./asn1/s1ap/s1ap.cnf" +#line 1969 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RerouteNASRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9585,7 +10130,7 @@ static const per_sequence_t NASDeliveryIndication_sequence[] = { static int dissect_s1ap_NASDeliveryIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1970 "./asn1/s1ap/s1ap.cnf" +#line 2073 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "NASDeliveryIndication"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9602,7 +10147,7 @@ static const per_sequence_t Reset_sequence[] = { static int dissect_s1ap_Reset(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1868 "./asn1/s1ap/s1ap.cnf" +#line 1971 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Reset"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9670,7 +10215,7 @@ static const per_sequence_t ResetAcknowledge_sequence[] = { static int dissect_s1ap_ResetAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1870 "./asn1/s1ap/s1ap.cnf" +#line 1973 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ResetAcknowledge"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9715,7 +10260,7 @@ static const per_sequence_t S1SetupRequest_sequence[] = { static int dissect_s1ap_S1SetupRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1874 "./asn1/s1ap/s1ap.cnf" +#line 1977 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "S1SetupRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9732,7 +10277,7 @@ static const per_sequence_t S1SetupResponse_sequence[] = { static int dissect_s1ap_S1SetupResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1876 "./asn1/s1ap/s1ap.cnf" +#line 1979 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "S1SetupResponse"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9749,7 +10294,7 @@ static const per_sequence_t S1SetupFailure_sequence[] = { static int dissect_s1ap_S1SetupFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1878 "./asn1/s1ap/s1ap.cnf" +#line 1981 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "S1SetupFailure"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9766,7 +10311,7 @@ static const per_sequence_t ENBConfigurationUpdate_sequence[] = { static int dissect_s1ap_ENBConfigurationUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1880 "./asn1/s1ap/s1ap.cnf" +#line 1983 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ENBConfigurationUpdate"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9783,7 +10328,7 @@ static const per_sequence_t ENBConfigurationUpdateAcknowledge_sequence[] = { static int dissect_s1ap_ENBConfigurationUpdateAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1882 "./asn1/s1ap/s1ap.cnf" +#line 1985 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ENBConfigurationUpdateAcknowledge"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9800,7 +10345,7 @@ static const per_sequence_t ENBConfigurationUpdateFailure_sequence[] = { static int dissect_s1ap_ENBConfigurationUpdateFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1884 "./asn1/s1ap/s1ap.cnf" +#line 1987 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ENBConfigurationUpdateFailure"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9817,7 +10362,7 @@ static const per_sequence_t MMEConfigurationUpdate_sequence[] = { static int dissect_s1ap_MMEConfigurationUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1886 "./asn1/s1ap/s1ap.cnf" +#line 1989 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "MMEConfigurationUpdate"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9834,7 +10379,7 @@ static const per_sequence_t MMEConfigurationUpdateAcknowledge_sequence[] = { static int dissect_s1ap_MMEConfigurationUpdateAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1888 "./asn1/s1ap/s1ap.cnf" +#line 1991 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "MMEConfigurationUpdateAcknowledge"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9851,7 +10396,7 @@ static const per_sequence_t MMEConfigurationUpdateFailure_sequence[] = { static int dissect_s1ap_MMEConfigurationUpdateFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1890 "./asn1/s1ap/s1ap.cnf" +#line 1993 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "MMEConfigurationUpdateFailure"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9868,7 +10413,7 @@ static const per_sequence_t DownlinkS1cdma2000tunnelling_sequence[] = { static int dissect_s1ap_DownlinkS1cdma2000tunnelling(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1892 "./asn1/s1ap/s1ap.cnf" +#line 1995 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "DownlinkS1cdma2000tunnelling"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9885,7 +10430,7 @@ static const per_sequence_t UplinkS1cdma2000tunnelling_sequence[] = { static int dissect_s1ap_UplinkS1cdma2000tunnelling(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1894 "./asn1/s1ap/s1ap.cnf" +#line 1997 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UplinkS1cdma2000tunnelling"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9902,7 +10447,7 @@ static const per_sequence_t UECapabilityInfoIndication_sequence[] = { static int dissect_s1ap_UECapabilityInfoIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1896 "./asn1/s1ap/s1ap.cnf" +#line 1999 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UECapabilityInfoIndication"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9919,7 +10464,7 @@ static const per_sequence_t ENBStatusTransfer_sequence[] = { static int dissect_s1ap_ENBStatusTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1898 "./asn1/s1ap/s1ap.cnf" +#line 2001 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ENBStatusTransfer"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9936,7 +10481,7 @@ static const per_sequence_t MMEStatusTransfer_sequence[] = { static int dissect_s1ap_MMEStatusTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1900 "./asn1/s1ap/s1ap.cnf" +#line 2003 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "MMEStatusTransfer"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9953,7 +10498,7 @@ static const per_sequence_t TraceStart_sequence[] = { static int dissect_s1ap_TraceStart(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1902 "./asn1/s1ap/s1ap.cnf" +#line 2005 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "TraceStart"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9970,7 +10515,7 @@ static const per_sequence_t TraceFailureIndication_sequence[] = { static int dissect_s1ap_TraceFailureIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1904 "./asn1/s1ap/s1ap.cnf" +#line 2007 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "TraceFailureIndication"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -9987,7 +10532,7 @@ static const per_sequence_t DeactivateTrace_sequence[] = { static int dissect_s1ap_DeactivateTrace(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1906 "./asn1/s1ap/s1ap.cnf" +#line 2009 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "DeactivateTrace"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10004,7 +10549,7 @@ static const per_sequence_t CellTrafficTrace_sequence[] = { static int dissect_s1ap_CellTrafficTrace(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1908 "./asn1/s1ap/s1ap.cnf" +#line 2011 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "CellTrafficTrace"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10021,7 +10566,7 @@ static const per_sequence_t LocationReportingControl_sequence[] = { static int dissect_s1ap_LocationReportingControl(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1910 "./asn1/s1ap/s1ap.cnf" +#line 2013 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "LocationReportingControl"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10038,7 +10583,7 @@ static const per_sequence_t LocationReportingFailureIndication_sequence[] = { static int dissect_s1ap_LocationReportingFailureIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1912 "./asn1/s1ap/s1ap.cnf" +#line 2015 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "LocationReportingFailureIndication"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10055,7 +10600,7 @@ static const per_sequence_t LocationReport_sequence[] = { static int dissect_s1ap_LocationReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1914 "./asn1/s1ap/s1ap.cnf" +#line 2017 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "LocationReport"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10072,7 +10617,7 @@ static const per_sequence_t OverloadStart_sequence[] = { static int dissect_s1ap_OverloadStart(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1916 "./asn1/s1ap/s1ap.cnf" +#line 2019 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "OverloadStart"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10089,7 +10634,7 @@ static const per_sequence_t OverloadStop_sequence[] = { static int dissect_s1ap_OverloadStop(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1918 "./asn1/s1ap/s1ap.cnf" +#line 2021 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "OverloadStop"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10106,7 +10651,7 @@ static const per_sequence_t WriteReplaceWarningRequest_sequence[] = { static int dissect_s1ap_WriteReplaceWarningRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1920 "./asn1/s1ap/s1ap.cnf" +#line 2023 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "WriteReplaceWarningRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10123,7 +10668,7 @@ static const per_sequence_t WriteReplaceWarningResponse_sequence[] = { static int dissect_s1ap_WriteReplaceWarningResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1922 "./asn1/s1ap/s1ap.cnf" +#line 2025 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "WriteReplaceWarningResponse"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10140,7 +10685,7 @@ static const per_sequence_t ENBDirectInformationTransfer_sequence[] = { static int dissect_s1ap_ENBDirectInformationTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1924 "./asn1/s1ap/s1ap.cnf" +#line 2027 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ENBDirectInformationTransfer"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10177,7 +10722,7 @@ static const per_sequence_t MMEDirectInformationTransfer_sequence[] = { static int dissect_s1ap_MMEDirectInformationTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1926 "./asn1/s1ap/s1ap.cnf" +#line 2029 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "MMEDirectInformationTransfer"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10194,7 +10739,7 @@ static const per_sequence_t ENBConfigurationTransfer_sequence[] = { static int dissect_s1ap_ENBConfigurationTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1928 "./asn1/s1ap/s1ap.cnf" +#line 2031 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ENBConfigurationTransfer"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10211,7 +10756,7 @@ static const per_sequence_t MMEConfigurationTransfer_sequence[] = { static int dissect_s1ap_MMEConfigurationTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1930 "./asn1/s1ap/s1ap.cnf" +#line 2033 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "MMEConfigurationTransfer"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10228,7 +10773,7 @@ static const per_sequence_t PrivateMessage_sequence[] = { static int dissect_s1ap_PrivateMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1932 "./asn1/s1ap/s1ap.cnf" +#line 2035 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "PrivateMessage"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10245,7 +10790,7 @@ static const per_sequence_t KillRequest_sequence[] = { static int dissect_s1ap_KillRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1934 "./asn1/s1ap/s1ap.cnf" +#line 2037 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "KillRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10262,7 +10807,7 @@ static const per_sequence_t KillResponse_sequence[] = { static int dissect_s1ap_KillResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1936 "./asn1/s1ap/s1ap.cnf" +#line 2039 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "KillResponse"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10279,7 +10824,7 @@ static const per_sequence_t PWSRestartIndication_sequence[] = { static int dissect_s1ap_PWSRestartIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1938 "./asn1/s1ap/s1ap.cnf" +#line 2041 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "PWSRestartIndication"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10296,7 +10841,7 @@ static const per_sequence_t PWSFailureIndication_sequence[] = { static int dissect_s1ap_PWSFailureIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1940 "./asn1/s1ap/s1ap.cnf" +#line 2043 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "PWSFailureIndication"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10313,7 +10858,7 @@ static const per_sequence_t DownlinkUEAssociatedLPPaTransport_sequence[] = { static int dissect_s1ap_DownlinkUEAssociatedLPPaTransport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1942 "./asn1/s1ap/s1ap.cnf" +#line 2045 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "DownlinkUEAssociatedLPPaTransport"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10330,7 +10875,7 @@ static const per_sequence_t UplinkUEAssociatedLPPaTransport_sequence[] = { static int dissect_s1ap_UplinkUEAssociatedLPPaTransport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1944 "./asn1/s1ap/s1ap.cnf" +#line 2047 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UplinkUEAssociatedLPPaTransport"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10347,7 +10892,7 @@ static const per_sequence_t DownlinkNonUEAssociatedLPPaTransport_sequence[] = { static int dissect_s1ap_DownlinkNonUEAssociatedLPPaTransport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1946 "./asn1/s1ap/s1ap.cnf" +#line 2049 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "DownlinkNonUEAssociatedLPPaTransport"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10364,7 +10909,7 @@ static const per_sequence_t UplinkNonUEAssociatedLPPaTransport_sequence[] = { static int dissect_s1ap_UplinkNonUEAssociatedLPPaTransport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1948 "./asn1/s1ap/s1ap.cnf" +#line 2051 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UplinkNonUEAssociatedLPPaTransport"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10381,7 +10926,7 @@ static const per_sequence_t E_RABModificationIndication_sequence[] = { static int dissect_s1ap_E_RABModificationIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1950 "./asn1/s1ap/s1ap.cnf" +#line 2053 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E-RABModificationIndication"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10468,7 +11013,7 @@ static const per_sequence_t E_RABModificationConfirm_sequence[] = { static int dissect_s1ap_E_RABModificationConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1952 "./asn1/s1ap/s1ap.cnf" +#line 2055 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E-RABModificationConfirm"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10514,7 +11059,7 @@ static const per_sequence_t UEContextModificationIndication_sequence[] = { static int dissect_s1ap_UEContextModificationIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1954 "./asn1/s1ap/s1ap.cnf" +#line 2057 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextModificationIndication"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10531,7 +11076,7 @@ static const per_sequence_t UEContextModificationConfirm_sequence[] = { static int dissect_s1ap_UEContextModificationConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1956 "./asn1/s1ap/s1ap.cnf" +#line 2059 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextModificationConfirm"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10548,7 +11093,7 @@ static const per_sequence_t UEContextSuspendRequest_sequence[] = { static int dissect_s1ap_UEContextSuspendRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1958 "./asn1/s1ap/s1ap.cnf" +#line 2061 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextSuspendRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10565,7 +11110,7 @@ static const per_sequence_t UEContextSuspendResponse_sequence[] = { static int dissect_s1ap_UEContextSuspendResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1960 "./asn1/s1ap/s1ap.cnf" +#line 2063 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextSuspendResponse"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10582,7 +11127,7 @@ static const per_sequence_t UEContextResumeRequest_sequence[] = { static int dissect_s1ap_UEContextResumeRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1962 "./asn1/s1ap/s1ap.cnf" +#line 2065 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextResumeRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10624,7 +11169,7 @@ static const per_sequence_t UEContextResumeResponse_sequence[] = { static int dissect_s1ap_UEContextResumeResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1964 "./asn1/s1ap/s1ap.cnf" +#line 2067 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextResumeResponse"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10666,7 +11211,7 @@ static const per_sequence_t UEContextResumeFailure_sequence[] = { static int dissect_s1ap_UEContextResumeFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1966 "./asn1/s1ap/s1ap.cnf" +#line 2069 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEContextResumeFailure"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10683,7 +11228,7 @@ static const per_sequence_t ConnectionEstablishmentIndication_sequence[] = { static int dissect_s1ap_ConnectionEstablishmentIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1968 "./asn1/s1ap/s1ap.cnf" +#line 2071 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ConnectionEstablishmentIndication"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10700,7 +11245,7 @@ static const per_sequence_t RetrieveUEInformation_sequence[] = { static int dissect_s1ap_RetrieveUEInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1972 "./asn1/s1ap/s1ap.cnf" +#line 2075 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RetrieveUEInformation"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10717,7 +11262,7 @@ static const per_sequence_t UEInformationTransfer_sequence[] = { static int dissect_s1ap_UEInformationTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1974 "./asn1/s1ap/s1ap.cnf" +#line 2077 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "UEInformationTransfer"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10734,7 +11279,7 @@ static const per_sequence_t ENBCPRelocationIndication_sequence[] = { static int dissect_s1ap_ENBCPRelocationIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1976 "./asn1/s1ap/s1ap.cnf" +#line 2079 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ENBCPRelocationIndication"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10751,7 +11296,7 @@ static const per_sequence_t MMECPRelocationIndication_sequence[] = { static int dissect_s1ap_MMECPRelocationIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1978 "./asn1/s1ap/s1ap.cnf" +#line 2081 "./asn1/s1ap/s1ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "MMECPRelocationIndication"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -10761,6 +11306,23 @@ dissect_s1ap_MMECPRelocationIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_c } +static const per_sequence_t SecondaryRATReport_sequence[] = { + { &hf_s1ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_ProtocolIE_Container }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_s1ap_SecondaryRATReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 2083 "./asn1/s1ap/s1ap.cnf" + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SecondaryRATReport"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_s1ap_SecondaryRATReport, SecondaryRATReport_sequence); + + return offset; +} + + static int dissect_s1ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -12087,6 +12649,14 @@ static int dissect_E_RABLevelQoSParameters_PDU(tvbuff_t *tvb _U_, packet_info *p offset += 7; offset >>= 3; return offset; } +static int dissect_E_RABUsageReportItem_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_s1ap_E_RABUsageReportItem(tvb, offset, &asn1_ctx, tree, hf_s1ap_E_RABUsageReportItem_PDU); + offset += 7; offset >>= 3; + return offset; +} static int dissect_EUTRAN_CGI_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; @@ -12111,6 +12681,14 @@ static int dissect_ExpectedUEBehaviour_PDU(tvbuff_t *tvb _U_, packet_info *pinfo offset += 7; offset >>= 3; return offset; } +static int dissect_ExtendedBitRate_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_s1ap_ExtendedBitRate(tvb, offset, &asn1_ctx, tree, hf_s1ap_ExtendedBitRate_PDU); + offset += 7; offset >>= 3; + return offset; +} static int dissect_ExtendedRepetitionPeriod_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; @@ -12151,6 +12729,14 @@ static int dissect_GWContextReleaseIndication_PDU(tvbuff_t *tvb _U_, packet_info offset += 7; offset >>= 3; return offset; } +static int dissect_HandoverFlag_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_s1ap_HandoverFlag(tvb, offset, &asn1_ctx, tree, hf_s1ap_HandoverFlag_PDU); + offset += 7; offset >>= 3; + return offset; +} static int dissect_HandoverRestrictionList_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; @@ -12431,6 +13017,22 @@ static int dissect_NB_IoT_UEIdentityIndexValue_PDU(tvbuff_t *tvb _U_, packet_inf offset += 7; offset >>= 3; return offset; } +static int dissect_NRrestriction_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_s1ap_NRrestriction(tvb, offset, &asn1_ctx, tree, hf_s1ap_NRrestriction_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_NRUESecurityCapabilities_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_s1ap_NRUESecurityCapabilities(tvb, offset, &asn1_ctx, tree, hf_s1ap_NRUESecurityCapabilities_PDU); + offset += 7; offset >>= 3; + return offset; +} static int dissect_NumberofBroadcastRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; @@ -12607,6 +13209,30 @@ static int dissect_SecurityContext_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_ offset += 7; offset >>= 3; return offset; } +static int dissect_SecondaryRATusageDataRequst_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_s1ap_SecondaryRATusageDataRequst(tvb, offset, &asn1_ctx, tree, hf_s1ap_SecondaryRATusageDataRequst_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_SecondaryRATusageReportList_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_s1ap_SecondaryRATusageReportList(tvb, offset, &asn1_ctx, tree, hf_s1ap_SecondaryRATusageReportList_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_SecondaryRATusageReportItem_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_s1ap_SecondaryRATusageReportItem(tvb, offset, &asn1_ctx, tree, hf_s1ap_SecondaryRATusageReportItem_PDU); + offset += 7; offset >>= 3; + return offset; +} static int dissect_SerialNumber_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; @@ -12839,6 +13465,14 @@ static int dissect_UEAggregateMaximumBitrate_PDU(tvbuff_t *tvb _U_, packet_info offset += 7; offset >>= 3; return offset; } +static int dissect_UEAppLayerMeasConfig_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_s1ap_UEAppLayerMeasConfig(tvb, offset, &asn1_ctx, tree, hf_s1ap_UEAppLayerMeasConfig_PDU); + offset += 7; offset >>= 3; + return offset; +} static int dissect_UE_RetentionInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; @@ -12959,6 +13593,14 @@ static int dissect_UEUserPlaneCIoTSupportIndicator_PDU(tvbuff_t *tvb _U_, packet offset += 7; offset >>= 3; return offset; } +static int dissect_UE_Application_Layer_Measurement_Capability_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_s1ap_UE_Application_Layer_Measurement_Capability(tvb, offset, &asn1_ctx, tree, hf_s1ap_UE_Application_Layer_Measurement_Capability_PDU); + offset += 7; offset >>= 3; + return offset; +} static int dissect_VoiceSupportMatchIndicator_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; @@ -14111,6 +14753,14 @@ static int dissect_MMECPRelocationIndication_PDU(tvbuff_t *tvb _U_, packet_info offset += 7; offset >>= 3; return offset; } +static int dissect_SecondaryRATReport_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_s1ap_SecondaryRATReport(tvb, offset, &asn1_ctx, tree, hf_s1ap_SecondaryRATReport_PDU); + offset += 7; offset >>= 3; + return offset; +} static int dissect_S1AP_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; @@ -14154,7 +14804,7 @@ int dissect_s1ap_SONtransferCause_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, /*--- End of included file: packet-s1ap-fn.c ---*/ -#line 344 "./asn1/s1ap/packet-s1ap-template.c" +#line 358 "./asn1/s1ap/packet-s1ap-template.c" static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) { @@ -14469,6 +15119,13 @@ proto_reg_handoff_s1ap(void) dissector_add_uint("s1ap.ies", id_DL_CP_SecurityInformation, create_dissector_handle(dissect_DL_CP_SecurityInformation_PDU, proto_s1ap)); dissector_add_uint("s1ap.ies", id_UE_Level_QoS_Parameters, create_dissector_handle(dissect_E_RABLevelQoSParameters_PDU, proto_s1ap)); dissector_add_uint("s1ap.ies", id_UL_CP_SecurityInformation, create_dissector_handle(dissect_UL_CP_SecurityInformation_PDU, proto_s1ap)); + dissector_add_uint("s1ap.ies", id_E_RABUsageReportItem, create_dissector_handle(dissect_E_RABUsageReportItem_PDU, proto_s1ap)); + dissector_add_uint("s1ap.ies", id_SecondaryRATusageReportItem, create_dissector_handle(dissect_SecondaryRATusageReportItem_PDU, proto_s1ap)); + dissector_add_uint("s1ap.ies", id_NRUESecurityCapabilities, create_dissector_handle(dissect_NRUESecurityCapabilities_PDU, proto_s1ap)); + dissector_add_uint("s1ap.ies", id_SecondaryRATusageDataRequst, create_dissector_handle(dissect_SecondaryRATusageDataRequst_PDU, proto_s1ap)); + dissector_add_uint("s1ap.ies", id_SecondaryRATusageReportList, create_dissector_handle(dissect_SecondaryRATusageReportList_PDU, proto_s1ap)); + dissector_add_uint("s1ap.ies", id_UE_Application_Layer_Measurement_Capability, create_dissector_handle(dissect_UE_Application_Layer_Measurement_Capability_PDU, proto_s1ap)); + dissector_add_uint("s1ap.ies", id_HandoverFlag, create_dissector_handle(dissect_HandoverFlag_PDU, proto_s1ap)); dissector_add_uint("s1ap.extension", id_Data_Forwarding_Not_Possible, create_dissector_handle(dissect_Data_Forwarding_Not_Possible_PDU, proto_s1ap)); dissector_add_uint("s1ap.extension", id_Time_Synchronisation_Info, create_dissector_handle(dissect_TimeSynchronisationInfo_PDU, proto_s1ap)); dissector_add_uint("s1ap.extension", id_x2TNLConfigurationInfo, create_dissector_handle(dissect_X2TNLConfigurationInfo_PDU, proto_s1ap)); @@ -14503,6 +15160,14 @@ proto_reg_handoff_s1ap(void) dissector_add_uint("s1ap.extension", id_M7Configuration, create_dissector_handle(dissect_M7Configuration_PDU, proto_s1ap)); dissector_add_uint("s1ap.extension", id_RAT_Type, create_dissector_handle(dissect_RAT_Type_PDU, proto_s1ap)); dissector_add_uint("s1ap.extension", id_BearerType, create_dissector_handle(dissect_BearerType_PDU, proto_s1ap)); + dissector_add_uint("s1ap.extension", id_extended_e_RAB_MaximumBitrateDL, create_dissector_handle(dissect_ExtendedBitRate_PDU, proto_s1ap)); + dissector_add_uint("s1ap.extension", id_extended_e_RAB_MaximumBitrateUL, create_dissector_handle(dissect_ExtendedBitRate_PDU, proto_s1ap)); + dissector_add_uint("s1ap.extension", id_extended_e_RAB_GuaranteedBitrateDL, create_dissector_handle(dissect_ExtendedBitRate_PDU, proto_s1ap)); + dissector_add_uint("s1ap.extension", id_extended_e_RAB_GuaranteedBitrateUL, create_dissector_handle(dissect_ExtendedBitRate_PDU, proto_s1ap)); + dissector_add_uint("s1ap.extension", id_NRrestriction, create_dissector_handle(dissect_NRrestriction_PDU, proto_s1ap)); + dissector_add_uint("s1ap.extension", id_UEAppLayerMeasConfig, create_dissector_handle(dissect_UEAppLayerMeasConfig_PDU, proto_s1ap)); + dissector_add_uint("s1ap.extension", id_extended_uEaggregateMaximumBitRateDL, create_dissector_handle(dissect_ExtendedBitRate_PDU, proto_s1ap)); + dissector_add_uint("s1ap.extension", id_extended_uEaggregateMaximumBitRateUL, create_dissector_handle(dissect_ExtendedBitRate_PDU, proto_s1ap)); dissector_add_uint("s1ap.proc.imsg", id_HandoverPreparation, create_dissector_handle(dissect_HandoverRequired_PDU, proto_s1ap)); dissector_add_uint("s1ap.proc.sout", id_HandoverPreparation, create_dissector_handle(dissect_HandoverCommand_PDU, proto_s1ap)); dissector_add_uint("s1ap.proc.uout", id_HandoverPreparation, create_dissector_handle(dissect_HandoverPreparationFailure_PDU, proto_s1ap)); @@ -14595,10 +15260,11 @@ proto_reg_handoff_s1ap(void) dissector_add_uint("s1ap.proc.imsg", id_UEInformationTransfer, create_dissector_handle(dissect_UEInformationTransfer_PDU, proto_s1ap)); dissector_add_uint("s1ap.proc.imsg", id_eNBCPRelocationIndication, create_dissector_handle(dissect_ENBCPRelocationIndication_PDU, proto_s1ap)); dissector_add_uint("s1ap.proc.imsg", id_MMECPRelocationIndication, create_dissector_handle(dissect_MMECPRelocationIndication_PDU, proto_s1ap)); + dissector_add_uint("s1ap.proc.imsg", id_SecondaryRATReport, create_dissector_handle(dissect_SecondaryRATReport_PDU, proto_s1ap)); /*--- End of included file: packet-s1ap-dis-tab.c ---*/ -#line 460 "./asn1/s1ap/packet-s1ap-template.c" +#line 474 "./asn1/s1ap/packet-s1ap-template.c" } else { if (SctpPort != 0) { dissector_delete_uint("sctp.port", SctpPort, s1ap_handle); @@ -14757,6 +15423,46 @@ void proto_register_s1ap(void) { { "Reserved", "s1ap.MDT_Location_Info.Reserved", FT_UINT8, BASE_HEX, NULL, 0x3f, NULL, HFILL }}, + { &hf_s1ap_NRencryptionAlgorithms_NEA1, + { "128-NEA1", "s1ap.NRencryptionAlgorithms.NEA1", + FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x8000, + NULL, HFILL }}, + { &hf_s1ap_NRencryptionAlgorithms_NEA2, + { "128-NEA2", "s1ap.NRencryptionAlgorithms.NEA2", + FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x4000, + NULL, HFILL }}, + { &hf_s1ap_NRencryptionAlgorithms_NEA3, + { "128-NEA3", "s1ap.NRencryptionAlgorithms.NEA3", + FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x2000, + NULL, HFILL }}, + { &hf_s1ap_NRencryptionAlgorithms_Reserved, + { "Reserved", "s1ap.NRencryptionAlgorithms.Reserved", + FT_UINT16, BASE_HEX, NULL, 0x1fff, + NULL, HFILL }}, + { &hf_s1ap_NRintegrityProtectionAlgorithms_NIA1, + { "128-NIA1", "s1ap.NRintegrityProtectionAlgorithms.NIA1", + FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x8000, + NULL, HFILL }}, + { &hf_s1ap_NRintegrityProtectionAlgorithms_NIA2, + { "128-NIA2", "s1ap.NRintegrityProtectionAlgorithms.NIA2", + FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x4000, + NULL, HFILL }}, + { &hf_s1ap_NRintegrityProtectionAlgorithms_NIA3, + { "128-NIA3", "s1ap.NRintegrityProtectionAlgorithms.NIA3", + FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x2000, + NULL, HFILL }}, + { &hf_s1ap_NRintegrityProtectionAlgorithms_Reserved, + { "Reserved", "s1ap.NRintegrityProtectionAlgorithms.Reserved", + FT_UINT16, BASE_HEX, NULL, 0x1fff, + NULL, HFILL }}, + { &hf_s1ap_UE_Application_Layer_Measurement_Capability_QoE_Measurement, + { "QoE Measurement", "s1ap.UE_Application_Layer_Measurement_Capability.QoE_Measurement", + FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x80, + NULL, HFILL }}, + { &hf_s1ap_UE_Application_Layer_Measurement_Capability_Reserved, + { "Reserved", "s1ap.UE_Application_Layer_Measurement_Capability.Reserved", + FT_UINT8, BASE_HEX, NULL, 0x7f, + NULL, HFILL }}, /*--- Included file: packet-s1ap-hfarr.c ---*/ #line 1 "./asn1/s1ap/packet-s1ap-hfarr.c" @@ -14952,6 +15658,10 @@ void proto_register_s1ap(void) { { "E-RABLevelQoSParameters", "s1ap.E_RABLevelQoSParameters_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_s1ap_E_RABUsageReportItem_PDU, + { "E-RABUsageReportItem", "s1ap.E_RABUsageReportItem_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_s1ap_EUTRAN_CGI_PDU, { "EUTRAN-CGI", "s1ap.EUTRAN_CGI_element", FT_NONE, BASE_NONE, NULL, 0, @@ -14964,6 +15674,10 @@ void proto_register_s1ap(void) { { "ExpectedUEBehaviour", "s1ap.ExpectedUEBehaviour_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_s1ap_ExtendedBitRate_PDU, + { "ExtendedBitRate", "s1ap.ExtendedBitRate", + FT_UINT64, BASE_DEC|BASE_UNIT_STRING, &units_bit_sec, 0, + NULL, HFILL }}, { &hf_s1ap_ExtendedRepetitionPeriod_PDU, { "ExtendedRepetitionPeriod", "s1ap.ExtendedRepetitionPeriod", FT_UINT32, BASE_DEC|BASE_UNIT_STRING, &units_seconds, 0, @@ -14984,6 +15698,10 @@ void proto_register_s1ap(void) { { "GWContextReleaseIndication", "s1ap.GWContextReleaseIndication", FT_UINT32, BASE_DEC, VALS(s1ap_GWContextReleaseIndication_vals), 0, NULL, HFILL }}, + { &hf_s1ap_HandoverFlag_PDU, + { "HandoverFlag", "s1ap.HandoverFlag", + FT_UINT32, BASE_DEC, VALS(s1ap_HandoverFlag_vals), 0, + NULL, HFILL }}, { &hf_s1ap_HandoverRestrictionList_PDU, { "HandoverRestrictionList", "s1ap.HandoverRestrictionList_element", FT_NONE, BASE_NONE, NULL, 0, @@ -15124,6 +15842,14 @@ void proto_register_s1ap(void) { { "NB-IoT-UEIdentityIndexValue", "s1ap.NB_IoT_UEIdentityIndexValue", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_s1ap_NRrestriction_PDU, + { "NRrestriction", "s1ap.NRrestriction", + FT_UINT32, BASE_DEC, VALS(s1ap_NRrestriction_vals), 0, + NULL, HFILL }}, + { &hf_s1ap_NRUESecurityCapabilities_PDU, + { "NRUESecurityCapabilities", "s1ap.NRUESecurityCapabilities_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_s1ap_NumberofBroadcastRequest_PDU, { "NumberofBroadcastRequest", "s1ap.NumberofBroadcastRequest", FT_UINT32, BASE_DEC, NULL, 0, @@ -15212,6 +15938,18 @@ void proto_register_s1ap(void) { { "SecurityContext", "s1ap.SecurityContext_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_s1ap_SecondaryRATusageDataRequst_PDU, + { "SecondaryRATusageDataRequst", "s1ap.SecondaryRATusageDataRequst", + FT_UINT32, BASE_DEC, VALS(s1ap_SecondaryRATusageDataRequst_vals), 0, + NULL, HFILL }}, + { &hf_s1ap_SecondaryRATusageReportList_PDU, + { "SecondaryRATusageReportList", "s1ap.SecondaryRATusageReportList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_s1ap_SecondaryRATusageReportItem_PDU, + { "SecondaryRATusageReportItem", "s1ap.SecondaryRATusageReportItem_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_s1ap_SerialNumber_PDU, { "SerialNumber", "s1ap.SerialNumber", FT_BYTES, BASE_NONE, NULL, 0, @@ -15328,6 +16066,10 @@ void proto_register_s1ap(void) { { "UEAggregateMaximumBitrate", "s1ap.UEAggregateMaximumBitrate_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_s1ap_UEAppLayerMeasConfig_PDU, + { "UEAppLayerMeasConfig", "s1ap.UEAppLayerMeasConfig_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_s1ap_UE_RetentionInformation_PDU, { "UE-RetentionInformation", "s1ap.UE_RetentionInformation", FT_UINT32, BASE_DEC, VALS(s1ap_UE_RetentionInformation_vals), 0, @@ -15388,6 +16130,10 @@ void proto_register_s1ap(void) { { "UEUserPlaneCIoTSupportIndicator", "s1ap.UEUserPlaneCIoTSupportIndicator", FT_UINT32, BASE_DEC, VALS(s1ap_UEUserPlaneCIoTSupportIndicator_vals), 0, NULL, HFILL }}, + { &hf_s1ap_UE_Application_Layer_Measurement_Capability_PDU, + { "UE-Application-Layer-Measurement-Capability", "s1ap.UE_Application_Layer_Measurement_Capability", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_s1ap_VoiceSupportMatchIndicator_PDU, { "VoiceSupportMatchIndicator", "s1ap.VoiceSupportMatchIndicator", FT_UINT32, BASE_DEC, VALS(s1ap_VoiceSupportMatchIndicator_vals), 0, @@ -15964,6 +16710,10 @@ void proto_register_s1ap(void) { { "MMECPRelocationIndication", "s1ap.MMECPRelocationIndication_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_s1ap_SecondaryRATReport_PDU, + { "SecondaryRATReport", "s1ap.SecondaryRATReport_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_s1ap_S1AP_PDU_PDU, { "S1AP-PDU", "s1ap.S1AP_PDU", FT_UINT32, BASE_DEC, VALS(s1ap_S1AP_PDU_vals), 0, @@ -16064,6 +16814,22 @@ void proto_register_s1ap(void) { { "tAIBased", "s1ap.tAIBased_element", FT_NONE, BASE_NONE, NULL, 0, "TAIBasedMDT", HFILL }}, + { &hf_s1ap_cellBased_01, + { "cellBased", "s1ap.cellBased_element", + FT_NONE, BASE_NONE, NULL, 0, + "CellBasedQMC", HFILL }}, + { &hf_s1ap_tABased_01, + { "tABased", "s1ap.tABased_element", + FT_NONE, BASE_NONE, NULL, 0, + "TABasedQMC", HFILL }}, + { &hf_s1ap_tAIBased_01, + { "tAIBased", "s1ap.tAIBased_element", + FT_NONE, BASE_NONE, NULL, 0, + "TAIBasedQMC", HFILL }}, + { &hf_s1ap_pLMNAreaBased, + { "pLMNAreaBased", "s1ap.pLMNAreaBased_element", + FT_NONE, BASE_NONE, NULL, 0, + "PLMNAreaBasedQMC", HFILL }}, { &hf_s1ap_priorityLevel, { "priorityLevel", "s1ap.priorityLevel", FT_UINT32, BASE_DEC, VALS(s1ap_PriorityLevel_vals), 0, @@ -16204,6 +16970,14 @@ void proto_register_s1ap(void) { { "EUTRAN-CGI", "s1ap.EUTRAN_CGI_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_s1ap_cellIdListforQMC, + { "cellIdListforQMC", "s1ap.cellIdListforQMC", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_s1ap_CellIdListforQMC_item, + { "EUTRAN-CGI", "s1ap.EUTRAN_CGI_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_s1ap_cdma2000OneXMEID, { "cdma2000OneXMEID", "s1ap.cdma2000OneXMEID", FT_BYTES, BASE_NONE, NULL, 0, @@ -16428,6 +17202,26 @@ void proto_register_s1ap(void) { { "gbrQosInformation", "s1ap.gbrQosInformation_element", FT_NONE, BASE_NONE, NULL, 0, "GBR_QosInformation", HFILL }}, + { &hf_s1ap_E_RABUsageReportList_item, + { "ProtocolIE-SingleContainer", "s1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_s1ap_startTimestamp, + { "startTimestamp", "s1ap.startTimestamp", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_s1ap_endTimestamp, + { "endTimestamp", "s1ap.endTimestamp", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_s1ap_usageCountUL, + { "usageCountUL", "s1ap.usageCountUL", + FT_INT32, BASE_DEC|BASE_UNIT_STRING, &units_octet_octets, 0, + "INTEGER", HFILL }}, + { &hf_s1ap_usageCountDL, + { "usageCountDL", "s1ap.usageCountDL", + FT_INT32, BASE_DEC|BASE_UNIT_STRING, &units_octet_octets, 0, + "INTEGER", HFILL }}, { &hf_s1ap_cell_ID, { "cell-ID", "s1ap.cell_ID", FT_BYTES, BASE_NONE, NULL, 0, @@ -16700,6 +17494,14 @@ void proto_register_s1ap(void) { { "nB-IoT-pagingTimeWindow", "s1ap.nB_IoT_pagingTimeWindow", FT_UINT32, BASE_DEC, VALS(s1ap_NB_IoT_PagingTimeWindow_vals), 0, NULL, HFILL }}, + { &hf_s1ap_nRencryptionAlgorithms, + { "nRencryptionAlgorithms", "s1ap.nRencryptionAlgorithms", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_s1ap_nRintegrityProtectionAlgorithms, + { "nRintegrityProtectionAlgorithms", "s1ap.nRintegrityProtectionAlgorithms", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_s1ap_overloadAction, { "overloadAction", "s1ap.overloadAction", FT_UINT32, BASE_DEC, VALS(s1ap_OverloadAction_vals), 0, @@ -16732,6 +17534,14 @@ void proto_register_s1ap(void) { { "reportAmount", "s1ap.reportAmount", FT_UINT32, BASE_DEC, VALS(s1ap_ReportAmountMDT_vals), 0, "ReportAmountMDT", HFILL }}, + { &hf_s1ap_plmnListforQMC, + { "plmnListforQMC", "s1ap.plmnListforQMC", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_s1ap_PLMNListforQMC_item, + { "PLMNidentity", "s1ap.PLMNidentity", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_s1ap_proSeDirectDiscovery, { "proSeDirectDiscovery", "s1ap.proSeDirectDiscovery", FT_UINT32, BASE_DEC, VALS(s1ap_ProSeDirectDiscovery_vals), 0, @@ -16816,6 +17626,18 @@ void proto_register_s1ap(void) { { "nextHopParameter", "s1ap.nextHopParameter", FT_BYTES, BASE_NONE, NULL, 0, "SecurityKey", HFILL }}, + { &hf_s1ap_SecondaryRATusageReportList_item, + { "ProtocolIE-SingleContainer", "s1ap.ProtocolIE_SingleContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_s1ap_secondaryRATType, + { "secondaryRATType", "s1ap.secondaryRATType", + FT_UINT32, BASE_DEC, VALS(s1ap_SecondaryRATType_vals), 0, + NULL, HFILL }}, + { &hf_s1ap_e_RABUsageReportList, + { "e-RABUsageReportList", "s1ap.e_RABUsageReportList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, { &hf_s1ap_sONInformationRequest, { "sONInformationRequest", "s1ap.sONInformationRequest", FT_UINT32, BASE_DEC, VALS(s1ap_SONInformationRequest_vals), 0, @@ -16972,6 +17794,22 @@ void proto_register_s1ap(void) { { "TAC", "s1ap.TAC", FT_UINT16, BASE_DEC_HEX, NULL, 0, NULL, HFILL }}, + { &hf_s1ap_tAListforQMC, + { "tAListforQMC", "s1ap.tAListforQMC", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_s1ap_TAListforQMC_item, + { "TAC", "s1ap.TAC", + FT_UINT16, BASE_DEC_HEX, NULL, 0, + NULL, HFILL }}, + { &hf_s1ap_tAIListforQMC, + { "tAIListforQMC", "s1ap.tAIListforQMC", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_s1ap_TAIListforQMC_item, + { "TAI", "s1ap.TAI_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_s1ap_CompletedCellinTAI_item, { "CompletedCellinTAI-Item", "s1ap.CompletedCellinTAI_Item_element", FT_NONE, BASE_NONE, NULL, 0, @@ -17032,6 +17870,14 @@ void proto_register_s1ap(void) { { "uEaggregateMaximumBitRateUL", "s1ap.uEaggregateMaximumBitRateUL", FT_UINT64, BASE_DEC|BASE_UNIT_STRING, &units_bit_sec, 0, "BitRate", HFILL }}, + { &hf_s1ap_containerForAppLayerMeasConfig, + { "containerForAppLayerMeasConfig", "s1ap.containerForAppLayerMeasConfig", + FT_BYTES, BASE_NONE, NULL, 0, + "OCTET_STRING_SIZE_1_1000", HFILL }}, + { &hf_s1ap_areaScopeOfQMC, + { "areaScopeOfQMC", "s1ap.areaScopeOfQMC", + FT_UINT32, BASE_DEC, VALS(s1ap_AreaScopeOfQMC_vals), 0, + NULL, HFILL }}, { &hf_s1ap_uE_S1AP_ID_pair, { "uE-S1AP-ID-pair", "s1ap.uE_S1AP_ID_pair_element", FT_NONE, BASE_NONE, NULL, 0, @@ -17538,7 +18384,7 @@ void proto_register_s1ap(void) { NULL, HFILL }}, /*--- End of included file: packet-s1ap-hfarr.c ---*/ -#line 619 "./asn1/s1ap/packet-s1ap-template.c" +#line 673 "./asn1/s1ap/packet-s1ap-template.c" }; /* List of subtrees */ @@ -17572,6 +18418,9 @@ void proto_register_s1ap(void) { &ett_s1ap_MDT_Location_Info, &ett_s1ap_IMSI, &ett_s1ap_NASSecurityParameters, + &ett_s1ap_NRencryptionAlgorithms, + &ett_s1ap_NRintegrityProtectionAlgorithms, + &ett_s1ap_UE_Application_Layer_Measurement_Capability, /*--- Included file: packet-s1ap-ettarr.c ---*/ #line 1 "./asn1/s1ap/packet-s1ap-ettarr.c" @@ -17585,6 +18434,7 @@ void proto_register_s1ap(void) { &ett_s1ap_PrivateIE_Field, &ett_s1ap_Additional_GUTI, &ett_s1ap_AreaScopeOfMDT, + &ett_s1ap_AreaScopeOfQMC, &ett_s1ap_AllocationAndRetentionPriority, &ett_s1ap_AssistanceDataForCECapableUEs, &ett_s1ap_AssistanceDataForPaging, @@ -17606,6 +18456,8 @@ void proto_register_s1ap(void) { &ett_s1ap_CellID_Cancelled_Item, &ett_s1ap_CellBasedMDT, &ett_s1ap_CellIdListforMDT, + &ett_s1ap_CellBasedQMC, + &ett_s1ap_CellIdListforQMC, &ett_s1ap_Cdma2000OneXSRVCCInfo, &ett_s1ap_CellType, &ett_s1ap_CGI, @@ -17643,6 +18495,8 @@ void proto_register_s1ap(void) { &ett_s1ap_E_RABList, &ett_s1ap_E_RABItem, &ett_s1ap_E_RABLevelQoSParameters, + &ett_s1ap_E_RABUsageReportList, + &ett_s1ap_E_RABUsageReportItem, &ett_s1ap_EUTRAN_CGI, &ett_s1ap_ExpectedUEBehaviour, &ett_s1ap_ExpectedUEActivityBehaviour, @@ -17678,10 +18532,13 @@ void proto_register_s1ap(void) { &ett_s1ap_MMEPagingTarget, &ett_s1ap_MutingPatternInformation, &ett_s1ap_NB_IoT_Paging_eDRXInformation, + &ett_s1ap_NRUESecurityCapabilities, &ett_s1ap_OverloadResponse, &ett_s1ap_PagingAttemptInformation, &ett_s1ap_Paging_eDRXInformation, &ett_s1ap_M1PeriodicReporting, + &ett_s1ap_PLMNAreaBasedQMC, + &ett_s1ap_PLMNListforQMC, &ett_s1ap_ProSeAuthorized, &ett_s1ap_RecommendedCellsForPaging, &ett_s1ap_RecommendedCellList, @@ -17695,6 +18552,8 @@ void proto_register_s1ap(void) { &ett_s1ap_RLFReportInformation, &ett_s1ap_ECGIListForRestart, &ett_s1ap_SecurityContext, + &ett_s1ap_SecondaryRATusageReportList, + &ett_s1ap_SecondaryRATusageReportItem, &ett_s1ap_SONInformation, &ett_s1ap_SONInformationReply, &ett_s1ap_SONInformationReport, @@ -17721,6 +18580,10 @@ void proto_register_s1ap(void) { &ett_s1ap_TAI_Cancelled_Item, &ett_s1ap_TABasedMDT, &ett_s1ap_TAListforMDT, + &ett_s1ap_TABasedQMC, + &ett_s1ap_TAListforQMC, + &ett_s1ap_TAIBasedQMC, + &ett_s1ap_TAIListforQMC, &ett_s1ap_CompletedCellinTAI, &ett_s1ap_CompletedCellinTAI_Item, &ett_s1ap_TargetID, @@ -17733,6 +18596,7 @@ void proto_register_s1ap(void) { &ett_s1ap_TunnelInformation, &ett_s1ap_TAIListForRestart, &ett_s1ap_UEAggregateMaximumBitrate, + &ett_s1ap_UEAppLayerMeasConfig, &ett_s1ap_UE_S1AP_IDs, &ett_s1ap_UE_S1AP_ID_pair, &ett_s1ap_UE_associatedLogicalS1_ConnectionItem, @@ -17874,6 +18738,7 @@ void proto_register_s1ap(void) { &ett_s1ap_UEInformationTransfer, &ett_s1ap_ENBCPRelocationIndication, &ett_s1ap_MMECPRelocationIndication, + &ett_s1ap_SecondaryRATReport, &ett_s1ap_S1AP_PDU, &ett_s1ap_InitiatingMessage, &ett_s1ap_SuccessfulOutcome, @@ -17913,7 +18778,7 @@ void proto_register_s1ap(void) { &ett_s1ap_EHRPDMultiSectorLoadReportingResponseItem, /*--- End of included file: packet-s1ap-ettarr.c ---*/ -#line 653 "./asn1/s1ap/packet-s1ap-template.c" +#line 710 "./asn1/s1ap/packet-s1ap-template.c" }; static ei_register_info ei[] = { |