summaryrefslogtreecommitdiffstats
path: root/epan/dissectors/asn1/s1ap
diff options
context:
space:
mode:
Diffstat (limited to 'epan/dissectors/asn1/s1ap')
-rw-r--r--epan/dissectors/asn1/s1ap/S1AP-CommonDataTypes.asn2
-rw-r--r--epan/dissectors/asn1/s1ap/S1AP-Constants.asn11
-rw-r--r--epan/dissectors/asn1/s1ap/S1AP-Containers.asn2
-rw-r--r--epan/dissectors/asn1/s1ap/S1AP-IEs.asn91
-rw-r--r--epan/dissectors/asn1/s1ap/S1AP-PDU-Contents.asn14
-rw-r--r--epan/dissectors/asn1/s1ap/S1AP-PDU-Descriptions.asn2
-rw-r--r--epan/dissectors/asn1/s1ap/S1AP-SonTransfer-IEs.asn2
-rw-r--r--epan/dissectors/asn1/s1ap/packet-s1ap-template.c361
-rw-r--r--epan/dissectors/asn1/s1ap/packet-s1ap-template.h10
-rw-r--r--epan/dissectors/asn1/s1ap/s1ap.cnf123
10 files changed, 365 insertions, 253 deletions
diff --git a/epan/dissectors/asn1/s1ap/S1AP-CommonDataTypes.asn b/epan/dissectors/asn1/s1ap/S1AP-CommonDataTypes.asn
index 6f03db3c..a9196bdf 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 V17.5.0 (2023-06)
+-- 3GPP TS 36.413 V18.2.0 (2024-06)
-- 9.3.5 Common Definitions
-- **************************************************************
--
diff --git a/epan/dissectors/asn1/s1ap/S1AP-Constants.asn b/epan/dissectors/asn1/s1ap/S1AP-Constants.asn
index 3e111932..cfe38392 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 V17.5.0 (2023-06)
+-- 3GPP TS 36.413 V18.2.0 (2024-06)
-- 9.3.6 Constant Definitions
-- **************************************************************
--
@@ -535,5 +535,14 @@ id-E-RABToBeUpdatedItem ProtocolIE-ID ::= 342
id-SourceSNID ProtocolIE-ID ::= 343
id-LoggedMDTTrigger ProtocolIE-ID ::= 344
id-SensorMeasurementConfiguration ProtocolIE-ID ::= 345
+id-M4ReportAmount ProtocolIE-ID ::= 346
+id-M5ReportAmount ProtocolIE-ID ::= 347
+id-M6ReportAmount ProtocolIE-ID ::= 348
+id-M7ReportAmount ProtocolIE-ID ::= 349
+id-TimeBasedHandoverInformation ProtocolIE-ID ::= 350
+id-Bearers-SubjectToDLDiscarding-Item ProtocolIE-ID ::= 351
+id-Bearers-SubjectToDLDiscardingList ProtocolIE-ID ::= 352
+
+
END
diff --git a/epan/dissectors/asn1/s1ap/S1AP-Containers.asn b/epan/dissectors/asn1/s1ap/S1AP-Containers.asn
index 9b53fe64..d8bf951e 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 V17.5.0 (2023-06)
+-- 3GPP TS 36.413 V18.2.0 (2024-06)
-- 9.3.7 Container Definitions
-- **************************************************************
--
diff --git a/epan/dissectors/asn1/s1ap/S1AP-IEs.asn b/epan/dissectors/asn1/s1ap/S1AP-IEs.asn
index ab6c5a8a..be579490 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 V17.5.0 (2023-06)
+-- 3GPP TS 36.413 V18.2.0 (2024-06)
-- 9.3.4 Information Element Definitions
-- **************************************************************
--
@@ -98,6 +98,13 @@ IMPORTS
id-Direct-Forwarding-Path-Availability,
id-LoggedMDTTrigger,
id-SensorMeasurementConfiguration,
+ id-M4ReportAmount,
+ id-M5ReportAmount,
+ id-M6ReportAmount,
+ id-M7ReportAmount,
+ id-TimeBasedHandoverInformation,
+ id-Bearers-SubjectToDLDiscarding-Item,
+ id-Bearers-SubjectToDLDiscardingList,
maxnoofCSGs,
maxnoofE-RABs,
maxnoofErrors,
@@ -293,6 +300,24 @@ Bearers-SubjectToEarlyStatusTransfer-ItemExtIEs S1AP-PROTOCOL-EXTENSION ::= {
...
}
+Bearers-SubjectToDLDiscardingList ::= SEQUENCE (SIZE(1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { { Bearers-SubjectToDLDiscarding-ItemIEs } }
+
+Bearers-SubjectToDLDiscarding-ItemIEs S1AP-PROTOCOL-IES ::= {
+ { ID id-Bearers-SubjectToDLDiscarding-Item CRITICALITY ignore TYPE Bearers-SubjectToDLDiscarding-Item PRESENCE mandatory},
+ ...
+}
+
+Bearers-SubjectToDLDiscarding-Item ::= SEQUENCE {
+ e-RAB-ID E-RAB-ID,
+ dL-Discarding DLDiscarding,
+ iE-Extensions ProtocolExtensionContainer { {Bearers-SubjectToDLDiscarding-ItemExtIEs} } OPTIONAL,
+ ...
+}
+
+Bearers-SubjectToDLDiscarding-ItemExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
BearerType ::= ENUMERATED {
non-IP,
...
@@ -438,7 +463,8 @@ CauseRadioNetwork ::= ENUMERATED {
n26-interface-not-available,
insufficient-ue-capabilities,
maximum-bearer-pre-emption-rate-exceeded,
- up-integrity-protection-not-possible
+ up-integrity-protection-not-possible,
+ release-due-to-discontinuous-coverage
}
@@ -455,7 +481,8 @@ CauseNas ::= ENUMERATED {
unspecified,
...,
csg-subscription-expiry,
- uE-not-in-PLMN-serving-area
+ uE-not-in-PLMN-serving-area,
+ iab-not-authorized
}
CellAccessMode ::= ENUMERATED {
@@ -837,6 +864,13 @@ DLCOUNT-PDCP-SNlength ::= CHOICE {
...
}
+DLDiscarding ::= CHOICE {
+ discardDLCOUNTValuePDCP-SNlength12 COUNTvalue,
+ discardDLCOUNTValuePDCP-SNlength15 COUNTValueExtended,
+ discardDLCOUNTValuePDCP-SNlength18 COUNTvaluePDCP-SNlength18,
+ ...
+}
+
Direct-Forwarding-Path-Availability ::= ENUMERATED {
directPathAvailable,
...
@@ -923,6 +957,7 @@ ENB-EarlyStatusTransfer-TransparentContainer ::= SEQUENCE {
}
ENB-EarlyStatusTransfer-TransparentContainer-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+ { ID id-Bearers-SubjectToDLDiscardingList CRITICALITY ignore EXTENSION Bearers-SubjectToDLDiscardingList PRESENCE optional},
...
}
@@ -994,7 +1029,7 @@ EN-DCSONConfigurationTransfer ::= SEQUENCE {
transfertype EN-DCSONTransferType,
sONInformation SONInformation,
x2TNLConfigInfo X2TNLConfigurationInfo OPTIONAL,
- -- This IE shall be present if the SON Information IE contains the SON Information Request IE and the SON Information Request IE is set to "X2TNL Configuration Info" --
+ -- The above IE shall be present if the SON Information IE contains the SON Information Request IE and the SON Information Request IE is set to the value "X2TNL Configuration Info"
iE-Extensions ProtocolExtensionContainer { {EN-DCSONConfigurationTransfer-ExtIEs} } OPTIONAL,
...
}
@@ -1423,9 +1458,9 @@ ImmediateMDT ::= SEQUENCE {
measurementsToActivate MeasurementsToActivate,
m1reportingTrigger M1ReportingTrigger,
m1thresholdeventA2 M1ThresholdEventA2 OPTIONAL,
--- Included in case of event-triggered, or event-triggered periodic reporting for measurement M1
+ -- The above IE shall be present if the Measurements to Activate IE has the first bit set to “1” and the M1 Reporting Trigger IE is set to the value “A2event-triggered” or to “A2event-triggered periodic”
m1periodicReporting M1PeriodicReporting OPTIONAL,
--- Included in case of periodic or event-triggered periodic reporting
+ -- The above IE shall be present if the M1 Reporting Trigger IE is set to the value “periodic”, or “A2event-triggered periodic”
iE-Extensions ProtocolExtensionContainer { { ImmediateMDT-ExtIEs} } OPTIONAL,
...
}
@@ -1699,9 +1734,14 @@ M4Configuration ::= SEQUENCE {
}
M4Configuration-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+{ ID id-M4ReportAmount CRITICALITY ignore EXTENSION M4ReportAmountMDT PRESENCE optional},
+
...
}
+M4ReportAmountMDT ::= ENUMERATED {r1, r2, r4, r8, r16, r32, r64, infinity, ...}
+
+
M4period ::= ENUMERATED {ms1024, ms2048, ms5120, ms10240, min1, ... }
M5Configuration ::= SEQUENCE {
@@ -1712,24 +1752,30 @@ M5Configuration ::= SEQUENCE {
}
M5Configuration-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+{ ID id-M5ReportAmount CRITICALITY ignore EXTENSION M5ReportAmountMDT PRESENCE optional },
...
}
+M5ReportAmountMDT ::= ENUMERATED {r1, r2, r4, r8, r16, r32, r64, infinity, ...}
+
M5period ::= ENUMERATED {ms1024, ms2048, ms5120, ms10240, min1, ... }
M6Configuration ::= SEQUENCE {
m6report-Interval M6report-Interval,
m6delay-threshold M6delay-threshold OPTIONAL,
--- This IE shall be present if the M6 Links to log IE is set to "uplink" or to "both-uplink-and-downlink" --
+-- The above IE shall be present if the M6 Links to log IE is set to the value "uplink" or to "both-uplink-and-downlink"
m6-links-to-log Links-to-log,
iE-Extensions ProtocolExtensionContainer { { M6Configuration-ExtIEs} } OPTIONAL,
...
}
M6Configuration-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+{ ID id-M6ReportAmount CRITICALITY ignore EXTENSION M6ReportAmountMDT PRESENCE optional },
...
}
+M6ReportAmountMDT ::= ENUMERATED {r1, r2, r4, r8, r16, r32, r64, infinity, ...}
+
M6report-Interval ::= ENUMERATED { ms1024, ms2048, ms5120, ms10240, ... }
M6delay-threshold ::= ENUMERATED { ms30, ms40, ms50, ms60, ms70, ms80, ms90, ms100, ms150, ms300, ms500, ms750, ... }
@@ -1742,9 +1788,12 @@ M7Configuration ::= SEQUENCE {
}
M7Configuration-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+{ ID id-M7ReportAmount CRITICALITY ignore EXTENSION M7ReportAmountMDT PRESENCE optional },
...
}
+M7ReportAmountMDT ::= ENUMERATED {r1, r2, r4, r8, r16, r32, r64, infinity, ...}
+
M7period ::= INTEGER(1..60, ...)
MDT-Activation ::= ENUMERATED {
@@ -2544,11 +2593,11 @@ SONConfigurationTransfer ::= SEQUENCE {
SONConfigurationTransfer-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 10 to transfer the IP addresses of the eNB initiating the ANR action --
- {ID id-x2TNLConfigurationInfo CRITICALITY ignore EXTENSION X2TNLConfigurationInfo PRESENCE conditional
- -- This IE shall be present if the SON Information IE contains the SON Information Request IE and the SON Information Request IE is set to "X2TNL Configuration Info" --}|
+ {ID id-x2TNLConfigurationInfo CRITICALITY ignore EXTENSION X2TNLConfigurationInfo PRESENCE conditional}|
+ -- The above IE shall be present if the SON Information IE contains the SON Information Request IE and the SON Information Request IE is set to the value "X2TNL Configuration Info"
-- Extension for Release 12 to transfer information concerning the source cell of synchronisation and the aggressor cell --
- {ID id-Synchronisation-Information CRITICALITY ignore EXTENSION SynchronisationInformation PRESENCE conditional
- -- This IE shall be present if the SON Information IE contains the SON Information Request IE set to " Activate Muting " --},
+ {ID id-Synchronisation-Information CRITICALITY ignore EXTENSION SynchronisationInformation PRESENCE conditional},
+ -- The above IE shall be present if the SON Information IE contains the SON Information Request IE set to the value " Activate Muting "
...
}
@@ -2629,9 +2678,10 @@ SourceeNB-ToTargeteNB-TransparentContainer-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
{ID id-IntersystemMeasurementConfiguration CRITICALITY ignore EXTENSION IntersystemMeasurementConfiguration PRESENCE optional}|
{ID id-SourceNodeID CRITICALITY ignore EXTENSION SourceNodeID PRESENCE optional}|
{ID id-EmergencyIndicator CRITICALITY ignore EXTENSION EmergencyIndicator PRESENCE optional}|
- {ID id-UEContextReferenceatSourceeNB CRITICALITY ignore EXTENSION ENB-UE-S1AP-ID PRESENCE optional}|
+ {ID id-UEContextReferenceatSourceeNB CRITICALITY ignore EXTENSION ENB-UE-S1AP-ID PRESENCE optional}|
{ID id-SourceSNID CRITICALITY ignore EXTENSION Global-RAN-NODE-ID PRESENCE optional}|
- {ID id-Direct-Forwarding-Path-Availability CRITICALITY ignore EXTENSION Direct-Forwarding-Path-Availability PRESENCE optional},
+ {ID id-Direct-Forwarding-Path-Availability CRITICALITY ignore EXTENSION Direct-Forwarding-Path-Availability PRESENCE optional}|
+ {ID id-TimeBasedHandoverInformation CRITICALITY ignore EXTENSION TimeBasedHandoverInformation PRESENCE optional},
...
}
@@ -2980,6 +3030,21 @@ Threshold-RSRP ::= INTEGER(0..97)
Threshold-RSRQ ::= INTEGER(0..34)
+TimeBasedHandoverInformation ::= SEQUENCE {
+ hOWindowStart HandoverWindowStart,
+ hOWindowDuration HandoverWindowDuration,
+ iE-Extensions ProtocolExtensionContainer { {TimeBasedHandoverInformation-ExtIEs} } OPTIONAL,
+ ...
+}
+
+TimeBasedHandoverInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+HandoverWindowStart ::= INTEGER (0.. 1048575)
+
+HandoverWindowDuration ::= INTEGER (1..6000)
+
TimeToTrigger ::= ENUMERATED {ms0, ms40, ms64, ms80, ms100, ms128, ms160, ms256, ms320, ms480, ms512, ms640, ms1024, ms1280, ms2560, ms5120}
TimeToWait ::= ENUMERATED {v1s, v2s, v5s, v10s, v20s, v60s, ...}
diff --git a/epan/dissectors/asn1/s1ap/S1AP-PDU-Contents.asn b/epan/dissectors/asn1/s1ap/S1AP-PDU-Contents.asn
index f781fd7a..849f6944 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 V17.5.0 (2023-06)
+-- 3GPP TS 36.413 V18.2.0 (2024-06)
-- 9.3.3 PDU Definitions
-- **************************************************************
--
@@ -529,7 +529,9 @@ HandoverRequiredIEs S1AP-PROTOCOL-IES ::= {
{ ID id-Source-ToTarget-TransparentContainer CRITICALITY reject TYPE Source-ToTarget-TransparentContainer PRESENCE mandatory}|
{ ID id-Source-ToTarget-TransparentContainer-Secondary CRITICALITY reject TYPE Source-ToTarget-TransparentContainer PRESENCE optional}|
{ ID id-MSClassmark2 CRITICALITY reject TYPE MSClassmark2 PRESENCE conditional}|
+-- The above IE shall be present if the Handover Type IE is set to the value “LTEtoGERAN” and the SRVCC HO Indication IE is present
{ ID id-MSClassmark3 CRITICALITY ignore TYPE MSClassmark3 PRESENCE conditional}|
+-- The above IE shall be present if the Handover Type IE is set to the value “LTEtoGERAN” and the SRVCC HO Indication IE is present
{ ID id-CSG-Id CRITICALITY reject TYPE CSG-Id PRESENCE optional}|
{ ID id-CellAccessMode CRITICALITY reject TYPE CellAccessMode PRESENCE optional}|
{ ID id-PS-ServiceNotAvailable CRITICALITY ignore TYPE PS-ServiceNotAvailable PRESENCE optional},
@@ -552,8 +554,8 @@ HandoverCommandIEs 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-HandoverType CRITICALITY reject TYPE HandoverType PRESENCE mandatory}|
- { ID id-NASSecurityParametersfromE-UTRAN CRITICALITY reject TYPE NASSecurityParametersfromE-UTRAN PRESENCE conditional
- -- This IE shall be present if HandoverType IE is set to value "LTEtoUTRAN" or "LTEtoGERAN" --}|
+ { ID id-NASSecurityParametersfromE-UTRAN CRITICALITY reject TYPE NASSecurityParametersfromE-UTRAN PRESENCE conditional}|
+ -- The above IE shall be present if Handover Type IE is set to value "LTEtoUTRAN" or "LTEtoGERAN"
{ ID id-E-RABSubjecttoDataForwardingList CRITICALITY ignore TYPE E-RABSubjecttoDataForwardingList PRESENCE optional}|
{ ID id-E-RABtoReleaseListHOCmd CRITICALITY ignore TYPE E-RABList PRESENCE optional}|
{ ID id-Target-ToSource-TransparentContainer CRITICALITY reject TYPE Target-ToSource-TransparentContainer PRESENCE mandatory}|
@@ -634,8 +636,8 @@ HandoverRequestIEs S1AP-PROTOCOL-IES ::= {
{ ID id-RequestType CRITICALITY ignore TYPE RequestType PRESENCE optional}|
{ ID id-SRVCCOperationPossible CRITICALITY ignore TYPE SRVCCOperationPossible PRESENCE optional}|
{ ID id-SecurityContext CRITICALITY reject TYPE SecurityContext PRESENCE mandatory}|
- { ID id-NASSecurityParameterstoE-UTRAN CRITICALITY reject TYPE NASSecurityParameterstoE-UTRAN PRESENCE conditional
- -- This IE shall be present if the Handover Type IE is set to the value "UTRANtoLTE" or "GERANtoLTE" -- }|
+ { ID id-NASSecurityParameterstoE-UTRAN CRITICALITY reject TYPE NASSecurityParameterstoE-UTRAN PRESENCE conditional}|
+ -- The above IE shall be present if the Handover Type IE is set to the value "UTRANtoLTE" or "GERANtoLTE"
{ ID id-CSG-Id CRITICALITY reject TYPE CSG-Id PRESENCE optional}|
{ ID id-CSGMembershipStatus CRITICALITY ignore TYPE CSGMembershipStatus PRESENCE optional}|
{ ID id-GUMMEI-ID CRITICALITY ignore TYPE GUMMEI PRESENCE optional}|
@@ -1395,6 +1397,7 @@ InitialContextSetupRequestIEs S1AP-PROTOCOL-IES ::= {
{ ID id-ManagementBasedMDTAllowed CRITICALITY ignore TYPE ManagementBasedMDTAllowed PRESENCE optional}|
{ ID id-ManagementBasedMDTPLMNList CRITICALITY ignore TYPE MDTPLMNList PRESENCE optional}|
{ ID id-AdditionalCSFallbackIndicator CRITICALITY ignore TYPE AdditionalCSFallbackIndicator PRESENCE conditional}|
+ -- The above IE shall be present if the CS Fallback Indicator IE is set to the value “CS Fallback High Priority”
{ ID id-Masked-IMEISV CRITICALITY ignore TYPE Masked-IMEISV PRESENCE optional}|
{ ID id-ExpectedUEBehaviour CRITICALITY ignore TYPE ExpectedUEBehaviour PRESENCE optional}|
{ ID id-ProSeAuthorized CRITICALITY ignore TYPE ProSeAuthorized PRESENCE optional}|
@@ -1666,6 +1669,7 @@ UEContextModificationRequestIEs S1AP-PROTOCOL-IES ::= {
{ ID id-CSGMembershipStatus CRITICALITY ignore TYPE CSGMembershipStatus PRESENCE optional}|
{ ID id-RegisteredLAI CRITICALITY ignore TYPE LAI PRESENCE optional}|
{ ID id-AdditionalCSFallbackIndicator CRITICALITY ignore TYPE AdditionalCSFallbackIndicator PRESENCE conditional}|
+ -- The above IE shall be present if the CS Fallback Indicator IE is set to the value “CS Fallback High Priority”
{ ID id-ProSeAuthorized CRITICALITY ignore TYPE ProSeAuthorized PRESENCE optional}|
{ ID id-SRVCCOperationPossible CRITICALITY ignore TYPE SRVCCOperationPossible PRESENCE optional}|
{ ID id-SRVCCOperationNotPossible CRITICALITY ignore TYPE SRVCCOperationNotPossible PRESENCE optional}|
diff --git a/epan/dissectors/asn1/s1ap/S1AP-PDU-Descriptions.asn b/epan/dissectors/asn1/s1ap/S1AP-PDU-Descriptions.asn
index f3956daa..a04efadf 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 V17.5.0 (2023-06)
+-- 3GPP TS 36.413 V18.2.0 (2024-06)
-- 9.3.2 Elementary Procedure Definitions
-- **************************************************************
--
diff --git a/epan/dissectors/asn1/s1ap/S1AP-SonTransfer-IEs.asn b/epan/dissectors/asn1/s1ap/S1AP-SonTransfer-IEs.asn
index 73d734fe..13ed2f5d 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 V17.5.0 (2023-06)
+-- 3GPP TS 36.413 V18.2.0 (2024-06)
-- 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 a5e2e878..9b1f85dc 100644
--- a/epan/dissectors/asn1/s1ap/packet-s1ap-template.c
+++ b/epan/dissectors/asn1/s1ap/packet-s1ap-template.c
@@ -10,14 +10,13 @@
*
* Based on the RANAP dissector
*
- * References: 3GPP TS 36.413 V17.5.0 (2023-06)
+ * References: 3GPP TS 36.413 V18.2.0 (2024-06)
*/
#include "config.h"
#include <epan/packet.h>
-#include <epan/strutil.h>
#include <epan/asn1.h>
#include <epan/prefs.h>
#include <epan/sctpppids.h>
@@ -26,11 +25,12 @@
#include <epan/proto_data.h>
#include <epan/exceptions.h>
#include <epan/show_exception.h>
+#include <epan/tfs.h>
+#include <epan/unit_strings.h>
+#include <wsutil/array.h>
-#include "packet-ber.h"
#include "packet-per.h"
#include "packet-e212.h"
-#include "packet-sccp.h"
#include "packet-lte-rrc.h"
#include "packet-ranap.h"
#include "packet-bssgp.h"
@@ -66,111 +66,114 @@ static dissector_handle_t nr_rrc_ue_radio_paging_info_handle;
#include "packet-s1ap-val.h"
/* Initialize the protocol and registered fields */
-static int proto_s1ap = -1;
-
-static int hf_s1ap_transportLayerAddressIPv4 = -1;
-static int hf_s1ap_transportLayerAddressIPv6 = -1;
-static int hf_s1ap_E_UTRAN_Trace_ID_TraceID = -1;
-static int hf_s1ap_E_UTRAN_Trace_ID_TraceRecordingSessionReference = -1;
-static int hf_s1ap_interfacesToTrace_S1_MME = -1;
-static int hf_s1ap_interfacesToTrace_X2 = -1;
-static int hf_s1ap_interfacesToTrace_Uu = -1;
-static int hf_s1ap_interfacesToTrace_F1_C = -1;
-static int hf_s1ap_interfacesToTrace_E1 = -1;
-static int hf_s1ap_interfacesToTrace_Reserved = -1;
-static int hf_s1ap_encryptionAlgorithms_EEA1 = -1;
-static int hf_s1ap_encryptionAlgorithms_EEA2 = -1;
-static int hf_s1ap_encryptionAlgorithms_EEA3 = -1;
-static int hf_s1ap_encryptionAlgorithms_Reserved = -1;
-static int hf_s1ap_integrityProtectionAlgorithms_EIA1 = -1;
-static int hf_s1ap_integrityProtectionAlgorithms_EIA2 = -1;
-static int hf_s1ap_integrityProtectionAlgorithms_EIA3 = -1;
-static int hf_s1ap_integrityProtectionAlgorithms_EIA7 = -1;
-static int hf_s1ap_integrityProtectionAlgorithms_Reserved = -1;
-static int hf_s1ap_SerialNumber_gs = -1;
-static int hf_s1ap_SerialNumber_msg_code = -1;
-static int hf_s1ap_SerialNumber_upd_nb = -1;
-static int hf_s1ap_WarningType_value = -1;
-static int hf_s1ap_WarningType_emergency_user_alert = -1;
-static int hf_s1ap_WarningType_popup = -1;
-static int hf_s1ap_WarningMessageContents_nb_pages = -1;
-static int hf_s1ap_WarningMessageContents_decoded_page = -1;
-static int hf_s1ap_measurementsToActivate_M1 = -1;
-static int hf_s1ap_measurementsToActivate_M2 = -1;
-static int hf_s1ap_measurementsToActivate_M3 = -1;
-static int hf_s1ap_measurementsToActivate_M4 = -1;
-static int hf_s1ap_measurementsToActivate_M5 = -1;
-static int hf_s1ap_measurementsToActivate_LoggingM1FromEventTriggered = -1;
-static int hf_s1ap_measurementsToActivate_M6 = -1;
-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_for_streaming_service = -1;
-static int hf_s1ap_UE_Application_Layer_Measurement_Capability_QoE_Measurement_for_MTSI_service = -1;
-static int hf_s1ap_UE_Application_Layer_Measurement_Capability_Reserved = -1;
-static int hf_s1ap_rAT_RestrictionInformation_LEO = -1;
-static int hf_s1ap_rAT_RestrictionInformation_MEO = -1;
-static int hf_s1ap_rAT_RestrictionInformation_GEO = -1;
-static int hf_s1ap_rAT_RestrictionInformation_OTHERSAT = -1;
-static int hf_s1ap_rAT_RestrictionInformation_Reserved = -1;
+static int proto_s1ap;
+
+static int hf_s1ap_transportLayerAddressIPv4;
+static int hf_s1ap_transportLayerAddressIPv6;
+static int hf_s1ap_E_UTRAN_Trace_ID_TraceID;
+static int hf_s1ap_E_UTRAN_Trace_ID_TraceRecordingSessionReference;
+static int hf_s1ap_interfacesToTrace_S1_MME;
+static int hf_s1ap_interfacesToTrace_X2;
+static int hf_s1ap_interfacesToTrace_Uu;
+static int hf_s1ap_interfacesToTrace_F1_C;
+static int hf_s1ap_interfacesToTrace_E1;
+static int hf_s1ap_interfacesToTrace_Reserved;
+static int hf_s1ap_encryptionAlgorithms_EEA1;
+static int hf_s1ap_encryptionAlgorithms_EEA2;
+static int hf_s1ap_encryptionAlgorithms_EEA3;
+static int hf_s1ap_encryptionAlgorithms_Reserved;
+static int hf_s1ap_integrityProtectionAlgorithms_EIA1;
+static int hf_s1ap_integrityProtectionAlgorithms_EIA2;
+static int hf_s1ap_integrityProtectionAlgorithms_EIA3;
+static int hf_s1ap_integrityProtectionAlgorithms_EIA7;
+static int hf_s1ap_integrityProtectionAlgorithms_Reserved;
+static int hf_s1ap_SerialNumber_gs;
+static int hf_s1ap_SerialNumber_msg_code;
+static int hf_s1ap_SerialNumber_upd_nb;
+static int hf_s1ap_WarningType_value;
+static int hf_s1ap_WarningType_emergency_user_alert;
+static int hf_s1ap_WarningType_popup;
+static int hf_s1ap_WarningMessageContents_nb_pages;
+static int hf_s1ap_WarningMessageContents_decoded_page;
+static int hf_s1ap_measurementsToActivate_M1;
+static int hf_s1ap_measurementsToActivate_M2;
+static int hf_s1ap_measurementsToActivate_M3;
+static int hf_s1ap_measurementsToActivate_M4;
+static int hf_s1ap_measurementsToActivate_M5;
+static int hf_s1ap_measurementsToActivate_LoggingM1FromEventTriggered;
+static int hf_s1ap_measurementsToActivate_M6;
+static int hf_s1ap_measurementsToActivate_M7;
+static int hf_s1ap_MDT_Location_Info_GNSS;
+static int hf_s1ap_MDT_Location_Info_E_CID;
+static int hf_s1ap_MDT_Location_Info_Reserved;
+static int hf_s1ap_NRencryptionAlgorithms_NEA1;
+static int hf_s1ap_NRencryptionAlgorithms_NEA2;
+static int hf_s1ap_NRencryptionAlgorithms_NEA3;
+static int hf_s1ap_NRencryptionAlgorithms_Reserved;
+static int hf_s1ap_NRintegrityProtectionAlgorithms_NIA1;
+static int hf_s1ap_NRintegrityProtectionAlgorithms_NIA2;
+static int hf_s1ap_NRintegrityProtectionAlgorithms_NIA3;
+static int hf_s1ap_NRintegrityProtectionAlgorithms_Reserved;
+static int hf_s1ap_UE_Application_Layer_Measurement_Capability_QoE_Measurement_for_streaming_service;
+static int hf_s1ap_UE_Application_Layer_Measurement_Capability_QoE_Measurement_for_MTSI_service;
+static int hf_s1ap_UE_Application_Layer_Measurement_Capability_Reserved;
+static int hf_s1ap_rAT_RestrictionInformation_LEO;
+static int hf_s1ap_rAT_RestrictionInformation_MEO;
+static int hf_s1ap_rAT_RestrictionInformation_GEO;
+static int hf_s1ap_rAT_RestrictionInformation_OTHERSAT;
+static int hf_s1ap_rAT_RestrictionInformation_NR_LEO;
+static int hf_s1ap_rAT_RestrictionInformation_NR_MEO;
+static int hf_s1ap_rAT_RestrictionInformation_NR_GEO;
+static int hf_s1ap_rAT_RestrictionInformation_NR_OTHERSAT;
#include "packet-s1ap-hf.c"
/* Initialize the subtree pointers */
-static int ett_s1ap = -1;
-static int ett_s1ap_TransportLayerAddress = -1;
-static int ett_s1ap_ToTargetTransparentContainer = -1;
-static int ett_s1ap_ToSourceTransparentContainer = -1;
-static int ett_s1ap_RRCContainer = -1;
-static int ett_s1ap_UERadioCapability = -1;
-static int ett_s1ap_RIMInformation = -1;
-static int ett_s1ap_Cdma2000PDU = -1;
-static int ett_s1ap_Cdma2000SectorID = -1;
-static int ett_s1ap_UERadioPagingInformation = -1;
-static int ett_s1ap_UE_HistoryInformationFromTheUE = -1;
-static int ett_s1ap_CELevel = -1;
-static int ett_s1ap_UE_RLF_Report_Container = -1;
-static int ett_s1ap_UE_RLF_Report_Container_for_extended_bands = -1;
-static int ett_s1ap_S1_Message = -1;
-static int ett_s1ap_E_UTRAN_Trace_ID = -1;
-static int ett_s1ap_InterfacesToTrace = -1;
-static int ett_s1ap_EncryptionAlgorithms = -1;
-static int ett_s1ap_IntegrityProtectionAlgorithms = -1;
-static int ett_s1ap_LastVisitedNGRANCellInformation = -1;
-static int ett_s1ap_LastVisitedUTRANCellInformation = -1;
-static int ett_s1ap_SerialNumber = -1;
-static int ett_s1ap_WarningType = -1;
-static int ett_s1ap_DataCodingScheme = -1;
-static int ett_s1ap_WarningMessageContents = -1;
-static int ett_s1ap_MSClassmark = -1;
-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;
-static int ett_s1ap_sMTC = -1;
-static int ett_s1ap_threshRS_Index_r15 = -1;
-static int ett_s1ap_sSBToMeasure = -1;
-static int ett_s1ap_sSRSSIMeasurement = -1;
-static int ett_s1ap_quantityConfigNR_R15 = -1;
-static int ett_s1ap_excludedCellsToAddModList = -1;
-static int ett_s1ap_NB_IoT_RLF_Report_Container = -1;
-static int ett_s1ap_MDT_ConfigurationNR = -1;
-static int ett_s1ap_IntersystemSONConfigurationTransfer = -1;
-static int ett_s1ap_rAT_RestrictionInformation = -1;
+static int ett_s1ap;
+static int ett_s1ap_TransportLayerAddress;
+static int ett_s1ap_ToTargetTransparentContainer;
+static int ett_s1ap_ToSourceTransparentContainer;
+static int ett_s1ap_RRCContainer;
+static int ett_s1ap_UERadioCapability;
+static int ett_s1ap_RIMInformation;
+static int ett_s1ap_Cdma2000PDU;
+static int ett_s1ap_Cdma2000SectorID;
+static int ett_s1ap_UERadioPagingInformation;
+static int ett_s1ap_UE_HistoryInformationFromTheUE;
+static int ett_s1ap_CELevel;
+static int ett_s1ap_UE_RLF_Report_Container;
+static int ett_s1ap_UE_RLF_Report_Container_for_extended_bands;
+static int ett_s1ap_S1_Message;
+static int ett_s1ap_E_UTRAN_Trace_ID;
+static int ett_s1ap_InterfacesToTrace;
+static int ett_s1ap_EncryptionAlgorithms;
+static int ett_s1ap_IntegrityProtectionAlgorithms;
+static int ett_s1ap_LastVisitedNGRANCellInformation;
+static int ett_s1ap_LastVisitedUTRANCellInformation;
+static int ett_s1ap_SerialNumber;
+static int ett_s1ap_WarningType;
+static int ett_s1ap_DataCodingScheme;
+static int ett_s1ap_WarningMessageContents;
+static int ett_s1ap_MSClassmark;
+static int ett_s1ap_MeasurementsToActivate;
+static int ett_s1ap_MDT_Location_Info;
+static int ett_s1ap_IMSI;
+static int ett_s1ap_NASSecurityParameters;
+static int ett_s1ap_NRencryptionAlgorithms;
+static int ett_s1ap_NRintegrityProtectionAlgorithms;
+static int ett_s1ap_UE_Application_Layer_Measurement_Capability;
+static int ett_s1ap_sMTC;
+static int ett_s1ap_threshRS_Index_r15;
+static int ett_s1ap_sSBToMeasure;
+static int ett_s1ap_sSRSSIMeasurement;
+static int ett_s1ap_quantityConfigNR_R15;
+static int ett_s1ap_excludedCellsToAddModList;
+static int ett_s1ap_NB_IoT_RLF_Report_Container;
+static int ett_s1ap_MDT_ConfigurationNR;
+static int ett_s1ap_IntersystemSONConfigurationTransfer;
+static int ett_s1ap_rAT_RestrictionInformation;
#include "packet-s1ap-ett.c"
-static expert_field ei_s1ap_number_pages_le15 = EI_INIT;
+static expert_field ei_s1ap_number_pages_le15;
enum{
INITIATING_MESSAGE,
@@ -184,29 +187,29 @@ struct s1ap_conv_info {
};
struct s1ap_supported_ta {
- guint16 tac;
+ uint16_t tac;
wmem_array_t *plmn;
};
struct s1ap_tai {
- guint32 plmn;
- guint16 tac;
+ uint32_t plmn;
+ uint16_t tac;
};
struct s1ap_private_data {
struct s1ap_conv_info *s1ap_conv;
- guint32 procedure_code;
- guint32 protocol_ie_id;
- guint32 protocol_extension_id;
- guint32 handover_type_value;
- guint32 message_type;
- guint8 data_coding_scheme;
+ uint32_t procedure_code;
+ uint32_t protocol_ie_id;
+ uint32_t protocol_extension_id;
+ uint32_t handover_type_value;
+ uint32_t message_type;
+ uint8_t data_coding_scheme;
struct s1ap_supported_ta *supported_ta;
const char *obj_id;
struct s1ap_tai *tai;
- guint16 enb_ue_s1ap_id;
- gboolean srvcc_ho_cs_only;
- guint8 transparent_container_type;
+ uint16_t enb_ue_s1ap_id;
+ bool srvcc_ho_cs_only;
+ uint8_t transparent_container_type;
e212_number_type_t number_type;
};
@@ -229,8 +232,8 @@ enum {
};
/* Global variables */
-static gboolean g_s1ap_dissect_container = TRUE;
-static gint g_s1ap_dissect_lte_container_as = S1AP_LTE_CONTAINER_AUTOMATIC;
+static bool g_s1ap_dissect_container = true;
+static int g_s1ap_dissect_lte_container_as = S1AP_LTE_CONTAINER_AUTOMATIC;
static dissector_handle_t s1ap_handle;
@@ -262,30 +265,25 @@ static int dissect_TargetBSS_ToSourceBSS_TransparentContainer_PDU(tvbuff_t *tvb,
#endif
static void
-s1ap_Threshold_RSRP_fmt(gchar *s, guint32 v)
+s1ap_Threshold_RSRP_fmt(char *s, uint32_t v)
{
- snprintf(s, ITEM_LABEL_LENGTH, "%ddBm (%u)", (gint32)v-140, v);
+ snprintf(s, ITEM_LABEL_LENGTH, "%ddBm (%u)", (int32_t)v-140, v);
}
static void
-s1ap_Threshold_RSRQ_fmt(gchar *s, guint32 v)
+s1ap_Threshold_RSRQ_fmt(char *s, uint32_t v)
{
snprintf(s, ITEM_LABEL_LENGTH, "%.1fdB (%u)", ((float)v/2)-20, v);
}
static void
-s1ap_Hysteresis_fmt(gchar *s, guint32 v)
+s1ap_Hysteresis_fmt(char *s, uint32_t v)
{
snprintf(s, ITEM_LABEL_LENGTH, "%.1fdB (%u)", (float)v/2, v);
}
-static const true_false_string s1ap_tfs_interfacesToTrace = {
- "Should be traced",
- "Should not be traced"
-};
-
static void
-s1ap_Time_UE_StayedInCell_EnhancedGranularity_fmt(gchar *s, guint32 v)
+s1ap_Time_UE_StayedInCell_EnhancedGranularity_fmt(char *s, uint32_t v)
{
snprintf(s, ITEM_LABEL_LENGTH, "%.1fs", ((float)v)/10);
}
@@ -308,15 +306,15 @@ const value_string s1ap_warningType_vals[] = {
};
void
-dissect_s1ap_warningMessageContents(tvbuff_t *warning_msg_tvb, proto_tree *tree, packet_info *pinfo, guint8 dcs, int hf_nb_pages, int hf_decoded_page)
+dissect_s1ap_warningMessageContents(tvbuff_t *warning_msg_tvb, proto_tree *tree, packet_info *pinfo, uint8_t dcs, int hf_nb_pages, int hf_decoded_page)
{
- guint32 offset;
- guint8 nb_of_pages, length, *str;
+ uint32_t offset;
+ uint8_t nb_of_pages, length, *str;
proto_item *ti;
tvbuff_t *cb_data_page_tvb, *cb_data_tvb;
int i;
- nb_of_pages = tvb_get_guint8(warning_msg_tvb, 0);
+ nb_of_pages = tvb_get_uint8(warning_msg_tvb, 0);
ti = proto_tree_add_uint(tree, hf_nb_pages, warning_msg_tvb, 0, 1, nb_of_pages);
if (nb_of_pages > 15) {
expert_add_info_format(pinfo, ti, &ei_s1ap_number_pages_le15,
@@ -324,7 +322,7 @@ dissect_s1ap_warningMessageContents(tvbuff_t *warning_msg_tvb, proto_tree *tree,
nb_of_pages = 15;
}
for (i = 0, offset = 1; i < nb_of_pages; i++) {
- length = tvb_get_guint8(warning_msg_tvb, offset+82);
+ length = tvb_get_uint8(warning_msg_tvb, offset+82);
cb_data_page_tvb = tvb_new_subset_length(warning_msg_tvb, offset, length);
cb_data_tvb = dissect_cbs_data(dcs, cb_data_page_tvb, tree, pinfo, 0);
if (cb_data_tvb) {
@@ -337,40 +335,41 @@ dissect_s1ap_warningMessageContents(tvbuff_t *warning_msg_tvb, proto_tree *tree,
}
static void
-s1ap_EUTRANRoundTripDelayEstimationInfo_fmt(gchar *s, guint32 v)
+s1ap_EUTRANRoundTripDelayEstimationInfo_fmt(char *s, uint32_t v)
{
snprintf(s, ITEM_LABEL_LENGTH, "%uTs (%u)", 16*v, v);
}
-static const true_false_string s1ap_tfs_activate_do_not_activate = {
- "Activate",
- "Do not activate"
-};
-
static void
-s1ap_Packet_LossRate_fmt(gchar *s, guint32 v)
+s1ap_Packet_LossRate_fmt(char *s, uint32_t v)
{
snprintf(s, ITEM_LABEL_LENGTH, "%.1f %% (%u)", (float)v/10, v);
}
static void
-s1ap_threshold_nr_rsrp_fmt(gchar *s, guint32 v)
+s1ap_threshold_nr_rsrp_fmt(char *s, uint32_t v)
{
- snprintf(s, ITEM_LABEL_LENGTH, "%ddBm (%u)", (gint32)v-156, v);
+ snprintf(s, ITEM_LABEL_LENGTH, "%ddBm (%u)", (int32_t)v-156, v);
}
static void
-s1ap_threshold_nr_rsrq_fmt(gchar *s, guint32 v)
+s1ap_threshold_nr_rsrq_fmt(char *s, uint32_t v)
{
snprintf(s, ITEM_LABEL_LENGTH, "%.1fdB (%u)", ((float)v/2)-43, v);
}
static void
-s1ap_threshold_nr_sinr_fmt(gchar *s, guint32 v)
+s1ap_threshold_nr_sinr_fmt(char *s, uint32_t v)
{
snprintf(s, ITEM_LABEL_LENGTH, "%.1fdB (%u)", ((float)v/2)-23, v);
}
+static void
+s1ap_handover_window_duration_fmt(char *s, uint32_t v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%dms (%u)", v*100, v);
+}
+
static struct s1ap_private_data*
s1ap_get_private_data(packet_info *pinfo)
{
@@ -382,15 +381,15 @@ s1ap_get_private_data(packet_info *pinfo)
return s1ap_data;
}
-static gboolean
+static bool
s1ap_is_nbiot_ue(packet_info *pinfo)
{
struct s1ap_private_data *s1ap_data = s1ap_get_private_data(pinfo);
if (s1ap_data->s1ap_conv) {
wmem_tree_key_t tree_key[3];
- guint32 *id;
- guint32 enb_ue_s1ap_id = s1ap_data->enb_ue_s1ap_id;
+ uint32_t *id;
+ uint32_t enb_ue_s1ap_id = s1ap_data->enb_ue_s1ap_id;
tree_key[0].length = 1;
tree_key[0].key = &enb_ue_s1ap_id;
@@ -398,12 +397,12 @@ s1ap_is_nbiot_ue(packet_info *pinfo)
tree_key[1].key = &pinfo->num;
tree_key[2].length = 0;
tree_key[2].key = NULL;
- id = (guint32*)wmem_tree_lookup32_array_le(s1ap_data->s1ap_conv->nbiot_enb_ue_s1ap_id, tree_key);
+ id = (uint32_t*)wmem_tree_lookup32_array_le(s1ap_data->s1ap_conv->nbiot_enb_ue_s1ap_id, tree_key);
if (id && (*id == enb_ue_s1ap_id)) {
- return TRUE;
+ return true;
}
}
- return FALSE;
+ return false;
}
#include "packet-s1ap-fn.c"
@@ -418,7 +417,7 @@ static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto
s1ap_ctx.ProtocolIE_ID = s1ap_data->protocol_ie_id;
s1ap_ctx.ProtocolExtensionID = s1ap_data->protocol_extension_id;
- return (dissector_try_uint_new(s1ap_ies_dissector_table, s1ap_data->protocol_ie_id, tvb, pinfo, tree, FALSE, &s1ap_ctx)) ? tvb_captured_length(tvb) : 0;
+ return (dissector_try_uint_new(s1ap_ies_dissector_table, s1ap_data->protocol_ie_id, tvb, pinfo, tree, false, &s1ap_ctx)) ? tvb_captured_length(tvb) : 0;
}
/* Currently not used
static int dissect_ProtocolIEFieldPairFirstValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
@@ -446,28 +445,28 @@ static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_in
s1ap_ctx.ProtocolIE_ID = s1ap_data->protocol_ie_id;
s1ap_ctx.ProtocolExtensionID = s1ap_data->protocol_extension_id;
- return (dissector_try_uint_new(s1ap_extension_dissector_table, s1ap_data->protocol_extension_id, tvb, pinfo, tree, FALSE, &s1ap_ctx)) ? tvb_captured_length(tvb) : 0;
+ return (dissector_try_uint_new(s1ap_extension_dissector_table, s1ap_data->protocol_extension_id, tvb, pinfo, tree, false, &s1ap_ctx)) ? tvb_captured_length(tvb) : 0;
}
static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
{
struct s1ap_private_data *s1ap_data = s1ap_get_private_data(pinfo);
- return (dissector_try_uint_new(s1ap_proc_imsg_dissector_table, s1ap_data->procedure_code, tvb, pinfo, tree, FALSE, data)) ? tvb_captured_length(tvb) : 0;
+ return (dissector_try_uint_new(s1ap_proc_imsg_dissector_table, s1ap_data->procedure_code, tvb, pinfo, tree, false, data)) ? tvb_captured_length(tvb) : 0;
}
static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
{
struct s1ap_private_data *s1ap_data = s1ap_get_private_data(pinfo);
- return (dissector_try_uint_new(s1ap_proc_sout_dissector_table, s1ap_data->procedure_code, tvb, pinfo, tree, FALSE, data)) ? tvb_captured_length(tvb) : 0;
+ return (dissector_try_uint_new(s1ap_proc_sout_dissector_table, s1ap_data->procedure_code, tvb, pinfo, tree, false, data)) ? tvb_captured_length(tvb) : 0;
}
static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
{
struct s1ap_private_data *s1ap_data = s1ap_get_private_data(pinfo);
- return (dissector_try_uint_new(s1ap_proc_uout_dissector_table, s1ap_data->procedure_code, tvb, pinfo, tree, FALSE, data)) ? tvb_captured_length(tvb) : 0;
+ return (dissector_try_uint_new(s1ap_proc_uout_dissector_table, s1ap_data->procedure_code, tvb, pinfo, tree, false, data)) ? tvb_captured_length(tvb) : 0;
}
@@ -544,23 +543,23 @@ void proto_register_s1ap(void) {
NULL, HFILL }},
{ &hf_s1ap_interfacesToTrace_S1_MME,
{ "S1-MME", "s1ap.interfacesToTrace.S1_MME",
- FT_BOOLEAN, 8, TFS(&s1ap_tfs_interfacesToTrace), 0x80,
+ FT_BOOLEAN, 8, TFS(&tfs_should_be_traced_should_not_be_traced), 0x80,
NULL, HFILL }},
{ &hf_s1ap_interfacesToTrace_X2,
{ "X2", "s1ap.interfacesToTrace.X2",
- FT_BOOLEAN, 8, TFS(&s1ap_tfs_interfacesToTrace), 0x40,
+ FT_BOOLEAN, 8, TFS(&tfs_should_be_traced_should_not_be_traced), 0x40,
NULL, HFILL }},
{ &hf_s1ap_interfacesToTrace_Uu,
{ "Uu", "s1ap.interfacesToTrace.Uu",
- FT_BOOLEAN, 8, TFS(&s1ap_tfs_interfacesToTrace), 0x20,
+ FT_BOOLEAN, 8, TFS(&tfs_should_be_traced_should_not_be_traced), 0x20,
NULL, HFILL }},
{ &hf_s1ap_interfacesToTrace_F1_C,
{ "F1-C", "s1ap.interfacesToTrace.F1_C",
- FT_BOOLEAN, 8, TFS(&s1ap_tfs_interfacesToTrace), 0x10,
+ FT_BOOLEAN, 8, TFS(&tfs_should_be_traced_should_not_be_traced), 0x10,
NULL, HFILL }},
{ &hf_s1ap_interfacesToTrace_E1,
{ "E1", "s1ap.interfacesToTrace.E1",
- FT_BOOLEAN, 8, TFS(&s1ap_tfs_interfacesToTrace), 0x08,
+ FT_BOOLEAN, 8, TFS(&tfs_should_be_traced_should_not_be_traced), 0x08,
NULL, HFILL }},
{ &hf_s1ap_interfacesToTrace_Reserved,
{ "Reserved", "s1ap.interfacesToTrace.Reserved",
@@ -636,43 +635,43 @@ void proto_register_s1ap(void) {
NULL, HFILL }},
{ &hf_s1ap_measurementsToActivate_M1,
{ "M1", "s1ap.measurementsToActivate.M1",
- FT_BOOLEAN, 8, TFS(&s1ap_tfs_activate_do_not_activate), 0x80,
+ FT_BOOLEAN, 8, TFS(&tfs_activate_do_not_activate), 0x80,
NULL, HFILL }},
{ &hf_s1ap_measurementsToActivate_M2,
{ "M2", "s1ap.measurementsToActivate.M2",
- FT_BOOLEAN, 8, TFS(&s1ap_tfs_activate_do_not_activate), 0x40,
+ FT_BOOLEAN, 8, TFS(&tfs_activate_do_not_activate), 0x40,
NULL, HFILL }},
{ &hf_s1ap_measurementsToActivate_M3,
{ "M3", "s1ap.measurementsToActivate.M3",
- FT_BOOLEAN, 8, TFS(&s1ap_tfs_activate_do_not_activate), 0x20,
+ FT_BOOLEAN, 8, TFS(&tfs_activate_do_not_activate), 0x20,
NULL, HFILL }},
{ &hf_s1ap_measurementsToActivate_M4,
{ "M4", "s1ap.measurementsToActivate.M4",
- FT_BOOLEAN, 8, TFS(&s1ap_tfs_activate_do_not_activate), 0x10,
+ FT_BOOLEAN, 8, TFS(&tfs_activate_do_not_activate), 0x10,
NULL, HFILL }},
{ &hf_s1ap_measurementsToActivate_M5,
{ "M5", "s1ap.measurementsToActivate.M5",
- FT_BOOLEAN, 8, TFS(&s1ap_tfs_activate_do_not_activate), 0x08,
+ FT_BOOLEAN, 8, TFS(&tfs_activate_do_not_activate), 0x08,
NULL, HFILL }},
{ &hf_s1ap_measurementsToActivate_LoggingM1FromEventTriggered,
{ "LoggingOfM1FromEventTriggeredMeasurementReports", "s1ap.measurementsToActivate.LoggingM1FromEventTriggered",
- FT_BOOLEAN, 8, TFS(&s1ap_tfs_activate_do_not_activate), 0x04,
+ FT_BOOLEAN, 8, TFS(&tfs_activate_do_not_activate), 0x04,
NULL, HFILL }},
{ &hf_s1ap_measurementsToActivate_M6,
{ "M6", "s1ap.measurementsToActivate.M6",
- FT_BOOLEAN, 8, TFS(&s1ap_tfs_activate_do_not_activate), 0x02,
+ FT_BOOLEAN, 8, TFS(&tfs_activate_do_not_activate), 0x02,
NULL, HFILL }},
{ &hf_s1ap_measurementsToActivate_M7,
{ "M7", "s1ap.measurementsToActivate.M7",
- FT_BOOLEAN, 8, TFS(&s1ap_tfs_activate_do_not_activate), 0x01,
+ FT_BOOLEAN, 8, TFS(&tfs_activate_do_not_activate), 0x01,
NULL, HFILL }},
{ &hf_s1ap_MDT_Location_Info_GNSS,
{ "GNSS", "s1ap.MDT_Location_Info.GNSS",
- FT_BOOLEAN, 8, TFS(&s1ap_tfs_activate_do_not_activate), 0x80,
+ FT_BOOLEAN, 8, TFS(&tfs_activate_do_not_activate), 0x80,
NULL, HFILL }},
{ &hf_s1ap_MDT_Location_Info_E_CID,
{ "E-CID", "s1ap.MDT_Location_Info.E_CID",
- FT_BOOLEAN, 8, TFS(&s1ap_tfs_activate_do_not_activate), 0x40,
+ FT_BOOLEAN, 8, TFS(&tfs_activate_do_not_activate), 0x40,
NULL, HFILL }},
{ &hf_s1ap_MDT_Location_Info_Reserved,
{ "Reserved", "s1ap.MDT_Location_Info.Reserved",
@@ -738,15 +737,27 @@ void proto_register_s1ap(void) {
{ "OTHERSAT", "s1ap.rAT_RestrictionInformation.OTHERSAT",
FT_BOOLEAN, 8, TFS(&tfs_restricted_not_restricted), 0x10,
NULL, HFILL }},
- { &hf_s1ap_rAT_RestrictionInformation_Reserved,
- { "Reserved", "s1ap.rAT_RestrictionInformation.Reserved",
- FT_UINT8, BASE_HEX, NULL, 0x0f,
+ { &hf_s1ap_rAT_RestrictionInformation_NR_LEO,
+ { "NR-LEO", "s1ap.rAT_RestrictionInformation.NR_LEO",
+ FT_BOOLEAN, 8, TFS(&tfs_restricted_not_restricted), 0x08,
+ NULL, HFILL }},
+ { &hf_s1ap_rAT_RestrictionInformation_NR_MEO,
+ { "NR-MEO", "s1ap.rAT_RestrictionInformation.NR_MEO",
+ FT_BOOLEAN, 8, TFS(&tfs_restricted_not_restricted), 0x04,
+ NULL, HFILL }},
+ { &hf_s1ap_rAT_RestrictionInformation_NR_GEO,
+ { "NR-GEO", "s1ap.rAT_RestrictionInformation.NR_GEO",
+ FT_BOOLEAN, 8, TFS(&tfs_restricted_not_restricted), 0x02,
+ NULL, HFILL }},
+ { &hf_s1ap_rAT_RestrictionInformation_NR_OTHERSAT,
+ { "NR-OTHERSAT", "s1ap.rAT_RestrictionInformation.NR_OTHERSAT",
+ FT_BOOLEAN, 8, TFS(&tfs_restricted_not_restricted), 0x01,
NULL, HFILL }},
#include "packet-s1ap-hfarr.c"
};
/* List of subtrees */
- static gint *ett[] = {
+ static int *ett[] = {
&ett_s1ap,
&ett_s1ap_TransportLayerAddress,
&ett_s1ap_ToTargetTransparentContainer,
@@ -826,7 +837,7 @@ void proto_register_s1ap(void) {
prefs_register_bool_preference(s1ap_module, "dissect_container", "Dissect TransparentContainer", "Dissect TransparentContainers that are opaque to S1AP", &g_s1ap_dissect_container);
prefs_register_enum_preference(s1ap_module, "dissect_lte_container_as", "Dissect LTE TransparentContainer as",
"Select whether LTE TransparentContainer should be dissected as NB-IOT or legacy LTE",
- &g_s1ap_dissect_lte_container_as, s1ap_lte_container_vals, FALSE);
+ &g_s1ap_dissect_lte_container_as, s1ap_lte_container_vals, false);
}
/*
diff --git a/epan/dissectors/asn1/s1ap/packet-s1ap-template.h b/epan/dissectors/asn1/s1ap/packet-s1ap-template.h
index a8998971..d2429f75 100644
--- a/epan/dissectors/asn1/s1ap/packet-s1ap-template.h
+++ b/epan/dissectors/asn1/s1ap/packet-s1ap-template.h
@@ -12,16 +12,16 @@
#define PACKET_S1AP_H
typedef struct _s1ap_ctx_t {
- guint32 message_type;
- guint32 ProcedureCode;
- guint32 ProtocolIE_ID;
- guint32 ProtocolExtensionID;
+ uint32_t message_type;
+ uint32_t ProcedureCode;
+ uint32_t ProtocolIE_ID;
+ uint32_t ProtocolExtensionID;
} s1ap_ctx_t;
extern const value_string s1ap_warningType_vals[];
extern const value_string s1ap_serialNumber_gs_vals[];
-void dissect_s1ap_warningMessageContents(tvbuff_t *warning_msg_tvb, proto_tree *tree, packet_info *pinfo, guint8 dcs, int hf_nb_pages, int hf_decoded_page);
+void dissect_s1ap_warningMessageContents(tvbuff_t *warning_msg_tvb, proto_tree *tree, packet_info *pinfo, uint8_t dcs, int hf_nb_pages, int hf_decoded_page);
#include "packet-s1ap-exp.h"
diff --git a/epan/dissectors/asn1/s1ap/s1ap.cnf b/epan/dissectors/asn1/s1ap/s1ap.cnf
index 61cde3a2..5cc92201 100644
--- a/epan/dissectors/asn1/s1ap/s1ap.cnf
+++ b/epan/dissectors/asn1/s1ap/s1ap.cnf
@@ -253,15 +253,15 @@ MAX_VAL = asn1_param_get_integer(%(ACTX)s,"upperBound")
s1ap_data->number_type = E212_NONE;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
- 3, 3, FALSE, &parameter_tvb);
+ 3, 3, false, &parameter_tvb);
if(tvb_reported_length(tvb)==0)
return offset;
if (!parameter_tvb)
return offset;
- dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, tree, 0, number_type, FALSE);
+ dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, tree, 0, number_type, false);
if (s1ap_data->supported_ta) {
- guint32 plmn = tvb_get_ntoh24(parameter_tvb, 0);
+ uint32_t plmn = tvb_get_ntoh24(parameter_tvb, 0);
wmem_array_append_one(s1ap_data->supported_ta->plmn, plmn);
} else if (s1ap_data->tai) {
s1ap_data->tai->plmn = tvb_get_ntoh24(parameter_tvb, 0);
@@ -271,7 +271,7 @@ MAX_VAL = asn1_param_get_integer(%(ACTX)s,"upperBound")
#.FN_BODY ENBname VAL_PTR = &parameter_tvb
tvbuff_t *parameter_tvb=NULL;
int length;
- gboolean is_ascii;
+ bool is_ascii;
%(DEFAULT_BODY)s
@@ -287,7 +287,7 @@ MAX_VAL = asn1_param_get_integer(%(ACTX)s,"upperBound")
#.FN_BODY MMEname VAL_PTR = &parameter_tvb
tvbuff_t *parameter_tvb=NULL;
int length;
- gboolean is_ascii;
+ bool is_ascii;
%(DEFAULT_BODY)s
@@ -324,7 +324,7 @@ tvbuff_t *parameter_tvb=NULL;
#.FN_BODY TransportLayerAddress VAL_PTR = &parameter_tvb
tvbuff_t *parameter_tvb=NULL;
proto_tree *subtree;
- gint tvb_len;
+ int tvb_len;
%(DEFAULT_BODY)s
if (!parameter_tvb)
@@ -376,17 +376,17 @@ Port-Number TYPE = FT_UINT16 DISPLAY = BASE_DEC
%(DEFAULT_BODY)s
#.FN_BODY SRVCCHOIndication VAL_PTR = &srvcc_ho_ind
- guint32 srvcc_ho_ind;
+ uint32_t srvcc_ho_ind;
struct s1ap_private_data *s1ap_data = s1ap_get_private_data(actx->pinfo);
%(DEFAULT_BODY)s
if (srvcc_ho_ind == cSonly)
- s1ap_data->srvcc_ho_cs_only = TRUE;
+ s1ap_data->srvcc_ho_cs_only = true;
#Undef the value before use
#.FN_HDR HandoverRequired
struct s1ap_private_data *s1ap_data = s1ap_get_private_data(actx->pinfo);
s1ap_data->handover_type_value = 0xff;
- s1ap_data->srvcc_ho_cs_only = FALSE;
+ s1ap_data->srvcc_ho_cs_only = false;
#.FN_HDR HandoverCommand
struct s1ap_private_data *s1ap_data = s1ap_get_private_data(actx->pinfo);
s1ap_data->handover_type_value = 0xff;
@@ -399,7 +399,7 @@ Port-Number TYPE = FT_UINT16 DISPLAY = BASE_DEC
#.FN_BODY SourceeNB-ToTargeteNB-TransparentContainer
struct s1ap_private_data *s1ap_data = s1ap_get_private_data(actx->pinfo);
- volatile guint32 _offset;
+ volatile uint32_t _offset;
s1ap_data->transparent_container_type = SOURCE_TO_TARGET_TRANSPARENT_CONTAINER;
_offset = offset;
@@ -431,7 +431,7 @@ Port-Number TYPE = FT_UINT16 DISPLAY = BASE_DEC
if ((g_s1ap_dissect_container)&&(parameter_tvb) && (tvb_reported_length(parameter_tvb) > 0)) {
struct s1ap_private_data *s1ap_data = s1ap_get_private_data(actx->pinfo);
/* Don't want elements inside container to write to info column */
- col_set_writable(actx->pinfo->cinfo, COL_INFO, FALSE);
+ col_set_writable(actx->pinfo->cinfo, COL_INFO, false);
subtree = proto_item_add_subtree(actx->created_item, ett_s1ap_ToTargetTransparentContainer);
switch(s1ap_data->handover_type_value){
@@ -487,12 +487,12 @@ Port-Number TYPE = FT_UINT16 DISPLAY = BASE_DEC
break;
}
/* Enable writing of the column again */
- col_set_writable(actx->pinfo->cinfo, COL_INFO, TRUE);
+ col_set_writable(actx->pinfo->cinfo, COL_INFO, true);
}
#.FN_BODY TargeteNB-ToSourceeNB-TransparentContainer
struct s1ap_private_data *s1ap_data = s1ap_get_private_data(actx->pinfo);
- volatile guint32 _offset;
+ volatile uint32_t _offset;
s1ap_data->transparent_container_type = TARGET_TO_SOURCE_TRANSPARENT_CONTAINER;
_offset = offset;
@@ -722,7 +722,10 @@ Hysteresis DISPLAY = BASE_CUSTOM STRINGS = CF_FUNC(s1ap_Hysteresis_fmt)
&hf_s1ap_rAT_RestrictionInformation_MEO,
&hf_s1ap_rAT_RestrictionInformation_GEO,
&hf_s1ap_rAT_RestrictionInformation_OTHERSAT,
- &hf_s1ap_rAT_RestrictionInformation_Reserved,
+ &hf_s1ap_rAT_RestrictionInformation_NR_LEO,
+ &hf_s1ap_rAT_RestrictionInformation_NR_MEO,
+ &hf_s1ap_rAT_RestrictionInformation_NR_GEO,
+ &hf_s1ap_rAT_RestrictionInformation_NR_OTHERSAT,
NULL
};
proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_s1ap_rAT_RestrictionInformation);
@@ -954,7 +957,7 @@ ProtocolExtensionID TYPE = FT_UINT8 DISPLAY = BASE_DEC|BASE_EXT_STRING STRINGS
if (!parameter_tvb)
return offset;
subtree = proto_item_add_subtree(actx->created_item, ett_s1ap_E_UTRAN_Trace_ID);
- dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, subtree, 0, E212_NONE, FALSE);
+ dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, subtree, 0, E212_NONE, false);
proto_tree_add_item(subtree, hf_s1ap_E_UTRAN_Trace_ID_TraceID, parameter_tvb, 3, 3, ENC_BIG_ENDIAN);
proto_tree_add_item(subtree, hf_s1ap_E_UTRAN_Trace_ID_TraceRecordingSessionReference, parameter_tvb, 6, 2, ENC_BIG_ENDIAN);
@@ -985,10 +988,10 @@ IntersystemMeasurementConfiguration/rSRQ DISPLAY = BASE_CUSTOM STRINGS = CF_FUNC
IntersystemMeasurementConfiguration/sINR DISPLAY = BASE_CUSTOM STRINGS = CF_FUNC(s1ap_threshold_nr_sinr_fmt)
#.TYPE_ATTR
-InterSystemMeasurementParameters/measurementDuration DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
+InterSystemMeasurementParameters/measurementDuration DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=UNS(&units_seconds)
#.TYPE_ATTR
-BitRate DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_bit_sec
+BitRate DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=UNS(&units_bit_sec)
#.FN_BODY InterSystemMeasurementItem/sMTC VAL_PTR = &ssb_mtc_tvb
tvbuff_t *ssb_mtc_tvb = NULL;
@@ -1093,7 +1096,7 @@ MME-Group-ID TYPE = FT_UINT16 DISPLAY = BASE_DEC_HEX
}
#.TYPE_ATTR
-Time-UE-StayedInCell DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
+Time-UE-StayedInCell DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=UNS(&units_seconds)
#.TYPE_ATTR
Time-UE-StayedInCell-EnhancedGranularity DISPLAY = BASE_CUSTOM STRINGS = CF_FUNC(s1ap_Time_UE_StayedInCell_EnhancedGranularity_fmt)
@@ -1106,13 +1109,13 @@ Time-UE-StayedInCell-EnhancedGranularity DISPLAY = BASE_CUSTOM STRINGS = CF_FUNC
}
#.TYPE_ATTR
-TimeSinceSecondaryNodeRelease TYPE=FT_UINT32 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
+TimeSinceSecondaryNodeRelease TYPE=FT_UINT32 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=UNS(&units_seconds)
#.TYPE_ATTR
-LastVisitedPSCellInformation/timeStay DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
+LastVisitedPSCellInformation/timeStay DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=UNS(&units_seconds)
#.TYPE_ATTR
-RecommendedCellItem/timeStayedInCell DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
+RecommendedCellItem/timeStayedInCell DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=UNS(&units_seconds)
#.FN_BODY LastVisitedNGRANCellInformation VAL_PTR = &parameter_tvb
tvbuff_t *parameter_tvb = NULL;
@@ -1175,7 +1178,7 @@ MessageIdentifier TYPE = FT_UINT16 DISPLAY = BASE_DEC|BASE_EXT_STRING STRINGS =
}
#.TYPE_ATTR
-RepetitionPeriod DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
+RepetitionPeriod DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=UNS(&units_seconds)
#.FN_BODY WarningType VAL_PTR = &parameter_tvb
tvbuff_t *parameter_tvb = NULL;
@@ -1199,7 +1202,7 @@ RepetitionPeriod DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
}
#.TYPE_ATTR
-DataSize DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_bit_bits
+DataSize DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=UNS(&units_bit_bits)
#.FN_BODY WarningMessageContents VAL_PTR = &parameter_tvb
tvbuff_t *parameter_tvb = NULL;
@@ -1230,7 +1233,7 @@ DataSize DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_bit_bits
EUTRANRoundTripDelayEstimationInfo DISPLAY = BASE_CUSTOM STRINGS = CF_FUNC(s1ap_EUTRANRoundTripDelayEstimationInfo_fmt)
#.TYPE_ATTR
-ExtendedRepetitionPeriod DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
+ExtendedRepetitionPeriod DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=UNS(&units_seconds)
#.FN_BODY MeasurementsToActivate VAL_PTR = &parameter_tvb
tvbuff_t *parameter_tvb = NULL;
@@ -1274,10 +1277,10 @@ LHN-ID TYPE=FT_STRING DISPLAY = BASE_NONE
#.END
#.TYPE_ATTR
-ExpectedActivityPeriod DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
+ExpectedActivityPeriod DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=UNS(&units_seconds)
#.TYPE_ATTR
-ExpectedIdlePeriod DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
+ExpectedIdlePeriod DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=UNS(&units_seconds)
#.FN_BODY E-RABUsageReportItem/startTimestamp VAL_PTR = &timestamp_tvb
tvbuff_t *timestamp_tvb = NULL;
@@ -1298,13 +1301,13 @@ ExpectedIdlePeriod DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
}
#.TYPE_ATTR
-E-RABUsageReportItem/usageCountUL DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_octet_octets
+E-RABUsageReportItem/usageCountUL DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=UNS(&units_octet_octets)
#.TYPE_ATTR
-E-RABUsageReportItem/usageCountDL DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_octet_octets
+E-RABUsageReportItem/usageCountDL DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=UNS(&units_octet_octets)
#.TYPE_ATTR
-ExtendedBitRate DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_bit_sec
+ExtendedBitRate DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=UNS(&units_bit_sec)
#.FN_BODY NRencryptionAlgorithms VAL_PTR = &parameter_tvb
tvbuff_t *parameter_tvb = NULL;
@@ -1420,7 +1423,7 @@ M-TMSI TYPE = FT_UINT32 DISPLAY = BASE_DEC_HEX
%(DEFAULT_BODY)s
if (parameter_tvb) {
proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_s1ap_IMSI);
- dissect_e212_imsi(parameter_tvb, actx->pinfo, subtree, 0, tvb_reported_length(parameter_tvb), FALSE);
+ dissect_e212_imsi(parameter_tvb, actx->pinfo, subtree, 0, tvb_reported_length(parameter_tvb), false);
}
#.FN_BODY NASSecurityParametersfromE-UTRAN VAL_PTR = &parameter_tvb
@@ -1447,29 +1450,29 @@ M-TMSI TYPE = FT_UINT32 DISPLAY = BASE_DEC_HEX
((s1ap_data->procedure_code == id_S1Setup) ||
(s1ap_data->procedure_code == id_ENBConfigurationUpdate))) {
s1ap_data->supported_ta = wmem_new0(actx->pinfo->pool, struct s1ap_supported_ta);
- s1ap_data->supported_ta->plmn = wmem_array_new(actx->pinfo->pool, sizeof(guint32));
+ s1ap_data->supported_ta->plmn = wmem_array_new(actx->pinfo->pool, sizeof(uint32_t));
}
#.FN_FTR SupportedTAs-Item
s1ap_data->supported_ta = NULL;
#.FN_BODY RAT-Type VAL_PTR = &rat_type
- guint32 rat_type = 0xffffffff;
+ uint32_t rat_type = 0xffffffff;
struct s1ap_private_data *s1ap_data = s1ap_get_private_data(actx->pinfo);
%(DEFAULT_BODY)s
if (s1ap_data->s1ap_conv && s1ap_data->supported_ta && rat_type <= nbiot_othersat) {
- guint64 *key;
- guint i;
+ uint64_t *key;
+ unsigned i;
for (i = 0; i < wmem_array_get_count(s1ap_data->supported_ta->plmn); i++) {
- key = wmem_new(wmem_file_scope(), guint64);
- *key = ((*(guint32*)wmem_array_index(s1ap_data->supported_ta->plmn, i)) << 16) | s1ap_data->supported_ta->tac;
+ key = wmem_new(wmem_file_scope(), uint64_t);
+ *key = ((*(uint32_t*)wmem_array_index(s1ap_data->supported_ta->plmn, i)) << 16) | s1ap_data->supported_ta->tac;
wmem_map_insert(s1ap_data->s1ap_conv->nbiot_ta, key, GUINT_TO_POINTER(1));
}
}
#.FN_BODY ENB-UE-S1AP-ID VAL_PTR = &enb_ue_s1ap_id
- guint32 enb_ue_s1ap_id;
+ uint32_t enb_ue_s1ap_id;
struct s1ap_private_data *s1ap_data = s1ap_get_private_data(actx->pinfo);
%(DEFAULT_BODY)s
if (hf_index == hf_s1ap_eNB_UE_S1AP_ID) {
@@ -1478,10 +1481,10 @@ M-TMSI TYPE = FT_UINT32 DISPLAY = BASE_DEC_HEX
proto_item_set_hidden(item);
}
- s1ap_data->enb_ue_s1ap_id = (guint16)enb_ue_s1ap_id;
+ s1ap_data->enb_ue_s1ap_id = (uint16_t)enb_ue_s1ap_id;
#.FN_BODY MME-UE-S1AP-ID VAL_PTR = &mme_ue_s1ap_id
- guint32 mme_ue_s1ap_id;
+ uint32_t mme_ue_s1ap_id;
%(DEFAULT_BODY)s
if (hf_index == hf_s1ap_mME_UE_S1AP_ID) {
proto_item *item;
@@ -1497,11 +1500,11 @@ M-TMSI TYPE = FT_UINT32 DISPLAY = BASE_DEC_HEX
if (!PINFO_FD_VISITED(actx->pinfo) && s1ap_data->s1ap_conv &&
(s1ap_data->message_type == INITIATING_MESSAGE) &&
(s1ap_data->procedure_code == id_initialUEMessage)) {
- guint64 key = (s1ap_data->tai->plmn << 16) | s1ap_data->tai->tac;
+ uint64_t key = (s1ap_data->tai->plmn << 16) | s1ap_data->tai->tac;
if (wmem_map_lookup(s1ap_data->s1ap_conv->nbiot_ta, &key)) {
wmem_tree_key_t tree_key[3];
- guint32 *id = wmem_new(wmem_file_scope(), guint32);
+ uint32_t *id = wmem_new(wmem_file_scope(), uint32_t);
*id = s1ap_data->enb_ue_s1ap_id;
tree_key[0].length = 1;
@@ -1534,16 +1537,16 @@ WLANName TYPE=FT_STRING DISPLAY = BASE_NONE
#.END
#.TYPE_ATTR
-Subscription-Based-UE-DifferentiationInfo/periodicTime DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
+Subscription-Based-UE-DifferentiationInfo/periodicTime DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=UNS(&units_seconds)
#.TYPE_ATTR
-ScheduledCommunicationTime/timeofDayStart DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
+ScheduledCommunicationTime/timeofDayStart DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=UNS(&units_seconds)
#.TYPE_ATTR
-ScheduledCommunicationTime/timeofDayEnd DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
+ScheduledCommunicationTime/timeofDayEnd DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=UNS(&units_seconds)
#.TYPE_ATTR
-TrafficLoadReductionIndication DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_percent
+TrafficLoadReductionIndication DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=UNS(&units_percent)
#.FN_BODY MDT-ConfigurationNR VAL_PTR = &parameter_tvb
tvbuff_t *parameter_tvb = NULL;
@@ -1563,6 +1566,12 @@ TrafficLoadReductionIndication DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_
dissect_ngap_SONConfigurationTransfer_PDU(parameter_tvb, actx->pinfo, subtree, NULL);
}
+#.TYPE_ATTR
+HandoverWindowStart DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=UNS(&units_seconds)
+
+#.TYPE_ATTR
+HandoverWindowDuration DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(s1ap_handover_window_duration_fmt)
+
#.ASSIGN_VALUE_TO_TYPE # S1AP does not have constants assigned to types, they are pure INTEGER
# ProcedureCode
@@ -1958,6 +1967,13 @@ id-E-RABToBeUpdatedItem ProtocolIE-ID
id-SourceSNID ProtocolIE-ID
id-LoggedMDTTrigger ProtocolIE-ID
id-SensorMeasurementConfiguration ProtocolIE-ID
+id-M4ReportAmount ProtocolIE-ID
+id-M5ReportAmount ProtocolIE-ID
+id-M6ReportAmount ProtocolIE-ID
+id-M7ReportAmount ProtocolIE-ID
+id-TimeBasedHandoverInformation ProtocolIE-ID
+id-Bearers-SubjectToDLDiscarding-Item ProtocolIE-ID
+id-Bearers-SubjectToDLDiscardingList ProtocolIE-ID
#.END
@@ -2212,6 +2228,7 @@ E-RABSecurityResultItem N s1ap.ies id-E-RABSecurityResul
LTE-NTN-TAI-Information N s1ap.ies id-LTE-NTN-TAI-Information
E-RABToBeUpdatedList N s1ap.ies id-E-RABToBeUpdatedList
E-RABToBeUpdatedItem N s1ap.ies id-E-RABToBeUpdatedItem
+Bearers-SubjectToDLDiscarding-Item N s1ap.ies id-Bearers-SubjectToDLDiscarding-Item
#S1AP-PROTOCOL-IES-PAIR
#RAB-SetupOrModifyItemFirst N s1ap.ies.pair.first id-RAB-SetupOrModifyItem
@@ -2295,6 +2312,12 @@ TransportLayerAddress N s1ap.extension id-SourceNodeTransportL
Global-RAN-NODE-ID N s1ap.extension id-SourceSNID
LoggedMDTTrigger N s1ap.extension id-LoggedMDTTrigger
SensorMeasurementConfiguration N s1ap.extension id-SensorMeasurementConfiguration
+M4ReportAmountMDT N s1ap.extension id-M4ReportAmount
+M5ReportAmountMDT N s1ap.extension id-M5ReportAmount
+M6ReportAmountMDT N s1ap.extension id-M6ReportAmount
+M7ReportAmountMDT N s1ap.extension id-M7ReportAmount
+TimeBasedHandoverInformation N s1ap.extension id-TimeBasedHandoverInformation
+Bearers-SubjectToDLDiscardingList N s1ap.extension id-Bearers-SubjectToDLDiscardingList
#S1AP-ELEMENTARY-PROCEDURE
HandoverRequired N s1ap.proc.imsg id-HandoverPreparation
@@ -2664,27 +2687,27 @@ MMEEarlyStatusTransfer N s1ap.proc.imsg id-MMEEarlyStatusTransf
# Whenever a Cause appears, look up the reason and show it in the Info column
#.FN_BODY CauseRadioNetwork VAL_PTR=&value
- guint32 value;
+ uint32_t value;
%(DEFAULT_BODY)s
col_append_fstr(actx->pinfo->cinfo, COL_INFO, " [RadioNetwork-cause=%%s]", val_to_str_const(value, s1ap_CauseRadioNetwork_vals, "Unknown"));
#.FN_BODY CauseTransport VAL_PTR=&value
- guint32 value;
+ uint32_t value;
%(DEFAULT_BODY)s
col_append_fstr(actx->pinfo->cinfo, COL_INFO, " [Transport-cause=%%s]", val_to_str_const(value, s1ap_CauseTransport_vals, "Unknown"));
#.FN_BODY CauseNas VAL_PTR=&value
- guint32 value;
+ uint32_t value;
%(DEFAULT_BODY)s
col_append_fstr(actx->pinfo->cinfo, COL_INFO, " [NAS-cause=%%s]", val_to_str_const(value, s1ap_CauseNas_vals, "Unknown"));
#.FN_BODY CauseProtocol VAL_PTR=&value
- guint32 value;
+ uint32_t value;
%(DEFAULT_BODY)s
col_append_fstr(actx->pinfo->cinfo, COL_INFO, " [Protocol-cause=%%s]", val_to_str_const(value, s1ap_CauseProtocol_vals, "Unknown"));
#.FN_BODY CauseMisc VAL_PTR=&value
- guint32 value;
+ uint32_t value;
%(DEFAULT_BODY)s
col_append_fstr(actx->pinfo->cinfo, COL_INFO, " [Misc-cause=%%s]", val_to_str_const(value, s1ap_CauseMisc_vals, "Unknown"));