diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:34:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:34:10 +0000 |
commit | e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc (patch) | |
tree | 68cb5ef9081156392f1dd62a00c6ccc1451b93df /epan/dissectors/asn1/lcsap | |
parent | Initial commit. (diff) | |
download | wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.tar.xz wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.zip |
Adding upstream version 4.2.2.upstream/4.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'epan/dissectors/asn1/lcsap')
-rw-r--r-- | epan/dissectors/asn1/lcsap/CMakeLists.txt | 48 | ||||
-rw-r--r-- | epan/dissectors/asn1/lcsap/LCS-AP-CommonDataTypes.asn | 31 | ||||
-rw-r--r-- | epan/dissectors/asn1/lcsap/LCS-AP-Constants.asn | 101 | ||||
-rw-r--r-- | epan/dissectors/asn1/lcsap/LCS-AP-Containers.asn | 117 | ||||
-rw-r--r-- | epan/dissectors/asn1/lcsap/LCS-AP-IEs.asn | 728 | ||||
-rw-r--r-- | epan/dissectors/asn1/lcsap/LCS-AP-PDU-Contents.asn | 334 | ||||
-rw-r--r-- | epan/dissectors/asn1/lcsap/LCS-AP-PDU-Descriptions.asn | 180 | ||||
-rw-r--r-- | epan/dissectors/asn1/lcsap/lcsap.cnf | 382 | ||||
-rw-r--r-- | epan/dissectors/asn1/lcsap/packet-lcsap-template.c | 329 | ||||
-rw-r--r-- | epan/dissectors/asn1/lcsap/packet-lcsap-template.h | 20 |
10 files changed, 2270 insertions, 0 deletions
diff --git a/epan/dissectors/asn1/lcsap/CMakeLists.txt b/epan/dissectors/asn1/lcsap/CMakeLists.txt new file mode 100644 index 00000000..9a633c3e --- /dev/null +++ b/epan/dissectors/asn1/lcsap/CMakeLists.txt @@ -0,0 +1,48 @@ +# CMakeLists.txt +# +# Wireshark - Network traffic analyzer +# By Gerald Combs <gerald@wireshark.org> +# Copyright 1998 Gerald Combs +# +# SPDX-License-Identifier: GPL-2.0-or-later +# + +set( PROTOCOL_NAME lcsap ) + +set( PROTO_OPT ) + +set( EXPORT_FILES + ${PROTOCOL_NAME}-exp.cnf +) + +set( EXT_ASN_FILE_LIST +) + +set( ASN_FILE_LIST + LCS-AP-CommonDataTypes.asn + LCS-AP-Constants.asn + LCS-AP-Containers.asn + LCS-AP-IEs.asn + LCS-AP-PDU-Contents.asn + LCS-AP-PDU-Descriptions.asn +) + +set( EXTRA_DIST + ${ASN_FILE_LIST} + packet-${PROTOCOL_NAME}-template.c + packet-${PROTOCOL_NAME}-template.h + ${PROTOCOL_NAME}.cnf +) + +set( SRC_FILES + ${EXTRA_DIST} + ${EXT_ASN_FILE_LIST} +) + +set( A2W_FLAGS ) + +set( EXTRA_CNF + "${CMAKE_CURRENT_BINARY_DIR}/../x509if/x509if-exp.cnf" +) + +ASN2WRS() diff --git a/epan/dissectors/asn1/lcsap/LCS-AP-CommonDataTypes.asn b/epan/dissectors/asn1/lcsap/LCS-AP-CommonDataTypes.asn new file mode 100644 index 00000000..1e3e23a3 --- /dev/null +++ b/epan/dissectors/asn1/lcsap/LCS-AP-CommonDataTypes.asn @@ -0,0 +1,31 @@ +-- +-- 3GPP TS 29.171 v17.2.0 (2022-12-15) +-- 7.5.6 Common Definitions + +-- ************************************************************** +-- +-- Common definitions +-- +-- ************************************************************** + +LCS-AP-CommonDataTypes { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +eps-Access (21) modules (3) lcs-AP (4) version1 (1) lcs-AP-CommonDataTypes (3)} + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +Criticality ::= ENUMERATED { reject, ignore, notify } + +Presence ::= ENUMERATED { optional, conditional, mandatory } + +ProcedureCode ::= INTEGER (0..255) + +ProtocolExtensionID ::= INTEGER (0..65535) + +ProtocolIE-ID ::= INTEGER (0..65535) + +TriggeringMessage ::= ENUMERATED {initiating-message, successful-outcome, unsuccessful-outcome, outcome} + +END diff --git a/epan/dissectors/asn1/lcsap/LCS-AP-Constants.asn b/epan/dissectors/asn1/lcsap/LCS-AP-Constants.asn new file mode 100644 index 00000000..ff8c3fe7 --- /dev/null +++ b/epan/dissectors/asn1/lcsap/LCS-AP-Constants.asn @@ -0,0 +1,101 @@ +-- +-- 3GPP TS 29.171 v17.2.0 (2022-12-15) +-- 7.5.7 Constant definitions + +-- ************************************************************** +-- +-- Constant definitions +-- +-- ************************************************************** + +LCS-AP-Constants { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +eps-Access (21) modules (3) lcs-AP (4) version1 (1) lcs-AP-Constants (4)} + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- Elementary Procedures +-- +-- ************************************************************** + + +id-Location-Service-Request INTEGER ::= 0 +id-Connection-Oriented-Information-Transfer INTEGER ::= 1 +id-Connectionless-Information-Transfer INTEGER ::= 2 +id-Location-Abort INTEGER ::= 3 +id-Reset INTEGER ::= 4 +id-Ciphering-Key-Data-Delivery INTEGER ::= 5 + + +-- ************************************************************** +-- +-- IEs +-- +-- ************************************************************** + + +id-Accuracy-Fulfillment-Indicator INTEGER ::= 0 +id-APDU INTEGER ::= 1 +id-Correlation-ID INTEGER ::= 2 +id-Destination-ID INTEGER ::= 3 +id-E-UTRAN-Cell-Identifier INTEGER ::= 4 +id-Include-Velocity INTEGER ::= 5 +id-IMEI INTEGER ::= 6 +id-IMSI INTEGER ::= 7 +id-LCS-Client-Type INTEGER ::= 8 +id-LCS-Priority INTEGER ::= 9 +id-LCS-QOS INTEGER ::= 10 +id-LCS-Cause INTEGER ::= 11 +id-Location-Estimate INTEGER ::= 12 +id-Location-Type INTEGER ::= 13 +id-MultipleAPDUs INTEGER ::= 14 +id-Payload-Type INTEGER ::= 15 +id-Positioning-Data INTEGER ::= 16 +id-Return-Error-Request INTEGER ::= 17 +id-Return-Error-Cause INTEGER ::= 18 +id-Source-Identity INTEGER ::= 19 +id-UE-Positioning-Capability INTEGER ::= 20 +id-Velocity-Estimate INTEGER ::= 21 +id-LCS-Service-Type-ID INTEGER ::= 22 +id-Cell-Portion-ID INTEGER ::= 23 +id-Civic-Address INTEGER ::= 24 +id-Barometric-Pressure INTEGER ::= 25 +id-Additional-PositioningDataSet INTEGER ::= 26 +id-RAT-Type INTEGER ::= 27 +id-Ciphering-Data INTEGER ::= 28 +id-Ciphering-Data-Ack INTEGER ::= 29 +id-Ciphering-Data-Error-Report INTEGER ::= 30 +id-Coverage-Level INTEGER ::= 31 +id-UE-Country-Determination-Indication INTEGER ::= 32 +id-UE-Area-Indication INTEGER ::= 33 + + + +-- ************************************************************** +-- +-- Extension constants +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Lists +-- +-- ************************************************************** + + +max-No-Of-Points INTEGER ::= 15 +max-Set INTEGER ::= 9 +max-GNSS-Set INTEGER ::= 9 +max-Add-Pos-Set INTEGER ::= 8 +max-Cipher-Set INTEGER ::= 16 + + +maxProtocolExtensions INTEGER ::= 65535 +maxProtocolIEs INTEGER ::= 65535 + +END diff --git a/epan/dissectors/asn1/lcsap/LCS-AP-Containers.asn b/epan/dissectors/asn1/lcsap/LCS-AP-Containers.asn new file mode 100644 index 00000000..6582b5f3 --- /dev/null +++ b/epan/dissectors/asn1/lcsap/LCS-AP-Containers.asn @@ -0,0 +1,117 @@ +-- +-- 3GPP TS 29.171 v17.2.0 (2022-12-15) +-- 7.5.8 Container Definitions + +-- ************************************************************** +-- +-- Container definitions +-- +-- ************************************************************** + +LCS-AP-Containers { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +eps-Access (21) modules (3) lcs-AP (4) version1 (1) lcs-AP-Containers (5)} + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** + +IMPORTS + Criticality, + Presence, + ProtocolExtensionID, + ProtocolIE-ID +FROM LCS-AP-CommonDataTypes + + maxProtocolExtensions, + maxProtocolIEs +FROM LCS-AP-Constants; + +-- ************************************************************** +-- +-- Class Definition for Protocol IEs +-- +-- ************************************************************** + +LCS-AP-PROTOCOL-IES ::= CLASS { + &id ProtocolIE-ID UNIQUE, + &criticality Criticality DEFAULT ignore, + &Value, + &presence Presence +} +WITH SYNTAX { + ID &id + CRITICALITY &criticality + TYPE &Value + PRESENCE &presence +} + +-- ************************************************************** +-- +-- Class Definition for Protocol Extensions +-- +-- ************************************************************** + +LCS-AP-PROTOCOL-EXTENSION ::= CLASS { + &id ProtocolExtensionID UNIQUE, + &criticality Criticality DEFAULT ignore, + &Extension, + &presence Presence +} +WITH SYNTAX { + ID &id + CRITICALITY &criticality + EXTENSION &Extension + PRESENCE &presence +} + +-- ************************************************************** +-- +-- Container for Protocol IEs +-- +-- ************************************************************** + +ProtocolIE-Container {LCS-AP-PROTOCOL-IES : IEsSetParam} ::= + SEQUENCE (SIZE (0..maxProtocolIEs)) OF + ProtocolIE-Field {{IEsSetParam}} + +ProtocolIE-Field {LCS-AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE { + id LCS-AP-PROTOCOL-IES.&id ({IEsSetParam}), + criticality LCS-AP-PROTOCOL-IES.&criticality ({IEsSetParam}{@id}), + value LCS-AP-PROTOCOL-IES.&Value ({IEsSetParam}{@id}) +} + +-- ************************************************************** +-- +-- Container Lists for Protocol IE Containers +-- +-- ************************************************************** + +ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, LCS-AP-PROTOCOL-IES : IEsSetParam} ::= + SEQUENCE (SIZE (lowerBound..upperBound)) OF + ProtocolIE-Container {{IEsSetParam}} + +-- ************************************************************** +-- +-- Container for Protocol Extensions +-- +-- ************************************************************** + +ProtocolExtensionContainer {LCS-AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= + SEQUENCE (SIZE (1..maxProtocolExtensions)) OF + ProtocolExtensionField {{ExtensionSetParam}} + +ProtocolExtensionField {LCS-AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE { + id LCS-AP-PROTOCOL-EXTENSION.&id ({ExtensionSetParam}), + criticality LCS-AP-PROTOCOL-EXTENSION.&criticality ({ExtensionSetParam}{@id}), + extensionValue LCS-AP-PROTOCOL-EXTENSION.&Extension ({ExtensionSetParam}{@id}) +} + + +END diff --git a/epan/dissectors/asn1/lcsap/LCS-AP-IEs.asn b/epan/dissectors/asn1/lcsap/LCS-AP-IEs.asn new file mode 100644 index 00000000..4ffb2592 --- /dev/null +++ b/epan/dissectors/asn1/lcsap/LCS-AP-IEs.asn @@ -0,0 +1,728 @@ +-- +-- 3GPP TS 29.171 v17.2.0 (2022-12-15) +-- 7.5.5 Information element definitions + +-- ************************************************************** +-- +-- Information Element Definitions +-- +-- ************************************************************** + +LCS-AP-IEs { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +eps-Access (21) modules (3) lcs-AP (4) version1 (1) lcs-AP-IEs (2)} + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +IMPORTS + + max-No-Of-Points, + max-Set, + max-GNSS-Set, + max-Add-Pos-Set, + max-Cipher-Set, + id-Additional-PositioningDataSet +FROM LCS-AP-Constants + + Criticality, + ProcedureCode, + TriggeringMessage, + ProtocolIE-ID +FROM LCS-AP-CommonDataTypes + + ProtocolExtensionContainer{}, + LCS-AP-PROTOCOL-EXTENSION +FROM LCS-AP-Containers; + + +-- A + + +APDU ::= OCTET STRING + +Accuracy-Fulfillment-Indicator ::= ENUMERATED { + requested-accuracy-fulfilled, + requested-accuracy-not-fulfilled, + ... +} + +Additional-PositioningDataSet ::= SEQUENCE(SIZE(1..max-Add-Pos-Set)) OF Additional-PositioningMethodAndUsage + +Additional-PositioningMethodAndUsage ::= OCTET STRING (SIZE(1)) + +Altitude ::= INTEGER (0..65535) +-- The valid value for this IE is 0 to 32767. +-- Reception of value greater than 32767 shall be mapped to the value 32767. + + +Altitude-And-Direction ::= SEQUENCE { + direction-Of-Altitude Direction-Of-Altitude, + altitude Altitude, + ... +} + +Angle ::= INTEGER (0..179) + +-- B + +Barometric-Pressure ::= INTEGER (30000..115000) + +Bearing ::= INTEGER (0..359) + + +-- C + + +C0 ::= BIT STRING (SIZE (1..128)) + +CellIdentity ::= BIT STRING (SIZE (28)) + +Cell-Portion-ID ::= INTEGER (0..255,..., 256..4095) + +Ciphering-Data ::= SEQUENCE(SIZE(1..max-Cipher-Set)) OF Ciphering-Data-Set + +Ciphering-Data-Ack ::= SEQUENCE(SIZE(1..max-Cipher-Set)) OF Ciphering-Set-ID + +Ciphering-Data-Error-Report ::= SEQUENCE(SIZE(1..max-Cipher-Set)) OF Ciphering-Data-Error-Report-Contents + +Ciphering-Data-Set ::= SEQUENCE { + ciphering-Set-ID Ciphering-Set-ID, + ciphering-Key Ciphering-Key, + c0 C0, + sib-Types SIB-Types, + validity-Start-Time Validity-Start-Time, + validity-Duration Validity-Duration, + tais-List TAIs-List, + ... + } + +Ciphering-Data-Error-Report-Contents ::= SEQUENCE { + ciphering-Set-ID Ciphering-Set-ID, + storage-Outcome Storage-Outcome, + ... + } + +Ciphering-Set-ID ::= INTEGER (0..65535) + +Ciphering-Key ::= OCTET STRING (SIZE (16)) + +Civic-Address ::= OCTET STRING + +Confidence ::= INTEGER (0..100) + +Correlation-ID ::= OCTET STRING (SIZE (4)) + +Country ::= OCTET STRING + +-- D + +DegreesLatitude ::= INTEGER (0..8388607) -- 23 bit field + +DegreesLongitude ::= INTEGER (-8388608..8388607) -- 24 bit field + +Direction-Of-Altitude ::= ENUMERATED { + height, + depth +} + +-- E + +E-CGI ::= SEQUENCE { + pLMNidentity PLMN-ID, + cell-ID CellIdentity, + iE-Extensions ProtocolExtensionContainer { { E-CGI-ExtIEs} } OPTIONAL, + ...} + +E-CGI-ExtIEs LCS-AP-PROTOCOL-EXTENSION ::= { + ... +} + +Coverage-Level ::= ENUMERATED { + extendedcoverage, + ... +} + + +Ellipsoid-Point-With-Uncertainty-Ellipse ::= SEQUENCE { + geographical-Coordinates Geographical-Coordinates, + uncertainty-Ellipse Uncertainty-Ellipse, + confidence Confidence, + iE-Extensions ProtocolExtensionContainer { { Ellipsoid-Point-With-Uncertainty-Ellipse-ExtIEs} } OPTIONAL, + ...} + +Ellipsoid-Point-With-Uncertainty-Ellipse-ExtIEs LCS-AP-PROTOCOL-EXTENSION ::= { + ... +} + + +Ellipsoid-Point-With-Altitude ::= SEQUENCE { + geographical-Coordinates Geographical-Coordinates, + altitude-And-Direction Altitude-And-Direction, + iE-Extensions ProtocolExtensionContainer { { Ellipsoid-Point-With-Altitude-ExtIEs} } OPTIONAL, + ...} + +Ellipsoid-Point-With-Altitude-ExtIEs LCS-AP-PROTOCOL-EXTENSION ::= { + ... +} + + +Ellipsoid-Point-With-Altitude-And-Uncertainty-Ellipsoid ::= SEQUENCE { + geographical-Coordinates Geographical-Coordinates, + altitude-And-Direction Altitude-And-Direction, + uncertainty-Ellipse Uncertainty-Ellipse, + uncertainty-Altitude Uncertainty-Altitude, + confidence Confidence, + iE-Extensions ProtocolExtensionContainer { { Ellipsoid-Point-With-Altitude-And-Uncertainty-Ellipsoid-ExtIEs} } OPTIONAL, + ...} + +Ellipsoid-Point-With-Altitude-And-Uncertainty-Ellipsoid-ExtIEs LCS-AP-PROTOCOL-EXTENSION ::= { + ... +} + + +Ellipsoid-Arc ::= SEQUENCE { + geographical-Coordinates Geographical-Coordinates, + inner-Radius Inner-Radius, + uncertainty-Radius Uncertainty-Code, + offset-Angle Angle, + included-Angle Angle, + confidence Confidence, + iE-Extensions ProtocolExtensionContainer { { Ellipsoid-Arc-ExtIEs} } OPTIONAL, + ... +} + +Ellipsoid-Arc-ExtIEs LCS-AP-PROTOCOL-EXTENSION ::= { + ... +} + + +ENB-ID ::= CHOICE { + macro-eNB-ID Macro-eNB-ID, + home-eNB-ID Home-eNB-ID, + ..., + short-macro-eNB-ID Short-Macro-eNB-ID, + long-macro-eNB-ID Long-Macro-eNB-ID +} + + + +E-SMLC-ID ::= INTEGER (0..255) + + +-- F +-- G + +Geographical-Area ::= CHOICE { + point Point, + point-With-Uncertainty Point-With-Uncertainty, + ellipsoidPoint-With-Uncertainty-Ellipse Ellipsoid-Point-With-Uncertainty-Ellipse, + polygon Polygon, + ellipsoid-Point-With-Altitude Ellipsoid-Point-With-Altitude, + ellipsoid-Point-With-Altitude-And-Uncertainty-Ellipsoid Ellipsoid-Point-With-Altitude-And-Uncertainty-Ellipsoid, + ellipsoid-Arc Ellipsoid-Arc, + ..., + high-Accuracy-Ellipsoid-Point-With-Uncertainty-Ellipse High-Accuracy-Ellipsoid-Point-With-Uncertainty-Ellipse, + high-Accuracy-Ellipsoid-Point-With-Altitude-And-Uncertainty-Ellipsoid High-Accuracy-Ellipsoid-Point-With-Altitude-And-Uncertainty-Ellipsoid, + high-Accuracy-Ellipsoid-Point-With-Scalable-Uncertainty-Ellipse High-Accuracy-Ellipsoid-Point-With-Scalable-Uncertainty-Ellipse, + high-Accuracy-Ellipsoid-Point-With-Altitude-And-Scalable-Uncertainty-Ellipsoid High-Accuracy-Ellipsoid-Point-With-Altitude-And-Scalable-Uncertainty-Ellipsoid + +} + +Geographical-Coordinates ::= SEQUENCE { + latitudeSign LatitudeSign, + degreesLatitude DegreesLatitude, + degreesLongitude DegreesLongitude, + iE-Extensions ProtocolExtensionContainer { {Geographical-Coordinates-ExtIEs} } OPTIONAL, + ... +} + +Geographical-Coordinates-ExtIEs LCS-AP-PROTOCOL-EXTENSION ::= { + ... +} + + +Global-eNB-ID ::= SEQUENCE { + pLMN-ID PLMN-ID, + eNB-ID ENB-ID +} + + +GNSS-Positioning-Method-And-Usage ::= OCTET STRING (SIZE (1)) + +GNSS-Positioning-Data-Set ::= SEQUENCE (SIZE (1..max-GNSS-Set)) OF GNSS-Positioning-Method-And-Usage + + +-- H + + +High-Accuracy-Altitude ::= INTEGER (-64000..1280000) + +High-Accuracy-DegreesLatitude ::= INTEGER(-2147483648..2147483647) + +High-Accuracy-DegreesLongitude ::= INTEGER(-2147483648..2147483647) + + +High-Accuracy-Ellipsoid-Point-With-Uncertainty-Ellipse ::= SEQUENCE { + high-Accuracy-Geographical-Coordinates High-Accuracy-Geographical-Coordinates, + high-Accuracy-Uncertainty-Ellipse High-Accuracy-Uncertainty-Ellipse, + confidence Confidence, + iE-Extensions ProtocolExtensionContainer { { High-Accuracy-Ellipsoid-Point-With-Uncertainty-Ellipse-ExtIEs} } OPTIONAL, + ...} + +High-Accuracy-Ellipsoid-Point-With-Uncertainty-Ellipse-ExtIEs LCS-AP-PROTOCOL-EXTENSION ::= { + ... +} + +High-Accuracy-Ellipsoid-Point-With-Scalable-Uncertainty-Ellipse ::= SEQUENCE { + high-Accuracy-Geographical-Coordinates High-Accuracy-Geographical-Coordinates, + high-Accuracy-Scalable-Uncertainty-Ellipse High-Accuracy-Scalable-Uncertainty-Ellipse, + confidence Confidence, + iE-Extensions ProtocolExtensionContainer { { High-Accuracy-Ellipsoid-Point-With-Scalable-Uncertainty-Ellipse-ExtIEs} } OPTIONAL, + ...} + +High-Accuracy-Ellipsoid-Point-With-Scalable-Uncertainty-Ellipse-ExtIEs LCS-AP-PROTOCOL-EXTENSION ::= { + ... +} + + +High-Accuracy-Ellipsoid-Point-With-Altitude-And-Uncertainty-Ellipsoid ::= SEQUENCE { + high-Accuracy-Geographical-Coordinates High-Accuracy-Geographical-Coordinates, + high-Accuracy-Altitude High-Accuracy-Altitude, + high-Accuracy-Uncertainty-Ellipse High-Accuracy-Uncertainty-Ellipse, + confidence Confidence, + high-Accuracy-Uncertainty-Altitude High-Accuracy-Uncertainty-Code, + vertical-Confidence Confidence, + iE-Extensions ProtocolExtensionContainer { { High-Accuracy-Ellipsoid-Point-With-Altitude-And-Uncertainty-Ellipsoid-ExtIEs} } OPTIONAL, + ...} + + +High-Accuracy-Ellipsoid-Point-With-Altitude-And-Uncertainty-Ellipsoid-ExtIEs LCS-AP-PROTOCOL-EXTENSION ::= { + ... +} + +High-Accuracy-Ellipsoid-Point-With-Altitude-And-Scalable-Uncertainty-Ellipsoid ::= SEQUENCE { + high-Accuracy-Geographical-Coordinates High-Accuracy-Geographical-Coordinates, + high-Accuracy-Altitude High-Accuracy-Altitude, + high-Accuracy-Scalable-Uncertainty-Ellipse High-Accuracy-Scalable-Uncertainty-Ellipse, + confidence Confidence, + high-Accuracy-Scalable-Uncertainty-Altitude High-Accuracy-Scalable-Uncertainty-Altitude, + vertical-Confidence Confidence, + iE-Extensions ProtocolExtensionContainer { { High-Accuracy-Ellipsoid-Point-With-Altitude-And-Scalable-Uncertainty-Ellipsoid-ExtIEs} } OPTIONAL, + ...} + + +High-Accuracy-Ellipsoid-Point-With-Altitude-And-Scalable-Uncertainty-Ellipsoid-ExtIEs LCS-AP-PROTOCOL-EXTENSION ::= { + ... +} + + +High-Accuracy-Geographical-Coordinates ::= SEQUENCE { + high-Accuracy-DegreesLatitude High-Accuracy-DegreesLatitude, + high-Accuracy-DegreesLongitude High-Accuracy-DegreesLongitude, + iE-Extensions ProtocolExtensionContainer { { High-Accuracy-Geographical-Coordinates-ExtIEs} } OPTIONAL, + ... +} + + +High-Accuracy-Geographical-Coordinates-ExtIEs LCS-AP-PROTOCOL-EXTENSION ::= { + ... +} + +High-Accuracy-Uncertainty-Code ::= INTEGER (0..255) + +High-Accuracy-Extended-Uncertainty-Code ::= INTEGER (0..255) + +High-Accuracy-Uncertainty-Ellipse ::= SEQUENCE { + high-Accuracy-Uncertainty-SemiMajor High-Accuracy-Uncertainty-Code, + high-Accuracy-Uncertainty-SemiMinor High-Accuracy-Uncertainty-Code, + orientation-Major-Axis INTEGER (0..179), + iE-Extensions ProtocolExtensionContainer { { High-Accuracy-Uncertainty-Ellipse-ExtIEs} } OPTIONAL, + ... +} + +High-Accuracy-Uncertainty-Ellipse-ExtIEs LCS-AP-PROTOCOL-EXTENSION ::= { + ... +} +High-Accuracy-Extended-Uncertainty-Ellipse ::= SEQUENCE { + high-Accuracy-Extended-Uncertainty-SemiMajor High-Accuracy-Extended-Uncertainty-Code, + high-Accuracy-Extended-Uncertainty-SemiMinor High-Accuracy-Extended-Uncertainty-Code, + orientation-Major-Axis INTEGER (0..179), + iE-Extensions ProtocolExtensionContainer { { High-Accuracy-Extended-Uncertainty-Ellipse-ExtIEs} } OPTIONAL, + ... +} + +High-Accuracy-Extended-Uncertainty-Ellipse-ExtIEs LCS-AP-PROTOCOL-EXTENSION ::= { + ... +} + +High-Accuracy-Scalable-Uncertainty-Ellipse ::= CHOICE { +high-Accuracy-Uncertainty-Ellipse High-Accuracy-Uncertainty-Ellipse, +high-Accuracy-Extended-Uncertainty-Ellipse High-Accuracy-Extended-Uncertainty-Ellipse +} + +High-Accuracy-Scalable-Uncertainty-Altitude ::= CHOICE { +high-Accuracy-Uncertainty-Altitude High-Accuracy-Uncertainty-Code, +high-Accuracy-Extended-Uncertainty-Altitude High-Accuracy-Extended-Uncertainty-Code +} + + +Home-eNB-ID ::= BIT STRING (SIZE (28)) + +Horizontal-Accuracy ::= INTEGER (0..127) + + + +Horizontal-Speed-And-Bearing ::= SEQUENCE { + bearing INTEGER (0..359), + horizontal-Speed INTEGER (0..2047) +} + + +Horizontal-Velocity ::= SEQUENCE { + horizontal-Speed-And-Bearing Horizontal-Speed-And-Bearing, + iE-Extensions ProtocolExtensionContainer { { Horizontal-Velocity-ExtIEs} } OPTIONAL, + ... +} + +Horizontal-Velocity-ExtIEs LCS-AP-PROTOCOL-EXTENSION ::= { + ... +} + +Horizontal-With-Vertical-Velocity ::= SEQUENCE { + horizontal-Speed-And-Bearing Horizontal-Speed-And-Bearing, + vertical-Velocity Vertical-Velocity, + iE-Extensions ProtocolExtensionContainer { { Horizontal-With-Vertical-Velocity-ExtIEs} } OPTIONAL, + ... +} + +Horizontal-With-Vertical-Velocity-ExtIEs LCS-AP-PROTOCOL-EXTENSION ::= { + ... +} + +Horizontal-Velocity-With-Uncertainty ::= SEQUENCE { + horizontal-Speed-And-Bearing Horizontal-Speed-And-Bearing, + uncertainty-Speed INTEGER (0..255), + iE-Extensions ProtocolExtensionContainer { { Horizontal-Velocity-With-Uncertainty-ExtIEs} } OPTIONAL, + ... +} + +Horizontal-Velocity-With-Uncertainty-ExtIEs LCS-AP-PROTOCOL-EXTENSION ::= { + ... +} + +Horizontal-With-Vertical-Velocity-And-Uncertainty ::= SEQUENCE { + horizontal-Speed-And-Bearing Horizontal-Speed-And-Bearing, + vertical-Velocity Vertical-Velocity, + horizontal-Uncertainty-Speed INTEGER (0..255), + vertical-Uncertainty-Speed INTEGER (0..255), + iE-Extensions ProtocolExtensionContainer { { Horizontal-With-Vertical-Velocity-And-Uncertainty-ExtIEs} } OPTIONAL, + ... +} + +Horizontal-With-Vertical-Velocity-And-Uncertainty-ExtIEs LCS-AP-PROTOCOL-EXTENSION ::= { + ... +} + + +-- I + +IMSI ::= OCTET STRING (SIZE (3..8)) + +IMEI ::= OCTET STRING (SIZE (8)) + + +Include-Velocity ::= ENUMERATED { + requested, + not-Requested, +... +} + + +Inner-Radius ::= INTEGER (0..65535) -- 16 bit field + +International-Area-Indication ::= ENUMERATED { + yes, +... +} + + +-- J +-- K +-- L + +LatitudeSign ::= ENUMERATED { + north, + south +} + + +Location-Type ::= ENUMERATED { + geographic-Information, + assistance-Information, + ..., + last-known-location +} + +LCS-Cause ::= CHOICE { +radio-Network-Layer Radio-Network-Layer-Cause, +transport-Layer Transport-Layer-Cause, +protocol Protocol-Cause, +misc Misc-Cause +} + + +LCS-Client-Type ::= ENUMERATED { + emergency-Services, + value-Added-Services, + pLMN-Operator-Services, + lawful-Intercept-Services, + pLMN-Operator-broadcast-Services, + pLMN-Operator-OM, + pLMN-Operator-Anonymous-Statistics, + pLMN-Operator-Target-MS-Service-Support, + ... +} + + +LCS-Priority ::= OCTET STRING (SIZE (1)) + + +LCS-QoS ::= SEQUENCE { + horizontal-Accuracy Horizontal-Accuracy OPTIONAL, + vertical-Requested Vertical-Requested OPTIONAL, + vertical-Accuracy Vertical-Accuracy OPTIONAL, + response-Time Response-Time OPTIONAL, + ... +} + +LCS-Service-Type-ID ::= INTEGER (0..127) + +Long-Macro-eNB-ID ::= BIT STRING (SIZE (21)) + +-- M + +Macro-eNB-ID ::= BIT STRING (SIZE (20)) + +Message-Identifier ::= BIT STRING (SIZE (16)) + +Misc-Cause ::= ENUMERATED { + processing-Overload, + hardware-Failure, + o-And-M-Intervention, + unspecified, +..., + ciphering-key-data-lost +} + +MultipleAPDUs ::= SEQUENCE (SIZE (1.. 3)) OF APDU + + +-- N + +Network-Element ::= CHOICE { +global-eNB-ID Global-eNB-ID, +e-SMLC-ID E-SMLC-ID +} + +-- O + +Orientation-Major-Axis ::= INTEGER (0..89) + +-- P + +Payload-Type ::= ENUMERATED { +lPP, +lPPa, +... +} + +PLMN-ID ::= TBCD-STRING + +Point ::= SEQUENCE { + geographical-Coordinates Geographical-Coordinates, + iE-Extensions ProtocolExtensionContainer { {Point-ExtIEs} } OPTIONAL, + ... +} + +Point-ExtIEs LCS-AP-PROTOCOL-EXTENSION ::= { + ... +} + + +Point-With-Uncertainty ::= SEQUENCE { + geographical-Coordinates Geographical-Coordinates, + uncertainty-Code Uncertainty-Code, + iE-Extensions ProtocolExtensionContainer { {Point-With-Uncertainty-ExtIEs} } OPTIONAL, + ...} + +Point-With-Uncertainty-ExtIEs LCS-AP-PROTOCOL-EXTENSION ::= { + ... +} + +Polygon ::= SEQUENCE (SIZE (1..max-No-Of-Points)) OF Polygon-Point + + +Polygon-Point ::= SEQUENCE { + geographical-Coordinates Geographical-Coordinates, + iE-Extensions ProtocolExtensionContainer { {Polygon-Point-ExtIEs} } OPTIONAL, + ... + } + +Polygon-Point-ExtIEs LCS-AP-PROTOCOL-EXTENSION ::= { + ... +} + + +Positioning-Data ::= SEQUENCE { + positioning-Data-Set Positioning-Data-Set OPTIONAL, + gNSS-Positioning-Data-Set GNSS-Positioning-Data-Set OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { Positioning-Data-ExtIEs} } OPTIONAL, + ... + } + +Positioning-Data-ExtIEs LCS-AP-PROTOCOL-EXTENSION ::= { + { ID id-Additional-PositioningDataSet CRITICALITY ignore EXTENSION Additional-PositioningDataSet PRESENCE optional }, + ... +} + +Positioning-Data-Set ::= SEQUENCE (SIZE (1..max-Set)) OF Positioning-Method-And-Usage + +Positioning-Method-And-Usage ::= OCTET STRING (SIZE (1)) + +Protocol-Cause ::= ENUMERATED { +transfer-Syntax-Error, +abstract-Syntax-Error-Reject, +abstract-Syntax-Error-Ignore-And-Notify, +message-Not-Compatible-With-Receiver-State, +semantic-Error, +unspecified, +abstract-Syntax-Error, +... +} + +-- Q +-- R + +Radio-Network-Layer-Cause ::= ENUMERATED { +unspecified, +... +} + +RAT-Type ::= ENUMERATED { + lte-wb, + nb-iot, + ..., + lte-m +} + +Response-Time ::= ENUMERATED { + low-Delay(0), + delay-Tolerant(1), +... +} + +Return-Error-Type ::= ENUMERATED { +yes, +no +} + +Return-Error-Cause ::= ENUMERATED { +system-Failure, +protocol-Error, +destination-Unknown, +destination-Unreachable, +congestion, +... +} + +-- S + +Short-Macro-eNB-ID ::= BIT STRING (SIZE (18)) + +SIB-Types ::= OCTET STRING (SIZE (4)) + +Storage-Outcome ::= ENUMERATED { +successful, +failed +} + +-- T + +TAIs-List ::= OCTET STRING (SIZE (7..97)) + +TBCD-STRING ::= OCTET STRING (SIZE (3)) + +Transport-Layer-Cause ::= ENUMERATED { +tranport-Resource-Unavailable, +unspecified, +... +} + +-- U + +Uncertainty-Altitude ::= INTEGER (0..127) + +Uncertainty-Code ::= INTEGER (0..127) + +Uncertainty-Ellipse ::= SEQUENCE { + uncertainty-SemiMajor Uncertainty-Code, + uncertainty-SemiMinor Uncertainty-Code, + orientation-Major-Axis Orientation-Major-Axis +} + +UE-Positioning-Capability ::= SEQUENCE { + lPP BOOLEAN, + ... +} + +UE-Country-Determination-Indication ::= ENUMERATED { + required, + not-required, +... +} + +UE-Area-Indication ::= SEQUENCE { + country Country, + international-area-indication International-Area-Indication +} + + +-- V + +Validity-Duration ::= INTEGER (0..65535) + +Validity-Start-Time ::= OCTET STRING (SIZE (4)) + +Velocity-Estimate ::= CHOICE { + horizontal-Velocity Horizontal-Velocity, + horizontal-With-Vertical-Velocity Horizontal-With-Vertical-Velocity, + horizontal-Velocity-With-Uncertainty Horizontal-Velocity-With-Uncertainty, + horizontal-With-Vertical-Velocity-And-Uncertainty Horizontal-With-Vertical-Velocity-And-Uncertainty, + ... +} + +Vertical-Requested ::= ENUMERATED { + vertical-coordinate-Is-Not-Requested(0), + vertical-coordinate-Is-Requested(1) +} + +Vertical-Accuracy ::= INTEGER (0..127) + +Vertical-Velocity ::= SEQUENCE { + vertical-Speed INTEGER (0..255), + vertical-Speed-Direction Vertical-Speed-Direction +} + +Vertical-Speed-Direction ::= ENUMERATED { + upward, + downward +} + + +-- W +-- X +-- Y + +END diff --git a/epan/dissectors/asn1/lcsap/LCS-AP-PDU-Contents.asn b/epan/dissectors/asn1/lcsap/LCS-AP-PDU-Contents.asn new file mode 100644 index 00000000..77d881a4 --- /dev/null +++ b/epan/dissectors/asn1/lcsap/LCS-AP-PDU-Contents.asn @@ -0,0 +1,334 @@ +-- +-- 3GPP TS 29.171 v17.2.0 (2022-12-15) +-- 7.5.4 PDU definitions + +-- ************************************************************** +-- +-- PDU definitions for LCS-AP. +-- +-- ************************************************************** + + +LCS-AP-PDU-Contents { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +eps-Access (21) modules (3) lcs-AP (4) version1 (1) lcs-AP-PDU-Contents (1)} + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** + +IMPORTS + + APDU, + Accuracy-Fulfillment-Indicator, + Barometric-Pressure, + Cell-Portion-ID, + Ciphering-Data, + Ciphering-Data-Ack, + Ciphering-Data-Error-Report, + Civic-Address, + Correlation-ID, + Coverage-Level, + E-CGI, + Geographical-Area, + IMSI, + IMEI, + Include-Velocity, + LCS-Cause, + LCS-Client-Type, + LCS-Service-Type-ID, + LCS-Priority, + LCS-QoS, + Location-Type, + MultipleAPDUs, + Network-Element, + Payload-Type, + Positioning-Data, + RAT-Type, + Return-Error-Type, + Return-Error-Cause, + UE-Positioning-Capability, + Velocity-Estimate, + UE-Country-Determination-Indication, + UE-Area-Indication +FROM LCS-AP-IEs + + ProtocolExtensionContainer{}, + ProtocolIE-Container{}, + LCS-AP-PROTOCOL-EXTENSION, + LCS-AP-PROTOCOL-IES +FROM LCS-AP-Containers + + id-Accuracy-Fulfillment-Indicator, + id-APDU, + id-Barometric-Pressure, + id-Cell-Portion-ID, + id-Ciphering-Data, + id-Ciphering-Data-Ack, + id-Ciphering-Data-Error-Report, + id-Civic-Address, + id-Correlation-ID, + id-Coverage-Level, + id-Destination-ID, + id-E-UTRAN-Cell-Identifier, + id-Include-Velocity, + id-IMEI, + id-IMSI, + id-LCS-Client-Type, + id-LCS-Priority, + id-LCS-QOS, + id-LCS-Cause, + id-LCS-Service-Type-ID, + id-Location-Estimate, + id-Location-Type, + id-MultipleAPDUs, + id-Payload-Type, + id-Positioning-Data, + id-RAT-Type, + id-Return-Error-Request, + id-Return-Error-Cause, + id-Source-Identity, + id-UE-Positioning-Capability, + id-Velocity-Estimate, + id-UE-Country-Determination-Indication, + id-UE-Area-Indication +FROM LCS-AP-Constants; + + +-- ************************************************************** +-- +-- Location-Request +-- +-- ************************************************************** + +Location-Request ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { Location-Request-IEs} }, + protocolExtensions ProtocolExtensionContainer { { Location-Request-Extensions} } OPTIONAL, + ... +} + +Location-Request-IEs LCS-AP-PROTOCOL-IES ::= { + { ID id-Correlation-ID CRITICALITY reject TYPE Correlation-ID PRESENCE mandatory } | + { ID id-Location-Type CRITICALITY reject TYPE Location-Type PRESENCE mandatory } | + { ID id-E-UTRAN-Cell-Identifier CRITICALITY ignore TYPE E-CGI PRESENCE mandatory } | + { ID id-LCS-Client-Type CRITICALITY reject TYPE LCS-Client-Type PRESENCE optional } | + { ID id-LCS-Priority CRITICALITY reject TYPE LCS-Priority PRESENCE optional } | + { ID id-LCS-QOS CRITICALITY reject TYPE LCS-QoS PRESENCE optional } | + { ID id-UE-Positioning-Capability CRITICALITY reject TYPE UE-Positioning-Capability PRESENCE optional } | + { ID id-Include-Velocity CRITICALITY reject TYPE Include-Velocity PRESENCE optional } | + { ID id-IMSI CRITICALITY ignore TYPE IMSI PRESENCE optional } | + { ID id-IMEI CRITICALITY ignore TYPE IMEI PRESENCE optional } | + { ID id-MultipleAPDUs CRITICALITY reject TYPE MultipleAPDUs PRESENCE optional } | + { ID id-RAT-Type CRITICALITY ignore TYPE RAT-Type PRESENCE optional } | + { ID id-Coverage-Level CRITICALITY ignore TYPE Coverage-Level PRESENCE optional}, + ... +} + +Location-Request-Extensions LCS-AP-PROTOCOL-EXTENSION ::= { + { ID id-LCS-Service-Type-ID CRITICALITY ignore EXTENSION LCS-Service-Type-ID PRESENCE optional } | + { ID id-UE-Country-Determination-Indication CRITICALITY ignore TYPE UE-Country-Determination-Indication PRESENCE optional}, + ... +} + + +-- ************************************************************** +-- +-- Location-Response +-- +-- ************************************************************** + +Location-Response ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {Location-Response-IEs} }, + protocolExtensions ProtocolExtensionContainer { {Location-Response-Extensions} } OPTIONAL, + ... +} + +Location-Response-IEs LCS-AP-PROTOCOL-IES ::= { + { ID id-Correlation-ID CRITICALITY reject TYPE Correlation-ID PRESENCE mandatory } | + { ID id-Location-Estimate CRITICALITY reject TYPE Geographical-Area PRESENCE optional } | + { ID id-Positioning-Data CRITICALITY reject TYPE Positioning-Data PRESENCE optional } | + { ID id-Velocity-Estimate CRITICALITY reject TYPE Velocity-Estimate PRESENCE optional } | + { ID id-Accuracy-Fulfillment-Indicator CRITICALITY reject TYPE Accuracy-Fulfillment-Indicator PRESENCE optional } | + { ID id-LCS-Cause CRITICALITY ignore TYPE LCS-Cause PRESENCE optional } , +... +} + + +Location-Response-Extensions LCS-AP-PROTOCOL-EXTENSION ::= { +{ ID id-E-UTRAN-Cell-Identifier CRITICALITY ignore EXTENSION E-CGI PRESENCE optional } | +{ ID id-Cell-Portion-ID CRITICALITY ignore EXTENSION Cell-Portion-ID PRESENCE optional } | +{ ID id-Civic-Address CRITICALITY ignore EXTENSION Civic-Address PRESENCE optional } | +{ ID id-Barometric-Pressure CRITICALITY ignore EXTENSION Barometric-Pressure PRESENCE optional } | +{ ID id-UE-Area-Indication CRITICALITY ignore EXTENSION UE-Area-Indication PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- Location-Abort +-- +-- ************************************************************** + +Location-Abort-Request ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {Location-Abort-Request-IEs} }, + protocolExtensions ProtocolExtensionContainer { {Location-Abort-Request-Extensions} } OPTIONAL, + ... +} + +Location-Abort-Request-IEs LCS-AP-PROTOCOL-IES ::= { + { ID id-Correlation-ID CRITICALITY reject TYPE Correlation-ID PRESENCE mandatory } | + { ID id-LCS-Cause CRITICALITY ignore TYPE LCS-Cause PRESENCE mandatory } , + ... +} + +Location-Abort-Request-Extensions LCS-AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- ************************************************************** +-- +-- Connection-Oriented-Information +-- +-- ************************************************************** + +Connection-Oriented-Information ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {Connection-Oriented-Information-IEs} }, + protocolExtensions ProtocolExtensionContainer { {Connection-Oriented-Information-Extensions} } OPTIONAL, + ... +} + +Connection-Oriented-Information-IEs LCS-AP-PROTOCOL-IES ::= { + { ID id-Correlation-ID CRITICALITY reject TYPE Correlation-ID PRESENCE optional } | + { ID id-Payload-Type CRITICALITY reject TYPE Payload-Type PRESENCE optional } | + { ID id-APDU CRITICALITY reject TYPE APDU PRESENCE optional } , + ... +} + +Connection-Oriented-Information-Extensions LCS-AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- ************************************************************** +-- +-- Connectionless-Information +-- +-- ************************************************************** + +Connectionless-Information ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {Connectionless-Information-IEs} }, + protocolExtensions ProtocolExtensionContainer { {Connectionless-Information-Extensions} } OPTIONAL, + ... +} + +Connectionless-Information-IEs LCS-AP-PROTOCOL-IES ::= { + { ID id-Source-Identity CRITICALITY reject TYPE Network-Element PRESENCE mandatory } | + { ID id-Destination-ID CRITICALITY reject TYPE Network-Element PRESENCE mandatory } | + { ID id-APDU CRITICALITY reject TYPE APDU PRESENCE mandatory } | + { ID id-Return-Error-Request CRITICALITY reject TYPE Return-Error-Type PRESENCE optional } | + { ID id-Return-Error-Cause CRITICALITY ignore TYPE Return-Error-Cause PRESENCE optional } , + ... +} + + +Connectionless-Information-Extensions LCS-AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- ************************************************************** +-- +-- Reset-Request +-- +-- ************************************************************** + +Reset-Request ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {Reset-Request-IEs} }, + protocolExtensions ProtocolExtensionContainer { {Reset-Request-Extensions} } OPTIONAL, + ... +} + +Reset-Request-IEs LCS-AP-PROTOCOL-IES ::= { + { ID id-LCS-Cause CRITICALITY ignore TYPE LCS-Cause PRESENCE mandatory } , + ... +} + + +Reset-Request-Extensions LCS-AP-PROTOCOL-EXTENSION ::= { + ... +} + + +-- ************************************************************** +-- +-- Reset-Acknowledge +-- +-- ************************************************************** + +Reset-Acknowledge ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { Reset-Acknowledge-IEs} }, + protocolExtensions ProtocolExtensionContainer { { Reset-Acknowledge-Extensions} } OPTIONAL, + ... +} + +Reset-Acknowledge-IEs LCS-AP-PROTOCOL-IES ::= { + ... +} + +Reset-Acknowledge-Extensions LCS-AP-PROTOCOL-EXTENSION ::= { + ... +} + + +-- ************************************************************** +-- +-- Ciphering-Key-Data +-- +-- ************************************************************** + +Ciphering-Key-Data ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {Ciphering-Key-Data-IEs} }, + protocolExtensions ProtocolExtensionContainer { {Ciphering-Key-Data-Extensions} } OPTIONAL, + ... +} + +Ciphering-Key-Data-IEs LCS-AP-PROTOCOL-IES ::= { + { ID id-Ciphering-Data CRITICALITY reject TYPE Ciphering-Data PRESENCE mandatory } , + ... +} + + +Ciphering-Key-Data-Extensions LCS-AP-PROTOCOL-EXTENSION ::= { + ... +} + + +-- ************************************************************** +-- +-- Ciphering-Key-Data-Result +-- +-- ************************************************************** + +Ciphering-Key-Data-Result ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {Ciphering-Key-Data-Result-IEs} }, + protocolExtensions ProtocolExtensionContainer { {Ciphering-Key-Data-Result-Extensions} } OPTIONAL, + ... +} + +Ciphering-Key-Data-Result-IEs LCS-AP-PROTOCOL-IES ::= { + { ID id-Ciphering-Data-Ack CRITICALITY reject TYPE Ciphering-Data-Ack PRESENCE conditional } | + { ID id-Ciphering-Data-Error-Report CRITICALITY reject TYPE Ciphering-Data-Error-Report PRESENCE conditional } , + ... +} + + +Ciphering-Key-Data-Result-Extensions LCS-AP-PROTOCOL-EXTENSION ::= { + ... +} + + +END diff --git a/epan/dissectors/asn1/lcsap/LCS-AP-PDU-Descriptions.asn b/epan/dissectors/asn1/lcsap/LCS-AP-PDU-Descriptions.asn new file mode 100644 index 00000000..4327c7f1 --- /dev/null +++ b/epan/dissectors/asn1/lcsap/LCS-AP-PDU-Descriptions.asn @@ -0,0 +1,180 @@ +-- +-- 3GPP TS 29.171 v17.2.0 (2022-12-15) +-- 7.5.3 Elementary procedure definitions + +-- ************************************************************** +-- +-- Elementary Procedure definitions +-- +-- ************************************************************** + +LCS-AP-PDU-Descriptions { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +eps-Access (21) modules (3) lcs-AP (4) version1 (1) lcs-AP-PDU-Descriptions (0)} + + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** + +IMPORTS + Criticality, + ProcedureCode +FROM LCS-AP-CommonDataTypes + + Location-Request, + Location-Response, + Location-Abort-Request, + Connection-Oriented-Information, + Connectionless-Information, + Reset-Request, + Reset-Acknowledge, + Ciphering-Key-Data, + Ciphering-Key-Data-Result +FROM LCS-AP-PDU-Contents + + id-Location-Service-Request, + id-Connection-Oriented-Information-Transfer, + id-Connectionless-Information-Transfer, + id-Location-Abort, + id-Reset, + id-Ciphering-Key-Data-Delivery +FROM LCS-AP-Constants; + +-- ************************************************************** +-- +-- Interface Elementary Procedure Class +-- +-- ************************************************************** + +LCS-AP-ELEMENTARY-PROCEDURE ::= CLASS { + &InitiatingMessage , + &SuccessfulOutcome OPTIONAL, + &UnsuccessfulOutcome OPTIONAL, + &procedureCode ProcedureCode UNIQUE, + &criticality Criticality DEFAULT ignore +} +WITH SYNTAX { + INITIATING MESSAGE &InitiatingMessage + [SUCCESSFUL OUTCOME &SuccessfulOutcome] + [UNSUCCESSFUL OUTCOME &UnsuccessfulOutcome] + PROCEDURE CODE &procedureCode + [CRITICALITY &criticality] +} + +-- ************************************************************** +-- +-- Interface PDU Definition +-- +-- ************************************************************** + +LCS-AP-PDU ::= CHOICE { + initiatingMessage InitiatingMessage, + successfulOutcome SuccessfulOutcome, + unsuccessfulOutcome UnsuccessfulOutcome, + ... +} + +InitiatingMessage ::= SEQUENCE { + procedureCode LCS-AP-ELEMENTARY-PROCEDURE.&procedureCode ({LCS-AP-ELEMENTARY-PROCEDURES}), + criticality LCS-AP-ELEMENTARY-PROCEDURE.&criticality ({LCS-AP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value LCS-AP-ELEMENTARY-PROCEDURE.&InitiatingMessage ({LCS-AP-ELEMENTARY-PROCEDURES}{@procedureCode}) +} + +SuccessfulOutcome ::= SEQUENCE { + procedureCode LCS-AP-ELEMENTARY-PROCEDURE.&procedureCode ({LCS-AP-ELEMENTARY-PROCEDURES}), + criticality LCS-AP-ELEMENTARY-PROCEDURE.&criticality ({LCS-AP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value LCS-AP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({LCS-AP-ELEMENTARY-PROCEDURES}{@procedureCode}) +} + +UnsuccessfulOutcome ::= SEQUENCE { + procedureCode LCS-AP-ELEMENTARY-PROCEDURE.&procedureCode ({LCS-AP-ELEMENTARY-PROCEDURES}), + criticality LCS-AP-ELEMENTARY-PROCEDURE.&criticality ({LCS-AP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value LCS-AP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({LCS-AP-ELEMENTARY-PROCEDURES}{@procedureCode}) +} + +-- ************************************************************** +-- +-- Interface Elementary Procedure List +-- +-- ************************************************************** + +LCS-AP-ELEMENTARY-PROCEDURES LCS-AP-ELEMENTARY-PROCEDURE ::= { + LCS-AP-ELEMENTARY-PROCEDURES-CLASS-1 | + LCS-AP-ELEMENTARY-PROCEDURES-CLASS-2 , + ... +} + +LCS-AP-ELEMENTARY-PROCEDURES-CLASS-1 LCS-AP-ELEMENTARY-PROCEDURE ::= { + location-Service-Request | + connectionless-Information-Transfer | + location-Abort | + reset | + ciphering-Key-Data-Delivery , + ... +} + + + +LCS-AP-ELEMENTARY-PROCEDURES-CLASS-2 LCS-AP-ELEMENTARY-PROCEDURE ::= { + connection-Oriented-Information-Transfer , + ... +} + +-- ************************************************************** +-- +-- Interface Elementary Procedures +-- +-- ************************************************************** + + +location-Service-Request LCS-AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE Location-Request + SUCCESSFUL OUTCOME Location-Response + UNSUCCESSFUL OUTCOME Location-Response + PROCEDURE CODE id-Location-Service-Request + CRITICALITY reject +} + +connection-Oriented-Information-Transfer LCS-AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE Connection-Oriented-Information + PROCEDURE CODE id-Connection-Oriented-Information-Transfer + CRITICALITY reject +} + +connectionless-Information-Transfer LCS-AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE Connectionless-Information + UNSUCCESSFUL OUTCOME Connectionless-Information + PROCEDURE CODE id-Connectionless-Information-Transfer + CRITICALITY reject +} + +location-Abort LCS-AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE Location-Abort-Request + SUCCESSFUL OUTCOME Location-Response + PROCEDURE CODE id-Location-Abort + CRITICALITY reject +} + +reset LCS-AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE Reset-Request + SUCCESSFUL OUTCOME Reset-Acknowledge + PROCEDURE CODE id-Reset + CRITICALITY reject +} + +ciphering-Key-Data-Delivery LCS-AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE Ciphering-Key-Data + SUCCESSFUL OUTCOME Ciphering-Key-Data-Result + UNSUCCESSFUL OUTCOME Ciphering-Key-Data-Result + PROCEDURE CODE id-Ciphering-Key-Data-Delivery + CRITICALITY reject +} + +END diff --git a/epan/dissectors/asn1/lcsap/lcsap.cnf b/epan/dissectors/asn1/lcsap/lcsap.cnf new file mode 100644 index 00000000..e4ae9d4a --- /dev/null +++ b/epan/dissectors/asn1/lcsap/lcsap.cnf @@ -0,0 +1,382 @@ +# lcsap.cnf +# lcsap conformation file + +#.OPT +PER +ALIGNED +#.END + +#.EXPORTS +Correlation-ID_PDU +Positioning-Data_PDU + +#.PDU +LCS-AP-PDU + +#.MAKE_ENUM +ProcedureCode +ProtocolIE-ID + +#.NO_EMIT +TBCD-STRING + +#.OMIT_ASSIGNMENT +# Get rid of unused code warnings +Presence + +TriggeringMessage +ProtocolIE-ContainerList +Message-Identifier +Bearing +#.END + + +#.TYPE_RENAME +InitiatingMessage/value InitiatingMessage_value +SuccessfulOutcome/value SuccessfulOutcome_value +UnsuccessfulOutcome/value UnsuccessfulOutcome_value + +#.FIELD_RENAME +InitiatingMessage/value initiatingMessagevalue +UnsuccessfulOutcome/value unsuccessfulOutcome_value +SuccessfulOutcome/value successfulOutcome_value + +ProtocolExtensionField/id ext_id + +#PrivateIE-Field/value private_value +ProtocolIE-Field/value ie_field_value + +#.FN_PARS ProtocolIE-ID VAL_PTR=&ProtocolIE_ID +#.FN_FTR ProtocolIE-ID + if (tree) { + proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", val_to_str(ProtocolIE_ID, VALS(lcsap_ProtocolIE_ID_vals), "unknown (%d)")); + } +#.END + + +#.FN_PARS ProtocolIE-Field/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolIEFieldValue +#.FN_PARS ProtocolExtensionID VAL_PTR=&ProtocolExtensionID +#.FN_PARS ProtocolExtensionField/extensionValue FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolExtensionFieldExtensionValue + +#.FN_PARS Payload-Type VAL_PTR=&PayloadType + +# LCSAP connectionless-transfer +# procedures, which according to 3GPP TS 29.171 LCS-AP, can only contain an LPPa +# payload within the APDU IE of the procedure. + +#.FN_HDR Connectionless-Information + + PayloadType = 1; /* LPPa */ + +#.FN_BODY APDU VAL_PTR = ¶meter_tvb + + tvbuff_t *parameter_tvb=NULL; + +%(DEFAULT_BODY)s + + if (parameter_tvb) { + switch (PayloadType) { + case 0: + /* LPP */ + if (lpp_handle) { + call_dissector(lpp_handle, parameter_tvb, %(ACTX)s->pinfo, tree); + } + break; + case 1: + /* LPPa */ + if (lppa_handle) { + call_dissector(lppa_handle, parameter_tvb, %(ACTX)s->pinfo, tree); + } + break; + default: + break; + } + } + PayloadType = -1; + +#.FN_PARS ProcedureCode VAL_PTR = &ProcedureCode +#.FN_FTR ProcedureCode + + { + guint8 tmp = tvb_get_guint8(tvb, 0); + + if (tmp == 0) + col_add_fstr(actx->pinfo->cinfo, COL_INFO, "%sReq", + val_to_str(ProcedureCode, lcsap_ProcedureCode_vals, "unknown message")); + else if (tmp == 32) + col_add_fstr(actx->pinfo->cinfo, COL_INFO, "%sResp", + val_to_str(ProcedureCode, lcsap_ProcedureCode_vals, "unknown message")); + else + col_add_fstr(actx->pinfo->cinfo, COL_INFO, "%s", + val_to_str(ProcedureCode, lcsap_ProcedureCode_vals, "unknown message")); + } + +#.END + +#.FN_PARS InitiatingMessage/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_InitiatingMessageValue + +#.FN_PARS SuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_SuccessfulOutcomeValue + +#.FN_PARS UnsuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_UnsuccessfulOutcomeValue + +#--- Parameterization is not supported in asn2wrs --- + +#ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, LCS-AP-PROTOCOL-IES : IEsSetParam} ::= +# SEQUENCE (SIZE (lowerBound..upperBound)) OF +# ProtocolIE-Container {{IEsSetParam}} + + +#.END + + +# Currently not used +# FN_PARS ProtocolIE-ContainerPairList +#MIN_VAL = asn1_param_get_integer(%(ACTX)s,"lowerBound") +#MAX_VAL = asn1_param_get_integer(%(ACTX)s,"upperBound") +# FN_HDR ProtocolIE-ContainerPairList +# static const asn1_par_def_t ProtocolIE_ContainerPairList_pars[] = { +# { "lowerBound", ASN1_PAR_INTEGER }, +# { "upperBound", ASN1_PAR_INTEGER }, +# { NULL, 0 } +# }; +# asn1_stack_frame_check(actx, "ProtocolIE-ContainerPairList", ProtocolIE_ContainerPairList_pars); +# END + +# following construction is not supported by asn2wrs +# PLMN-ID ::= TBCD-STRING (SIZE (3)) +# TBCD-STRING ::= OCTET STRING +# 3GPP TS 29.171 version 10.3.0 Release 10 +# 7.4.27 PLMN Identity +#.FN_BODY PLMN-ID VAL_PTR = parameter_tvb + tvbuff_t *parameter_tvb=NULL; + proto_tree *subtree; + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + 3, 3, FALSE, ¶meter_tvb); + if(tvb_reported_length(tvb)==0) + return offset; + + if (!parameter_tvb) + return offset; + subtree = proto_item_add_subtree(actx->created_item, ett_lcsap_plmnd_id); + dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, subtree, 0, E212_NONE, FALSE); +#.END + +#.FN_BODY Positioning-Method-And-Usage VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb=NULL; + +%(DEFAULT_BODY)s + + if (!parameter_tvb) + return offset; + + proto_tree_add_item(tree, hf_lcsap_pos_method, parameter_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_lcsap_pos_usage, parameter_tvb, 0, 1, ENC_BIG_ENDIAN); + + +#.FN_BODY GNSS-Positioning-Method-And-Usage VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb=NULL; + +%(DEFAULT_BODY)s + + if (!parameter_tvb) + return offset; + + proto_tree_add_item(tree, hf_lcsap_gnss_pos_method, parameter_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_lcsap_gnss_id, parameter_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_lcsap_gnss_pos_usage, parameter_tvb, 0, 1, ENC_BIG_ENDIAN); + +# +# Code copied from packet-gsm_a_common.c +#.FN_BODY Uncertainty-Code VAL_PTR = &uncertainty_code + guint32 uncertainty_code; + + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 127U, &uncertainty_code, FALSE); + + proto_item_append_text(actx->created_item, " (%.1f m)", 10 * (pow(1.1, (double)uncertainty_code) - 1)); + +#.FN_BODY DegreesLatitude VAL_PTR = °rees + gint32 degrees; + + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 8388607U, °rees, FALSE); + + proto_item_append_text(actx->created_item, " (%.5f degrees)", (((double)degrees/8388607) * 90)); + +#.FN_BODY DegreesLongitude VAL_PTR = °rees + gint32 degrees; + + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -8388608, 8388607U, °rees, FALSE); + + proto_item_append_text(actx->created_item, " (%.5f degrees)", (((double)degrees/16777215) * 360)); + +#.FN_BODY IMSI VAL_PTR=&imsi_tvb + tvbuff_t *imsi_tvb; +%(DEFAULT_BODY)s + if (imsi_tvb) { + proto_tree *subtree; + + subtree = proto_item_add_subtree(actx->created_item, ett_lcsap_imsi); + dissect_e212_imsi(imsi_tvb, actx->pinfo, subtree, 0, tvb_reported_length(imsi_tvb), FALSE); + } + +#.FN_BODY Horizontal-Accuracy VAL_PTR=&uncertainty_code + guint32 uncertainty_code; +%(DEFAULT_BODY)s + +#.FN_FTR Horizontal-Accuracy + proto_item_append_text(actx->created_item, " (%.1f m)", 10 * (pow(1.1, (double)uncertainty_code) - 1)); + +#.FN_BODY Vertical-Accuracy VAL_PTR=&vertical_uncertainty + guint32 vertical_uncertainty; +%(DEFAULT_BODY)s + +#.FN_FTR Vertical-Accuracy + proto_item_append_text(actx->created_item, " (%.1f m)", 45 * (pow(1.025, (double)vertical_uncertainty) - 1)); + + #.FN_BODY Civic-Address VAL_PTR=¶meter_tvb + tvbuff_t *parameter_tvb=NULL; + + %(DEFAULT_BODY)s + if (parameter_tvb && xml_handle) { + proto_tree *subtree; + + subtree = proto_item_add_subtree(actx->created_item, ett_lcsap_civic_address); + if (tvb_strncaseeql(parameter_tvb, 0, "<?xml", 5) == 0) { + call_dissector(xml_handle, parameter_tvb, actx->pinfo, subtree); + } else { + proto_tree_add_expert(tree, actx->pinfo, &ei_lcsap_civic_data_not_xml, parameter_tvb, 0, -1); + } + } + + + + +#.TYPE_ATTR +ProtocolExtensionID TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(lcsap_ProtocolIE_ID_vals) +#.ASSIGN_VALUE_TO_TYPE # LCSAP does not have constants assigned to types, they are pure INTEGER +# ProcedureCode +id-Location-Service-Request ProcedureCode +id-Connection-Oriented-Information-Transfer ProcedureCode +id-Connectionless-Information-Transfer ProcedureCode +id-Location-Abort ProcedureCode +id-Reset ProcedureCode +id-Ciphering-Key-Data-Delivery ProcedureCode + +# ProtocolIE-ID +id-Correlation-ID ProtocolIE-ID +id-Location-Type ProtocolIE-ID +id-E-UTRAN-Cell-Identifier ProtocolIE-ID +id-LCS-Client-Type ProtocolIE-ID +id-LCS-Priority ProtocolIE-ID +id-LCS-QOS ProtocolIE-ID +id-UE-Positioning-Capability ProtocolIE-ID +id-Include-Velocity ProtocolIE-ID +id-IMSI ProtocolIE-ID +id-IMEI ProtocolIE-ID +id-MultipleAPDUs ProtocolIE-ID +id-Positioning-Data ProtocolIE-ID +id-Velocity-Estimate ProtocolIE-ID +id-Accuracy-Fulfillment-Indicator ProtocolIE-ID +id-LCS-Cause ProtocolIE-ID +id-Payload-Type ProtocolIE-ID +id-Return-Error-Cause ProtocolIE-ID +id-APDU ProtocolIE-ID +id-Return-Error-Request ProtocolIE-ID +id-Location-Estimate ProtocolIE-ID +id-Source-Identity ProtocolIE-ID +id-Destination-ID ProtocolIE-ID +id-LCS-Service-Type-ID ProtocolIE-ID +id-Cell-Portion-ID ProtocolIE-ID +id-Civic-Address ProtocolIE-ID +id-Barometric-Pressure ProtocolIE-ID +id-Additional-PositioningDataSet ProtocolIE-ID +id-RAT-Type ProtocolIE-ID +id-Ciphering-Data ProtocolIE-ID +id-Ciphering-Data-Ack ProtocolIE-ID +id-Ciphering-Data-Error-Report ProtocolIE-ID +id-Coverage-Level ProtocolIE-ID +id-UE-Country-Determination-Indication ProtocolIE-ID +id-UE-Area-Indication ProtocolIE-ID + +#.REGISTER + +#LCS-AP-PROTOCOL-IES +Accuracy-Fulfillment-Indicator N lcsap.ies id-Accuracy-Fulfillment-Indicator +APDU N lcsap.ies id-APDU +Correlation-ID N lcsap.ies id-Correlation-ID +Network-Element N lcsap.ies id-Destination-ID +E-CGI N lcsap.ies id-E-UTRAN-Cell-Identifier +Include-Velocity N lcsap.ies id-Include-Velocity +IMEI N lcsap.ies id-IMEI +IMSI N lcsap.ies id-IMSI +LCS-Client-Type N lcsap.ies id-LCS-Client-Type +LCS-Priority N lcsap.ies id-LCS-Priority +LCS-QoS N lcsap.ies id-LCS-QOS +LCS-Cause N lcsap.ies id-LCS-Cause +Geographical-Area N lcsap.ies id-Location-Estimate +Location-Type N lcsap.ies id-Location-Type +MultipleAPDUs N lcsap.ies id-MultipleAPDUs +Payload-Type N lcsap.ies id-Payload-Type +Positioning-Data N lcsap.ies id-Positioning-Data +Return-Error-Type N lcsap.ies id-Return-Error-Request +Return-Error-Cause N lcsap.ies id-Return-Error-Cause +Network-Element N lcsap.ies id-Source-Identity +UE-Positioning-Capability N lcsap.ies id-UE-Positioning-Capability +Velocity-Estimate N lcsap.ies id-Velocity-Estimate +Barometric-Pressure N lcsap.extension id-Barometric-Pressure +Additional-PositioningDataSet N lcsap.extension id-Additional-PositioningDataSet +RAT-Type N lcsap.ies id-RAT-Type +Ciphering-Data N lcsap.ies id-Ciphering-Data +Ciphering-Data-Ack N lcsap.ies id-Ciphering-Data-Ack +Ciphering-Data-Error-Report N lcsap.ies id-Ciphering-Data-Error-Report +Coverage-Level N lcsap.ies id-Coverage-Level +UE-Country-Determination-Indication N lcsap.ies id-UE-Country-Determination-Indication +UE-Area-Indication N lcsap.ies id-UE-Area-Indication + +#LCS-AP-PROTOCOL-EXTENSION +LCS-Service-Type-ID N lcsap.extension id-LCS-Service-Type-ID +Cell-Portion-ID N lcsap.extension id-Cell-Portion-ID +Civic-Address N lcsap.extension id-Civic-Address +E-CGI N lcsap.extension id-E-UTRAN-Cell-Identifier + + +Location-Request N lcsap.proc.imsg id-Location-Service-Request +Location-Response N lcsap.proc.sout id-Location-Service-Request +Location-Response N lcsap.proc.uout id-Location-Service-Request + +Connection-Oriented-Information N lcsap.proc.imsg id-Connection-Oriented-Information-Transfer + +Connectionless-Information N lcsap.proc.imsg id-Connectionless-Information-Transfer +Connectionless-Information N lcsap.proc.uout id-Connectionless-Information-Transfer + +Location-Abort-Request N lcsap.proc.imsg id-Location-Abort +Location-Response N lcsap.proc.sout id-Location-Abort + +Reset-Request N lcsap.proc.imsg id-Reset +Reset-Acknowledge N lcsap.proc.sout id-Reset + +Ciphering-Key-Data N lcsap.proc.imsg id-Ciphering-Key-Data-Delivery +Ciphering-Key-Data-Result N lcsap.proc.sout id-Ciphering-Key-Data-Delivery +Ciphering-Key-Data-Result N lcsap.proc.uout id-Ciphering-Key-Data-Delivery + + + +#.TYPE_ATTR +BitRate TYPE = FT_UINT64 DISPLAY = BASE_DEC STRINGS = NULL +#.END + + +# +# Editor modelines - https://www.wireshark.org/tools/modelines.html +# +# Local variables: +# c-basic-offset: 2 +# tab-width: 8 +# indent-tabs-mode: nil +# End: +# +# vi: set shiftwidth=2 tabstop=8 expandtab: +# :indentSize=2:tabSize=8:noTabs=true: +# diff --git a/epan/dissectors/asn1/lcsap/packet-lcsap-template.c b/epan/dissectors/asn1/lcsap/packet-lcsap-template.c new file mode 100644 index 00000000..b9ff0c8c --- /dev/null +++ b/epan/dissectors/asn1/lcsap/packet-lcsap-template.c @@ -0,0 +1,329 @@ +/* packet-lcsap.c + * Routines for LCS-AP packet dissembly. + * + * Copyright (c) 2011 by Spenser Sheng <spenser.sheng@ericsson.com> + * + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> + * Copyright 1999 Gerald Combs + * + * SPDX-License-Identifier: GPL-2.0-or-later + * References: + * ETSI TS 129 171 V9.2.0 (2010-10) + */ + +#include "config.h" + +#include <math.h> + +#include <epan/packet.h> +#include <epan/strutil.h> +#include <epan/asn1.h> +#include <epan/prefs.h> +#include <epan/sctpppids.h> +#include <epan/expert.h> + +#include "packet-ber.h" +#include "packet-per.h" +#include "packet-e212.h" +#include "packet-sccp.h" +#include "packet-lcsap.h" + +#ifdef _MSC_VER +/* disable: "warning C4146: unary minus operator applied to unsigned type, result still unsigned" */ +#pragma warning(disable:4146) +#endif + +#define PNAME "LCS Application Protocol" +#define PSNAME "LCSAP" +#define PFNAME "lcsap" + +void proto_register_lcsap(void); +void proto_reg_handoff_lcsap(void); + +#define SCTP_PORT_LCSAP 9082 +#include "packet-lcsap-val.h" + +/* Initialize the protocol and registered fields */ +static int proto_lcsap = -1; + +static int hf_lcsap_pos_method = -1; +static int hf_lcsap_pos_usage = -1; +static int hf_lcsap_gnss_pos_method = -1; +static int hf_lcsap_gnss_id = -1; +static int hf_lcsap_gnss_pos_usage = -1; +#include "packet-lcsap-hf.c" + +/* Initialize the subtree pointers */ +static int ett_lcsap = -1; +static int ett_lcsap_plmnd_id = -1; +static int ett_lcsap_imsi = -1; +static int ett_lcsap_civic_address = -1; + +#include "packet-lcsap-ett.c" + +static expert_field ei_lcsap_civic_data_not_xml = EI_INIT; + +/* Global variables */ +static guint32 ProcedureCode; +static guint32 ProtocolIE_ID; +static guint32 ProtocolExtensionID; +static guint32 PayloadType = -1; + +/* Dissector handles */ +static dissector_handle_t lcsap_handle; +static dissector_handle_t lpp_handle; +static dissector_handle_t lppa_handle; +static dissector_handle_t xml_handle; + +/* Dissector tables */ +static dissector_table_t lcsap_ies_dissector_table; + +static dissector_table_t lcsap_extension_dissector_table; +static dissector_table_t lcsap_proc_imsg_dissector_table; +static dissector_table_t lcsap_proc_sout_dissector_table; +static dissector_table_t lcsap_proc_uout_dissector_table; + +static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); + +static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); +static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); +static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); +static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); + + +/* 7.4.13 Positioning Data + * Coding of positioning method (bits 8-4) + */ +static const value_string lcsap_pos_method_vals[] = { + { 0x00, "Cell ID" }, + { 0x01, "Reserved" }, + { 0x02, "E-CID" }, + { 0x03, "Reserved" }, + { 0x04, "OTDOA" }, + { 0x05, "Reserved" }, + { 0x06, "Reserved" }, + { 0x07, "Reserved" }, + { 0x08, "U-TDOA" }, + { 0x09, "Reserved" }, + { 0x0a, "Reserved" }, + { 0x0b, "Reserved" }, + { 0x0c, "Reserved for other location technologies" }, + { 0x0d, "Reserved for other location technologies" }, + { 0x0e, "Reserved for other location technologies" }, + { 0x0f, "Reserved for other location technologies" }, + { 0x10, "Reserved for network specific positioning methods" }, + { 0x11, "Reserved for network specific positioning methods" }, + { 0x12, "Reserved for network specific positioning methods" }, + { 0x13, "Reserved for network specific positioning methods" }, + { 0x14, "Reserved for network specific positioning methods" }, + { 0x15, "Reserved for network specific positioning methods" }, + { 0x16, "Reserved for network specific positioning methods" }, + { 0x17, "Reserved for network specific positioning methods" }, + { 0x18, "Reserved for network specific positioning methods" }, + { 0x19, "Reserved for network specific positioning methods" }, + { 0x1a, "Reserved for network specific positioning methods" }, + { 0x1b, "Reserved for network specific positioning methods" }, + { 0x1c, "Reserved for network specific positioning methods" }, + { 0x1d, "Reserved for network specific positioning methods" }, + { 0x1e, "Reserved for network specific positioning methods" }, + { 0x1f, "Reserved for network specific positioning methods" }, + { 0, NULL } +}; + +/* Coding of usage (bits 3-1)*/ +static const value_string lcsap_pos_usage_vals[] = { + { 0x00, "Attempted unsuccessfully due to failure or interruption - not used" }, + { 0x01, "Attempted successfully: results not used to generate location - not used." }, + { 0x02, "Attempted successfully: results used to verify but not generate location - not used." }, + { 0x03, "Attempted successfully: results used to generate location" }, + { 0x04, "Attempted successfully: case where UE supports multiple mobile based positioning methods and the actual method or methods used by the UE cannot be determined." }, + { 0x05, "Reserved" }, + { 0x06, "Reserved" }, + { 0x07, "Reserved" }, + { 0, NULL } +}; + +/* Coding of Method (Bits 8-7) */ +static const value_string lcsap_gnss_pos_method_vals[] = { + { 0x00, "UE-Based" }, + { 0x01, "UE-Assisted" }, + { 0x02, "Conventional" }, + { 0x03, "Reserved" }, + { 0, NULL } +}; + +/* Coding of GNSS ID (Bits 6-4) */ +static const value_string lcsap_gnss_id_vals[] = { + { 0x00, "GPS" }, + { 0x01, "Galileo" }, + { 0x02, "SBAS" }, + { 0x03, "Modernized GPS" }, + { 0x04, "QZSS" }, + { 0x05, "GLONASS" }, + { 0x06, "Reserved" }, + { 0x07, "Reserved" }, + { 0, NULL } +}; + +/* Coding of usage (bits 3- 1) */ +static const value_string lcsap_gnss_pos_usage_vals[] = { + { 0x00, "Attempted unsuccessfully due to failure or interruption" }, + { 0x01, "Attempted successfully: results not used to generate location" }, + { 0x02, "Attempted successfully: results used to verify but not generate location" }, + { 0x03, "Attempted successfully: results used to generate location" }, + { 0x04, "Attempted successfully: case where UE supports multiple mobile based positioning methods and the actual method or methods used by the UE cannot be determined." }, + { 0x05, "Reserved" }, + { 0x06, "Reserved" }, + { 0x07, "Reserved" }, + { 0, NULL } +}; + + +#include "packet-lcsap-fn.c" + +static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) +{ + return (dissector_try_uint(lcsap_ies_dissector_table, ProtocolIE_ID, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0; +} + + +static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) +{ + return (dissector_try_uint(lcsap_extension_dissector_table, ProtocolExtensionID, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0; +} + +static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) +{ + return (dissector_try_uint(lcsap_proc_imsg_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0; +} + +static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) +{ + return (dissector_try_uint(lcsap_proc_sout_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0; +} + +static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) +{ + return (dissector_try_uint(lcsap_proc_uout_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0; +} + + +static int +dissect_lcsap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_) +{ + proto_item *lcsap_item = NULL; + proto_tree *lcsap_tree = NULL; + + /* make entry in the Protocol column on summary display */ + col_set_str(pinfo->cinfo, COL_PROTOCOL, "LCSAP"); + + /* create the lcsap protocol tree */ + lcsap_item = proto_tree_add_item(tree, proto_lcsap, tvb, 0, -1, ENC_NA); + lcsap_tree = proto_item_add_subtree(lcsap_item, ett_lcsap); + + dissect_LCS_AP_PDU_PDU(tvb, pinfo, lcsap_tree, NULL); + return tvb_captured_length(tvb); +} + +/*--- proto_reg_handoff_lcsap ---------------------------------------*/ +void +proto_reg_handoff_lcsap(void) +{ + lpp_handle = find_dissector_add_dependency("lpp", proto_lcsap); + lppa_handle = find_dissector_add_dependency("lppa", proto_lcsap); + xml_handle = find_dissector_add_dependency("xml", proto_lcsap); + dissector_add_uint_with_preference("sctp.port", SCTP_PORT_LCSAP, lcsap_handle); + dissector_add_uint("sctp.ppi", LCS_AP_PAYLOAD_PROTOCOL_ID, lcsap_handle); +#include "packet-lcsap-dis-tab.c" + +} + +/*--- proto_register_lcsap -------------------------------------------*/ +void proto_register_lcsap(void) { + + /* List of fields */ + static hf_register_info hf[] = { + /* 7.4.13 Positioning Data */ + { &hf_lcsap_pos_method, + { "Positioning Method", "lcsap.pos_method", + FT_UINT8, BASE_DEC, VALS(lcsap_pos_method_vals), 0xf8, + NULL, HFILL } + }, + { &hf_lcsap_pos_usage, + { "Positioning usage", "lcsap.pos_usage", + FT_UINT8, BASE_DEC, VALS(lcsap_pos_usage_vals), 0x07, + NULL, HFILL } + }, + { &hf_lcsap_gnss_pos_method, + { "GNSS Positioning Method", "lcsap.gnss_pos_method", + FT_UINT8, BASE_DEC, VALS(lcsap_gnss_pos_method_vals), 0xc0, + NULL, HFILL } + }, + { &hf_lcsap_gnss_id, + { "GNSS ID", "lcsap.gnss_id", + FT_UINT8, BASE_DEC, VALS(lcsap_gnss_id_vals), 0x38, + NULL, HFILL } + }, + { &hf_lcsap_gnss_pos_usage, + { "GNSS Positioning usage", "lcsap.gnss_pos_usage", + FT_UINT8, BASE_DEC, VALS(lcsap_gnss_pos_usage_vals), 0x07, + NULL, HFILL } + }, + +#include "packet-lcsap-hfarr.c" + }; + + /* List of subtrees */ + static gint *ett[] = { + &ett_lcsap, + &ett_lcsap_plmnd_id, + &ett_lcsap_imsi, + &ett_lcsap_civic_address, +#include "packet-lcsap-ettarr.c" + }; + + /* module_t *lcsap_module; */ + expert_module_t *expert_lcsap; + + static ei_register_info ei[] = { + { &ei_lcsap_civic_data_not_xml, + { "lcsap.civic_data_not_xml", PI_PROTOCOL, PI_ERROR, "Should contain a UTF-8 encoded PIDF - LO XML document as defined in IETF RFC 4119", EXPFILL } }, + }; + + + /* Register protocol */ + proto_lcsap = proto_register_protocol(PNAME, PSNAME, PFNAME); + + /* Register fields and subtrees */ + proto_register_field_array(proto_lcsap, hf, array_length(hf)); + proto_register_subtree_array(ett, array_length(ett)); + lcsap_handle = register_dissector("lcsap", dissect_lcsap, proto_lcsap); + + /* Register dissector tables */ + lcsap_ies_dissector_table = register_dissector_table("lcsap.ies", "LCS-AP-PROTOCOL-IES", proto_lcsap, FT_UINT32, BASE_DEC); + + expert_lcsap = expert_register_protocol(proto_lcsap); + expert_register_field_array(expert_lcsap, ei, array_length(ei)); + + lcsap_extension_dissector_table = register_dissector_table("lcsap.extension", "LCS-AP-PROTOCOL-EXTENSION", proto_lcsap, FT_UINT32, BASE_DEC); + lcsap_proc_imsg_dissector_table = register_dissector_table("lcsap.proc.imsg", "LCS-AP-ELEMENTARY-PROCEDURE InitiatingMessage", proto_lcsap, FT_UINT32, BASE_DEC); + lcsap_proc_sout_dissector_table = register_dissector_table("lcsap.proc.sout", "LCS-AP-ELEMENTARY-PROCEDURE SuccessfulOutcome", proto_lcsap, FT_UINT32, BASE_DEC); + lcsap_proc_uout_dissector_table = register_dissector_table("lcsap.proc.uout", "LCS-AP-ELEMENTARY-PROCEDURE UnsuccessfulOutcome", proto_lcsap, FT_UINT32, BASE_DEC); + + /* lcsap_module = prefs_register_protocol(proto_lcsap, NULL); */ + +} + +/* + * Editor modelines + * + * Local Variables: + * c-basic-offset: 2 + * tab-width: 8 + * indent-tabs-mode: nil + * End: + * + * ex: set shiftwidth=2 tabstop=8 expandtab: + * :indentSize=2:tabSize=8:noTabs=true: + */ diff --git a/epan/dissectors/asn1/lcsap/packet-lcsap-template.h b/epan/dissectors/asn1/lcsap/packet-lcsap-template.h new file mode 100644 index 00000000..d45cbcf7 --- /dev/null +++ b/epan/dissectors/asn1/lcsap/packet-lcsap-template.h @@ -0,0 +1,20 @@ +/* packet-lcsap.c + * Routines for LCS-AP packet dissembly. + * + * Copyright (c) 2011 by Spenser Sheng <spenser.sheng@ericsson.com> + * + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> + * Copyright 1999 Gerald Combs + * + * SPDX-License-Identifier: GPL-2.0-or-later + * References: + * ETSI TS 129 171 V9.2.0 (2010-10) + */ + +#ifndef PACKET_LCSAP_H +#define PACKET_LCSAP_H + +#include "packet-lcsap-exp.h" + +#endif /* PACKET_LCSAP_H */ |